趣味の投資とプログラミング備忘録

趣味の投資と独学の「R言語」によるプログラミングを混ぜて、なぜ投資が必要なのか、メモがてら書いていきたいと思います。投資もプログラミングも初心者という方の勉強の一助となれば幸いです。

米国ETF SPY過去データから未来予測してみた!(モンテカルロシミュレーションとバックテスト)

免責事項

当ブログに掲載する情報は投資勧誘を目的としたものではありません。株式などの金融商品の取引は損失を出す恐れがあります。 全て自己判断、自己責任での投資をお願いいたします。 このブログは投稿者が趣味として記載しているものであり、いかなる損失が出た場合でも責任を負うことはできません。 誤情報が入り込んだり、情報が古くなったりすることもあります。 必ずしも正確性を保証するものではありません。また合法性や安全性なども保証いたしません。 当ブログに掲載された内容によって生じた損害等の一切の責任を負いかねますので、ご了承ください。


導入

モンテカルロシミュレーション結果は妥当なものであるといえるのか?
また、過去のデータから未来の予測は可能なのか?
意味がなかったら困るので、実験しようと思います。

今回はインデックスファンドで有名なSP500連動の米国上場投資信託SPYについて検証したいと思います。

変動があまりに大きすぎるのはそもそもそれが起きる要因が複数あり、その要因が常にあるわけでもなく突然要因が出現し、それ以降現れないこともあるためです。

要因が複数あり、不明な場合はシミュレーションしようがないので、予測に向いていないからです。


方法

米国のSP500連動の上場投資信託SPYのデータをGoogleスプレッドシートGoogle Finance関数を使って抽出。
(全データ 1993-01-29 ~2021-08-27 )

 

月末の日付と終値だけのデータを「R」で抽出してデータフレームを作成。

月末の終値から、前月比率を算出し標本データとして計算に用いる。

(標本1993-01-29~2012-12-31)

(試験2013-01-02~2021-08-27)

投資期間最後の月末の終値/投資期間最初の月末の終値を月間平均に変換する。
また、月末データから標準偏差を算出する。

 

毎月の月末に10$を積立投資したと仮定して、2013-01-02~2021-08-27まで、約8年間の実際の変動から計算して散布図を描く。


標本データから得られた平均、標準偏差から正規分布で乱数発生させ、毎月の変動として利用する。
これを10000回シミュレーションし、実データの散布図と同時描画する。
シミュレーション結果は2.5%,25%,50%,75%,97.5%の5つにパーセンタイルに分類する。
その際、一切運用しない場合の数値も同時描画する。

 

なお、大前提である 正規性の確認や分散、平均等の標本との差がないであろうことは確認済みです。

 

結果

Fig.1 全期間(標本+試験)データの推移

f:id:HanamoriH:20210829214531p:plain

Fig.1は今回使用する資産形成の達人の全期間の時系列データ。

赤枠が標本用データ期間であり、乱数発生に用いる平均、標準偏差を求める。

それ以外の期間で得られた平均、標準偏差正規分布を仮定した乱数発生(モンテカルロシミュレーション)により検証する。

 

 

Fig.2 シミュレーション結果と実データ推移

 

f:id:HanamoriH:20210829214719p:plain
赤がパーセンタイル97.5%-2.5%の区間境界線

青が25%-75%の区間境界線

緑が50%線

オレンジが実データの時系列数値

黒が運用しない場合の数値

 

 

Fig.3 区間毎の出現確率

f:id:HanamoriH:20210829214913p:plain

Lose(%)は、当該期間に運用した場合、運用しなかった場合の数値を実データが下回った割合(元本割れの確率)。100からこの数値を引いた値が元本割れしなかった割合となる。

25%-75%(50%)はシミュレーションにおいて、50%が入るであろう範囲。

2.5%-97.5%(95%)はシミュレーションにおいて、95%が入るであろう範囲。

 

Fig.4 最終的な時点におけるモンテカルロシミュレーションから推定される確率

f:id:HanamoriH:20210829215116p:plain

[0%< ] :

(シミュレーションで元本割れしなかった回数/10000回)×100(%)

シミュレーション結果において±0%を超える確率。

[+5%< ] :

(シミュレーションで投資資金が+10%以上になった回数/10000回)×100 (%)

シミュレーション結果において+10%を超える確率。

[+10%< ]  :

(シミュレーションで投資資金が+20%以上になった回数/10000回)×100 (%)

シミュレーション結果において+20%を超える確率。

[+15%< ]  :

(シミュレーションで投資資金が+30%以上になった回数/10000回)×100 (%)

シミュレーション結果において+30%を超える確率。

 [+20%< ]  :

(シミュレーションで投資資金が+40%以上になった回数/10000回)×100 (%)

シミュレーション結果において+40%を超える確率。

 

 

Fig.5 シミュレーションデータと実データ、非運用の結果数値

f:id:HanamoriH:20210829215233p:plain
timeは年月日を表す。

Resultは実データの値(万円)

Uninvestedは非運用の場合の値(万円)

Q025、Q25、Q50、Q75、Q975はそれぞれ10000回シミュレーション結果におけるパーセンタイル値(2.5%、25%、50%、75%、97.5%)での値を示す(万円)

 

Result/Uninvested= 1.910868≒ 1.9倍

8年間で投資結果は約90%増となっている。

 

なお標本期間における標準偏差、平均リターンは以下となる

年間平均リターン6.081795%、年間標準偏差15.06581

月間平均リターン0.4932、月間標準偏差4.349124

 

考察

結果より、Fig.1の全期間データから得られたグラフを見る限り、当該期間から算出した平均、標準偏差で適切な乱数が発生できるのか微妙に見えるが、対数化したグラフからは、問題なさそうな結果となっている。

株式はもともと成果が指数関数的に伸びる傾向があるためです。

通常のグラフからはシミュレーションできるような変動なのか不安になりますが、問題ないと判断します。

 

Fig.2は実際にシミュレーションした値ですが、おおよそ、過去のデータから未来が予測できているのではないかと見える結果になりました。しかし、期間が長いため、最初の方がどうなっているのかは潰れていて見ることができませんね。

 

Fig.3より、実際にシミュレーション結果の10000個のデータを大きい順に並べ、パーセンタイル値を算出した結果、多少の誤差はありますが、大方、推定する結果通りとなっているように見えます。

 

Fig.4より、元本割れをする可能性が20%ほどと結構あるようにも感じてしまいます。

 

Fig.5より、実際どの程度増えたかと言えば約90%です。シミュレーション結果からの想定より随分よさそうです。

 

やはり王道のSP500連動のSPY。さすがの成績です。

 

 

以上