【Python】株価と各指標の相関関係
無料で読めます。このコードでは、下記の様な事ができます。
株価と各指標の相関関係が図で見れます。
・業種別の株価
・金利(名目、実質、期待インフレ率)
・金、銅、ビットコイン
・ドルインデックス
下記の様な相関係数を表した図が取得できます。
事前準備は下記の通り。
0.事前準備
事前準備はこちら。5分もあればできると思います。
では、始めていきましょう。
1.インストール
下記のコードをコピペして実行します。
pip install japanize_matplotlib
pip install yfinance
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.実行結果
下記の様な図が取得できます。
4.解説
間違っているかもしれませんが、少し解説してみます。
(注:この傾向は、ずっと続くものではありません。)
図の上部(左)を見ると同じ傾向を示すものが大きくグループ分け(クラスタリング)されています。大きくは下記の様に右と左で分かれています。
これを下半分に着目して見ていきましょう。
下記の様な事が見えてきます。
①エネルギーや①素材価格が上がり、②期待インフレ率が上昇している局面では、④株価は軟調になっています。
そして、②期待インフレ率の上昇を受けて、②’名目金利が上昇しています。
このような状態を受けて、③金融関連株や③ドルが強くなっています。
しかし、②期待インフレ率の上昇とは裏腹に、⑤実質金利は下がっていたりします。
少し解説してみました。何かの参考になれば幸いです。
何かの役に立てば幸いです。
おつかれさん「缶コーヒー一杯ぐらい、ご馳走してあげよう」という太っ腹な方がいれば、よろしくお願いします!
課金しなくても、参考になったら、「ハートボタン」をクリックしたり、「リツイート」してくれると読まれる可能性があがるので嬉しいです。やる気が出ます。よろしくお願いします!
以下のおまけでは、「テーパリング」と「利上げ」の時期についての相関を見て少し解説しています。上のプログラムを実行すればできるので、おまけ程度です。
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?