# Tushare实战分析美国国债收益率与利率的关系
提示:如果还不知道tushare的小伙伴,我悄悄告诉你们tushare网址
获取美国国债收益率与利率的数据
先从tushare获取美国国债收益率与利率的数据, 时间窗口选择了2000-2021的21年时间序列数据;
因为tushare的接口一次传输的数据量最大是2000,所以我们分三次获取
话不多说,上代码!!!
# 导入tushare
import tushare as ts
import pandas as pd
# 初始化pro接口
pro = ts.pro_api('你的接口神秘代码')
# 拉取数据
df1 = pro.us_tycr(**{
"date": "",
"start_date": 20000101,
"end_date": 20070101,
"limit": "",
"offset": ""
}, fields=[
"date",
"m1",
"m2",
"m3",
"m6",
"y1",
"y2",
"y3",
"y5",
"y7",
"y10",
"y20",
"y30"
])
df2 = pro.us_tycr(**{
"date": "",
"start_date": 20070101,
"end_date": 20140101,
"limit": "",
"offset": ""
}, fields=[
"date",
"m1",
"m2",
"m3",
"m6",
"y1",
"y2",
"y3",
"y5",
"y7",
"y10",
"y20",
"y30"
])
df3 = pro.us_tycr(**{
"date": "",
"start_date": 20140101,
"end_date": 20210101,
"limit": "",
"offset": ""
}, fields=[
"date",
"m1",
"m2",
"m3",
"m6",
"y1",
"y2",
"y3",
"y5",
"y7",
"y10",
"y20",
"y30"
])
# 将21年内的数据合并, 保存
data = pd.concat([df3, df2, df1], axis=0)
data.to_csv('2000-2021美债收益率及货币量变化.csv')
注意:
你的接口神秘代码要在tushare的个人主页上的接口token上获取!!!
对数据进行预处理
1.将每日的数据调整成每月数据
def transfer(data): # 自定义转换函数
for i in range(len(data)):
data.iloc[i, 0] = data.iloc[i, 0][0:6]
return data.groupby('date').mean()
data_month = transfer(data)
2.缺失值处理
sum(data_month.m1.isna()==True) #查看缺失值个数
sum(data_month.m3.isna()==True) #查看缺失值个数
sum(data_month.m6.isna()==True) #查看缺失值个数
sum(data_month.y10.isna()==True) #查看缺失值个数
sum(data_month.y20.isna()==True) #查看缺失值个数
sum(data_month.y30.isna()==True) #查看缺失值个数
data_month.fillna(method='bfill', inplace=True) #把最邻近填充进去
3.计算协方差矩阵
计算协方差矩阵查看数据的相关性
cov_matrix = data_month.cov()
结果如下:
画图查看美国国债收益率与利率的关系
1.美国10,20,30年期国债与m1利率的关系
采用matplotlib画图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(8,8))
plt.plot(data_month.index, data_month[['m1', 'y10', 'y20', 'y30']])
plt.legend(labels=['m1', 'y10', 'y20', 'y30'])
plt.title('美国10,20,30年期国债与m1利率的关系')
plt.savefig('./美国10,20,30年期国债与m1利率的关系.jpg')
plt.show()
结果如下:
2.美国10,20,30年期国债与m3利率的关系
话不多说, 上代码
plt.figure(figsize=(8,8))
plt.plot(data_month.index, data_month[['m3', 'y10', 'y20', 'y30']])
plt.legend(labels=['m3', 'y10', 'y20', 'y30'])
plt.title('美国10,20,30年期国债与m3利率的关系')
plt.savefig('./美国10,20,30年期国债与m3利率的关系.jpg')
plt.show()
结果如下:
3.美国10,20,30年期国债与m6利率的关系
上代码!!!
plt.figure(figsize=(8,8))
plt.plot(data_month.index, data_month[['m6', 'y10', 'y20', 'y30']])
plt.legend(labels=['m6', 'y10', 'y20', 'y30'])
plt.title('美国10,20,30年期国债与m6利率的关系')
plt.savefig('./美国10,20,30年期国债与m6利率的关系.jpg')
plt.show()
结果如下: