常相关模型 CCM:把整个相关矩阵压成一个平均相关系数
Elton-Gruber(1973)的常相关模型:把 N(N-1)/2 个成对相关全部替换成一个平均相关系数 ρ̄——435 个参数压成 1 个,方差骤降换一身结构偏差。N=30 板块结构模拟实测:T=30 时 CCM 的 Frobenius 误差 2.56 vs 样本相关 4.38,交叉点在 T≈126,之后 CCM 被结构偏差下限 1.90 卡死永远追不上。GMV 组合判决更极端:T=30 样本协方差真实波动率 456%(近奇异优化器爆仓)vs CCM 17.5%;T=252 后样本反超。最有信息量的是混合曲线:最优混合权重 δ 随 T 单调爬升(T=60 时 0.35、T=252 时 0.65、T=1008 时 0.90)——这正是 Ledoit-Wolf 收缩的雏形,LW 恰以 CCM 为收缩靶心并把 δ 的选择自动化。诚实边界:ρ̄ 抹掉全部板块结构、对多板块 universe 偏差大;相关非平稳时单一 ρ̄ 追不上 regime;它是收缩靶子而非终点方案。
前面几篇把协方差估计的现代兵器库过了一遍:Ledoit-Wolf 收缩把样本协方差往结构化目标拉,Marchenko-Pastur 去噪用随机矩阵理论剪掉噪声特征值。这一篇往回退五十年,看这条线的源头之一:Elton & Gruber(1973)的常相关模型(Constant Correlation Model, CCM)。
它的做法暴力到令人发笑:把相关矩阵里所有 个成对相关系数,全部替换成它们的平均值 :
30 只股票,样本相关矩阵有 435 个自由参数,CCM 只有 1 个。这看起来是自废武功——凭什么扔掉 434 个参数反而更好?答案是统计学里最古老的交易:用偏差买方差。这笔交易什么时候划算、什么时候血亏,本文用模拟数据把账算清楚。而且算完你会发现:CCM 最大的价值不是自己上场,而是当 Ledoit-Wolf 收缩的靶心。
一、435 个参数每个都在骗你#
样本相关系数 是无偏的,但单个 的标准误约为 。T=60(一个季度日线)、真实相关 0.4 时,标准误约 0.108——单个估计值在 0.19 到 0.61 之间晃都属正常。现在把 435 个这样的估计值同时塞进一个矩阵:
- 每个元素独立地抖,矩阵整体的误差以 Frobenius 范数衡量是 ;
- 更糟的是这些误差不是无害的白噪声——优化器会系统性地放大它们。样本相关碰巧偏高的股票对会被优化器当成完美对冲工具重仓对赌,这正是嵌套聚类优化那篇里”误差最大化机器”的作案机制。
CCM 的赌注是:与其让 435 个高方差估计各自为战,不如把它们平均成一个 。平均数的标准误比单个元素小一个数量级(虽然元素间相关让它达不到 的理想缩减)。实测:T=60 时 的蒙特卡洛标准差只有 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 Rcpython三、Frobenius 误差:交叉点在 T≈126#
对每个样本长度 T 跑 80 次蒙特卡洛,比较样本相关矩阵和 CCM 与真实矩阵的 Frobenius 距离:

| T | 样本相关误差 | CCM 误差 |
|---|---|---|
| 30 | 4.38 | 2.56 |
| 60 | 3.19 | 2.36 |
| 126 | 2.12 | 2.09(打平) |
| 252 | 1.51 | 2.02 |
| 1008 | 0.77 | 1.94 |
| ∞ | 0 | 1.90(偏差下限) |
三个关键读数:
交叉点在 T≈126。半年以内的数据,一个参数打败 435 个参数——不是因为 CCM 聪明,而是因为样本相关矩阵在小样本下太烂。
CCM 的误差曲线几乎是平的。从 T=30 的 2.56 到 T=2016 的 1.91,只改善了 25%——它很快就撞上 1.90 的结构偏差下限(把真实矩阵自己做 CCM 化的距离)。给 CCM 再多数据也没用,它的天花板由模型错误程度决定,与数据无关。这是所有强结构假设模型的共同宿命。
样本相关无此下限。它的误差以 稳定收敛到零。数据充足时,无偏 + 收敛完胜低方差 + 有偏。
三张热力图把这个权衡画得很直白——T=60 的样本相关矩阵里板块结构被噪声搅得斑驳陆离,CCM 干脆一片均匀(结构没了,但噪声也没了):

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

| T | 样本协方差 | CCM | 50/50 混合 | 真实协方差 |
|---|---|---|---|---|
| 30 | 455.7% | 17.5% | 17.9% | 14.9% |
| 60 | 21.0% | 16.8% | 16.8% | 14.9% |
| 126 | 17.0% | 16.5% | 16.0% | 14.9% |
| 252 | 15.8% | 16.3% | 15.6% | 14.9% |
| 504 | 15.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 的雏形就藏在这里#
真正有信息量的实验是第三个:既然两个极端各有死穴,把它们线性混合 ,扫描 δ 看 GMV 真实波动率:

| T | 最优 δ | 谷底波动率 | 纯样本(δ=1) | 纯 CCM(δ=0) |
|---|---|---|---|---|
| 60 | 0.35 | 16.53% | 20.81% | 16.79% |
| 252 | 0.65 | 15.54% | 15.83% | 16.37% |
| 1008 | 0.90 | 15.06% | 15.08% | 16.21% |
最优 δ 随样本量单调爬升:数据少信 CCM 多一点,数据多信样本多一点,且任何 T 下混合都不输给两个端点。这条曲线就是收缩估计的全部直觉——而 Ledoit-Wolf(2004)干的事情,恰恰是把”选 δ”这一步自动化:从数据里估出最优收缩强度的解析解,且他们的一个经典变体就以常相关矩阵为收缩目标。
换句话说:CCM 的正确用法不是单独上场,而是当靶子。它提供一个方差极低、包含”市场平均耦合强度”这一最重要信息的锚点,收缩公式负责决定往锚上靠多少。1973 年的暴力简化,在 2004 年找到了自己的历史位置。
顺带一提:CCM 还有一个隐藏福利—— 加单位对角线的矩阵永远正定(只要 ),求逆有解析式,永远不会给优化器递上一把奇异矩阵的枪。
六、诚实边界#
板块结构越强,CCM 的偏差税越重。 本文模拟里跨板块与同板块相关差约 0.35,偏差下限 1.90。如果你的 universe 横跨股、债、商品,真实相关从 -0.3 到 0.8 都有,单一 的抹平会造成灾难性失真——跨资产配置永远不要用裸 CCM。它适合同质 universe:单一市场的股票池,相关的横截面离散度天然有限。
是静态的,相关是动态的。 DCC-GARCH 那篇展示过危机中相关从 0.3 跳到 0.85。CCM 用全样本平均去追一个时变目标,regime 切换后它的锚本身就是过时的。实务上可以给 加指数加权,但那已经是另一个模型了。
GMV 层面的优势会被求逆稀释。 矩阵误差差一倍,组合波动率往往只差零点几个百分点(T=60:16.8% vs 21.0%)——这与 Tyler M-估计量一篇的观察一致:估计层的显著改进传到组合层会缩水,别对任何单一估计技术抱换血级期待。
本文模拟是多元正态。 真实收益肥尾, 作为平均数对极端日相对稳健(单日对平均的贡献被 435 个元素摊薄),但样本相关的误差会比正态世界更大——肥尾世界里 CCM 的相对优势区间大概率比 T≈126 更宽,方向上对 CCM 有利。
一句话总结:常相关模型是用一个参数买走 434 个参数的估计方差,代价是永不消失的结构偏差。T/N < 4 时它单独就能打,但它真正的归宿是给收缩估计当靶心——知道往哪儿收,和知道收多少,加起来才是完整的答案。