見出し画像

イールドカーブを動画で把握ぅ!

Pythonを使って、米国金利のイールドカーブを見てみよう。

最近の金利の動きは、1月~3月の金利上昇と似ているようにも見えるが、少し違うような気がしたので、動画にしてイールドカーブの違いを見てみる事にした。

1.Googleコラボにアクセス。

Googleコラボにアクセス、リンクはこちら。

画像1

上記の様な画面が開くので「ノートブック新規作成」をクリック。

画像2

次に破線部分に、プログラムのコードを入力する。

2.実行するプログラム

同様に、入力欄に下記をコピペして左端の「▶︎」をクリックして実行。

import pandas as pd
import pandas_datareader.data as web
import matplotlib.pyplot as plt
from matplotlib import gridspec
import matplotlib.animation as animation
from IPython.display import HTML
%matplotlib inline

# 対象URLを指定(2021年の金利)
url='https://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/TextView.aspx?data=yieldYear&year=2021'
tbl=pd.read_html(url)

# 1個目のテーブルを格納(ズレることがある。)
df = pd.DataFrame(tbl[1])

# 日付をインデックスに指定
df = df.set_index("Date")

# 日付のフォーマットを変換
df.index = pd.to_datetime(df.index, format = '%m/%d/%y').strftime('%Y-%m-%d')
#グラフ作成処理
fig = plt.figure(facecolor='white',figsize=(6,8),tight_layout=True)#
spec = gridspec.GridSpec(ncols=1, nrows=1)
ax1 =  fig.add_subplot(spec[0,0], title='Yield Curve')

#動画作成処理
def create_ani(i):
 #前の画像をクリアする処理
 ax1.clear()
 
 ##イールドカーブ作成処理####
 ax1.plot([10,20,30,60,120,240,360,600,840,1200,2400,3600], df.iloc[i,[0,1,2,3,4,5,6,7,8,9,10,11]].astype(float), color="red"  ,alpha=1)
 
 ##各金利の最大値の日付####
 if df["30 yr"].idxmax() <= df.index[i]: 
     ax1.plot([10,20,30,60,120,240,360,600,840,1200,2400,3600], df[df["30 yr"].idxmax():df["30 yr"].idxmax()].iloc[0,[0,1,2,3,4,5,6,7,8,9,10,11]].astype(float), color="blue"  ,alpha=0.4)
     ax1.text(0.05, 0.90,df["30 yr"].idxmax() +"  30Y",horizontalalignment='left', verticalalignment='top',transform=ax1.transAxes, fontsize=15,color="blue"  ,alpha=0.2)    
 if df["10 yr"].idxmax() <= df.index[i]: 
     ax1.plot([10,20,30,60,120,240,360,600,840,1200,2400,3600], df[df["10 yr"].idxmax():df["10 yr"].idxmax()].iloc[0,[0,1,2,3,4,5,6,7,8,9,10,11]].astype(float), color="blue"  ,alpha=0.6)
     ax1.text(0.05, 0.85,df["10 yr"].idxmax() +"  10Y",horizontalalignment='left', verticalalignment='top',transform=ax1.transAxes, fontsize=15,color="blue"  ,alpha=0.4)    
 if df["5 yr"].idxmax() <= df.index[i]: 
     ax1.plot([10,20,30,60,120,240,360,600,840,1200,2400,3600], df[df["5 yr"].idxmax():df["5 yr"].idxmax()].iloc[0,[0,1,2,3,4,5,6,7,8,9,10,11]].astype(float), color="blue"  ,alpha=0.8)
     ax1.text(0.05, 0.80,df["5 yr"].idxmax() +"  05Y",horizontalalignment='left', verticalalignment='top',transform=ax1.transAxes, fontsize=15,color="blue"  ,alpha=0.8)    
 ax1.text(0.55, 0.05,"hippen_research Ltd.",horizontalalignment='left', verticalalignment='top',transform=ax1.transAxes, fontsize=15,color="gray"  ,alpha=0.5)  
 ax1.set_title(label=('Yield Curve'+"  "+df.index[i]), fontsize=25,color="gray")

 ##金利の長さ合わせて幅を調整###
 ax1.set_xticks([10,20,30,60,120,240,360,600,840,1200,2400,3600])
 ax1.set_xticklabels(["","","","","1y","2y","3y","5y","7y","10y","20y","30y"])
 ax1.set_ylim(0, df["30 yr"].max()*1.025)
 ax1.tick_params(axis='x', labelrotation=45)
 plt.show()

ani = animation.FuncAnimation(fig, create_ani, interval=45,frames = (len(df)), repeat=False)
ani.save('rate.mp4', writer="ffmpeg",dpi=100,savefig_kwargs = {'facecolor':'white'})
HTML(ani.to_html5_video())

3.実行結果

下記のようなイールドカーブが出力されます。

画像3

プログラムの仕様(グラフの見方)は以下の通り。

仕様
 赤線:現在値(画面上部に記載の日付)
 青線:各金利が最大だった日付(左上の日付に対応)
 横軸:金利の期間(※)
 縦軸:金利
 ※:1 Mo 2 Mo 3 Mo 6 Mo 1 Yr 2 Yr 3 Yr 5 Yr 7 Yr 10 Yr 20 Yr 30 Yr

4.解説

米国の10年の金利の動きだけを見ていると、3月付近の金利上昇に似た動きをしているように見えるが、イールドカーブを見てみると3月18日とは異なるイールドカーブを描いている。

3月と比較すると長期の金利は下がって来ていて、10年以下の短期金利が上昇している。更に30Yの長期金利は20Yの金利より低い状態である。

簡単に解釈すると、3月時点では、金利はいつか上がるだろうと示していたが、現在は金利の上昇が近いという事を示しているように見える。更に長期的には、そろそろ経済成長は鈍っていくかも知れないと示しているように見える。

まあ、金利は波を打ちながら、短期的に行き過ぎた動きをするので、この先どうなるか分かりませんが、金利を見る時の参考になれば幸いです。

では!

おつかれさん「缶コーヒー1杯ぐらい、ご馳走してあげよう」という太っ腹な方は投げ銭をお願いします!
課金しなくても、参考になったら「ハートボタン、フォロー、リツイート」をお願いします。読まれる可能性があがるので、次の記事を書くやる気が出ます。

追記 

上記のプログラムをカスタマイズしたので、おまけにつけておきます。
追記 2022/03/19 修正版
サイトのURLに変更があるようなので、修正したプラグラムをつけておきます。公開します。

イールドカーブの推移を動画で見るプログラム
 ・期待インフレ率
 ・名目金利
 ・実質金利
 ・期間内の最大値と最小値の日付を左に記載
 ・最大値を薄い線で線画

スクリーンショット 2021-12-28 1.04.26

ここから先は

14,911字

¥ 100

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?