
「敗者のゲーム」:1万日のうち最も上昇した”たった”30日間を逃すと、リターンは半減してしまう。本当?!
投資の名著「敗者のゲーム」には
どうすれば初心者が投資で稼げるのか?
という問いに対して、示唆に富む言葉がたくさん出てきます。この本の中には
米国株式市場を代表するS&P500指数の1980~2008年の28年間におけるリターンは、年平均11.1%という素晴らしいものであるが、そのうちベスト10日間を逃すと、リターンが8.6%まで下がってしまっています。
さらに、最も上昇した30日間を逃すと、リターンは11.1%→5.5%に半減してしまう。
とあります。28年間ですから、365日x28年=10,220日です。一万日のうちの10日間逃すだけで、リターンが急減するのもショックですが、さらにたった30日間(30日/10220日=0.29%)、全体のわずか0.3%を逃すとリターンが半減すると言っています。本当なんでしょうか?
「『稲妻が輝く瞬間』に市場に居合わせなければならない」理由を、Pythonを使って実際に調べてみたいと思います。
この記事でできること
この記事でできることは以下の通りです。
・米国株指数の1980年から2008年におけるリターンを考察します。
・上昇率上位10日、20日、30日をトータルのリターンへの寄与度を調べます。
・その期間における上昇率上位10日、20日、30日を逃した場合の損益推移を調べます。
・そのような解析を行うPythonのコードを習得することができます。
対象者
この記事の対象者は、こんな人です。
1.上昇率上位を逃すことがどれほど、投資のリターンに影響を及ぼすか興味がある人。
2.プログラムを書くようなめんどくさいことはしたくないが、結果は知りたい人。
3.解析を行うPythonプログラムコードに興味のある人。
プログラムのコードに興味ある方はPythonの基礎程度は知っておいた方が良いと思います。ただ、知らなくてもコードの説明はしてありますので、必要に応じて、学習することもできると思います。
この記事で使用するもの
以下の機能を使います。
Google ColaboratoryのPython
Pythonのコードはすべて書いてあるので、これをコピー&ペーストすれば自分で同じ検証ができます。
Google Colaboratoryのpythonでの利用方法
以下の記事を読んで、Google Colaboratoryを利用できるようにしておいてください。こちらのnoteを見ると、Pythonの環境構築の方法が分かります。
上記の記事と同じ部分も多いですが、改めて、データ取得の部分のコードをのせておきます。
!pip install fix_yahoo_finance
import datetime
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt
%matplotlib inline
start = datetime.date(1980,1,1)
end = datetime.date(2008,1,1)
codelist=["^GSPC","^N225"]
data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
display(data2["^GSPC"].dropna().head(1).append(data2["^GSPC"].dropna().tail(1)))
display(data2["^N225"].dropna().head(1).append(data2["^N225"].dropna().tail(1)))
(1+data2.pct_change()).cumprod().plot()
plt.show()
内容を説明します。
!pip install fix_yahoo_finance
米国株価データをYahoo Financeからダウンロードするためのモジュールを使えるようにします。
start = datetime.date(1980,1,1)
end = datetime.date(2008,1,1)
codelist=["^GSPC","^N225"]
データ取得期間を1980年1月1日から2008年1月1日とし、取得する銘柄は
"^GSPC" : S&P 500
"^N225 : Nikkei 225
とします。
コードを入力した後はシフトキーを押しながらエンターを押す(「Shift + Enter」)と、以下の結果が出力されます。
米国株は105から1468まで上昇し、約14倍になっています。
一方の日本株は6560から15307まで約2.3倍です。
もし、
ValueError: zero-size array to reduction operation maximum which has no identity
というようなエラーメッセージがでてしまう場合はYahoo Financeへのアクセスが多くて、一時的にアクセス制限をしていることが考えられます。
10分程度おいて、再度 シフトキーを押しながらエンターを押して実行すると、結果が出てくると思います。
それでは、ここからが、今回の結果と検証となります。
まず、結果ですが、
上昇率上位の日を逃すと、市場タイミングをはからないものと比べて急速に損益が悪化していきます。チャートでみると、
市場タイミングをはからず、ずっと持ち続けた場合が青色のチャートで、
上昇率上位10日を逃すとグラフのオレンジ
上昇率上位20日を逃すとグラフの緑
上昇率上位30日を逃すとグラフの赤
の損益チャートなります。
上昇率上位の日数と、上昇率の寄与率の関係は
上昇率上位10日は全期間営業日の0.13%に相当し、上昇幅の18.3%を占める
上昇率上位20日は全期間営業日の0.27%に相当し、上昇幅の31.9%を占める
上昇率上位30日は全期間営業日の0.41%に相当し、上昇幅の44.0%を占める
となりました。結論としては、
・「敗者のゲーム」に書いてある通りの結論だった。
・市場タイミングに賭けるのは難しい。
・市場タイミングを読んで売買するよりも、単純にインデックスファンドを買って、保有し続けている方が良い。
となります。
以下はその検証を行った、Pythonのコードになります。
ここから先は
¥ 500
サポートしていただき大変ありがとうございます。 励みになります。