- 2007年9月-と2021年12月-の2つの GSPCプロットの重ね合わせ(2022年10月8日アップデート)
- 2007年9月-と2021年12月-の2つの GSPCプロットの重ね合わせ(2022年9月19日アップデート)
- 年初より続く、S&P500指数の下落はかなり稀だった件
- 1970-1971年のS&P500指数のチャート
- 2008年のリーマン・ショック時に似ているチャートという噂もチラホラと。。。
- 補足
- Rコード
- 参考資料
2007年9月-と2021年12月-の2つの GSPCプロットの重ね合わせ(2022年10月8日アップデート)
2007-2009年と2021-2022年のS&P500の株価を縮尺を合わせて、プロットを重ねています。 株価がピークであった、2007年9月と2021年12月とをスタートにしています。 2022年10月8日に結果をアップデートしました。
2007年9月-と2021年12月-の2つの GSPCプロットの重ね合わせ(2022年9月19日アップデート)
2007-2009年と2021-2022年のS&P500の株価を縮尺を合わせて、プロットを重ねています。 株価がピークであった、2007年9月と2021年12月とをスタートにしています。 2022年9月19日に結果をアップデートしました。
S&P500指数が、徐々に下がってきています。やはり9月22日のFOMCは鬼門ですね。
まずは、3650あたりを割れるかどうかを見守りましょうか。
Rコード: 2つのGSPCプロットの重ね合わせ
このRコードでは、plot、axis、axis.Date、mtext関数を使って、 「スケールが異なる、2つの折れ線グラフを重ねる」ということをやっています。
#ライブラリ準備 library(quantmod) ##データ準備 #2007-2009年 S&P 500【^GSPC】の株価取得 NN01 <- 2007 Date <- c(paste0(NN01, "-09-01"), paste0(NN01+2, "-12-31")) GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #データフレームの作成 GSPC01 <- data.frame(Date=index(GSPC), Close=as.numeric(GSPC[,c(4)]), Month=format(index(GSPC), "%m"), row.names=1:nrow(GSPC)) #2022年 S&P 500【^GSPC】の株価取得 NN01 <- 2021 Date <- c(paste0(NN01, "-12-01"), paste0(NN01+2, "-12-31")) GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #データフレームの作成 GSPC02 <- data.frame(Date=index(GSPC), Close=as.numeric(GSPC[,c(4)]), Month=format(index(GSPC), "%m"), row.names=1:nrow(GSPC)) ##プロット作成 #2007-2009年【^GSPC】 Dat <- GSPC01 M <- max(Dat$Close) + abs(max(Dat$Close) - min(Dat$Close))*0.1 m <- min(Dat$Close) - abs(max(Dat$Close) - min(Dat$Close))*0.1 #プロット par(mai=c(0.75, 1, 0.75, 1), family = "HiraKakuPro-W3") plot(Dat$Date, Dat$Close, ylim = c(m, M), xlab = "", ylab = "", type = "l", col = "#E98683", lwd = 2, xaxt = "n", yaxt = "n") #軸作成 axis(2, at = seq(600, 1600, by=100)) axis.Date(1, at=seq.Date(min(Dat$Date), max(Dat$Date)+30, by="month")[c(T,F)], format="%B") mtext("2007-2009年 ^GSPC", side = 2, line=2.5) mtext("2007年9月-", side = 1, line=2.5) #2021-2022年【^GSPC】 par(new = TRUE) Dat0 <- rbind(GSPC02, GSPC01[c((nrow(GSPC02)+1):nrow(GSPC01)),]) Dat0$Date <- GSPC01$Date Dat0$Close[c((nrow(GSPC02)+1):nrow(GSPC01))] <- NA Dat <- GSPC02 M <- max(Dat$Close) + abs(max(Dat$Close) - min(Dat$Close))*0.1 m <- min(Dat$Close)/2 #Dateのズレ Dat0$Date <- Dat0$Date+90 #プロット plot(Dat0$Date, Dat0$Close, ylim = c(m, M), xlab = "", ylab = "", type = "l", col = "#73CACE", lwd = 2, axes = FALSE) axis(4, at = seq(1800, 5000, by=400)) axis.Date(3, at=(seq.Date(min(Dat0$Date), max(Dat0$Date)+30, by="month"))[c(T,F)], format="%B") mtext("2021-2022年 ^GSPC", side = 4, line=2.5) mtext("2021年12月-", side = 3, line=2.5) #サポートライン abline(h=3650, col="#5ac2c7", lwd=2) text(Dat0$Date[length(Dat0$Date)]-20, 3650+(max(Dat0$Close, na.rm = T) - min(Dat0$Close, na.rm = T))*0.1, "3650", col="#5ac2c7") #いったんの下値目処 abline(h=2800, col="#5ac2c7", lwd=2) text(Dat0$Date[1]+20, 2800+(max(Dat0$Close, na.rm = T) - min(Dat0$Close, na.rm = T))*0.1, "2800", col="#5ac2c7") #凡例 legend("topright", legend = c("2007-2009年", "2021-2022年"), col = c("#E98683", "#73CACE"), lwd=2, lty = 1, cex=0.8)
年初より続く、S&P500指数の下落はかなり稀だった件
もうすぐ2022年8月も終わろうとしています。 S&P500指数のリターンは、2022年初来6カ月で、-20%以上の大きな下落を記録しました。
6月16日に記録した、3666ポイントが上半期の最安値でした。
年初来、上半期のみで同じくらい下落したことは、過去に5度あったようです。。
1932年(-41.402%)、1940年(-20.982%)、1962年(-22.844%)、1970年(-21.806%)、 そして、今年2022年(-21.081%)です。つまり、52年ぶりの出来事ということです。
消費者物価指数(CPI)、要するに、インフレ率が高止まりしていて、 これほどまでにお金の価値がどんどん下がっているのは、1970年代以来のことらしいです。
消費者物価指数(CPI)についての注釈
消費者が購入する各種の消費やサービスの小売価格の変動を調査・算出した経済指標です。 ある時点を基準に、同等のものを購入した場合に費用がどのように変動したかを指数値で表したもので、物価そのものの変動を測定することを目的としています。 季節的な影響で価格が変動しやすい生鮮食品を除いた「コア指数」が特に注目されています。 世界各国で発表され、各国(地域)のインフレ動向を測る重要な経済指標として、生産者物価指数(PPI)とともにマーケットでも注目されています。
1970-1971年のS&P500指数のチャート
1970年から1971年のチャートを眺めてみると、どうも1970年の年末ごろには、年初来±0%近くまでで戻っています。 このストーリーは、まだありえるのでしょうか?
それとも、まだまだ金利が上がっている最中で、これは無いのでしょうかね。
2008年のリーマン・ショック時に似ているチャートという噂もチラホラと。。。
2008年のリーマン・ショックで暴落が起こった時のチャートに似てきた、、、そういった巷の噂がチラホラと聴こえてきています。
2008年からのチャートと、2022年のチャートを重ねてみると、どことなく、2022年のチャートはトレースしているように見えだしてきました。
2008年8月以降の下げで、初めのボトムは11月あたりでした。 そして、2回目のボトムは翌年の5月あたりでした。 人気ユーチューバーが言ってることと同じ?、、、そんなことを勝手に思い巡らせている今日この頃です。
補足
GSPC
^GSPC
が、S&P 500のテッィカーコードです。
Digital Color Meter.app をターミナルから開く
Digital Color Meter.app
は、色のRGB値を抽出してくれるツールです。
ターミナルを起動します。以下をコピペして実行します。
open /System/Applications/Utilities/Digital\ Color\ Meter.app
ggplotっぽい配色
#2色: シャープな赤色, 大人しい青緑色 col2 <- c( "#E98683", "#73CACE") #3色 col3 <- c( "#e87d72", "#709bf8", "#53b74c") #5色 col5 <- c( "#e87d72", "#a3a533", "#56bc82", "#50adf0", "#d972ec")
Rコード
パッケージの準備
quantmodとdygraphsのパッケージをセットアップします。あとは、好みで。
library(quantmod) library(dygraphs)
S&P500 index: 1928から2022年までのデータを取得する
#S&P500 index 【^GSPC】の株価取得 GSPC.all <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, from = "1900-01-01", to="2023-01-01", auto.assign=FALSE) #表示 head(GSPC.all) # GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted #1927-12-30 17.66 17.66 17.66 17.66 0 17.66 #1928-01-03 17.76 17.76 17.76 17.76 0 17.76 #1928-01-04 17.72 17.72 17.72 17.72 0 17.72 #1928-01-05 17.55 17.55 17.55 17.55 0 17.55 #1928-01-06 17.66 17.66 17.66 17.66 0 17.66 #1928-01-09 17.50 17.50 17.50 17.50 0 17.50 #対象年 ALLYear <- 1928:2022 #結果の格納変数 Performance <- data.frame(Year=ALLYear, Performance=NA) #実行 for(n in seq_len(length(ALLYear))){ #検索する年月日の定義 NN00 <- ALLYear[n] Date <- c(paste0(NN00, "-01-01"), paste0(NN00, "-07-01")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #データフレームの作成 Dat00 <- data.frame(Date=index(GSPC), Close=as.numeric(GSPC[,c(4)]), Month=format(index(GSPC), "%m"), row.names=1:nrow(GSPC)) #7月データを外す Dat01 <- Dat00[Dat00$Month != "07",] #6ヶ月の変動を計算 Dat01$ClosePercent <- Dat01$Close/Dat01$Close[1]*100 Performance_6month <- round(Dat01$ClosePercent[nrow(Dat01)] - 100, 3) Performance$Performance[n] <- Performance_6month }
年初6ヶ月間で-20%変動の年を見つける
head(Performance) # Year Performance #1 1928 7.770 #2 1929 10.480 #3 1930 -3.399 #4 1931 -6.435 #5 1932 -41.402 #6 1933 59.736 #-20%未満を抽出する Performance00 <- Performance[Performance$Performance < -20,] Performance00 # Year Performance #5 1932 -41.402 #13 1940 -20.982 #35 1962 -22.844 #43 1970 -21.806 #95 2022 -21.081
1932-1933年のS&P 500 index
#1932-1933年 NN01 <- Performance00$Year[1] Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #全体プロット GSPC[,4] %>% dygraphs::dygraph(main = paste0("S&P 500 index: ", NN01, "-", NN01+1)) %>% dygraphs::dySeries("GSPC.Close", label = "GSPC") %>% dygraphs::dyRangeSelector(height = 50) %>% dygraphs::dyAxis(name="x", axisLabelFontSize = 12, axisLabelWidth = 70) %>% htmltools::save_html(file=paste0("GSPC_", NN01, ".html"))
1940-1941年のS&P 500 index
#1940-1941年 NN01 <- Performance00$Year[2] Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #全体プロット GSPC[,4] %>% dygraphs::dygraph(main = paste0("S&P 500 index: ", NN01, "-", NN01+1)) %>% dygraphs::dySeries("GSPC.Close", label = "GSPC") %>% dygraphs::dyRangeSelector(height = 50) %>% dygraphs::dyAxis(name="x", axisLabelFontSize = 12, axisLabelWidth = 70) %>% htmltools::save_html(file=paste0("GSPC_", NN01, ".html"))
1962-1963年のS&P 500 index
#1962-1963年 NN01 <- Performance00$Year[3] Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #全体プロット GSPC[,4] %>% dygraphs::dygraph(main = paste0("S&P 500 index: ", NN01, "-", NN01+1)) %>% dygraphs::dySeries("GSPC.Close", label = "GSPC") %>% dygraphs::dyRangeSelector(height = 50) %>% dygraphs::dyAxis(name="x", axisLabelFontSize = 12, axisLabelWidth = 70) %>% htmltools::save_html(file=paste0("GSPC_", NN01, ".html"))
1970-1971年のS&P 500 index
#1970-1971年 NN01 <- Performance00$Year[4] Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #全体プロット GSPC[,4] %>% dygraphs::dygraph(main = paste0("S&P 500 index: ", NN01, "-", NN01+1)) %>% dygraphs::dySeries("GSPC.Close", label = "GSPC") %>% dygraphs::dyRangeSelector(height = 50) %>% dygraphs::dyAxis(name="x", axisLabelFontSize = 12, axisLabelWidth = 70) %>% htmltools::save_html(file=paste0("GSPC_", NN01, ".html"))
2022年のS&P 500 index
#2022年 NN01 <- Performance00$Year[5] Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #全体プロット GSPC[,4] %>% dygraphs::dygraph(main = paste0("S&P 500 index: ", NN01)) %>% dygraphs::dySeries("GSPC.Close", label = "GSPC") %>% dygraphs::dyRangeSelector(height = 50) %>% dygraphs::dyAxis(name="x", axisLabelFontSize = 12, axisLabelWidth = 70) %>% htmltools::save_html(file=paste0("GSPC_", NN01, ".html"))
2008-2009年のS&P 500 index
#2008-2009年 NN01 <- 2008 Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) #S&P 500【^GSPC】の株価取得 GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #全体プロット GSPC[,4] %>% dygraphs::dygraph(main = paste0("S&P 500 index: ", NN01, "-", NN01+1)) %>% dygraphs::dySeries("GSPC.Close", label = "GSPC") %>% dygraphs::dyRangeSelector(height = 50) %>% dygraphs::dyAxis(name="x", axisLabelFontSize = 12, axisLabelWidth = 70) %>% htmltools::save_html(file=paste0("GSPC_", NN01, ".html"))
2008-2009年と2022年の2つのプロットの重ね合わせ
このRコードでは、plot、axis、axis.Date、mtext関数を使って、 「スケールが異なる、2つの折れ線グラフを重ねる」ということをやっています。
##データ準備 #2008-2009年 S&P 500【^GSPC】の株価取得 NN01 <- 2008 Date <- c(paste0(NN01, "-01-01"), paste0(NN01+1, "-12-31")) GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #データフレームの作成 GSPC01 <- data.frame(Date=index(GSPC), Close=as.numeric(GSPC[,c(4)]), Month=format(index(GSPC), "%m"), row.names=1:nrow(GSPC)) #2022年 S&P 500【^GSPC】の株価取得 NN01 <- 2022 Date <- c(paste0(NN01, "-01-01"), paste0(NN01+2, "-12-31")) GSPC <- quantmod::getSymbols("^GSPC", src = "yahoo", verbose = T, auto.assign=FALSE, from = Date[1], to=Date[2]) #データフレームの作成 GSPC02 <- data.frame(Date=index(GSPC), Close=as.numeric(GSPC[,c(4)]), Month=format(index(GSPC), "%m"), row.names=1:nrow(GSPC)) ##プロット作成 #2008-2009年【^GSPC】 Dat <- GSPC01 M <- max(Dat$Close) + abs(max(Dat$Close) - min(Dat$Close))*0.1 m <- min(Dat$Close) - abs(max(Dat$Close) - min(Dat$Close))*0.1 #プロット par(mai=c(0.75, 1, 0.5, 1), family = "HiraKakuPro-W3") plot(Dat$Date, Dat$Close, ylim = c(m, M), xlab = "", ylab = "", type = "l", col = "#E98683", lwd = 2, axes = FALSE) axis(2, at = seq(600, 1600, by=100)) mtext("2008-2009年 ^GSPC", side = 2, line=2.5) axis.Date(1, at=seq.Date(min(Dat$Date), max(Dat$Date)+30, by="month")[c(T,F)], format="%B") #2022年【^GSPC】 par(new = TRUE) Dat0 <- rbind(GSPC02, GSPC01[c((nrow(GSPC02)+1):nrow(GSPC01)),]) Dat0$Date <- GSPC01$Date Dat0$Close[c((nrow(GSPC02)+1):nrow(GSPC01))] <- NA Dat <- GSPC02 M <- max(Dat$Close) + abs(max(Dat$Close) - min(Dat$Close))*0.1 m <- min(Dat$Close)/2 #プロット plot(Dat0$Date, Dat0$Close, ylim = c(m, M), xlab = "", ylab = "", type = "l", col = "#73CACE", lwd = 2, axes = FALSE) axis(4, at = seq(1800, 5000, by=400)) mtext("2022年 ^GSPC", side = 4, line=2.5) #凡例 legend("topright", legend = c("2008-2009年", "2022年"), col = c("#E98683", "#73CACE"), lwd=2, lty = 1, cex=0.8)