Pythonで日経平均とTOPIXのNT倍率グラフを作成

まくまく
まくまく
Pythonを使用して日経平均株価とTOPIXのNT倍率のグラフを作成しました。
NT倍率を分かりやすく解説 日経平均があがっても持株が上がらない訳
日経平均株価もTOPIXも日本を代表する株価指数です。 これらの数値によって、景気の良し悪しやトレンドの確認などを判断します。 日経平均株価が上がれば、もちろんTOPIXも上がりますが、その上げ幅は同じではありません。 今...
NT倍率とは、日経平均株価をTOPIXで割った指標です。
NTの『N』はNikkei225(日経平均株価)、『T』はTOPIX、それぞれの頭文字です。
NとTの倍率というと、日経平均株価がTOPIXの何倍に当たるか?を意味しています。
日経平均株価が20,000円で、TOPIXが2,000だったらNT倍率は10です。

使用するライブラリはpandas_datareaderです。

まずは出力から。

出力


2020年1月から2021年11月までの日経平均株価、TOPIX、NT倍率をグラフ化しました。

青色の線がNT倍率です。

コロナショックにより日経平均もTOPIXも大きく暴落。その後は回復していきますが、日経平均採用銘柄が牽引していったためNT倍率も15倍を超えるほどになりました。

2021年春以降は所謂バリュー株が優位になり、NT倍率は低下傾向です。直近は、変化の兆しが見ており日経平均採用銘柄が勢いづくような感じもしますね。

期間を長くして、コロナ以前はどうだっかを見てみましょう。


2004年から2021年までのデータを取得しグラフ化してみました。

青色のNT倍率に注目すると、、、すごいですね。2000年代は10倍程度だったものが、徐々に上がってきて2021年には15倍。

直近では少し下がっていますが、、、このまま低下するのか、それとも長期トレンドが継続していくのか???

サンプルプログラム

#ライブラリのインポート
from pandas_datareader.stooq import StooqDailyReader
from datetime import datetime
import matplotlib.pyplot as plt

#株価取得範囲を設定
start = datetime(2020, 1, 1)
end = datetime(2021, 11, 1)
#銘柄コードを入力
#日経平均株価とTopix
stock = ['^NKX','^TPX']

#株価取得
df = StooqDailyReader(stock, start=start, end=end)
df_stock = df.read()['Close']
df_ntb = df_stock['^NKX']/df_stock['^TPX']
print(df_ntb)

#matplotlibで株価をグラフ化
fig=plt.figure(figsize=(16,8)) 
plt.title('N225,TOPIX,NTB Graph',fontsize=18)

#3軸設定
ax1=fig.add_subplot(1,1,1)
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1.set_xlabel('Date',fontsize=18)
ax1.set_ylabel('N225',fontsize=18 ,color='red')
ax2.set_ylabel('TOPIX',fontsize=18 ,color='green')
ax3.set_ylabel('NTB',fontsize=18 ,color='blue') 

rspine = ax3.spines['right']
rspine.set_position(('axes', 1.1))

ax1.plot(df_close['^NKX'],color='red',label="N225")
ax2.plot(df_close['^TPX'],color='green',label="TOPIX") 
ax3.plot(df_ntb,color='blue',label="NTB") 

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
h3, l3 = ax3.get_legend_handles_labels()
ax1.legend(h1 + h2 +h3, l1 + l2 +l3 ,loc='lower right', fontsize=18)

#グラフをpng形式で保存
plt.savefig("N225-TPX-NTB graph.png")

コメント

start = datetime(2020, 1, 1)
end = datetime(2021, 11, 1)

startとendに入力した期間のデータを取得できます。

#株価取得
df = StooqDailyReader(stock, start=start, end=end)
df_stock = df.read()['Close']
df_ntb = df_stock['^NKX']/df_stock['^TPX']

日々の終値データをデータフレームに格納し、日経平均株価をTOPIXで割っています。

#3軸設定
ax1=fig.add_subplot(1,1,1)
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1.set_xlabel('Date',fontsize=18)
ax1.set_ylabel('N225',fontsize=18 ,color='red')
ax2.set_ylabel('TOPIX',fontsize=18 ,color='green')
ax3.set_ylabel('NTB',fontsize=18 ,color='blue') 

rspine = ax3.spines['right']
rspine.set_position(('axes', 1.1))

ax1.plot(df_close['^NKX'],color='red',label="N225")
ax2.plot(df_close['^TPX'],color='green',label="TOPIX") 
ax3.plot(df_ntb,color='blue',label="NTB") 

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
h3, l3 = ax3.get_legend_handles_labels()
ax1.legend(h1 + h2 +h3, l1 + l2 +l3 ,loc='lower right', fontsize=18)

3軸のグラフを作成します。フォントサイズや色、ラベルなどはここで設定。

plt.savefig("N225-TPX-NTB graph.png")

グラフはPNGで保存するようにしました。

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