halo 的技术博客

返回

协方差的估计误差已经够头疼了,但组合优化里真正的头号杀手是另一个输入:期望收益。Markowitz 优化器对均值的敏感度比对协方差高一个量级——期望收益差 1 个百分点,最优权重可以从 +50% 翻到 -30%。而均值恰恰是金融数据里最估不准的量。

先把本文的实验结论放上来。20 只资产、真实年化期望收益 1.3%~11.2%、用估计出的均值和协方差构建切点组合(tangency portfolio),真实(样本外)Sharpe:

估计窗 T样本均值Bayes-Stein不用均值(GMV)理论最优
252 天-0.21-0.090.530.57
1008 天-0.08+0.090.550.57
2520 天+0.03+0.170.560.57

三个扎心事实:用一年数据估均值做优化,真实 Sharpe 是负的——不是没跑赢基准,是比扔硬币还差;Bayes-Stein 收缩能稳定改善但改不到及格干脆不碰均值的全局最小方差组合(GMV)反而离理论最优只差 0.04。这篇文章把这三件事的机理讲清楚。

均值为什么估不准:一道小学算术题#

年化波动率 σ=25% 的资产,样本均值的标准误是 σ/T\sigma/\sqrt{T_{\text{年}}}。想把年化期望收益估到 ±1% 的精度(一个标准误),需要

T=(25%/1%)2=625 年T = (25\%/1\%)^2 = 625 \text{ 年}

不是 625 天,是 625 年。用一年数据,标准误是 25%——而资产间真实期望收益的差异通常只有几个百分点。信号 2%,噪声 25%,信噪比 1:12

模拟直接看:20 只资产,T=252 天日频数据,样本均值 vs 真实值:

一年日频数据估期望收益:样本均值上蹿下跳,收缩把它拉回大盘

真实期望收益全部在 1.3%~11.2% 之间,样本均值却在 17.9%~119.9% 之间狂舞(这次模拟运气偏好,整体都往上漂)。截面标准差:真实 2.2%,样本均值 27.6%——你看到的资产间差异,92% 是噪声。把这串数字喂给优化器,它会一本正经地做多”119.9%“那只、做空”17.9%“那只,用十几倍杠杆放大一场彻头彻尾的幻觉。

Stein 悖论:单独最优,集体愚蠢#

1956 年 Charles Stein 证明了一个违反直觉的定理:估计三个以上的均值时,对每个均值单独用样本均值——虽然每个都是无偏且单独最优的——在总平方误差意义下是”不可容许的”(inadmissible):存在一个把所有估计一起往共同中心收缩的估计量,在任何真实参数下总误差都不更大、几乎总是更小。

直觉版本:样本均值里最大的那个,几乎必然是”真实均值高”加上”运气好”的合成;最小的那个几乎必然叠加了坏运气。极端观测里混入的运气成分是系统性的,往中间拉一把、平均而言总是赚的。这不是贝叶斯信仰,是频率学派自己证出来的定理——这正是它被称为”悖论”的原因。

金融是 Stein 悖论最疼的应用场景,因为这里信噪比低得离谱,而下游的优化器又专门放大极端值。

Jorion 的 Bayes-Stein 估计量#

Jorion (1986) 把 Stein 收缩工程化成组合管理可用的形式。收缩目标不是零、也不是等权平均,而是全局最小方差组合(GMV)的期望收益 μg\mu_g

μ^BS=(1w)μ^+wμg1,μg=1Σ1μ^1Σ11\hat\mu_{BS} = (1 - w)\,\hat\mu + w\,\mu_g \mathbf{1}, \qquad \mu_g = \frac{\mathbf{1}^\top \Sigma^{-1} \hat\mu}{\mathbf{1}^\top \Sigma^{-1} \mathbf{1}}

μg\mu_g 做锚点的理由很优雅:GMV 是均值-方差前沿上唯一不依赖期望收益输入的组合,它的收益是”整个市场告诉你的基准预期”,不含任何单资产层面的噪声。

收缩强度 ww 从数据里自动算出:

w=λλ+T,λ=N+2(μ^μg1)Σ1(μ^μg1)w = \frac{\lambda}{\lambda + T}, \qquad \lambda = \frac{N + 2}{(\hat\mu - \mu_g\mathbf{1})^\top \Sigma^{-1} (\hat\mu - \mu_g\mathbf{1})}

分母那个二次型度量”样本均值离共同锚点的分散程度”。分散度小(各资产看起来差不多)→ λ 大 → 重收缩;分散度大且持续(真有资产长期跑赢)→ λ 小 → 轻收缩。和 Ledoit-Wolf 的 δ* 一样,没有需要调的超参数。

import numpy as np

def bayes_stein(mu_hat, Sigma_hat, T):
    """Jorion (1986) Bayes-Stein 收缩期望收益
    mu_hat: 样本均值 (N,)   Sigma_hat: 协方差 (N,N)   T: 样本长度
    注意 mu/Sigma 与 T 的频率口径要一致(都用日频,或都用年频)"""
    N = len(mu_hat)
    ones = np.ones(N)
    Si = np.linalg.inv(Sigma_hat)
    mu_g = (ones @ Si @ mu_hat) / (ones @ Si @ ones)   # GMV 期望收益
    diff = mu_hat - mu_g * ones
    lam = (N + 2) / max(diff @ Si @ diff, 1e-12)
    w = np.clip(lam / (lam + T), 0.0, 1.0)
    return (1 - w) * mu_hat + w * mu_g * ones, w
python

一个必须写在注释里的工程细节:λ 公式里的二次型和 T 必须同频。均值协方差用年化口径、T 用天数,λ 会差 252 倍,收缩强度直接失灵(w 恒等于 0 或 1)。要么全用日频量,要么把二次型除以 252——我们第一版代码就在这里翻了车,w 全程为 0,“收缩后”和收缩前一模一样。

收缩强度由信噪比决定,不只由 T 决定#

一个容易想当然的预期:“数据越多,w 越小,最后收缩退场”。实测出来的曲线更有意思:

收缩强度由信噪比决定:真实差异小则永远重收缩,差异大则随 T 退场

  • 真实截面离散度 15%(假想世界,资产间期望收益差异巨大):w 从 T=63 的 0.42 一路降到 T=5040 的 0.10——数据多了,真实差异被识别出来,收缩逐渐退场。教科书剧本。
  • 真实截面离散度 2%(接近真实市场):w 稳在 0.5 附近纹丝不动,20 年数据也不松手。

第二条曲线是本文最值得记住的图:当真实差异本来就小,样本均值的分散永远以噪声为主,最优策略就是永远重收缩。λ 的分母(去噪后的真实分散度)和 T 同步增长,w = λ/(λ+T) 就卡在常数上。市场恰恰住在第二条曲线里——这是”期望收益不可知论”的定量版本。

切点组合实测:从灾难到失望,以及房间里的大象#

60 次独立模拟取平均,三种均值方案喂给同一个优化器:

切点组合 OOS Sharpe:样本均值 vs Bayes-Stein vs 干脆不用均值

样本均值:T=252 时 OOS Sharpe -0.21。负号不是笔误——优化器对着 92% 是噪声的输入做杠杆放大,做多的”高收益资产”其实是运气好的普通资产,做空的”低收益资产”里混着真正的优质资产。估计误差经优化器变成了系统性反向选择

Bayes-Stein:同窗口 -0.09,T=2520 时 +0.17。每个窗口都稳定优于样本均值(改善 0.1~0.17 个 Sharpe),且是免费的——没有任何超参数。收缩还顺手治了杠杆病:

估计误差如何变成杠杆:收缩均值让组合权重不再飞出天际

200 次模拟里切点组合的总杠杆中位数从 11.7 倍降到 5.5 倍,长尾(>100 倍的发散案例)基本消灭。极端均值被拉回锚点后,优化器没那么多”确定性错觉”可以加杠杆了。

但房间里的大象是绿线之上那条蓝线:完全不用均值的 GMV 组合,OOS Sharpe 0.52~0.56,全程碾压两个用均值的方案,离理论最优(0.57)只差 0.04。在这个信噪比下,均值估计的最优剂量接近零——Bayes-Stein 收缩了一半还不够,收缩到 w=1(完全放弃截面观点)反而最好。这就是为什么实务界的风险平价、最小方差、最大分散化这些”均值盲”策略长盛不衰:它们不是不想要期望收益,是诚实地承认估不出来。

诚实边界#

第一,模拟世界里资产真实期望收益差异只有 2%,这个设定本身就是本文的核心假设。如果你相信自己有真正的截面 alpha 信号(比如经过严格检验的因子暴露差异),收缩目标应该换成因子模型隐含收益(Black-Litterman 的先验),而不是无差别的 μ_g——Bayes-Stein 的框架不变,锚点升级。

第二,μ_g 和 λ 依赖协方差矩阵的逆,高维时协方差自身的估计误差会污染收缩机制。N 大时先做 Ledoit-WolfMP 裁剪,再进 Bayes-Stein——两类收缩是串联关系不是二选一。严格版还应对 Σ⁻¹ 乘 (T-N-2)/T 的无偏修正,N/T 不小时差别可观。

第三,收缩不解决非平稳。整个框架假设期望收益是常数,真实市场的风险溢价随 regime 漂移。滚动窗口 + Bayes-Stein 只是让每个窗口内的估计不那么疯,窗口间的漂移要靠条件模型。

第四,GMV 碾压切点组合是本模拟设定下的结果,不是普适定理。当真实 Sharpe 截面差异足够大(比如跨资产类别配置:股 vs 债 vs 商品),均值信息的价值会回来。教训的正确读法是:均值信息的使用剂量应该与其可信度成正比,而样本均值的可信度几乎总是被高估

至此,“稳健组合构建”系列的两块基石凑齐:协方差端用 Ledoit-Wolf / MP 裁剪收缩谱,均值端用 Bayes-Stein 收缩截面。两端都收完,Michaud 重抽样再从优化器层面兜底——三层防线,防的都是同一个敌人:估计误差经优化器的杠杆式放大。

Bayes-Stein 收缩期望收益:把各资产均值往全局大盘拉
https://blog.halo26812.eu.org/blog/bayes-stein-shrinkage-returns
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨