プログラミング開発

【Python】株価と金利の相関関係を可視化する方法

昨今米国株価が下落傾向にある。金利が上がっていることが原因と言われているけど、具体的には株価と金利にはどのような関係があるのだろうか。

こんな悩みにお答えします。

PythonのAPIを利用することで株価と金利を取得することができ、相関関係を確認することができます。

なぜなら、Pythonには豊富なライブラリが揃っているからです。

今回は、Pythonで株価と金利の相関関係を可視化する方法をご紹介します。

この記事を読み終えると、Pythonを用いて株式の分析を行うイメージを持つことができます。

本記事の内容

・株価データ、金利データの取得方法
・Pythonによる相関関係の算出方法

Pythonを学べるおすすめのプログラミングスクール
1. Aidemy
・・・AIエンジニアとしてのスキルを身に付けたい。その延長で就職、転職できたら嬉しい方におすすめ。
2.侍エンジニア塾
・・・基礎力と即戦力を身に付けられる、満足度No.1スクール
3.
TechAcademy
・・・副業に向けてスキルアップしたい。フリーランスなどを目指している方向け。
4
. AIジョブカレッジ
・・・コスパ良く、質の高い講座を受けたい方におすすめ。

本記事の信頼性

ひよこ
ひよこ

私は、大学時代にプログラミングを学び、PHPなどのWeb系言語からAIに用いられるPythonまで幅広く経験してきました。

現在はデータサイエンティストとして大企業で活動しています。

また今ではほぼ不労所得として月10万円以上の収益を継続的に達成しています。

 

 

1. 結論:株価と金利には逆相関の傾向がある

米国10年国債-NASDAQ

一般的には、金利と株価は逆相関の関係にあると言われています。

確かに、上図では金利が下がるとNASDAQの株価は上がり、金利が上がるとNASDAQの株価は下がっているように見受けられます。

 

しかし、すべての時間、すべての株式について成り立つのでしょうか?

今回は株価と金利の関係をデータを基に見ていきます。

 

2. 株価と金利の関係

金利とは預金や借金に対する利息の割合で、経済状況や国の政策によって調整されています。

一般的には金利と株価には相関関係があると言われており株価に大きな影響を与えます。金利と株価には以下のような傾向があります。

 

  • 金利が下がる↓と株価は上がる↑
    • 資金調達がしやすくなるため、企業業績向上への期待から株式に投資妙味が出る
  • 金利が上がる↑と株価は下がる↓
    • 企業では借入れコストの増加上昇から設備投資の縮小し、個人投資家は住宅ローン金利の上昇から住宅購入を見送ります。その結果、企業業績低迷への不安から株価下落に繋がる
    • また、預金の金利が高く、株式に投資妙味が出ない

       

      今回は、上記の関係性を株価と金利の相関係数を算出することにより確認していきます。

       

      a. 相関関係

      相関関係とは、片方の値が変化すればもう片方も同じように変化する関係を指します。相関関係の算出にはいくつか種類がありますが、ここでは最も有名なピアソンの相関係数を用います。

      ピアソンの相関係数2組の数値からなるデータ列\((x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\)が与えられた時、標本共分散を\(s_{xy}\)、標本標準偏差を\(s_x,s_y\)とおくと、相関係数\(r\)は以下の式で算出することができます。

      $$r=\frac{s_{xy}}{s_{x}s_{y}}$$

      $$=\frac{\sum_{i=1}^{n}{(x_i-\overline{x})(y_i-\overline{y})}}{\sqrt{\sum_{j=1}^{n}{(x_j-\overline{x})^2}}\sqrt{\sum_{k=1}^{n}{(y_k-\overline{y})^2}}}$$

       

      ピアソンの相関係数は-1~1の範囲に収まります。

      • 1:正の相関(xが増加すればyも増加)
      • -1:負の相関(xが増加すればyは減少)
      • 0:無相関

      となります。

      データには外れ値やノイズも含まれているため、ここでは0.7以上で正の相関、-0.7以下で負の相関があると考えることとします。

      ひよこ
      ひよこ

      また、相関関係と因果関係は別物なので混同しないように気を付けましょう!株価と金利の関係は因果関係では?と思われるかもしれませんが、株価の変動は金利以外の要素にも影響されるため、相関関係と言われているのかな、と思います。

       

       

      3. Pythonで株価と金利の関係を可視化

      ここから、実際に株式と金利データを取得して関係性を確認していきます。

      a. 対象データ

      今回は、以下のデータを対象に検証を行います。

      対象コード株価/金利
      米国10年債利回り^TNX金利
      S&P500^GSPC株価(主要指数)
      ナスダック総合^IXIC株価(主要指数)
      NYダウ^DJI株価(主要指数)
      エネルギー^GSPE株価(セクター)
      素材^SP500-15株価(セクター)
      工業・資本財サービス^SP500-20株価(セクター)
      一般消費財・サービス^SP500-25株価(セクター)
      生活必需品^SP500-30株価(セクター)
      ヘルスケア^SP500-35株価(セクター)
      金融^SP500-40株価(セクター)
      情報技術^SP500-45株価(セクター)
      電気通信サービス^SP500-50株価(セクター)
      公共事業
      ^SP500-55株価(セクター)

      金利データとしては、米国10年債利回りを利用します。

      株式としては、3種の主要指標(S&P500、NASDAQ、ダウ平均)セクター別の株価を対象とします。

       

      b. 対象期間

      対象期間は、2016年1月1日~2022年5月20日とします。

      5、6年分のデータを検証すればおおよその傾向は分かるでしょう。一方で、米国株が好調の時期であるため金利が上がっても株価が下がっていない可能性が懸念されます。

       

      c. データ取得

      まずはpandas-datareaderを用いてそれぞれのデータを取得します。

      >>【Python】初心者必見の株価取得方法~ライブラリ利用~
      >>【株式投資】Pythonでスクリーニングする方法

      import pandas_datareader.data as web
      
      #期間:2016/1/1~2022/5/20
      st = '2016/01/01'
      ed = '2022/05/20'
      
      
      #前項で述べた14種のデータをリスト化
      stock = ['^TNX','^GSPC','^IXIC','^DJI',
               '^GSPE','^SP500-20','^SP500-30','^SP500-40',
               '^SP500-50','^SP500-15','^SP500-25','^SP500-35',
               '^SP500-45','^SP500-55']
      
      #調整済みの終値を取得対象とする
      data = web.DataReader(stock, 'yahoo',start=st,end=ed)["Adj Close"]

       

      d. データ整形

      相関関係を算出するために、取得した金利と株価データを整形します。

      #欠損値を直前のデータで補完
      data = data.fillna(method='ffill')

      pandas-datareaderの情報は必ずしも正確ではない場合があり、欠損値が含まれていることもあります。

      ピアソンの相関係数の式から分かるように、欠損値があった場合には正しく算出することができなくなります。

      したがって、欠損値部分については直前のデータで補完することで対応しています。

       

       

      e. 相関関係の取得

      pandasのデータフレームを用いることで、相関係数を簡単に求めることができます。

      print(data.corr())
      
      
      #実行結果
      Symbols ^TNX ^GSPC ^IXIC ^DJI ... ^SP500-25 ^SP500-35 ^SP500-45 ^SP500-55
      Symbols ...
      ^TNX 1.000000 -0.318989 -0.414227 -0.221968 ... -0.394260 -0.349500 -0.419116 -0.373421
      ^GSPC -0.318989 1.000000 0.988026 0.980342 ... 0.987584 0.988402 0.990151 0.893752
      ^IXIC -0.414227 0.988026 1.000000 0.957830 ... 0.994600 0.978798 0.995038 0.860832
      ^DJI -0.221968 0.980342 0.957830 1.000000 ... 0.963034 0.966437 0.956048 0.893652
      ^GSPE 0.853554 -0.296352 -0.410216 -0.257346 ... -0.392414 -0.338277 -0.400972 -0.326713
      ^SP500-20 -0.143751 0.965165 0.932525 0.974270 ... 0.934077 0.931024 0.923813 0.848099
      ^SP500-30 -0.399567 0.944694 0.921569 0.896936 ... 0.921832 0.945292 0.940703 0.922202
      ^SP500-40 -0.005384 0.925554 0.872665 0.947673 ... 0.873912 0.886903 0.869384 0.802191
      ^SP500-50 -0.484290 0.886563 0.901140 0.806378 ... 0.886943 0.859394 0.888789 0.737888
      ^SP500-15 -0.190781 0.967905 0.944400 0.947811 ... 0.940608 0.940717 0.939162 0.825852
      ^SP500-25 -0.394260 0.987584 0.994600 0.963034 ... 1.000000 0.976177 0.991520 0.868467
      ^SP500-35 -0.349500 0.988402 0.978798 0.966437 ... 0.976177 1.000000 0.986532 0.907309
      ^SP500-45 -0.419116 0.990151 0.995038 0.956048 ... 0.991520 0.986532 1.000000 0.883806
      ^SP500-55 -0.373421 0.893752 0.860832 0.893652 ... 0.868467 0.907309 0.883806 1.000000

      データフレームのカラムごとに相関係数を算出します。よって対角線が同じ数列同士の相関係数となり、すべて1となっています。

      それぞれの株価と金利の相関をまとめると以下のとおりです。

      株価データ米国10年債利回りとの相関係数
      S&P500-0.318989
      ナスダック総合-0.414227
      NYダウ-0.221968
      エネルギー0.853554
      素材-0.190781
      工業・資本財サービス-0.143751
      一般消費財・サービス-0.394260
      生活必需品-0.399567
      ヘルスケア-0.349500
      金融-0.005384
      情報技術-0.419116
      電気通信サービス-0.484290
      公共事業
      -0.373421

      まず、主要3指標を確認すると、すべてマイナスであることから金利が上昇すると株価は下落する傾向にあると分かります。しかし、最も低いNASDAQでも-0.4程度であり明確に負の相関があるとは言えません。また、バリュー株を多く含むダウは金利の動きにはほとんど影響されていないことが確認できます。

      セクター別で見ると、ハイテク株を多く含む情報技術セクターや電気通信サービスセクターは-0.4~-0.5であり低い値にはなっていますが負の相関は確認できず意外な結果となりました。その他のセクターを見てもいずれも-0.4~-0.3程度に留まっています。

      一方で、エネルギーセクターの相関係数は0.85と唯一正の相関があると言えるでしょう。また、金融セクターはほぼ0となっており相関はないことが分かります。

       

      ・金利が上昇すると株価は下落する場合が多い
      ・対象期間(2016~2022年)においては必ずしも金利と株価に負の相関があるわけではない
      ・情報技術セクターや電気通信サービスセクターは負の相関に近い
      ・エネルギーセクターは正の相関がある
      ・金融セクターには相関がない

       

      f. 可視化

      最後に時系列データとして株価と金利を可視化することで、相関関係を見ていきます。

      import matplotlib.pyplot as plt
      
      for selected_stock in stock[1:]:
         fig, ax1 = plt.subplots()
         ax2 = ax1.twinx()
      
         #2軸グラフの本体設定
         ax1.plot(data["^TNX"],color="#f0b2a2", label="金利:^TNX")
         ax2.plot(data[selected_stock], label="株価:"+str(selected_stock))
         handler1, label1 = ax1.get_legend_handles_labels()
         handler2, label2 = ax2.get_legend_handles_labels()
      
         #凡例をまとめて出力する
         ax1.legend(handler1 + handler2, label1 + label2, loc=2, borderaxespad=0.)
      
         plt.show()

       

      まずは、NASDAQです。

      2019年や2020年、2022年では、株価は金利と逆の動きをしていることが分かります。ただ、直近10年は総じて米国株に投資妙味があったため、金利に多少動きがあったとて株価に大きな影響は与えていません。ピアソンの相関係数からNASDAQと金利に相関関係が見られなかったのはこのことが原因になっていると考えられます。

      米10年国債-NASDAQ

       

      続いてエネルギーセクターです。

      NASDAQと比較し、株価と金利はかなり類似した動きをしていることが見て取れます。このことから金利の変動に合わせてエネルギーセクターに投資することは有効な戦略であると分かります。しかし、コロナショックからの回復を考えると、NASDAQの高騰と比較すると非常に緩やかであることが分かります。つまり、あくまで分散投資を行っておくことが大切ということです。

      米10年国債-エネルギーセクター

       

      その他の可視化結果は以下のリンクよりご確認ください。

       

       

      4. 金利データを株価予測に活かすためには

      今回の検証から、金利データを株価予測に活かすことを考える。方法としては以下が一例として挙げられる。

      • セクター別の株価予測を行う
        • ノイズを含みづらく、予測が容易になる可能性がある(S&P500よりもエネルギーセクターの株価予測の方が容易など)
      • 金利の変化率が大きい日(FOMCの開催日)をトレンドの転換点とする
        • 金利が大きく変化したポイント(コロナショックなど)では株価も急変しやすい。したがって、金利の変化率が大きい日は株価トレンドの転換点と考えることができる

       

      また、今回は日次データを利用して検証を行いましたが、月次データとして相関を見るなど行うことで一時的な変化を吸収することができ、より正確な株価と金利の関係性を見ることができるかもしれません。

      そして、今回の対象期間は米国株が好調であり、買っていれば利益を得ることができた相場でした。したがって、本来であれば50年などの長期スパンで検証を行う必要があったと思われます。

       

      5. まとめ

      今回は、Pythonで株価と金利の相関関係を可視化する方法をご紹介しました。

      ・株価データ、金利データの取得方法
      ・Pythonによる相関関係の算出方法

      Pythonを用いることで、簡単に株価と金利の関係性を確認することができました。ただ、検証を行った2016年以降ではあまり相関は見て取れず、唯一エネルギーセクターの株価には正の相関が見られる結果となりました。

      次回は、株価と金利の関係を見ていくことで、株価予測に活かすことも考えていきたいと思います。

      >>【Python】Prophetを用いて株価を予測する方法(初心者向け)

       

       

       

      本ブログでは、株式やプログラミングに関する記事を投稿しています。

      プログラミング(Python)を学びたい方におすすめの書籍やプログラミングスクール、おすすめの学習方法などをご紹介しておりますのでぜひご覧ください。

      独学で挫折してしまう方は、プログラミングスクールという方法がおすすめです。

      私の一押しは『TechAcademy』です。

      質問することですぐに分からないところをクリアにできますし、進捗をサポートしてくれるため確実に成長することができます。

      無料相談を実施しているため、まずは話を聞いてあなたのスタイルに合っているかどうか確認してみるのが良いと思います。

      スキルアップを目指したい方におすすめのオンライン学習サービス

       

       

      コメント

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