halo 的技术博客

返回

马科维茨有效前沿是量化投资的地基:在给定预期收益下,最小化方差。听起来无懈可击。但只要你真正跑过一次,就会撞上一个反直觉的事实——有效前沿解出来的权重,是「估计误差最大化器」。输入里你对预期收益、协方差的估计只要偏一点点,最优权重就跳到极端:某资产从 5% 飙到 60%,另一资产被压到 0。这不是理论挑剔,是每一个做过实战组合优化的人都踩过的坑。

重抽样有效性(Resampled Efficiency, Michaud 1998) 不试图更精确地估计参数,而是换一个聪明的问题:既然估计有误差,那就把误差「摊开」,在不确定性里求一个稳定的平均权重。 它用自助抽样(bootstrap)反复重估前沿,在同一目标下取每个重抽样的前沿组合,最后把 B 个权重平均掉。结果是一个被「去噪」的组合,比经典 MV 更分散、更稳健。

本文用一份 5 资产真实风格参数(股票/债券/黄金/商品/REITs,波动与相关性有结构)从零实现重抽样有效性,对照经典均值方差,量化它如何把目标组合波动从 12.0% 压到 7.9%,并把「误差最大化」的极端权重拉回,附完整 Python 与五类真实陷阱。

一、为什么经典 MV 权重那么「脆」#

经典均值方差优化写成:

minw  wΣws.t.wμ=μ,    1w=1,    w0\min_w\; w^\top \Sigma\, w \quad \text{s.t.}\quad w^\top \mu = \mu^*,\;\; \mathbf{1}^\top w = 1,\;\; w \geq 0

最优权重 w=Σ1μw^* = \Sigma^{-1}\mu 对输入的敏感是教科书级的:因为 Σ1\Sigma^{-1} 把协方差矩阵求逆放大。样本协方差哪怕只差一点点(而它永远差一点),倒数之后就变成巨大的权重摆动。Michaud 用一句话点破:「均值方差优化把估计误差最大化了(maximizes estimation error)。」

我们用真实参数生成一条训练样本,然后只拿「样本估计」去解前沿,看它在同一目标波动下会得到什么权重:

有效前沿与重抽样组合云:经典点被估计误差「钉死」,重抽样把不确定性摊开成一片, 再取平均去噪

图中那一个红点是经典 MV 的「目标组合」——它是前沿上被样本估计钉死的单一解。而蓝色云是重抽样后,同一目标收益下 B 个重估计组合的位置散开成一片。经典解只是其中一次随机实现,极易落在这片云的某个极端分位。

二、重抽样有效性的算法:把误差摊平#

核心思想极简:不要只解一次,解很多次,然后平均。 具体四步:

  1. 从训练样本自助抽样(有放回)得到第 bb 个重抽样样本;
  2. 在该样本上重估 μ^b,Σ^b\hat\mu_b, \hat\Sigma_b,解有效前沿,取同一目标收益 μ\mu^* 下的组合权重 wbw_b
  3. 重复 B 次(本文 B=500);
  4. 平均:wre=1Bbwbw_{\text{re}} = \frac{1}{B}\sum_b w_b

注意第 2 步的「同一目标收益」是关键——否则不同重抽样落在前沿不同位置,平均会糊掉。重抽样平均的是「同一目标下的权重分布」,而不是随机目标。

跑出来结果很说明问题:经典权重是 [0.062, 0.0, 0.574, 0.21, 0.154]——债券被压到 0,商品被堆到 57%,极端且脆弱;重抽样平均权重是 [0.122, 0.362, 0.251, 0.156, 0.109]——债券重新获得接近等权的敞口,整个组合更均匀、更可解释。

目标组合权重跨 B 次重抽样的分布 + 经典 vs 重抽样平均权重

左图的箱线图暴露了真相:每个资产的权重在 500 次重抽样里跨度极大(标准差普遍 0.14–0.19)。经典 MV 只取了其中一次的「点估计」,等于闭眼押注自己抽到的恰好是那一次。重抽样把整片分布都利用上,平均出一个在不确定性下稳定的中心。

三、去噪的代价与回报:波动更稳,曲线更平滑#

把两个权重投到「样本外」真实参数生成的测试期,看实际表现:

样本外表现:重抽样平均权重波动更低、曲线更平滑

在同一目标收益下,重抽样平均权重回投到样本协方差的波动是 7.9%,而经典 MV 是 12.0%——直接砍掉约三分之一。样本外实测年化波动:经典 12.2% vs 重抽样 7.9%;累计收益曲线重抽样明显更平滑(虽末值略低,但这是用更低的波动换来的稳定性)。这正是重抽样的核心卖点:它放弃一点点样本内最优,换来样本外的稳健——而样本内最优在实战里本来就是过拟合。

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

1. 目标收益没对齐就平均——这会糊掉。 必须固定 target_ret,让所有重抽样落在前沿同一位置。若各自取各自的最优收益,平均出来既不收敛到任何有意义的点,也被拖向高收益区。

2. 重抽样只去噪,不创造 alpha。 它不会让你的预期收益估计更准。如果 μ\mu 的估计本身系统性偏差(比如用历史均值当未来预期),重抽样只是把「有偏差的分布」平均得更平滑,偏差还在。它处理的是估计方差,不是估计偏差

3. 长仓约束会改变前沿形状,箱线图会撞边界。 解里出现 0 权重(如经典 MV 的债券=0)意味着该资产在某些重抽样里被约束在边界。平均后权重非负、自然分散,但你要意识到「0」是约束产物,不是真信号。

4. B 不够大,平均权重自己也有噪声。 本文用 B=500。若 B=50,平均权重仍抖。看收敛曲线:B 从 1000 到 200000 价格才稳定,实务建议 B≥250,参数敏感问题 B≥500。

5. 它比经典 MV 更「接近等权」,别神话。 重抽样本质是朝等权/风险平价方向收缩。当你的观点很强(确信某资产该超配),重抽样会稀释它——这时该用熵风险平价(见本专栏前文)之类「尊重先验」的方法,而不是无脑重抽样。

五、完整可复现脚本#

结语#

重抽样有效性是少数「几乎零副作用」的改进:它不改你的优化目标,只把一次赌博变成 B 次平均。代价是多跑 B 次优化(对 5–50 资产完全可忽略),回报是权重从「误差最大化器」变成「误差平均器」。它不是银弹——不修偏差、会稀释观点——但作为经典 MV 的默认去噪层,值得放进每个组合优化流程里。下一篇我们跳到期权,看另一种「路径依赖」如何改写 payoff 结构。

重抽样有效性:用蒙特卡洛重抽样给马科维茨权重去噪
https://blog.halo26812.eu.org/blog/resampled-efficiency-michaud
Author halo
Published at 2026年7月19日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨