Python-分层风险平价PyPortfolioOpt-滚动窗口

问题描述

returns是30个股票收益率的数据框。

我构建了以下函数,用于计算分层的风险平价权重。

def hrp_weights(returns):
    w=pd.Series(pypfopt.hierarchical_portfolio.HRPOpt(returns).optimize())
    return w

如果我运行函数hrp_weights(returns),则会得到所有30个权重的pd系列。可以。

我想做的是在滚动窗口中运行该函数,因此权重可能每天都会变化。因此,我编写了如下代码

returns.rolling(252).apply(hrp_weights

不幸的是,我知道rolling函数输出不允许数组,而只允许标量。我该如何处理这个问题?

此外,我收到以下奇怪的错误消息:returns are not a dataframe

为什么我的函数在这里工作:hrp_weights(returns),而不在这里returns.rolling(252).apply(hrp_weights)?

感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)