我通过以下方式计算了两个证券收益率的最小方差套期保值比率(MVHR):
1.使用样本计算最优h * = Cov(S,F)/ Var(F)
2.运行OLS回归并获得beta值
两个值略有不同,例如我得到h * = 0.9547和beta = 0.9537。但他们应该是一样的。为什么会这样?
以下是我的代码:
import numpy as np
import statsmodels.api as sm
var = np.var(secRets, ddof = 1)
cov_denom = len(secRets) - 1
for i in range (0, len(secRets)):
cov_num += (indexRets[i] - indexAvg) * (secRets[i] - secAvg)
cov = cov_num / cov_denom
h = cov / var
ols_res = sm.OLS(indexRets, secRets).fit()
beta = ols_res.params[0]
print h, beta
indexRets和secRets分别是指数和证券(期货)的每日回报列表。
答案 0 :(得分:2)
这也是OLS回归中缺少常量的情况。协方差和方差计算减去线性回归中包含常数的平均值。默认情况下,statsmodels不包含常量,除非您使用公式。
有关详细信息和示例,请参阅示例OLS of statsmodels does not work with inversely proportional data?
此外,您可以通过调用numpy.cov
来替换python循环来计算协方差。