投资组合优化是一个有约束条件的非线性规划问题,常见的优化目标有最小方差、最大收益、最大夏普、风险平价、风险预算等。前三种优化方法网上有很多示例,我们将介绍风险预算,而风险平价只是风险预算的特例。
• 风险:通常用收益率的标准差来衡量,也有使用其他指标来度量风险的情况。
• 风险平价:也叫风险均衡、等风险权重。每种资产对总体的风险贡献度是相等的,都是1/ N 。
• 风险预算:风险贡献的比例是人工指定的,总和是1。
• 边际风险贡献:对组合标准差求某类资产权重的偏导数。可把组合波动率分解为各类资产边际风险贡献×资产权重之和。
此处补充说明,本章代码部分穿插的图表,皆由运行代码后直接输出,故不做额外说明,也不进行编号。
输出如下:
输出如下:
风险平价是边际风险贡献都一样的风险预算。
我们再利用一个开源库来实现风险平价。
两次画的图有区别,bt显示日频权重,而2.2.2节的实现只显示再平衡日的权重;计算波动率bt使用的是500交易日,而2.2.2节使用的是两年。
除了bt回测库中带有简单的投资组合功能,网上还有很多开源的投资组合库。推荐的有:
• PyPortfolioOpt;
• Riskfolio-Lib。
通过它们可以大幅度简化工作,有兴趣的读者可查阅在线文档。