目录
当两年期美国公债减十年期美国公债利差为正,我们称之为殖利率曲线倒挂。
通常天期越长的债券需要较高的风险溢酬,而发生倒挂时伴随而来的是关于景气衰退的疑虑,而本文将以寻找每个发生倒挂的时点,接著绘出一年之前与两年后的总经数据以提供观察。
本文使用 Window10 并以 Spyder(anaconda31) 作为编辑器
#######################3 from datetime import datetime, timedelta import pandas as pd import numpy as np import matplotlib.pyplot as plt #########################3 import tejapi import plotly.graph_objects as go import plotly.io as pio ################## pio.renderers.default = 'browser' ##PLOT IN WEB
总体经济资料: 总体经济 资料库代码 (GLOBAL/ANMAR),
总体经济资料: 总体经济说明 资料库代码 (GLOBAL/ABMAR)
TEJ PRO 总体经济资料库
本文的公债取自TEJ PRO资料库,所以在本机端读取
df=pd.read_excel("C:Users/user/Desktop/Tej/美国公债殖利率.xlsx")
资料里面有na值,我们要将她删除 并且重设index
df.dropna(inplace=True)
df.reset_index(drop=True,inplace=True)
df["dif2Y"]=df.US10Y-df.US2Y df["invertkeepday"]=df["dif2Y"].apply(lambda x : 1 if x < 0 else 0 )
df["cross"]=np.nan df["notcross"]=np.nan
startday=[] endday =[] keep = 0 df=df.copy() for i in range(len(df)): if df["invertkeepday"][i] >0 : if keep == 0: df["cross"][i]=df["US10Y"][i] startday.append(df["日期"][i]) keep = 1 elif keep == 1 : df["notcross"][i]=df["US10Y"][i]
if df["invertkeepday"][i] < 1 : endday.append(df["日期"][i]) keep = 0
我们用程式来看有多少资料
for start , end in zip(startday,endday):
print(start , end, end-start)
inverted=pd.DataFrame(endday,startday) inverted.reset_index(inplace=True) inverted["year"]=inverted["index"].dt.year datetime=inverted.groupby('year') datetime=list(datetime) getstart=[] getend =[] for i in datetime : i[1].reset_index(drop=True,inplace=True) start = i[1]["index"][0] end = i[1][ 0][len(i[1])-1] getstart.append(start) getend.append(end) for start , end in zip(getstart,getend): print(start , end, end-start)
1990 , 1998 ,2000 ,2005~2007 , 2019, 2022 ,一共发生六次
df.set_index("日期",inplace=True)
plt.figure(figsize=(12.2,4.5)) plt.scatter(df.index,df['cross'],color='red', label='cross!',marker='x',alpha=1) plt.scatter(df.index,df['notcross'],color='green', label='Notcross',marker='o',alpha=1) plt.plot(df["US2Y"], label='2Y', alpha=0.35) plt.plot(df["US10Y"], label='10Y', alpha=0.35) plt.plot(df["dif2Y"], label='dif', alpha=0.35)
plt.title('Close Price Buy & Sell Signals') plt.xticks(rotation=45) plt.xlabel('Date') plt.ylabel('Price') plt.legend() plt.grid()
df[df["US2Y"]==0]
df.drop(index="2017-04-14",axis=1,inplace=True)
##因为资料有0 影响画图
接下来我们拥有倒挂发生的时间后,使用他为输入绘出近两年的经济数据,包含PMI ,失业率,经济成长率,消费者信心等
从各方面的经济数据来看可能代表著景气已过高峰,因此对未来景气产生疑虑,售出短天期的债券,而偏好更长期的债券,才导致殖利率发生倒挂,虽然每次发生倒挂后,会伴随著经济衰退,但这五次发生倒挂后,有两次美国经济并未在两年内发生经济衰退,2000年因为遇上网路泡沫,而2019年倒挂后也是因为遇上疫情后才产生经济衰退。
而现在呢?
目前美国的经济数据高峰虽已过,但仍维持在很高的水准,也因为依然强劲的经济表现,使美国联准会进入了升息循环,虽然每次的倒挂随后都会衰退,但这个指标为非常领先的指标了,过去五次两年期与十年期发生倒挂,平均还要18个月才会发生衰退,或许倒挂是想告诉我们
嘿! 该注意风险了。