halo 的技术博客

返回

Marchenko-Pastur 去噪解决的是采样噪声:T 有限导致特征值谱被拉宽,MP 边界告诉你哪些特征值纯属噪声、可以压平。但把去噪后的相关矩阵直接拿去做层次聚类(比如给 NCO 或 HRP 切簇),你会发现聚出来的东西经常不知所云。凶手不是噪声——是市场模式(market mode)。

这一篇讲 López de Prado 在《Machine Learning for Asset Managers》里给出的第二把手术刀:去调(detoning)——把相关矩阵的第一特征成分(市场模式)整个剥掉,让板块结构从市场的阴影里浮现出来。以及一个教科书不会强调、但实测里会翻车的坑:去噪和去调的顺序与组合,做错了会互相残杀

一、市场模式:让所有相关都挤在一起的那只手#

股票相关矩阵的第一特征向量几乎总是”全体同号”——所有股票一起涨跌的公共方向,占迹比例常年在 30%-60%。它对组合风险极其重要(吸收比率整篇讲的就是它),但对聚类是纯粹的公害:

聚类算法靠的是相关的差异——同板块相关高、跨板块相关低,才能切出板块。市场模式给每一对股票的相关都加上一个大的公共底数:本来是”簇内 0.25 vs 簇间 0.05”的清晰结构,叠上市场模式变成”簇内 0.57 vs 簇间 0.52”——间距还是 0.05,但相对差异从 5 倍被压缩到不到 10%。常用的相关距离 dij=(1ρij)/2d_{ij} = \sqrt{(1-\rho_{ij})/2} 一算,所有距离都挤在一个狭窄区间里,linkage 算法在里面靠噪声级的差异做合并决策。

模拟一个 40 股票、4 板块的市场,市场因子波动 20%、板块因子 11%,并且刻意让市场 beta 高度异质(0.4 到 1.6 均匀散布,防御股和高 beta 成长股混在每个板块里——这很重要,后面会看到为什么):

N, T, n_sec = 40, 252, 4
beta_m = rng.uniform(0.4, 1.6, N)     # 市场 beta 高度异质
beta_s = rng.uniform(0.7, 0.9, N)     # 板块暴露
sig_m, sig_s, sig_e = 0.20, 0.11, 0.14
python

样本相关矩阵的特征值谱(q = N/T = 0.159,MP 上界 1.96):

特征值谱

第一特征值 λ₁ = 22.3,独占迹的 56%——市场模式一个人吃掉一大半方差。越过 MP 上界的只有 2 个特征值,而真实结构里有 1 个市场因子 + 4 个板块因子。记住这个数字,它是第三节翻车现场的伏笔。

二、去调:一次秩-1 手术#

去调的操作和去噪同样简单——特征分解后,把最大的 k 个特征成分直接减掉,再把对角线归一回 1:

def detone(R, k=1):
    evals, evecs = np.linalg.eigh(R)          # 升序
    R2 = R - (evecs[:, -k:] * evals[-k:]) @ evecs[:, -k:].T
    d = np.sqrt(np.diag(R2))
    return R2 / np.outer(d, d)
python

四联热力图(按真实板块排序)把效果画得很直白:

热力图对比

原始样本相关整片泛红——市场模式把一切都染成”高相关”,板块块状结构隐约可见但对比度极低。去噪之后几乎没变化——因为去噪治的是噪声体,而市场模式是最大的信号,去噪对它秋毫无犯。去调之后画风突变:背景归零,四个板块块状结构跳出来,和”真实相关去调”的理想对照几乎一致。

量化验证:去调前簇内/簇间平均相关 0.572/0.524(间距 0.048),去调后 0.047/-0.046(间距 0.093 且均值归零)。间距本身没有魔法般变大——去调的贡献是把公共底数抽掉,让这个间距落在零附近而不是骑在 0.55 的高台上,相对信噪比完全不同。

三、判决实验:linkage 方法 × 是否去调#

用 Ward、complete、average、single 四种 linkage 对原始相关和去调相关分别聚类(切 4 簇),用调整兰德指数 ARI 对照真实板块标签,60 次蒙特卡洛:

linkage 对比

linkage原始相关 ARI去调后 ARI
single(HRP 默认)0.0021.000
average0.0341.000
complete0.8710.991
ward0.9810.998

这张表有两个层次的信息:

single 和 average 在原始相关上全军覆没(ARI ≈ 0,等于随机分组)。机制是链式合并:市场模式让”高 beta 股票对”的相关(哪怕跨板块)高过”同板块但 beta 差异大”的股票对——这正是 beta 异质设计的用意。single linkage 每步找全局最近对,于是沿着高 beta 链条把四个板块的股票串成一条糖葫芦,切出来的”簇”是一个巨簇加三个孤儿。而 single linkage 恰恰是原版 HRP 的默认 linkage——如果你的 HRP 权重看起来像没聚过类,先检查是不是喂了没去调的相关矩阵。

Ward 有部分免疫力(0.98),因为它的合并准则惩罚簇内方差增长,链式合并会被刹车。但这是本模拟四板块等大小的友好设定——不等大小、层级更深的真实市场里 Ward 也会退化。去调之后,四种 linkage 全部满血:方法选择的重要性被去调大幅削弱,这本身就是它价值的证明——好的预处理让下游算法的鲁棒性要求直线下降。

四、翻车现场:先去噪再去调,ARI 反而崩了#

教科书流程是”去噪 → 去调 → 聚类”。实测结果(60 次 MC):

ARI 箱线图

流程ARI 均值
原始相关直接聚类(ward)0.989
仅去调0.998
仅去噪0.205
去噪 + 去调0.311

去噪让聚类从 0.99 崩到 0.21。回到第一节的伏笔:越过 MP 上界的特征值只有 2 个,但真实因子有 5 个。四个板块特征值约在 1.4-2.0 之间,恰好骑在 MP 上界 1.96 附近——市场模式吃掉 56% 的迹之后,留给板块因子的方差份额本来就小,它们的特征值被压到和噪声体边缘纠缠在一起。标准 MP 去噪不由分说把界内一切压平,板块信号被当成噪声处决了。去调再剥掉市场模式后,剩下的是一片真空——聚类自然抓瞎。

弱板块对照实验把这个机制推到极端:板块波动降到 7% 时,平均只有 1.0 个尖峰越过 MP 上界(只剩市场模式),此时只去调 ARI 仍有 0.89(板块信息虽然贴边但还在矩阵里),而去噪+去调 ARI 是 -0.03——比随机分组还差。

这个发现值得用黑体写出来:去噪服务于组合优化(求逆前压噪声),去调服务于聚类(剥公共模式)——两者不是流水线上的两道工序,而是两个不同目的地的岔路口。 信号强、尖峰清晰地越过 MP 边界时串联无害;信号贴边时,去噪会把去调想要保护的东西先杀掉。在真实市场里,弱板块、行业子结构、风格因子的特征值大量分布在 MP 边界附近(Graphical Lasso 那篇的因子剥离讨论同源),盲目串联的代价是真实存在的。

相关分布图从另一个角度展示去调的效果——去噪后的成对相关挤在 0.5 上下的窄带里,去调把整个分布拉回零附近并展开:

相关分布与簇内簇间间距

五、工程清单#

去调后的矩阵是奇异的——剥掉 k 个特征成分后秩最多 N-k,绝对不能拿去求逆做均值方差优化。它的服务对象是聚类、距离矩阵、可视化。如果流程是”聚类 + 簇内优化”(NCO 风格),正确姿势:去调矩阵切簇,原始(或去噪/收缩)矩阵做簇内二次优化——两个矩阵各司其职。

k 的选择:单一股票市场取 k=1 通常够用(第一特征向量全同号即验证)。跨资产 universe 里”市场模式”可能不止一个(股票模式 + 利率模式),检查前几个特征向量的符号结构再定 k。k 切多了会把真实板块也剥掉——本文 k=1 是因为知道真相,实盘请用特征向量符号结构 + 稳定性检验。

去调不是中性化的替代品。对收益序列做市场因子回归取残差(时序中性化)和对相关矩阵做谱手术(去调)目标相似但不等价:前者允许每只股票有自己的 beta,后者是对相关矩阵的秩-1 修正。beta 异质性强时(正如本文模拟),回归残差法更精细;去调的优势是不需要因子收益序列、纯矩阵操作、和 MP 框架天然兼容。

Tracy-Widom 涨落:MP 上界本身有 O(T2/3)O(T^{-2/3}) 的随机涨落,贴边特征值(本文的 2.02、1.83)在”信号”与”噪声”之间没有干净的判决。保守做法是把去噪的压平范围收窄到明显低于 λ⁺ 的区间,或者干脆——如果目的是聚类——只去调不去噪。

六、诚实边界#

模拟的板块结构是干净的分块常数,真实市场的”板块”边界模糊、层级嵌套(能源里有油服和炼化)、随时间漂移,ARI 从 0.99 到 1.00 的完美复活不会在实盘复现——方向性结论(去调救 single/average linkage、贴边信号会被去噪误杀)是稳健的,具体数字不是。市场模式占迹 56% 是本模拟设定,A 股这种同涨同跌市场里它可以更高(去调更必要),成熟市场分散期可以低到 30%(去调收益递减)。最后,去调假设市场模式与板块结构正交可分——危机中”泥沙俱下”时第一特征向量本身会吞掉板块差异,此时剥掉它剩下的信息含量也在缩水:去调不能凭空造出数据里没有的结构,它只是把已有的结构从阴影里搬到阳光下。

一句话总结:去噪治采样噪声、服务优化器,去调治市场模式、服务聚类器——先弄清你的下游是谁,再决定动哪把刀;两把一起挥的时候,小心去噪的刀刃落在去调想救的人身上。

相关矩阵去噪与去调:把市场模式从相关结构里剥出来再聚类
https://blog.halo26812.eu.org/blog/denoising-detoning-correlation
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨