株価時系列データを分析する上で正規化を行う事の重要性について紹介する【違いをみつけろ!】

スポンサーリンク
投資

株価のような時系列データを分析する上で正規化をしておくことの重要性をご紹介したいと思います。

以前、似たような視点で【コピペで動く!】ビットコインなどボラティリティの大きな銘柄を対数で分析する(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とします。

Sector Tracker - Track the movement of the 11 Sector SPDRs

具体的には以下のETFを利用します。

symbolName
XLBMATERIALS
XLCCommunication Services
XLEEnergy
XLFFinancials
XLIIndustrials
XLKTechnology
XLPConsumer Staples
XLREReal Estate
XLUUtilities
XLVHealth Care
XLYConsumer 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ほどではないですが、なかなか興味深い形状をしています。

一つ前処理をしてあげると様々な関係性が、エッジが見えてきたり、利益の源泉へ近づく一歩になるように思えます。

ディスクレーマー

投資に関する免責事項情報の提供・作業代行を目的としており、投資勧誘を目的とするものではありません。

投資に関する記事をご紹介します。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
デコピコミンが全国(47都道府県)で、どの施設に出てくるか地図(Google Maps)で確認!!【ピクミン ブルーム(Pikmin Bloom)】
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
Windows10で機械学習環境チェック CPU/GPUでTensorflowの作業時間はどのくらい違うのか、Google Colabとも比較してみた。(CUDA Toolkit,cuDNN)
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
米国債のゼロクーポン債STRIPSについてのメモ
株価時系列データを分析する上で正規化を行う事の重要性について紹介する【違いをみつけろ!】
ConoHa WINGレンタルサーバーでPython! Webアプリcgiを動かす手順を紹介!3つの例あり【コピペで動く!】
Google Analytics にPython APIで接続してみた話【コピペで動く!】
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
Google Data Portalを使ってWeb上のオープンデータを使って簡単に情報を可視化しようという話

コメント

タイトルとURLをコピーしました