こんにちは。サメハダです。
今回はS&P500ヒストリカルデータを元にムービングウインドウ法や決定木モデルによる将来試算を行います。

楽観的な試算にならないように注意するよ!
平均的なパフォーマンスを使った想定は楽観的になりがち
S&P500の過去のパフォーマンスは年利7%とか10%とか言われています。
仮に年利7%で複利運用する場合、毎月1万円積み立てると30年後の投資元本は360万円ですが、評価額は1,218万円まで増加します。積立運用で約3.37倍と、とても高いパフォーマンスとなります。


”福利効果”すごいね!

あくまで”平均パフォーマンス”における試算だよ。
現実はこの通りにはならないから注意!
株式投資の効果の一つとして”複利効果”がありますが、常々、安直な将来見込みになりがちです。
そこで、もう少し慎重な態度で保守的な計算をしてみようと思います。
- 良い局面と悪い局面の値動きを無視してしまう。
- 福利効果を過度に協調してしまう。
ヒストリカルデータを元に値動きの”二峰性”に着目する
実際に、過去50年のS&P500の値動きを分析する面白いことがわかりました。
なお、ヒストリカルデータはInvesting.comさんからダウンロードしています。

インベスティングドットコムさん、ありがとうございます!
単純に変化率を求めると
1970年から過去51年分の月足データの終値の平均値をヒストグラムで表します。


西暦 | 平均価格 | 年間リターン | 西暦 | 平均価格 | 年間リターン | 西暦 | 平均価格 | 年間リターン |
2021 | 3,967 | 23% | 2001 | 1,186 | -16% | 1981 | 128 | 7% |
2020 | 3,217 | 9% | 2000 | 1,420 | 7% | 1980 | 120 | 16% |
2019 | 2,938 | 7% | 1999 | 1,331 | 22% | 1979 | 103 | 8% |
2018 | 2,738 | 11% | 1998 | 1,088 | 24% | 1978 | 95 | -2% |
2017 | 2,465 | 17% | 1997 | 876 | 30% | 1977 | 97 | -5% |
2016 | 2,106 | 3% | 1996 | 675 | 23% | 1976 | 103 | 18% |
2015 | 2,052 | 6% | 1995 | 547 | 19% | 1975 | 87 | 7% |
2014 | 1,944 | 18% | 1994 | 461 | 2% | 1974 | 81 | -23% |
2013 | 1,652 | 19% | 1993 | 453 | 9% | 1973 | 107 | -3% |
2012 | 1,387 | 8% | 1992 | 417 | 9% | 1972 | 110 | 12% |
2011 | 1,281 | 13% | 1991 | 382 | 15% | 1971 | 98 | 18% |
2010 | 1,131 | 19% | 1990 | 333 | 2% | 1970 | 83 | #DIV/0! |
2009 | 949 | -22% | 1989 | 326 | 22% | |||
2008 | 1,215 | -18% | 1988 | 268 | -6% | |||
2007 | 1,478 | 12% | 1987 | 286 | 20% | |||
2006 | 1,318 | 9% | 1986 | 239 | 26% | |||
2005 | 1,208 | 7% | 1985 | 189 | 18% | |||
2004 | 1,134 | 17% | 1984 | 160 | 0% | |||
2003 | 968 | -2% | 1983 | 161 | 34% | |||
2002 | 989 | -17% | 1982 | 120 | -6% |
やはりやや現実味のない高いパフォーマンスになってしまいます。
次にムービング・ウィンドウ法による変化率を求めます。
”ムービング・ウィンドウ法”による変化率
- MW法とは、重複を許して変化率データを作成する方法。
- データ数の数が減らないというメリットがある。
- 金融機関のリスク管理において広く認められる手法。
- ただし、重複を許すと一般的にはデータの相関が強まるため注意を必要とする。


”動く”+”窓”だね!
MW法による変化率①:1年(52週)
過去51年分の週足データを元に、MW法による1年(52週)の変化率のヒストグラムを作ると次のようになります。

さらに、5年の場合はどうでしょうか。
MW法による変化率②:5年(261週)

「▲10~▲5%」と「+65%~+70%」の部分に分布の山が2つ見られ、いわゆる”二峰性”が発生します。
MW法による変化率③:10年(261週)

10年の場合も二峰性が発生します。
山の頂点は「+54%~+64%」と「+174%~+184%」とプラスに転じています。

で、結局どういうこと?

「平均リターン」は”幻”かもよってこと!
多峰性にあるデータに対して、正規分布を仮定した「平均リターン」を用いることは予想を大きくはずす原因となり危険です。
そこで次に、決定木モデルによる試算を行いたいと思います。
決定木モデルによる収益性試算
- 情報を整理・分析する「樹形図」のこと。
- データ分析や機械学習における分類木と回帰木の総称のこと。


二択を繰り返すイメージ?

そうだね。
今回は簡易的に2階層のモデルを考えます。
事前分布の作成
統計上の複雑な理論はたくさんありますが、ここでは簡易的に2階層のモデルを定義したいと思います。

- 良い局面(好景気・メインシナリオ)と悪い局面(不景気・リスクシナリオ)の2つに分ける。
- それぞれの分布は正規分布を仮定する。
通常シナリオとリスクシナリオの境目の定義
先ほどの「MW法による変化率②:5年(261週)」のグラフを改めてみてみましょう。
これをざっくりと見た感じで2つに分けます。
そうですね、「25%」の部分を境目とすることにします。
そして、それ以上を”メインシナリオ”、それ以下を”リスクシナリオ”と定義します。
なお、2つ先のグラムに出てきますが、データ数を減らした直近10年分のデータ(N=541)でも、同様に「25%」程度が境目になりそうだったので、この方針は妥当として先へ進めます。

各シナリオの境目の発生確率
それぞれのシナリオの発生確率は、過去データ件数の割合をそのまま使用します。
ただし、過去51年分は大すぎると考えられるので、10年分のデータと20年分のデータのそれぞれの平均を使用することとします。
(Ⅰ)過去10年データの発生確率
過去10年は2015年のギリシャ危機、20017年のトランプ政権、2020年のコロナショックなどの相場を含んでいます。


発生件数 | リスクシナリオ | メインシナリオ | 合計件数 |
---|---|---|---|
件数 (10年データ) | 132 | 409 | 541 |
発生確率 | 24% | 76% | 100% |
(Ⅱ)過去20年データの発生確率
直近20年では、2001年の同時多発テロの時期は含まれませんが、株式市場の混乱は2002年以降も続いたため間接的に金融危機のデータとして含まれていると考えられます。(恣意性を排除するため1年延ばして21年とするなどの変更は行いませんでした。)
その他では、2003年のイラク戦争、2008年のリーマンショックなどが含まれます。


発生件数 | リスクシナリオ | メインシナリオ | 合計件数 |
---|---|---|---|
件数 (20年データ) | 493 | 518 | 1,011 |
発生確率 | 49% | 51% | 100% |
(Ⅲ)過去10年と過去20年の合成の発生確率
まとめると次のようになります。
割合は結構異なりますが、ここでは、これらの件数を足し合わせた割合を求めることとします。(他にも様々な方法が考えられますが、大きなレベルの試算では単純合計などの手法が良く用いられます。)
発生件数 | リスクシナリオ | メインシナリオ | 合計件数 |
---|---|---|---|
件数 (10年+20年) | 625 | 927 | 1,552 |
発生確率 | 40% | 60% | 100% |
- リスクシナリオ・・・40%
- メインシナリオ・・・60%

たまたまですが、キリの良い数値になりました。
各シナリオの境目の分布
同様に過去10年データと過去20年データのそれぞれのシナリオ部分の統計量を求め、合成します。
(Ⅰ)過去10年データの統計量
統計量 (10年データ) | リスクシナリオ | メインシナリオ |
---|---|---|
平均 | 0% | 74% |
標準偏差 | 10% | 23% |
(Ⅱ)過去20年データの統計量
統計量 (20年データ) | リスクシナリオ | メインシナリオ |
---|---|---|
平均 | ▲6% | 68% |
標準偏差 | 12% | 24% |
(Ⅲ)過去10年と過去20年の合成の統計量
まとめると次のようになります。
今回は2つの統計量の単純平均としました。(これも様々は手法がありますが、不確実性の下での試算では統計量の四則演算は良く行われています。)
統計量 (10年+20年) | リスクシナリオ | メインシナリオ |
---|---|---|
平均 | ▲3% | 71% |
標準偏差 | 11% | 23% |
完成した事前分布の確認
そして合成した事前分布がこちらです。
なかなかいい感じに仕上がっていると思います。

統計量 (10年+20年) | リスクシナリオ | メインシナリオ |
---|---|---|
平均 | ▲3% | 71% |
標準偏差 | 11% | 23% |
発生確率 | 40% | 60% |

できた!
乱数による収益性試算
さて、ここまでで決定木モデルによる5年間の収益率の事前分布が完成しました。
これを使って乱数による20年間の収益をシミュレーションしてみましょう。
- 合成した事前分布に乱数を発生させ、5年間の収益率を求める。
- 上記を4回繰り返し、20年間の収益率を求める。
- それぞれの期間は独立として考え、ある期間の収益率は他の収益率に影響されない。
エクセルのRAND関数とNORMSINV関数を使って簡易的に実装したシミュレーションがこちらです。
RAND関数は「F9」キーで再計算できるので押す度に結果が変わります。

20年後の収益率は、低い水準で100%~200%、高い水準で800%程度という結果になりました。
最初の30年で3.37倍(積立運用)よりも幅のある結果となっています。

ファイルは公開しているので良かったらダウンロードして使ってね。
C9・・・=+RAND()
D9・・・=+IF(C9<0.4,NORM.INV(RAND(),$D$4,$D$5),NORM.INV(RAND(),$E$4,$E$5))
E9・・・=+E8*(1+D9)

関数はこんな感じです!
乱数による収益性試算:番外編
さて、もうちょっと遊んでみます。
先ほどの合成した事前分布を1年に縮めた上で、3倍(トリプル)の値動きをした場合、20年後の収益がどのようになるか試算してみます。
- 合成した5年の事前分布をルートT倍法により期間調整し、1年の事前分布を得る。
- 事前分布に乱数を発生させ、20年間の収益率を求める。
- それぞれの期間は独立として考え、ある期間の収益率は他の収益率に影響されない。
同じようにシミュレーションした結果がこちらです。

低い時は200%~500%、高い時は3000%~5000%(つまり30倍~50倍)という結果になりました。
上振れが驚異的に高いですが、1年ごとに独立とした前提が少々甘かったかもしれません。
しかし、やはりトリプルは爆発力がありますね。
将来的に信託報酬も加味して、将来のシミュレーションをしても面白いかもしれません。
I4・・・=(1+D4)^0.2-1
I5・・・=+D5*SQRT(0.2)
H9、I9、J9・・・さっきと同じ

関数はこんな感じ!
乱数による収益性試算:番外編 モンテカルロ・シミュレーション

F9ボタンを何度も押したらどうなるの?
最後に、F9をたくさん押したらどうなるのか、つまりどういった分布が現れるか試してみたいと思います。
手で押すのは大変なのでマクロを組みます。こちらも公開しているエクセルブックに組み込んでおきます。(私のPCでは計算に1~2分かかりました。)
Sub prog()
Dim NORMAL20(100000) As Single, TRIPLE10(100000) As Single, TRIPLE20(100000) As Single
Dim i As Integer, j As Integer
j = 10000
For i = 1 To j
Application.Calculate
NORMAL20(i) = Worksheets("SP500").Range("E11").Value
TRIPLE10(i) = Worksheets("SP500").Range("J18").Value
TRIPLE20(i) = Worksheets("SP500").Range("J28").Value
Next
Worksheets("kekka").Activate
For i = 1 To j
Cells(i + 1, 2) = NORMAL20(i)
Cells(i + 1, 3) = TRIPLE10(i)
Cells(i + 1, 4) = TRIPLE20(i)
Next
MsgBox ("完了")
End Sub
モンテカルロ・シミュレーションによる収益率①:SP500/20年

SP500の20年後の収益率の試算です。
だいたい2~3倍に増えることが多く、それ以上も期待できそうです。あくまでこの試算ですが最終的に収益率がマイナスとなったケースは一度もありませんでした。
モンテカルロ・シミュレーションによる収益率②:トリプル/10年

トリプルの10年後の収益率の試算です。
10年だとSP500の試算と似たような分布になりました。10年後に収益率がマイナスとなったケースは1件で▲18%でした。
モンテカルロ・シミュレーションによる収益率②:トリプル/10年

トリプルの20年後の収益率の試算です。
20年だとグラフ一番右の100倍以上になる場合が出てきて、発散気味の試算となります。20年後に収益率がマイナスとなったケースは1件で▲54%でした。
やはりもう少し精緻な計算が必要かもしれませんが、夢があることは確かですね。
まとめ
いかがでしたでしょうか。
今回は、SP500のヒストリカルデータを使い、①MW法による収益率のデータ抽出、②決定木による事前分布の作成、そして③モンテカルロ・シミュレーションによる将来収益率の試算を行いました。
試算する立場としては、過去ずっと右肩上がりの米国株式市場なので、ヒストリカルデータを元にリスクシナリオを織り込むのは限界があるかもしれない、と感じました。
また、投資する立場としては、定量的には価格上昇を期待しつつ、日々、定性的な面からリスク管理を行うという態度が大切だと考えています。
アプローチ次第でいろいろな試算ができそうですね。
もし誤りや改善点があれば教えていただけると嬉しいです。
今回は以上です。それではこれからも一緒に頑張りましょう!

お疲れ様~
コメント