halo 的技术博客

返回

协方差专题一路走来,我们治过维度病(Ledoit-Wolf 收缩)、治过采样噪声(Marchenko-Pastur 去噪)、治过尾部病(Tyler M-估计量)。这一篇的主角走的是另一条路:根本不算皮尔逊相关,换一个度量

Gerber 统计量(Gerber Statistic)由 Sander Gerber 提出,2022 年与 Harry Markowitz(对,就是那个 Markowitz,这是他生前参与的最后几篇论文之一)、Punit Pawar 等人合著发表。核心动作只有一个:

别管两资产每天各涨跌多少——只数它们同时大动的天数。同向大动记共动,反向大动记反向,动静太小不计。

这听起来像把精密仪器换成了算盘。但在肥尾市场里,精密仪器的精密恰恰是它的死穴。

一、皮尔逊相关的原罪:每一项都是幅度乘积#

样本相关系数的分子是 t(ri,trˉi)(rj,trˉj)\sum_t (r_{i,t}-\bar r_i)(r_{j,t}-\bar r_j)——每一天贡献一个幅度乘积。平静日贡献 0.0001 级别的项,而一个 −8% × −7% 的崩盘日贡献 0.0056,一天顶 56 个平静日。

这就是为什么”危机时相关性趋于 1”这句话有一半是统计假象:不是所有资产真的完全同步了,而是那几个极端日在乘积和里的权重碾压了其余所有日子Tyler M-估计量那篇的处理思路是把每天的收益向量归一化到单位球面——保方向、去幅度。Gerber 走得更极端:连方向的连续信息都不要,直接三值化

Gerber 的三区间分类#

对每个资产 ii 设阈值 cσic \cdot \sigma_i(典型 c=0.5c=0.5),把每天的收益离散化为:

ui,t={+1ri,tcσi1ri,tcσi0其他(噪声区)u_{i,t} = \begin{cases} +1 & r_{i,t} \ge c\sigma_i \\ -1 & r_{i,t} \le -c\sigma_i \\ 0 & \text{其他(噪声区)} \end{cases}

对资产对 (i,j)(i,j),统计:

  • ncn_c:共动天数(同 +1 或同 −1)
  • ndn_d:反向天数(一个 +1 一个 −1)
  • nnnn_{nn}:双双静止的天数(都是 0)

2022 年论文的正式定义:

gij=ncndTnnng_{ij} = \frac{n_c - n_d}{T - n_{nn}}

分母是”至少一方动了”的天数。注意这个分母——它是本文最大的坑,第四节专门算账。

Gerber 三区间分类示意

上图是同板块两只股票 504 天的散点:蓝色是共动样本(103 天),红色是反向样本(28 天),灰色是双双静止(剔出分母),橄榄色是单边动(计入分母但不计分子)。g=(10328)/(504201)=0.251g = (103-28)/(504-201) = 0.251,而皮尔逊相关是 0.394——Gerber 天然比皮尔逊保守,因为单边动的日子全部拉低它。

一个 −8% 的崩盘日在这套记账系统里是什么?1 票共动。和一个普通的 +0.8% 同涨日权重完全相同。幅度信息被彻底丢弃——这既是它的铠甲,也是它的软肋。

二、稳健性实测:一个崩盘日的破坏力差 17 倍#

实验设计:N=20、4 板块、t(4) 肥尾模拟市场,T=252 天。取同一份”干净”样本,然后手工注入 1 个全市场 −8σ 的崩盘日(所有资产同向暴跌),比较污染前后 190 个成对相关的变化:

def gerber_matrix(X, c=0.5):
    T, n = X.shape
    s = X.std(axis=0, ddof=1)
    U = (X >= c*s).astype(float) - (X <= -c*s).astype(float)  # +1/-1/0
    pos, neg, neu = (U > 0)*1.0, (U < 0)*1.0, (U == 0)*1.0
    conc = pos.T @ pos + neg.T @ neg     # 共动计数矩阵
    disc = pos.T @ neg + neg.T @ pos     # 反向计数矩阵
    denom = np.maximum(T - neu.T @ neu, 1)   # 2022 版分母
    G = (conc - disc) / denom
    np.fill_diagonal(G, 1.0)
    return G
python

单个崩盘日对两种度量的冲击

度量190 个成对相关的平均漂移机制
皮尔逊+0.122崩盘日的幅度乘积项碾压其余 251 天
Gerber−0.007崩盘日只是 1 票共动,还稀释了分母

皮尔逊被单日污染平均抬高 0.122——注意这是系统性偏移,不是噪声:所有股票对的相关一起上移,效果等同于给相关矩阵叠加一个虚假的”市场模式”(去调那篇讲过这对下游聚类是什么灾难)。Gerber 的漂移是 −0.007,几乎不可见,方向甚至是负的(崩盘日把部分”双双静止”日变成了计入分母的日子,轻微稀释)。

稳健性差 17 倍。这就是”数票数”对”算乘积”的结构性优势:任何单日的影响被硬性封顶在 1/(Tnnn)1/(T-n_{nn})

三、GMV 判决:能打平 LW,但赢不了多少#

稳健性是过程指标,组合表现才是结果指标。用协方差专题的标准判决流程:各方法估计协方差 → 求全局最小方差(GMV)组合权重 → 用真实协方差算实现波动率。t(4) 肥尾市场,60 次蒙特卡洛:

GMV 组合真实波动率对比

估计窗口 T样本协方差LW 收缩Gerber 2022(c=0.5)真实协方差
6318.28%16.29%16.21%15.02%
12616.66%16.00%15.86%15.02%
25215.73%15.55%15.50%15.02%
50415.43%15.37%15.43%15.02%

结论直说:Gerber 全程压样本协方差一头,与 LW 收缩基本打平(短窗口略优 0.1pp 量级,长窗口合流)。Gerber 矩阵的波动性天然低于皮尔逊——计票制的方差本来就小,起到了类似收缩的隐式正则化效果。

这个结果和 Gerber-Markowitz-Sargen(2022)论文的实证方向一致(他们在 9 资产多元类别组合上报告 Gerber 系统性优于历史协方差与 EWMA),但幅度诚实地说没有论文里那么戏剧化。差异来源:论文用的是均值-方差优化加目标收益约束(对输入误差更敏感,稳健输入的优势被放大),我们用的是 GMV(最温和的场景);论文的资产类别横跨股债商品(尾部事件更极端),我们是单一股票池。

四、分母陷阱:原始定义会让 GMV 爆炸到 213%#

这是本文最重要的工程发现。Gerber 统计量有两个版本的分母:

gijnaive=ncndnc+ndvs.gij2022=ncndTnnng^{naive}_{ij} = \frac{n_c - n_d}{n_c + n_d} \qquad vs. \qquad g^{2022}_{ij} = \frac{n_c - n_d}{T - n_{nn}}

原始版本只用”双双都动”的天数做分母——单边动的日子既不进分子也不进分母,整段扔掉。听起来更”纯粹”,实测是灾难:

估计窗口 TGerber 2022Gerber 原始分母
6316.21%40.24%
12615.86%63.13%
25215.50%213.66%
50415.43%115.67%

GMV 真实波动率 213%——比裸样本协方差惨 13 倍。两个作案机制:

其一,系统性高估相关c=0.5c=0.5 时约 60% 的观测落在噪声区,“双双都动”的日子在剩下的 40% 里再打折。这些日子里很大一部分本来就是市场级别的大日子——大家一起动,于是 ncndn_c \gg n_dgnaiveg^{naive} 被推得很高(第一节的例子:0.574 vs 2022 版的 0.251,皮尔逊 0.394)。全矩阵相关整体虚高,且高估幅度因股票对而异——比单纯的水平偏移更毒。

其二,破坏正定性。每个 gijnaiveg^{naive}_{ij} 用不同的样本子集算出(每对股票”双双都动”的日子集合不同),拼出来的矩阵不再保证 PSD。最小特征值频繁为负,投影修复(把负特征值截断到 0)后矩阵已经严重变形,优化器在近奇异方向上疯狂加杠杆——这正是 NCO 那篇说的”误差最大化机器”最喜欢的食物。

2022 版分母把单边动的日子拉回分母,相关被压回保守区间,PSD 问题也大幅缓解(仍不严格保证,仍需检查修复,但负特征值幅度小一个量级)。教训:如果你在旧文献或开源库里看到 (ncnd)/(nc+nd)(n_c-n_d)/(n_c+n_d) 的实现,直接进优化器等于自爆。

五、阈值 c:唯一的自由参数怎么选#

cc 是 Gerber 引入的新自由参数。扫描 c[0.1,1.5]c \in [0.1, 1.5],比较干净数据和叠加微观结构噪声(0.6× 日波动的独立噪声,模拟买卖价弹跳)两种环境下与真实相关矩阵的 Frobenius 距离:

阈值 c 敏感性扫描

干净数据下结果反直觉:c 越小误差越低(c=0.1 时 2.30,c=1.5 时 5.42)。因为 c→0 时 Gerber 退化成”符号相关”(只看涨跌方向),对连续椭圆分布这已经捕获了大部分相关信息,且样本利用率 100%;c 越大,落入噪声区的观测越多,进入统计的有效样本越少——样本饥饿让估计方差飙升。

但叠加噪声后格局反转:c=0.1 的误差从 2.30 恶化到 4.12(+79%),c=1.5 只从 5.42 到 5.97(+10%)。小阈值把噪声当信号计票,大阈值天然滤掉了小幅噪声。c 的本质是一个带通滤波器的下限:设多高,取决于你的数据里有多少”假动作”。 日线数据用 c=0.5(Gerber 论文默认值)是合理折中;如果用更高频或流动性差、价差大的品种,c 应该更大。

顺带一提:c 对不同资产用的是各自的 σi\sigma_i 倍数而非绝对值,所以高波动资产和低波动资产的”动/静”判定天然公平——这个细节让 Gerber 在波动率异质的组合里不需要额外标准化。

六、Gerber 在协方差工具箱里的位置#

把专题里的工具排个队,各自治什么病:

工具治什么药理
LW 收缩维度病(N/T 大)往结构化目标拉,降估计方差
MP 去噪采样噪声特征值随机矩阵理论剪噪声
Tyler M-估计量尾部病(肥尾扭曲)归一化到球面,去幅度保方向
Gerber尾部病 + 微观噪声三值化计票,幅度和小噪声都扔

Gerber 和 Tyler 是近亲——都通过抛弃幅度信息换稳健性。区别:Tyler 保留连续方向信息、有严格的椭圆分布理论保证、迭代求解;Gerber 连方向都离散化、理论性质弱得多、但一次遍历算完且自带噪声区滤波。实用建议:日线、流动性好、N/T 不极端 → Tyler 或 Gerber 均可;数据脏(停牌补零、价差弹跳、新兴市场)→ Gerber 的噪声区是免费的清洗器

与 LW 是正交关系不是竞争关系:Gerber 矩阵一样可以作为收缩的出发点(对 Gerber 相关做收缩、或与 CCM 目标混合),治尾部的和治维度的可以叠加——这个组合在 Gerber 原论文里没做,是个现成的改进方向。

七、诚实边界#

扔掉幅度在正态世界是纯损失。 如果收益真是正态的,皮尔逊是最大似然估计,Gerber 的三值化白白丢掉信息、收敛更慢。Gerber 的全部价值建立在”真实收益肥尾 + 数据有微观噪声”之上——好在这两条在金融数据里几乎总是成立。

PSD 不保证。 即使 2022 版分母,Gerber 矩阵理论上仍可能非正定(不同元素的有效样本集不同)。进优化器前必须检查最小特征值,必要时做特征值截断投影。截断本身会引入变形,N 越大、T 越小越严重。

c 无解析选法。 LW 收缩强度有解析公式,Gerber 的 c 只能靠经验默认(0.5)或交叉验证。它是个真实的自由参数,也就是个真实的过拟合入口——如果你发现自己在为每个组合”调 c”,警惕。

只出相关,不出波动率。 Gerber 统计量是相关度量,协方差还需要单独估计每个资产的 σi\sigma_i(通常用样本标准差或 EWMA)。波动率估计的所有问题(肥尾下样本标准差本身被极端日扭曲)它一个都没解决——严格说,本文 GMV 实验里 Gerber 的对角线仍然是被污染的样本标准差,它只稳健了相关部分。

下一步自然的问题:既然相关结构里最大的公共成分是市场模式,能不能先用因子模型把它显式建模掉,再处理残差?这正是 POET 的思路——也是本专题下一篇的主题。

参考文献#

  1. Gerber, S., Markowitz, H. M., Pujara, P., Sargen, P., Miao, Y. (2022). The Gerber Statistic: A Robust Co-Movement Measure for Portfolio Construction. Journal of Portfolio Management.
  2. Ledoit, O., & Wolf, M. (2004). Honey, I Shrunk the Sample Covariance Matrix. Journal of Portfolio Management.
  3. Tyler, D. E. (1987). A Distribution-Free M-Estimator of Multivariate Scatter. Annals of Statistics.
Gerber 统计量:用共动阈值替代皮尔逊相关构建组合
https://blog.halo26812.eu.org/blog/gerber-statistic-covariance
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨