首页 > 解决方案 > 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)?

谢谢你的帮助

标签: pythonpandasapplyquantitative-financerolling-computation

解决方案


推荐阅读