我想将roll赋值给t_day收益率和t+1_day收益率的月度协方差,如果cov为负:应用2*sqrt(-cov),而不是零。
但是运行我的代码,我得到了这个错误...结果是相当不错的,,,像这样
name1 2013-09-30 0.002193601356164988
2013-10-31 0.001500876935056412
2013-11-30 0.0015710504892213046
2013-12-31 0.0
2014-01-31 0.0008342633559122567
...
name2 2012-04-30 0.0009217237910999249
2012-05-31 0.0004212605025293337
2012-06-30 0.0005957681555937112
2012-07-31 0.0026365027039003393
2012-08-31 0.00010877514161905981
如何修复这个错误?或者我应该忽略它?
我的剧本是roll = groupdf.resample('1M').apply(lambda r: np.where(r.cov(r.shift(1))<0, 2*np.sqrt(-(r.cov(r.shift(1)))), 0))
1条答案
按热度按时间1yjd4xko1#
首先计算两列之间的协方差,然后应用负协方差情况的逻辑
这样,就完成了两列之间滚动协方差的计算,然后对结果应用lambda函数