(Python)MVHR Covariance和OLS Beta的区别

时间:2014-07-16 02:42:44

标签: python numpy statsmodels

我通过以下方式计算了两个证券收益率的最小方差套期保值比率(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分别是指数和证券(期货)的每日回报列表。

1 个答案:

答案 0 :(得分:2)

这也是OLS回归中缺少常量的情况。协方差和方差计算减去线性回归中包含常数的平均值。默认情况下,statsmodels不包含常量,除非您使用公式。

有关详细信息和示例,请参阅示例OLS of statsmodels does not work with inversely proportional data?

此外,您可以通过调用numpy.cov来替换python循环来计算协方差。