【发布时间】:2021-04-16 14:30:07
【问题描述】:
我有一个包含 12904 天的十个不同投资组合的 DataFrame。我正在尝试使用过去 750 次每日收益来获取该月最后一天的滚动协方差矩阵。我使用 .rolling() 函数获得每日(编辑:仅工作日)协方差矩阵。不幸的是,重新采样该矩阵以获取每日协方差矩阵的最后一个值并不会返回每天的矩阵,而是返回单行。 非常感谢任何帮助!
DataFrame 的excess_return(12904 行×10 列):
NoDur Durbl Manuf Enrgy HiTec Telcm Shops Hlth Utils Other
Date
1970-01-02 0.0074 0.0188 0.0111 0.0175 0.0069 0.0162 0.0041 -0.0035 0.0159 0.0175
1970-01-05 0.0058 -0.0023 0.0049 0.0099 0.0066 0.0237 -0.0026 -0.0019 0.0122 0.0052
1970-01-06 -0.0032 -0.0135 -0.0085 -0.0107 -0.0050 -0.0002 0.0015 -0.0047 -0.0105 -0.0111
1970-01-07 0.0012 -0.0047 -0.0004 -0.0080 -0.0000 -0.0015 0.0042 0.0007 -0.0038 -0.0012
1970-01-08 -0.0024 -0.0035 0.0021 -0.0034 0.00255 -0.0057 0.0007 0.0062 0.0015 0.0011
每日滚动协方差矩阵:
rolling_cov = excess_return.rolling(750).cov().shift()
我试过的代码:
rolling_cov_monthly = excess_return.rolling(750).cov().shift().groupby([pd.Grouper(level="Date",freq="M")]).last()
这没有返回错误,但没有以矩阵格式返回所需的输出。
我尝试的另一个代码:
rolling_cov.resample("M").last()
带有错误信息:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'
【问题讨论】: