Tushare实战分析美国国债收益率与利率的关系

作者: pdnbplus | 发布时间: 2024/07/14 | 阅读量: 217

# 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()

结果如下: 美国10,20,30年期国债与m1利率的关系

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()

结果如下: 美国10,20,30年期国债与m3利率的关系

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()

结果如下:美国10,20,30年期国债与m6利率的关系