halo 的技术博客

返回

一个 portfolio 给你看权重表:股票 50%、国债 25%、信用债 10%、商品 5%、黄金 5%、REITs 5%。看起来挺分散,对吧?

错。权重告诉你的是「钱怎么分」,不是「风险怎么分」。

一只波动 18% 的股票,哪怕只占 50% 的钱,它制造的风险可能比那 25% 的 5% 国债多几十倍。真正决定你晚上睡不睡得着的,是风险贡献(risk contribution),不是权重。而更深的玩法是:既然风险贡献能从权重反推出来,那么——一个「最优」组合的权重,能不能反推出它的管理者脑子里到底在预期什么收益? 这就是反演优化(reverse optimization)。

本文用一个 6 大类合成组合,把这两件事都跑通。

一、风险贡献分解:权重会骗你,风险不说谎#

给定权重向量 w 和协方差矩阵 Σ,组合方差 σ_p² = wᵀΣw,波动率 σ_p = √(wᵀΣw)

每个资产的**边际风险贡献(MRC)**是方差对权重的偏导:

MRCi=(Σw)iσpMRC_i = \frac{(\Sigma w)_i}{\sigma_p}

而**百分比风险贡献(RC)**是它实际扛的那一份:

RCi=wi(Σw)iwΣw,iRCi=1RC_i = \frac{w_i (\Sigma w)_i}{w^\top \Sigma w}, \quad \sum_i RC_i = 1

注意:RC 严格求和等于 1(即 100%),它才是「每类资产对总风险的真实占比」。

我们造一个 6 大类宇宙(波动率 + 相关性矩阵),取一个「类市值的朴素组合」权重:

结果扎心:这个组合波动率 10.40%,但风险贡献是 股票 84.1%、国债 −0.5%、信用债 4.3%、商品 4.3%、黄金 1.3%、REITs 6.4%。股票只占一半的钱,却扛了 84% 的风险;国债甚至是负贡献——它对股票有对冲作用,把总风险往下拉。

权重 vs 真实风险贡献:股票仅占 50% 权重却扛 90% 风险

这就是「权重幻觉」:你以为分散了,其实把赌注全压在股票的方向上。

朴素组合:风险高度集中在股票

二、反演优化:从权重反推「隐含收益」#

现在进入更有意思的部分。如果一个组合是均值-方差最优的(风险厌恶系数 γ),它满足一阶条件:

μ=γΣw\mu = \gamma \Sigma w

也就是说——已知权重 w 和协方差 Σ,就能反推出管理者隐含假设的预期收益 μ。这一步叫 reverse optimization(Herold 2005)。

μ 只确定到 γ 的尺度(乘一个 γ 出来,等式仍成立)。用目标 Sharpe 把 γ 钉死:γ = target_SR / σ_p

target_SR = 0.35
gamma = target_SR / sig_naive
mu_implied = gamma * (Sigma @ w_naive)        # 反演出来的年化隐含超额收益
implied_SR = (mu_implied @ w_naive) / sig_naive
python

跑出来 γ = 3.367,隐含年化超额收益:股票 6.12%、国债 −0.07%、信用债 1.58%、商品 3.15%、黄金 0.94%、REITs 4.62%,且反演后组合 Sharpe 正好回到目标 0.35(自洽校验通过)。

反演优化:从组合权重反推出的隐含预期收益 (μ = γΣw)

这有什么用?

  • 归因:你看到一个基金组合,反演出它的隐含收益,就知道它到底在赌「股票涨」还是「商品涨」;
  • 一致性检查:如果反演出的隐含收益和基金经理嘴上说的叙事矛盾(比如嘴上说看空股票、组合却是股票驱动),那要么他在说谎,要么他的风险预算和叙事脱节;
  • 构建参照组合:把反演结果当「市场对各资产预期收益的一致估计」,用于你自己的优化约束。

三、对照:等风险贡献(ERC)组合#

上面那个朴素组合的风险这么不匀,有没有办法让每类资产对总风险的贡献完全相等?这就是 ERC(Equal Risk Contribution)。

ERC 的目标是每个 RC_i 都相等(= 1/N)。数学上等价于求解 wᵢ ∝ 1/(Σw)ᵢ,但注意——当协方差含负相关(本文国债与股票 −0.20)时,朴素固定点迭代 w ∝ 1/(Σw) 可能不收敛(会循环)。稳妥做法是约束最小化:令各 RC 偏离其均值的方差最小。

结果:ERC 组合波动率 5.65%,六类资产的百分比风险贡献全部精确到 16.667%(max−min 差异 0.000%),而权重已经自动向低波动资产倾斜(国债权重远高于它的钱数占比)。

风险贡献对比:ERC 把每类资产压到完全相等

关键区别:ERC 不改变你对「收益」的判断(它不预测收益),只管把风险摊匀。 它比马科维茨最大夏普稳健得多——后者对 Σ 的噪声极度敏感,一抖就给你几十倍杠杆+空头;ERC 放弃预测收益,只求风险平等,实盘鲁棒性高得多。

四、反演优化 vs 正向优化:谁先谁后#

记住方向:

  • 正向优化(forward):已知 μ、Σ → 求最优 w(马科维茨、ERC、风险平价都在这边)。依赖你对收益的预测,而收益最难预测。
  • 反演优化(reverse):已知 w、Σ → 反推 μ。把「已经存在的组合」当最优解,反求它背后的收益假设。不预测未来,只解读现状。

实务里反演优化常用来构建「参照组合(reference portfolio)」:你不信自己的收益预测,但相信市场的某个宽基组合(如 60/40、全市场市值组合)是「当前一致预期」的体现,反演出它的隐含收益,再拿去约束你自己的优化,避免组合跑偏。

五、六类真实陷阱(实战必看)#

  1. 权重幻觉的普遍性:本文朴素组合股票 50% 权重 → 84% 风险,这还不是最极端的。实盘里「分散」买一堆高 beta 科技股 + 一点债券,风险贡献常常 90% 以上集中在几只票。看组合永远先看 RC,别看 w。
  2. 反演优化依赖 Σ 的质量:μ = γΣw,Σ 一旦估错(噪声、样本太短、相关性在危机时跳变),反推的 μ 就全错。实盘要用收缩估计(shrinkage)或指数加权协方差,不能用原始样本协方差。
  3. γ 由目标 Sharpe 钉死,结果随之漂移:本文取 target_SR=0.35,隐含收益是这一套数;取 0.5,所有 μ 同比例放大。反演给出的是「相对结构」,绝对水平取决于你信哪个 SR,别把绝对值当真。
  4. 负相关让 ERC 固定点失效:本文用 SLSQP 约束最小化才解出完全相等的 RC。如果你照抄 w ∝ 1/(Σw) 迭代,在含负相关的组合上会循环不收敛,得到的是假 ERC(风险贡献还差 34%)。务必用稳健求解器。
  5. RC 负贡献的误解:国债 RC 是 −0.5%,不是「它没风险」,而是「它对股票有对冲、在降低总风险」。负 RC 资产是组合的保险,不能因为它权重低就忽略——危机时它最值钱。
  6. 反演假设组合是最优的:reverse optimization 成立的前提是「这个组合确实是均值-方差最优的」。真实基金组合有约束(流动性、合规、客户偏好、追踪误差),未必最优,反推出的 μ 要当「近似叙事」而非精确预期。

六、小结:先看风险贡献,再谈收益#

把这篇文章和「等风险贡献(ERC)」「风险平价」「Beta 中性组合」放在一起,逻辑链清晰:

  • 风险贡献分解 = 把「钱的分布」翻译成「风险真正的分布」,戳破权重幻觉;
  • 反演优化 = 从已知组合反推它背后的收益假设,做归因和一致性检查;
  • ERC = 放弃预测收益,只把风险摊匀,得到比最大夏普稳健得多的组合。

所谓「反演优化隐含风险」,核心就一句话:组合的真相不在权重表里,在边际风险里;而你看到的每一个组合,都悄悄写着管理者对未来的押注。


代码与图表均由自包含 Python(numpy/scipy/matplotlib)真实计算,可完整复现。所有统计数字(朴素/ERC 组合波动率、各资产风险贡献、反演隐含收益、γ、ERC 风险贡献精确性)均来自文中脚本输出。相关性矩阵与波动率为合成设定,仅用于演示机制;ERC 求解用 SLSQP 约束最小化以确保含负相关时收敛。实盘请以真实收缩估计协方差替换。

反演优化隐含风险:从组合的边际风险反推各大类资产的真实暴露
https://blog.halo26812.eu.org/blog/reverse-optimization-implied
Author halo
Published at 2026年7月17日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨