halo 的技术博客

返回

先说结论:100 只资产、120 天数据,用样本协方差直接求最小方差组合,真实(样本外)年化波动率 23.0%——比等权组合的 19.8% 还差,总杠杆冲到 6.1 倍;同一份数据换成 Ledoit-Wolf 收缩估计,真实波动率降到 12.0%,总杠杆 2.9 倍,离理论最优的 9.6% 只差一段。而这一切不需要调任何参数:LW 的最优收缩强度 δ 是从数据里解析算出来的,T=60 时它自动收缩 0.61,T=1008 时自动降到 0.07。* 一句话总结这个方法:样本协方差是无偏但高方差的估计,结构化目标是有偏但零方差的估计,Ledoit-Wolf 给出了两者加权平均的最优权重公式——这是量化组合构建里性价比最高的一次免费午餐。

样本协方差坏在哪:不是不准,是”系统性地歪”#

样本协方差矩阵 S=1Tt(xtxˉ)(xtxˉ)S = \frac{1}{T}\sum_t (x_t-\bar x)(x_t-\bar x)^\top 是无偏估计,每个元素单独看都没问题。问题出在同时估 N(N+1)/2N(N+1)/2 个参数:N=100 时是 5050 个参数,而 T=120 天只有 12000 个数据点,平均每个参数摊不到 3 个观测。

估计误差在特征值上的表现有明确的方向性:大特征值被系统性高估,小特征值被系统性低估。这不是随机噪声,是数学结构——样本特征值是真实特征值的”扩散”版本(随机矩阵理论中的 Marchenko-Pastur 定律给出了精确刻画)。

特征值失真

图里黑线是真实协方差的特征值谱,红虚线是样本估计:头部被抬高,尾部被压扁到接近零。这对组合优化是致命的,因为最小方差优化器用的是协方差的逆——它会把最大的权重压在最小的特征值方向上,而那些方向恰恰是被低估最狠、噪声最大的方向。优化器不是在优化,是在放大估计误差。Michaud 给这个现象起过一个著名的名字:均值方差优化是”误差最大化器”。

Ledoit-Wolf 的答案:解析最优的加权平均#

Ledoit 和 Wolf(2004)的想法直白到近乎朴素。取两个极端:

  • 样本协方差 SS:无偏,但 N 大 T 小时方差巨大;
  • 结构化目标 FF:比如”常相关模型”(所有资产对共享同一个平均相关系数,方差用各自的样本方差),只有 N+1 个参数,几乎没有估计方差,但显然有偏。

收缩估计就是加权平均:

Σ^LW=δF+(1δ)S\hat\Sigma_{LW} = \delta F + (1-\delta) S

关键贡献不是这个形式(贝叶斯统计里到处都是),而是δ 的解析解。最优 δ* 最小化 EΣ^ΣF2\mathbb{E}\|\hat\Sigma - \Sigma\|_F^2,Ledoit-Wolf 证明它约等于:

δ1Tπ^ρ^γ^\delta^* \approx \frac{1}{T}\cdot\frac{\hat\pi - \hat\rho}{\hat\gamma}

三个量全部可以从数据算出来:π^\hat\pi 是样本协方差各元素的估计方差之和(S 有多不稳),ρ^\hat\rho 是 S 与 F 估计误差的协方差(两者错得有多同步),γ^\hat\gamma 是 S 与 F 的距离平方(目标有多偏)。直觉完全对得上:S 越不稳收缩越狠(π 大 → δ 大),F 偏得越离谱收缩越轻(γ 大 → δ 小),数据越多越信 S(1/T 衰减)

在上面 T=120、N=100 的数据上,算出来的 δ* = 0.45——数据自己说”我有 45% 不可信,往结构上靠”。图 1 的蓝线显示收缩后的特征值谱:头部压下来,尾部抬上去,整体形状明显更贴近黑线。

效果检验:最小方差组合的真实波动率#

方法好不好,不看矩阵范数,看组合。实验设计:真实协方差固定,模拟 T 天数据 → 估计协方差 → 求全局最小方差(GMV)权重 → 用真实协方差评估这个权重的实际波动率。每个 T 重复 60 次取中位数:

估计窗口 T样本协方差 GMVLedoit-Wolf GMV
60 天16.3%*13.0%
90 天29.1%12.5%
120 天23.0%12.0%
180 天14.5%11.6%
252 天12.5%11.3%
504 天10.7%10.6%
1008 天10.1%10.1%

理论最优(真实协方差的 GMV)是 9.6%,等权组合是 19.8%。*T=60 时样本协方差奇异,数值上靠微小 ridge 才能求逆,结果反而比 T=90 的”刚好可逆但病态到极点”要好——T 略大于 N 是样本协方差最危险的区域,T=90 和 T=120 的组合波动率(29.1%、23.0%)比等权还差,优化优了个寂寞。

GMV 样本外波动率

三个观察:

  1. LW 全程压制样本协方差,在 T 与 N 同数量级时优势最大(T=90 时 12.5% vs 29.1%,砍掉一半还多);
  2. T 足够大时两者收敛(T=1008 时都是 10.1%)——收缩是小样本的药,数据充足时 δ* 自动趋近 0,不碍事;
  3. 样本协方差的 GMV 可以比不优化更差,这是”误差最大化”的直接证据。

δ* 的自适应性与权重的驯化#

δ* 随样本量的变化本身就是一张很好的说明书:

收缩强度与权重

左图:T=60 时 δ*=0.61,T=252 时 0.24,T=1008 时 0.07——收缩强度自动随数据量衰减,不需要人为设定,也不需要交叉验证。右图对比 T=120 时的 GMV 权重:样本协方差给出 -23.7% 到 +25.8% 的巨额多空、总杠杆 6.1 倍;LW 权重被压到 -5.4% 到 +21.9%、总杠杆 2.9 倍。收缩协方差 = 隐式的权重正则化,这比事后给权重加箱式约束更有原则——它修的是病根(估计误差),不是症状(极端权重)。

实践备注#

目标矩阵的选择。本文用常相关目标(Ledoit-Wolf 2004 “Honey, I Shrunk the Sample Covariance Matrix” 的版本),另外两个常用目标是单位阵的倍数(sklearn.covariance.LedoitWolf 的实现,适合无先验结构的场景)和单因子市场模型(Ledoit-Wolf 2003,适合股票组合)。经验上股票组合用常相关或单因子目标好于单位阵目标,因为后者连”股票之间普遍正相关”这条最基本的结构都没编码。

与后续方法的关系。线性收缩把所有特征值往同一个方向拉同样的比例,2017 年之后 Ledoit-Wolf 又发展了非线性收缩(每个特征值有自己的修正量,QIS/QuEST 估计量),N 数百以上时增益明显。但线性收缩仍是默认起点:解析解、零超参、几行代码,且在 N≤200 的常见场景下与非线性版本差距很小。

收缩的不是相关结构本身。LW 假设 iid 样本,它修的是采样误差,不修时变性——2020 年 3 月那种相关性整体跳升的 regime 切换,收缩估计和样本估计一样跟不上。时变问题要交给 EWMA 或 DCC-GARCH,两者与收缩可以叠加使用(先 EWMA 加权再收缩)。

已知偏差:本文用单因子结构合成数据,真实市场的协方差有行业块结构和厚尾,δ* 的具体数值会不同,但”样本协方差在 T≈N 时爆炸、LW 稳定”的定性结论对结构不敏感;GMV 实验只看了波动率最小化,带收益预测的均值方差优化里,期望收益的估计误差比协方差更致命(这是另一篇文章的主题——Michaud 重抽样与 Bayes-Stein 收缩)。

一句话带走:协方差矩阵不要直接用样本估计喂给优化器——先收缩。δ 不用你选,数据自己会说要收多少。

Ledoit-Wolf 收缩估计:把样本协方差往结构化目标拉一把
https://blog.halo26812.eu.org/blog/ledoit-wolf-shrinkage
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨