halo 的技术博客

返回

前面几篇把协方差估计的现代兵器库过了一遍:Ledoit-Wolf 收缩把样本协方差往结构化目标拉,Marchenko-Pastur 去噪用随机矩阵理论剪掉噪声特征值。这一篇往回退五十年,看这条线的源头之一:Elton & Gruber(1973)的常相关模型(Constant Correlation Model, CCM)。

它的做法暴力到令人发笑:把相关矩阵里所有 N(N1)/2N(N-1)/2 个成对相关系数,全部替换成它们的平均值 ρˉ\bar\rho

R^ijCCM={1i=jρˉ=2N(N1)i<jrijij\hat R_{ij}^{CCM} = \begin{cases} 1 & i = j \\ \bar\rho = \frac{2}{N(N-1)}\sum_{i<j} r_{ij} & i \neq j \end{cases}

30 只股票,样本相关矩阵有 435 个自由参数,CCM 只有 1 个。这看起来是自废武功——凭什么扔掉 434 个参数反而更好?答案是统计学里最古老的交易:用偏差买方差。这笔交易什么时候划算、什么时候血亏,本文用模拟数据把账算清楚。而且算完你会发现:CCM 最大的价值不是自己上场,而是当 Ledoit-Wolf 收缩的靶心

一、435 个参数每个都在骗你#

样本相关系数 rijr_{ij} 是无偏的,但单个 rijr_{ij} 的标准误约为 (1ρ2)/T(1-\rho^2)/\sqrt{T}。T=60(一个季度日线)、真实相关 0.4 时,标准误约 0.108——单个估计值在 0.19 到 0.61 之间晃都属正常。现在把 435 个这样的估计值同时塞进一个矩阵:

  • 每个元素独立地抖,矩阵整体的误差以 Frobenius 范数衡量是 O(N/T)O(N/\sqrt{T})
  • 更糟的是这些误差不是无害的白噪声——优化器会系统性地放大它们。样本相关碰巧偏高的股票对会被优化器当成完美对冲工具重仓对赌,这正是嵌套聚类优化那篇里”误差最大化机器”的作案机制。

CCM 的赌注是:与其让 435 个高方差估计各自为战,不如把它们平均成一个 ρˉ\bar\rho。平均数的标准误比单个元素小一个数量级(虽然元素间相关让它达不到 1/4351/\sqrt{435} 的理想缩减)。实测:T=60 时 ρˉ\bar\rho 的蒙特卡洛标准差只有 0.052,到 T=252 缩到 0.024——这是整个协方差估计问题里方差最小的统计量之一

代价当然是偏差。真实世界的相关矩阵有结构:同板块股票相关 0.6,跨板块只有 0.3,CCM 把它们统统抹成 0.43。这个偏差不随 T 消失——它是结构性的、永久的

二、实验设计:有板块结构的市场#

模拟一个对 CCM 不利的市场——真实相关矩阵有明显板块结构,CCM 的”所有相关都一样”假设从根子上就是错的:

import numpy as np

rng = np.random.default_rng(42)
N, n_sec = 30, 4
sec = np.repeat(np.arange(n_sec), N // n_sec + 1)[:N]
beta_m = rng.uniform(0.8, 1.2, N)      # 市场因子暴露
beta_s = rng.uniform(0.5, 0.9, N)      # 板块因子暴露
sig_m, sig_s = 0.16, 0.10
vol_idio = 0.18 * rng.uniform(0.7, 1.4, N)

Sigma_true = np.outer(beta_m, beta_m) * sig_m**2
for s in range(n_sec):
    bs = beta_s * (sec == s)
    Sigma_true += np.outer(bs, bs) * sig_s**2
Sigma_true += np.diag(vol_idio**2)
python

真实平均相关 0.430,但成对相关的真实范围是 [0.27, 0.63]——同板块和跨板块差出一倍多。CCM 估计器三行写完:

def ccm(R):
    iu = np.triu_indices_from(R, k=1)
    rho_bar = R[iu].mean()
    Rc = np.full_like(R, rho_bar)
    np.fill_diagonal(Rc, 1.0)
    return Rc
python

三、Frobenius 误差:交叉点在 T≈126#

对每个样本长度 T 跑 80 次蒙特卡洛,比较样本相关矩阵和 CCM 与真实矩阵的 Frobenius 距离:

估计误差 vs 样本量

T样本相关误差CCM 误差
304.382.56
603.192.36
1262.122.09(打平)
2521.512.02
10080.771.94
01.90(偏差下限)

三个关键读数:

交叉点在 T≈126。半年以内的数据,一个参数打败 435 个参数——不是因为 CCM 聪明,而是因为样本相关矩阵在小样本下太烂。

CCM 的误差曲线几乎是平的。从 T=30 的 2.56 到 T=2016 的 1.91,只改善了 25%——它很快就撞上 1.90 的结构偏差下限(把真实矩阵自己做 CCM 化的距离)。给 CCM 再多数据也没用,它的天花板由模型错误程度决定,与数据无关。这是所有强结构假设模型的共同宿命。

样本相关无此下限。它的误差以 1/T1/\sqrt{T} 稳定收敛到零。数据充足时,无偏 + 收敛完胜低方差 + 有偏。

三张热力图把这个权衡画得很直白——T=60 的样本相关矩阵里板块结构被噪声搅得斑驳陆离,CCM 干脆一片均匀(结构没了,但噪声也没了):

热力图对比

四、GMV 组合判决:T=30 时 456% vs 17.5%#

矩阵误差只是中间指标,最终审判在组合层面。用各估计器构建全局最小方差(GMV)组合,波动率用估计矩阵配样本波动率,然后在真实协方差下核算组合的实际波动率:

GMV 组合样本外表现

T样本协方差CCM50/50 混合真实协方差
30455.7%17.5%17.9%14.9%
6021.0%16.8%16.8%14.9%
12617.0%16.5%16.0%14.9%
25215.8%16.3%15.6%14.9%
50415.3%16.3%15.4%14.9%

T=30 那一列不是排版错误:456% 的真实年化波动率。T=30 < N=30 时样本协方差奇异或近奇异,优化器沿着噪声制造的”零方差幻影方向”上了天量杠杆,组合在真实世界里直接爆炸。同一份数据喂给 CCM,17.5%——离理论最优 14.9% 只差 2.6 个百分点。在数据饥荒下,一个被压扁的错误模型远好于一个自由的正确模型。

但注意 T=252 之后的反转:样本协方差 15.8% 反超 CCM 的 16.3%,且 CCM 从此原地踏步(结构偏差不退场)。CCM 单独使用只在 T/N < 4 左右的区间占优。

五、混合曲线:Ledoit-Wolf 的雏形就藏在这里#

真正有信息量的实验是第三个:既然两个极端各有死穴,把它们线性混合 R(δ)=δRsample+(1δ)RCCMR(\delta) = \delta R_{sample} + (1-\delta) R_{CCM},扫描 δ 看 GMV 真实波动率:

混合曲线

T最优 δ谷底波动率纯样本(δ=1)纯 CCM(δ=0)
600.3516.53%20.81%16.79%
2520.6515.54%15.83%16.37%
10080.9015.06%15.08%16.21%

最优 δ 随样本量单调爬升:数据少信 CCM 多一点,数据多信样本多一点,且任何 T 下混合都不输给两个端点。这条曲线就是收缩估计的全部直觉——而 Ledoit-Wolf(2004)干的事情,恰恰是把”选 δ”这一步自动化:从数据里估出最优收缩强度的解析解,且他们的一个经典变体就以常相关矩阵为收缩目标。

换句话说:CCM 的正确用法不是单独上场,而是当靶子。它提供一个方差极低、包含”市场平均耦合强度”这一最重要信息的锚点,收缩公式负责决定往锚上靠多少。1973 年的暴力简化,在 2004 年找到了自己的历史位置。

顺带一提:CCM 还有一个隐藏福利——ρˉ\bar\rho 加单位对角线的矩阵永远正定(只要 1/(N1)<ρˉ<1-1/(N-1) < \bar\rho < 1),求逆有解析式,永远不会给优化器递上一把奇异矩阵的枪。

六、诚实边界#

板块结构越强,CCM 的偏差税越重。 本文模拟里跨板块与同板块相关差约 0.35,偏差下限 1.90。如果你的 universe 横跨股、债、商品,真实相关从 -0.3 到 0.8 都有,单一 ρˉ\bar\rho 的抹平会造成灾难性失真——跨资产配置永远不要用裸 CCM。它适合同质 universe:单一市场的股票池,相关的横截面离散度天然有限。

ρˉ\bar\rho 是静态的,相关是动态的。 DCC-GARCH 那篇展示过危机中相关从 0.3 跳到 0.85。CCM 用全样本平均去追一个时变目标,regime 切换后它的锚本身就是过时的。实务上可以给 ρˉ\bar\rho 加指数加权,但那已经是另一个模型了。

GMV 层面的优势会被求逆稀释。 矩阵误差差一倍,组合波动率往往只差零点几个百分点(T=60:16.8% vs 21.0%)——这与 Tyler M-估计量一篇的观察一致:估计层的显著改进传到组合层会缩水,别对任何单一估计技术抱换血级期待。

本文模拟是多元正态。 真实收益肥尾,ρˉ\bar\rho 作为平均数对极端日相对稳健(单日对平均的贡献被 435 个元素摊薄),但样本相关的误差会比正态世界更大——肥尾世界里 CCM 的相对优势区间大概率比 T≈126 更宽,方向上对 CCM 有利。

一句话总结:常相关模型是用一个参数买走 434 个参数的估计方差,代价是永不消失的结构偏差。T/N < 4 时它单独就能打,但它真正的归宿是给收缩估计当靶心——知道往哪儿收,和知道收多少,加起来才是完整的答案。

常相关模型 CCM:把整个相关矩阵压成一个平均相关系数
https://blog.halo26812.eu.org/blog/constant-correlation-model
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨