halo 的技术博客

返回

如果你只记一个”最安全”的组合,教科书会告诉你:最小方差组合(Minimum Variance Portfolio, MVP)——在给定资产池里,把权重调到让组合波动率最小的那一个。它不预测收益,只管风险,看似最”客观”、最不依赖主观判断。

但有个反直觉的真相:最小方差组合,恰恰是对估计误差最敏感的优化。 它的解是 w = Σ⁻¹1 / (1'Σ⁻¹1)——一个求逆。而当你把有噪声的样本协方差 S 直接求逆时,每一个估计误差都被 S⁻¹ 放大,尤其在那些”伪小特征值”方向上,噪声被当成信号、权重被推到极端。结果:一个在样本内方差最小得漂亮的组合,样本外可能比随机组合还危险。

结论先放这里:在 25 个资产、只用 30 个交易日数据估计协方差时,朴素样本最小方差组合的样本外真实方差,是”用真实协方差”理论下界的近 7 倍;而把估计误差当风险来管理的 Ledoit-Wolf 收缩与岭正则,能把它压回最优附近(约 1.3 倍)。 最小方差组合没有错,错的是”拿噪声当真相去求逆”。

一、MVP 的解,为什么对估计误差过敏#

给定协方差 Σ,无约束最小方差组合的闭式解是:

import numpy as np

def mvp(Sigma):
    """w = Sigma^-1 1 / (1' Sigma^-1 1)。用伪逆保数值稳定。"""
    ones = np.ones(Sigma.shape[0])
    w = np.linalg.pinv(Sigma) @ ones
    return w / w.sum()
python

问题在于:实盘里你手里只有 S(从 T 条历史算出的样本协方差),不是 ΣSΣ 之间的差距,会在求逆时被剧烈放大。直观理解:

  • Σ 若有一个很小的特征值 λ_min,对应的特征方向在 Σ⁻¹ 里就被放大成 1/λ_min 倍。
  • 样本协方差 S 在样本量 T 不够大时,会凭空造出一些伪小特征值(本该是正的,被噪声压到接近 0)。
  • 于是 S⁻¹ 在这些伪方向上输出天文数字的权重——组合把全部筹码压到一两个资产上,样本内方差确实最小,但那只是因为噪声被拟合了。样本外,这些极端权重撞上真实但不同的协方差,方差直接爆炸。

这正是”把估计误差当风险”这句话的由来:误差不只在 S 里,更在 S⁻¹ 里被杠杆化了。

二、Python:从零构造实验并对比四种求解器#

我们固定一个”真实”协方差 Σ_true(因子模型 Σ = B B' + D,其中 B 是因子载荷、D 是异质方差),然后每次试验只给它 T 条历史观测,让求解器在有噪声的样本上工作。评价指标是样本外真实方差 w' Σ_true w——越小越好。

四种求解器的核心区别,就在”怎么对待 S”:

  • (1) 样本最小方差S 直接求逆。误差被杠杆化得最狠。
  • (4) Oracle:用 Σ_true 求逆。理论下界,实盘不可达,只作参照——它告诉我们”最优本该多好”。
  • (2) Ledoit-Wolf 收缩:把 S 往一个更稳健的目标矩阵 F(这里用常相关性目标:对角不变、非对角用平均相关重构)拉:Σ_LW = δ·F + (1−δ)·Sδ 小=几乎不收缩(回到样本法),δ 大=几乎全用目标(放弃数据)。收缩把那些伪小特征值”垫”回合理水平,等于主动承认”S 有噪声,我少信它一点”
  • (3) 岭正则最小方差:直接往 SλI 再求逆:w ∝ (S+λI)⁻¹1λ 大,λI 主导 → S+λI 趋近 λI,权重趋近等权;λ 小 → 回到样本法。这等于显式惩罚极端权重——把”权重太大”本身当成一种风险。

关键的设计选择:δλ 都不拍脑袋,而是用 5 折交叉验证,去选”让样本外方差最小”的那个值。下面三张图,就是用这套实验跑出来的真相。

三、结果一:朴素样本法,在小样本下方差爆炸#

样本外方差 vs 训练样本量 T:样本越少,估计误差越致命

把训练样本量 T 从 30 拉到 500,看四种方法的平均样本外真实方差

训练样本 T3060120250500
样本最小方差0.2490.0620.0460.0400.038
LW 收缩0.0520.0460.0420.0400.038
岭正则0.0460.0420.0400.0390.038
Oracle(下界)0.0360.0360.0360.0360.036

这张表是整个文章的灵魂。在 T=30(25 个资产只给 30 天数据,TN 几乎可比)时

  • 朴素样本最小方差的样本外方差高达 0.249——是 Oracle 下界 0.036 的近 7 倍。你以为自己在做”最小方差”,实盘承担的风险却是最优的 7 倍。
  • 而 Ledoit-Wolf 收缩(0.052)和岭正则(0.046)硬生生把它压回 Oracle 附近(分别只多 44% 和 28%)。

再看右端 T=500:四种方法全部收敛到 0.036——当数据足够多,样本协方差够准,朴素法自然就好了。所以”样本法有没有错”取决于 T/N 这个比:数据相对维度越稀缺,估计误差越致命,朴素求逆越是在拿噪声当真相。

四、结果二:即便在”中等”样本,样本法仍显著更差#

样本外方差箱线图:把估计误差当风险管理后,样本外方差显著下降

T 固定在更”像样”的 120 个交易日(约半年日频数据,对 25 资产而言仍是 T/N≈4.8 的偏薄样本),跑 500 次蒙特卡洛,看样本外方差的分布:

  • 样本最小方差均值 0.0456,比 Oracle(0.0363)高出 25.5%
  • Ledoit-Wolf 收缩 0.0424(+16.8%);
  • 岭正则 0.0400(仅 +10.2%)。

也就是说,即便在”半年数据”这种看似合理的设定里,直接 S 求逆仍让你多承担约四分之一的真实风险;而把估计误差当成风险来管(收缩或正则),能把这笔”隐形税”砍掉一大半。箱线图里样本法的整条分布都明显右移(方差更大、更不稳定)。

五、结果三:两种”把误差当风险”的具体手法#

手法 A:协方差收缩(Ledoit-Wolf 思想)。 不硬信 S,把它朝一个结构化的目标 F 拉一点。下图用单次试验画出”收缩强度 δ vs 样本外方差”的曲线:

收缩强度 δ 与样本外方差:U 形,中间有最优

它是条 U 形δ=0(纯样本法)在最右端方差最高;δ=1(完全放弃数据、只用目标矩阵)也高(欠拟合,把真结构也扔了);中间某个 δ*≈0.15 处方差最低。收缩是门艺术——收得太少(过拟合噪声)与收得太多(欠拟合结构)都糟,交叉验证替你选的那个点,恰好把两者平衡。

手法 B:岭正则(显式惩罚极端权重)。SλI 再求逆,等价于在”最小化 w'Sw”之外,额外惩罚 λ·w'w(权重平方和)。λ 越大,权重越被往等权方向拽,单个资产的极端暴露被压住。上表的岭正则列,在每一个 T 上都略优于 LW,正是因为它直接从”权重不能太极端”这个角度切入。

六、权重长什么样:样本法把筹码压到极少数资产#

排序后权重(降序):样本最小方差把权重压到极少数资产

上图是一次 T=30 试验里,把三种方法的 |权重| 从大到小排好后的曲线。样本最小方差(红)前几个资产权重飙升、其余几乎归零——它把所有赌注压在少数名字上;而收缩(蓝)与岭(绿)的曲线平坦得多,权重更均衡。平均来看,样本法的最大单资产权重 |w| 约 0.10,岭正则约 0.06;集中度(Herfindahl 指数)样本法 0.05 vs 等权基准 0.04——样本法确实更集中,但真正的代价不在”集中”这个表象,而在上两节那种样本外方差的爆炸。很多时候,极端权重只是估计误差被杠杆化后的症状,方差暴涨才是它酿成的苦果。

七、五类真实陷阱#

  1. 用同一份数据既估 Σ 又测表现:本文的”样本外方差”是用独立的真实 Σ 算的,已经避开了这个坑。实盘若用同一段历史既估协方差又回测组合表现,会把样本内拟合也当样本外,严重低估风险。务必留出真正独立的验证段。
  2. 无视无约束 MVP 会卖空w = Σ⁻¹1 在一般 Σ允许负权重(做空某些资产)。本文刻意用无约束形式,因为估计误差的故事在最干净地展现;但实盘常要求纯多(long-only),那要解带约束的二次规划,边界会把极端权重砍掉——long-only 能缓和爆炸,却也牺牲了部分分散,且估计误差问题并未消失,只是被夹紧
  3. 误把”样本内方差最小”当目标达成:MVP 的目标是”样本方差最小”。用 S 求逆只在样本内最小;本文图三表一已经显示,样本内最优 ≠ 样本外最优,二者之间的鸿沟就叫估计误差。
  4. 收缩目标的错配:Ledoit-Wolf 的 F 不一定非得是常相关性矩阵。若你的资产有明显行业/因子结构,用单指数(single-index)或因子模型目标往往更贴;目标选错,收缩会把真结构也一并抹平。
  5. T/N 幻觉:很多人觉得”我有 3 年日线(750 天),估 25 个资产的协方差足够了”。但 MVP 求逆对最弱的那些方差方向最敏感,而那恰恰是最需要大量数据才能估准的部分——T 看似大,在”最该估准的方向”上依然稀薄。

结论#

最小方差组合 w = Σ⁻¹1 没有错,错的是”拿有噪声的样本协方差直接求逆”这一步——求逆会把每一个估计误差杠杆化,在伪小特征值方向上造出极端权重,最终让样本外方差爆炸。我们的实验给这个数字定了量级:25 资产、30 日样本下,朴素样本法样本外方差是理论下界的近 7 倍,而把估计误差当成风险来管理的 Ledoit-Wolf 收缩与岭正则,能把它压回最优附近。记住三条:(1) 看 T/N 而非绝对样本量——维度相对样本越稀缺越危险;(2) 优先收缩或正则,且用交叉验证替你选强度;(3) 永远用独立数据验证样本外表现,别把样本内拟合当成绩单。最小方差的精髓,从来不是”最小”,而是”诚实地对待你不知道的那部分”。

最小方差组合:把估计误差也当成风险来管理
https://blog.halo26812.eu.org/blog/minimum-variance-portfolio
Author halo
Published at 2026年7月13日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨