python - 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
)?
谢谢你的帮助
解决方案
推荐阅读
- javascript - 可以在 php 文件中调试 Javascript 吗?
- javascript - 脚本验证数字 1-100
- android - 在 Andtoid 中了解“通话结束”事件的完美方式
- javascript - 第一次提交按钮单击后,我看不到双向绑定值
- jsoup - JSoup 登录超时
- webdriver-io - Webdriver.io browser.elementIdDisplayed(ID) 不返回布尔值
- r - R数据框:通过对一列进行排序并基于两列中的值来选择行
- c - 在 C 中使用 read() 和 fgets() 的不同执行流程
- python - Python:如何先打印散点图然后删除它
- haskell - 如何在 Haskell 中使用 aio_read(3)?