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

スポンサーリンク
投資

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

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

Home - Unique ETFs that divide the S&P 500 into 11 sectors | Select 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コードあり)
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
米国債のゼロクーポン債STRIPSについてのメモ
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
Google ColabでYouTube動画を開始・終了の時間を指定してPythonでダウンロード(音声・動画両方対応)【コピペで動く!】

コメント

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