見出し画像

【Python】株価と各指標の相関関係

無料で読めます。このコードでは、下記の様な事ができます。

株価と各指標の相関関係が図で見れます。
 ・業種別の株価
 ・金利(名目、実質、期待インフレ率)
 ・金、銅、ビットコイン
 ・ドルインデックス

下記の様な相関係数を表した図が取得できます。

画像3

事前準備は下記の通り。

0.事前準備

事前準備はこちら。5分もあればできると思います。

では、始めていきましょう。

1.インストール

下記のコードをコピペして実行します。

pip install japanize_matplotlib

スクリーンショット 2021-05-14 6.24.37

pip install yfinance

画像10

2.コード

下記のコードをコピペして実行します。
詳細は、コード内のコメントに記載したので、割愛します。

(1)利用時は調べたいティッカーに変更してください。
(2)利用上のコツですが、データ取得期間を短めにして、変化率を調べる期間は長めに設定すると、相関が分かり易くなります。

最初の設定値は下記の通りです。

#データ取得期間(開始・終了日)
start = datetime.date(2021,3,14)
end = datetime.date(2021,5,14)
# 期間の変化率1(20日間の変化)
df_all=(data.pct_change(20))
# 期間の変化率2(20日間の変化)
df_all_rate=(df_rate.pct_change(20))
# !pip install yfinance
# !pip install japanize-matplotlib

import datetime
import yfinance as yf
import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader.data as web
import seaborn as sns
import japanize_matplotlib #日本語化matplotlib
sns.set(font="IPAexGothic") #日本語フォント設定
%matplotlib inline

#データ取得期間(開始・終了日)
start = datetime.date(2021,3,14)
end = datetime.date(2021,5,14)

# データ取得1
codelist = ["VTI","VDE","VFH","VAW","VIS","IYR","VOX","VDC","VCR","VHT","VGT","VPU",
           "DX-Y.NYB","GLD","TIP","BTC-USD","CPER"]
data = yf.download(codelist, start=start, end=end)["Adj Close"]
# 期間の変化率1(20日間の変化)
df_all=(data.pct_change(20))

# データ取得2 Rate追加
df_rate = web.DataReader(["T10YIE","DFII10","DGS10"], "fred", start, end)
# 期間の変化率2(20日間の変化)
df_all_rate=(df_rate.pct_change(20))

# データ結合
df_all=df_all.join(df_all_rate)

# カラム名変更
df_all.rename(columns={'VDE':'エネルギー','VFH':'金融','VAW':'素材','VIS':'資本財',
                     'IYR':'不動産','VOX':'通信','VDC':'生活必需品','VCR':'一般消費財',
                     'VHT':'ヘルスケア','VGT':'情報技術','VPU':'公共事業',
                     "DX-Y.NYB":"ドルインデックス",
                     "GLD":"金","CPER":"銅","TIP":"米国物価連動国債",
                     "T10YIE":"BEI-10Y","DFII10":"実質金利10Y",
                     "DGS10":"名目金利10Y"},inplace=True)

# 不要データ削除して相関係数を計算
corr_mat = df_all.dropna().corr(method='pearson')
# 配色パターン設定
cmap = sns.color_palette("coolwarm", 100)
# 日本語フォント設定
sns.set(font="IPAexGothic")
# クラスタ化して相関係数を可視化
sns.clustermap(corr_mat, cmap=cmap,
           vmin=-1.0,vmax=1.0,center=0,annot=True,
           fmt='.1f',
           xticklabels=corr_mat.columns.values,
           yticklabels=corr_mat.columns.values)

plt.show()
# ここまで

3.実行結果

下記の様な図が取得できます。

画像2

4.解説

間違っているかもしれませんが、少し解説してみます。
(注:この傾向は、ずっと続くものではありません。)

図の上部(左)を見ると同じ傾向を示すものが大きくグループ分け(クラスタリング)されています。大きくは下記の様に右と左で分かれています。

画像5

これを下半分に着目して見ていきましょう。

下記の様な事が見えてきます。

画像4

①エネルギーや①素材価格が上がり、②期待インフレ率が上昇している局面では、④株価は軟調になっています。
そして、②期待インフレ率の上昇を受けて、②’名目金利が上昇しています。
このような状態を受けて、③金融関連株や③ドルが強くなっています。
しかし、②期待インフレ率の上昇とは裏腹に、⑤実質金利は下がっていたりします。

少し解説してみました。何かの参考になれば幸いです。

何かの役に立てば幸いです。

おつかれさん「缶コーヒー一杯ぐらい、ご馳走してあげよう」という太っ腹な方がいれば、よろしくお願いします!
課金しなくても、参考になったら、「ハートボタン」をクリックしたり、「リツイート」してくれると読まれる可能性があがるので嬉しいです。やる気が出ます。よろしくお願いします!

以下のおまけでは、「テーパリング」「利上げ」の時期についての相関を見て少し解説しています。上のプログラムを実行すればできるので、おまけ程度です。

ここから先は

1,558字 / 4画像

¥ 100

この記事が気に入ったらチップで応援してみませんか?