Pythonで銘柄ごとの相関係数を瞬時に計算

2022年5月28日投資Python

個別銘柄どうしの相関を考えるのは分散投資の基本で,そのためには一度自分の持っている銘柄の相関係数行列を作ってみるのがオススメです.相関係数行列を作るには

  1. 過去の株価データを取得して,それをExcelにコピペ
  2. 相関係数を計算する

という作業が必要で,これをExcelでやるとかなり手間です.仮に保有銘柄が10の場合,その株価データを取得してコピペするだけで相当な時間と労力がかかりますし,その上で相関係数を45個も計算しなければなりません.

しかし,Pythonを使えばこれらの面倒な作業が一瞬で終わります.私もPythonを覚えるまではExcelで計算していましたが,当時はまだ保有銘柄が少なかったので力技でなんとかできましたが,今はExcelで相関係数行列を作るのは考えられません.

この記事では実際のコードを載せてPythonで相関係数行列を作る方法を紹介します.皆さんの投資戦略の役に立てば幸いです.

注:この記事では相関係数の基本的なことについては触れません.これについては別記事を書く予定です.

Pythonコード

Pythonコード

読者の方で指定が必要なのは

  1. 開始日次と終了日時の指定
  2. 取得したいtickerの指定

で,startとendの変数宣言部分で指定したい日時を入力してください.また,必要なライブラリがインストールできていない場合はこのコードを実行する前に各自でインストールしてください.

私の相関係数行列

私の相関係数行列はこんな感じです.

こうやって実際に作ってみると色々な気付きがあります.まずBND(米国トータル債券ETF)は他の銘柄と無相関だということがひと目でわかります.これ以上BNDを増やすつもりはないですが,ポートフォリオのセーフティネットとしてこのまま入れておこうと思います.

また,右下にインデックスETFの相関係数行列がありますが,インデックスETFの間にはかなり強い正相関があることがわかります.今はインデックスETFを5銘柄持っていますが,このうちの2, 3に投資をしていけば分散効果としては十分だとわかりました.

ちなみに,私の保有銘柄は17なので相関係数の計算は136通りです.これをExcelで計算しようと思うと相当手間だし,しかも時間の経過とともに株価データを更新しようとすると,その136個の計算結果に対して参照範囲を変えて…など考えただけでうんざりするような作業が発生します.

Pythonなら最初のコーディングは必要ですが,一度書けばあとは条件を変えて実行するだけで一瞬で相関係数行列をアウトプットしてくれます.

いかがでしたでしょうか.皆さんも自分の保有銘柄や投資を検討している銘柄で相関係数行列を作り,それが投資戦略に役だてば幸いです.

それでは,また.

Posted by Econ