
まくまく
ある銘柄が日経平均株価とどれくらい相関しているのかを調べてみようと思います。
出力
株価の相関分析でよく使用されるヒートマップ。
それぞれの関係が可視化できていいのですが、ちょっと直感的じゃないかと思っています。ここでは単に「ある銘柄が日経平均株価とどれくらい相関しているのか」を調べたいので、もっと単純なグラフの方が適しているかと思い棒グラフで表示してみました。
日経平均に対する相関係数を棒グラフで表示してみました。
「^NKX」というのが日経平均株価です。
証券コード1570は、日経レバ(NEXT FUNDS 日経平均レバレッジ・インデックス連動型上場投信)です。当然ながら非常に高い相関を示しています。
証券コード1357は、ダブルインバ(NEXT FUNDS 日経平均ダブルインバース・インデックス連動型上場投信)です。こちらも当然ながら負の相関となっています。
あとは適当に、以下の銘柄を入力してみました。
9983:ファーストリテイリング
8035:東京エレクトロン
5401:日本製鐵
この中では、東京エレクトロンが一番相関性があると言えそうです。
サンプルプログラム-1
#ライブラリのインポート
from pandas_datareader.stooq import StooqDailyReader
from datetime import datetime
import matplotlib.pyplot as plt
import seaborn as sns
#株価取得範囲を設定
start = datetime(2021, 10, 1)
end = datetime(2021, 11, 1)
#銘柄を入力
stock = ['^NKX','1570.JP','1357.JP','9983.JP','8035.JP','5401.JP']
#株価取得
df = StooqDailyReader(stock, start=start, end=end)
df_stock = df.read()['Close']
#相関係数
df_stock.corr()
print((df_stock.corr()['^NKX']))
df_c = (df_stock.corr()['^NKX'])
#棒グラフ
df_c.plot(kind="bar", figsize=(10,5))
plt.title('Graph',fontsize=18)
plt.axes().set_axisbelow(True)
plt.grid(True)
plt.savefig("corr_graph1.png")
plt.show()
#ヒートマップ
sns_plot = sns.heatmap(df_stock.corr())
figure = sns_plot.get_figure()
figure.savefig("corr_graph2.png")
コメント
#株価取得範囲を設定
start = datetime(2021, 10, 1)
end = datetime(2021, 11, 1)
期間はここで決めます。当然ながら期間設定により相関性が異なります。
#銘柄を入力
stock = ['^NKX','1570.JP','1357.JP','9983.JP','8035.JP','5401.JP']
証券証券コードを入力した分だけグラフに表示されるデータは多くなります。
#相関係数
df_stock.corr()
df_c = (df_stock.corr()['^NKX'])
ここで日経平均を基準にします。他の銘柄を基準にするには[‘^NKX’]を任意の証券コードに変えればOKです。