本文主要是介绍pandas计算对冲比率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前置条件:
1. 以黄金白银主力合约为例
2. 数据
AU黄金数据:
链接:https://pan.baidu.com/s/1GfSWSvygp7lrAeckXK4ypw
提取码:92l6
AG白银数据:
链接:https://pan.baidu.com/s/13RGpZmGyTQbONbOMlUnW5g
提取码:r0oj
-------------------------------------------
对冲比率计算方法:
对冲比率 = 【黄金和白银的协方差】/【黄金的方差】
对冲比率 = Cov(黄金收益率,白银收益率)/Var(黄金收益率)
计算过程:
1. 将AG_main_pe.csv 和 AU_main_pe.csv 放到一个目录下
2. 在该目录下打开 jupyter notebook, 读入数据文件并根据日期对齐
import numpy as np
import pandas as pdag_file_path = r'./AG_main_pe.csv'
au_file_path = r'./AU_main_pe.csv'
ag_df = pd.read_csv(ag_file_path,encoding='utf-8')
au_df = pd.read_csv(au_file_path,encoding='utf-8')
ag_df = ag_df.loc[:,['date','ag_close','ag_pe']]
au_df = au_df.loc[:,['date','au_close','au_pe']]
ag_df['date'] = pd.to_datetime(ag_df['date'])
au_df['date'] = pd.to_datetime(au_df['date'])
two_df0 = pd.merge(ag_df,au_df,how='inner',on='date')
two_df0.sort_values(by='date',ascending=True,inplace=True)
3. 计算对冲比率
# 计算 AG和AU 的协方差
res_cov = two_df0.au_pe.cov(two_df0.ag_pe)
# 计算 AU 的方差
au_var = two_df0.au_pe.var()
# 对冲比率
final_res = res_cov/au_var
print('AG和AU的协方差',res_cov)
print('AU的方差',au_var)
print('对冲比率',final_res)
# 打印结果
# AG和AU的协方差 0.00011104459160659251
# AU的方差 8.258266462241457e-05
# 对冲比率 1.3446477189166988
至此,对冲比率计算完毕。
附加:
使用OLS计算对冲比率,OLS中所得的系数即是对冲比率。
在上面的代码中继续:
import statsmodels.api as sm
two_df0.dropna(inplace=True)
model01 = sm.OLS(two_df0['ag_pe'],sm.add_constant(two_df0['au_pe'])).fit()
model01.summary()
单独打印系数:
model01.params[1]
# 1.3440849961596375
这篇关于pandas计算对冲比率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!