问题场景:

在量化投资中,风险平价(Risk Parity)是一种常见的资产配置方法。它通过协方差矩阵来度量各资产的风险贡献,并动态调整权重,使得各资产的风险贡献大致均衡。
然而,在实际操作中,我们发现某些资产组合的权重分配会出现异常。例如,在使用 GC(黄金期货)与 AU(上海黄金)构建的双资产组合中,随着时间推移,风险平价权重在某一时段后突然发生极端偏向:一边的权重大幅下降,另一边几乎占据全部仓位。


问题描述

初期GC 与 AU 的权重分配大致稳定,风险贡献均衡。

后期(突然到某一刻)组合权重开始出现明显倾斜:GC 的权重一路下降至个位数,而 AU 权重接近 90% 以上,甚至两个权重相加都不等于1.

这与我们对“风险均衡”的直觉不符,看起来像是模型“算错了”。


原因分析:

1.高度相关性
GC 和 AU 本质上是同类资产,走势几乎一致。
当相关性长期保持在 0.9 以上时,协方差矩阵接近奇异(不可逆)。

2.协方差矩阵病态
协方差矩阵的行列式趋近于 0 → 数值计算极不稳定。
优化器在求解风险平价权重时,微小的数值差异被放大,结果就是“一边倒”的解。

3.滚动窗口估计的噪声
风险平价通常用近 1–2 年的历史日度数据来估计协方差。
在样本有限的情况下,任何波动率或相关性的细微变化,都会造成权重剧烈波动。

换句话说:当资产之间高度相关时,风险平价失去了“分散化”的意义,优化器的结果变得不可靠。


解决方案:

1.资产筛选 / 去重
思路:
如果两个资产本质上代表同一类标的(例如 GC.CMX 与 AU.SHF 都是黄金),它们之间的相关性接近 1,几乎没有额外的分散化价值。放在组合里反而会制造数值问题。

改进方式:
对于高度相关的资产(例如 GC 与 AU),没有必要同时纳入组合。
可以只保留一个代表性资产,避免“重复计算”的风险。

2.稳健化协方差估计
思路:
样本协方差矩阵在有限样本下往往噪音大,特别是相关性高的时候,会接近奇异。稳健化方法(Shrinkage)能让矩阵更稳定。

改进方法:
1.使用 Ledoit–Wolf 收缩估计 或给协方差矩阵加正则项,让估计结果更平滑。
例如:

from sklearn.covariance import LedoitWolf
cov = LedoitWolf().fit(hist).covariance_

2.给协方差矩阵加一个小的正则项(𝜖𝐼),保证数值稳定。

调整滚动窗口
思路:
协方差估计基于过去窗口的数据:
窗口太短 → 协方差容易受噪音影响,权重大幅波动;
窗口太长 → 协方差反应迟钝,难以及时反映市场结构变化。

改进方法:
对日频数据:
window=252 → 1 年,权重对市场变化更敏感;
window=500 → 2 年,更平滑;
window=750 → 3 年,更稳定。
可以对比几种不同窗口的权重曲线,再选一个兼顾平滑与灵敏的长度。

适当缩短窗口(如从 500 日缩短到 252 日 ≈ 1 年),提高对市场变化的敏感度;或拉长窗口(如 750 日 ≈ 3 年),让结果更平滑。

权重上下界约束
思路:
优化器在协方差病态时容易把权重推到极端(如 99% vs 1%)。给权重加上下界,可以避免“全仓”某个资产。

改进方法:
给权重加上限制(如 [5%, 95%]),避免极端倾斜,提升实际可执行性。

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐