株価のような時系列データを分析する上で正規化をしておくことの重要性をご紹介したいと思います。
以前、似たような視点で【コピペで動く!】ビットコインなどボラティリティの大きな銘柄を対数で分析する(CSVデータの読み込みと文字列データを日付、数値データへ変換する前処理、対数正規分布について)という記事を書きました。
こちらの記事では対数正規分布をもとにした分析やデータの前処理について紹介しました。
今回は複数銘柄の比較や相対的な関係という視点から紹介したいと思います。
本記事を書いた理由
こちらの記事で、基準銘柄からの相対パフォーマンスを見る事興味深いことが分かるというものを紹介しました。
今回の例ではS&P500を基準にしていますが、上下対象になっているように見えます。
その記事では「大口投資家の投資資金はフルインベストメントの場合もあり、製氷皿の中を資金が動いているとたとえられることもありますが、成長株・グロースから逃げた資金は、えてして配当系のところに行きつくのですかね」と書きました。
Pythonでも実際にこのグラフ・チャートが書けるのか確認してみたいと思います。
データの取得
こちらの記事など参照いただき基本的なデータの取得を行っていただきたいと思います。
今回取得するデータは以下のものになります。
VOO : S&P500 に連動するETF
VUG : 大型株グロースETF
VYM : 高配当ETF
実際に取得したデータで累積積でプロットすると以下のようなチャートが書けます。
正規化について
このグラフだけからなかなか相関や関係性を見出すのは難しいかもしれません。
今回は正規化ということでそれぞれの銘柄の変化率から基準となるS&P500 に連動するETFの変化分を引いてその相対的な強さ、弱さを見ることにします。
正規化するという事でNormalizationしたデータテーブルという事でndfというデータテーブルを新規に作って確認してみたいと思います。
ndf = data2.dropna().pct_change().dropna().copy()
ndf = ndf.apply(lambda x: x - x.VOO , axis=1)
display(ndf)
これをプロットすると以下のようになります。
stockcharts.com で見たのと同じチャートが出てきます。
実際に正規化をかけると単純なチャートだけでは見えてこない各銘柄間の相関や、関係性が見えてくるように思われます。
他にも関係性があるものはないのか?!
いいことを聞いた!でもたまたまなのか、それともこれ以外にもそういった関係があるものがないのか?システマチックに探す方法はないのでしょうか?セクターETFで探してみたいと思います。
考えてみたいと思います。
使用するETFリストは SPDR Sector ETFとします。
具体的には以下のETFを利用します。
symbol | Name |
XLB | MATERIALS |
XLC | Communication Services |
XLE | Energy |
XLF | Financials |
XLI | Industrials |
XLK | Technology |
XLP | Consumer Staples |
XLRE | Real Estate |
XLU | Utilities |
XLV | Health Care |
XLY | Consumer Discretionary |
先ほどの銘柄と合わせ、それらの銘柄の日次の変化率からS&P500 に連動するETFの変化率を引くことで正規化をかけて、その相関をを調べます。
plt.figure(figsize=(20, 10))
sns.heatmap(ndf.corr(), annot=True, fmt='.2f',cmap='Blues')
plt.tick_params(labelbottom="off",bottom="off")
plt.show()
実際に見てみるとVYMとVUGの相関が-0.96となっていて、逆相関に近い状態になっていることが分かると思います。また、その次に逆相関に近いものは-0.86のVYMとXLKであることもこの表・数値から見て取れます。
実際のチャートと正規化をかけたのちのチャート
VYM:YUGほどではないですが、なかなか興味深い形状をしています。
一つ前処理をしてあげると様々な関係性が、エッジが見えてきたり、利益の源泉へ近づく一歩になるように思えます。
ディスクレーマー
投資に関する免責事項情報の提供・作業代行を目的としており、投資勧誘を目的とするものではありません。
—
投資に関する記事をご紹介します。
コメント