Tyler M-估计量:对肥尾免疫的稳健散布矩阵
样本协方差在肥尾分布下不是慢慢变差,而是被极端日直接绑架——一个 ±15% 的异常日进入平方项后能扭曲整个相关结构。Tyler(1987)的 M-估计量给出一个漂亮的解法:把每天的收益向量投影到单位球面上再估计,只保留方向、扔掉幅度,得到的形状矩阵在所有椭圆分布下都有同一个渐近分布——对尾部厚度『分布自由』。本文 N=20 单因子模拟市场实测:t(3) 肥尾下样本协方差形状误差 0.266、Ledoit-Wolf 0.253,Tyler 只有 0.108,且从 t(3) 到正态误差几乎纹丝不动(0.108→0.102);注入 2% 的 ±15% 异常日,样本协方差误差从 0.147 恶化到 0.184,Tyler 稳在 0.109;但 10% 污染时 Tyler 反而崩得更惨(1.93 vs 0.52)——迭代加权会被大规模结构性污染带偏,稳健≠无敌。GMV 组合上优势收窄:t(4)、T=252 时 Tyler 10.63% vs 样本 11.03%(理论最优 10.19%),因为组合权重只依赖协方差的逆的方向结构,形状矩阵的优势部分被求逆运算稀释。诚实边界:Tyler 只估形状不估尺度,波动率目标要另配;对『集体同向的真实危机日』降权可能扔掉最有信息量的样本;N/T 比例较大时需要正则化版本。
Ledoit-Wolf 收缩解决的是维度灾难——N 大 T 小时样本协方差病态。但它有个隐含前提:每个样本日都是”好”样本,误差来自样本量不足,而非样本本身有毒。这个前提在金融数据上经常不成立:收益分布是肥尾的,一个 ±15% 的极端日进入协方差的平方项后,影响力是普通日的几百倍。样本协方差对极端值不是稳健性差,而是零稳健性——单个足够极端的观测就能把估计拖到任意远的地方。
Tyler(1987)提出的 M-估计量走了一条完全不同的路:既然极端日的问题出在幅度上,那就把幅度扔掉,只用方向。
一、核心思想:只看方向,不看幅度#
把每天的收益向量 归一化到单位球面上:。一个 ±15% 的崩盘日和一个 ±0.5% 的平静日,归一化后权重完全相同——只剩下”20 个资产今天往哪些方向动”这一信息。
关键洞察是:对于任何椭圆分布(正态、多元 t、多元 Laplace……),归一化后的方向向量 的分布只依赖于散布矩阵的形状(shape matrix,即协方差矩阵去掉整体尺度后的部分),不依赖于分布的尾部厚度。所以基于方向估计出的形状矩阵,在 t(3) 和正态下有完全相同的渐近性质——这就是”分布自由”(distribution-free within elliptical family)的含义。
Tyler 估计量定义为如下不动点方程的解:
直觉拆解:分母 是第 t 天收益向量在当前估计下的马氏距离平方——越极端的日子分母越大、权重越低。这是一个自适应的降权机制:不需要事先指定”多大算异常”,估计量在迭代中自己决定。
迭代解法非常简单:从单位矩阵出发,反复代入右边直到收敛。Tyler 证明了只要 T > N 且数据”一般位置”(无退化共线),不动点唯一且迭代线性收敛:
import numpy as np
def tyler_m_estimator(X, max_iter=200, tol=1e-8):
"""Tyler M-估计量:返回 trace 归一化的形状矩阵。
X: (T, N) 收益矩阵。要求 T > N。"""
T, N = X.shape
Xc = X - np.median(X, axis=0) # 用中位数做稳健中心化
V = np.eye(N)
for _ in range(max_iter):
Vinv = np.linalg.inv(V)
# 每个样本的马氏距离平方 d_t = x_t' V^{-1} x_t
d = np.einsum('ti,ij,tj->t', Xc, Vinv, Xc)
d = np.maximum(d, 1e-12)
V_new = (N / T) * (Xc.T / d) @ Xc # 加权外积和
V_new *= N / np.trace(V_new) # trace 归一化
if np.linalg.norm(V_new - V, 'fro') < tol:
return V_new
V = V_new
return Vpython注意两个细节:一是中心化用中位数而非均值——均值本身会被极端日污染,用它中心化等于把污染带回来;二是每轮迭代都做 trace 归一化——Tyler 估计量只识别形状,尺度是不可辨识的,必须固定一个约束。
实测收敛性(N=20, T=252, t(4) 数据):迭代差 在对数轴上是一条直线,约 35 轮达到 1e-15——每轮只需一次矩阵求逆,总成本可以忽略:

右图是降权机制的直接可视化:横轴是当日收益向量的幅度,纵轴是该样本在最终估计中获得的相对权重。幅度 6% 以上的极端日权重被压到均值的 20% 以下,而波动 1% 以内的平静日权重可达均值的 3 倍——样本协方差恰好相反(平方项让极端日权重最高),这就是两者稳健性差异的全部来源。
二、实验一:肥尾之下,误差纹丝不动#
模拟设定:N=20 资产,真实协方差为单因子结构(β∈[0.5,1.5] + 异质特质波动),收益从多元 t 分布生成,自由度从 3(极肥尾)到 ∞(正态),T=252,60 次 Monte Carlo。评价指标是形状矩阵的相对 Frobenius 误差(估计和真值都先做 trace 归一化,只比形状)。

| 分布 | 样本协方差 | Ledoit-Wolf | Tyler |
|---|---|---|---|
| t(3) | 0.266 | 0.253 | 0.108 |
| t(4) | 0.178 | 0.179 | 0.105 |
| t(6) | 0.140 | 0.142 | 0.104 |
| t(10) | 0.114 | 0.114 | 0.102 |
| 正态 | 0.098 | 0.097 | 0.102 |
三个观察:
第一,Tyler 的误差曲线几乎是水平线(0.108→0.102)——这就是”分布自由”的实证形态。样本协方差和 LW 的误差随尾部变肥单调恶化,t(3) 下是 Tyler 的 2.5 倍。
第二,Ledoit-Wolf 对肥尾毫无免疫力。LW 收缩解决的是”T 相对 N 不够”的问题,收缩目标和收缩强度都基于样本矩计算——而样本矩本身已经被肥尾污染。t(3) 下 LW(0.253)和裸样本协方差(0.266)几乎没差别。收缩和稳健是正交的两个维度,前者治维度病,后者治尾部病。
第三,正态下 Tyler 只损失 4%(0.102 vs 0.098)。扔掉幅度信息的代价在正态下是渐近效率损失约 量级——N=20 时不到 10%。用很小的保费买肥尾保险。
三、实验二:污染崩溃曲线——稳健性的边界#
更极端的测试:在 t(6) 基底数据中,随机把 ε 比例的样本日替换为 ±15% 量级、方向随机(与真实因子结构无关)的异常日,模拟数据错误或闪崩类事件。

| 污染比例 | 样本协方差 | Ledoit-Wolf | Tyler |
|---|---|---|---|
| 0% | 0.147 | 0.144 | 0.107 |
| 1% | 0.147 | 0.148 | 0.105 |
| 2% | 0.184 | 0.192 | 0.109 |
| 5% | 0.305 | 0.311 | 0.266 |
| 10% | 0.515 | 0.511 | 1.930 |
前半段符合预期:2% 污染(一年约 5 个坏日)就足以让样本协方差误差恶化 25%,而 Tyler 纹丝不动——降权机制精确识别并压制了这些异常日。
但 10% 污染时发生了反转:Tyler 的误差爆炸到 1.93,反而比样本协方差(0.52)惨得多。原因值得细说:Tyler 是用方向信息估计的,当 10% 的样本集中在同一个随机方向 u 上时(我们的污染都沿同一方向),这些样本在方向分布中形成一个假的”因子”——Tyler 无法区分”这是被污染的方向”还是”这是一个真实的强因子”,于是把大量质量分配给 u。而样本协方差虽然也被污染,但 15% 幅度的平方项被 90% 的正常样本部分稀释了。教训很直接:Tyler 对”少量、分散”的异常免疫,对”大量、同向”的结构性污染反而更脆弱。它的崩溃点(breakdown point)约为 1/N 到 1/(N+1) 之间——N=20 时约 5%,与实验吻合。
四、实验三:GMV 组合——形状优势被求逆稀释#
估计误差是中间指标,最终要看组合表现。用各估计量构建全局最小方差(GMV)组合,权重 ,在真实协方差下计算真实年化波动率。数据为 t(4) 肥尾。Tyler 只给形状,尺度用样本方差的中位数补上(GMV 权重对整体尺度不敏感,这一步只影响数值稳定性)。

| T | 样本 | Ledoit-Wolf | Tyler | 等权 |
|---|---|---|---|---|
| 60 | 13.52% | 12.06% | 12.58% | 17.44% |
| 126 | 11.58% | 11.26% | 11.09% | 17.44% |
| 252 | 11.03% | 10.96% | 10.63% | 17.44% |
| 504 | 10.69% | 10.64% | 10.41% | 17.44% |
| 理论最优 | 10.19% |
结论比形状误差图谦虚得多:
T=60 时 LW 反超 Tyler。短窗口下主要矛盾是维度病(N/T=1/3),收缩的价值大于稳健的价值。Tyler 要求 T > N 且没有内置收缩,小样本下它的形状估计本身方差就大。
T≥126 后 Tyler 稳定领先,但幅度只有 0.2-0.4 个百分点。形状误差差了一倍多(0.105 vs 0.178),组合波动却只差 3%——因为 GMV 权重依赖的是 的方向结构,求逆运算对误差的放大主要发生在小特征值上,而 Tyler 改善的主要是大特征值方向的形状。估计层面的巨大优势传导到组合层面会大幅衰减,这是协方差研究里反复出现的规律,任何只报告矩阵误差不报告组合表现的论文都要打个折扣看。
实务上的正确姿势是两者叠加:正则化 Tyler 估计量(Chen-Wiesel-Hero 2011,在 Tyler 迭代里加一个向单位矩阵的收缩项)同时治维度病和尾部病,小样本+肥尾下比单用任何一个都好。sklearn 没有现成实现,但在上面代码的 V_new 行加一项 (1-rho)*V_new + rho*np.eye(N) 即是最简版本。
五、A/B/C 三段式总结#
A. 实现细节:收益矩阵 (T, N),中位数中心化;不动点迭代 + 每轮 trace 归一化,收敛容差 1e-8,实测约 35 轮收敛;形状误差在 trace 归一化后按 Frobenius 范数计算;GMV 实验中 Tyler 形状矩阵直接求逆取权重(权重和为 1 消掉尺度);污染实验的异常日为固定随机方向 × N(0, 15%²) 幅度;60 次 Monte Carlo 取均值。
B. 已知偏差:(1) 模拟市场是精确的椭圆分布(多元 t),这是对 Tyler 最友好的假设——真实收益的尾部有偏度和不对称相依,椭圆假设本身有偏差,Tyler 的”分布自由”保证会打折;(2) 污染实验的异常日方向固定,是对 Tyler 最不利的污染形态之一,实际数据错误多为单资产跳价,Tyler 表现会好于实验中的 10% 崩溃场景;(3) 真实协方差在模拟中不随时间变化,未测试 Tyler 在时变协方差下与滚动窗口的交互。
C. 结果解读:Tyler 的价值主张非常清晰——用正态下约 4% 的效率损失,换肥尾下 2.5 倍的误差改善,且不需要调任何超参数。它最适合的场景:中等维度(N=10~50)、样本充足(T > 3N)、明确担心极端日污染的形状估计任务,例如风险平价的相关结构、马氏距离湍流指数里的 Σ⁻¹(湍流指数对 Σ 的污染极度敏感,用 Tyler 估计是文献标准做法)。它不能做的事也要清楚:只给形状不给尺度,波动率目标策略需要另外配一个稳健尺度估计(如 MAD);崩溃点约 1/N,对大规模同向污染无免疫力;小样本下应换正则化版本。与 Ledoit-Wolf 的关系是互补而非替代——一个治维度,一个治尾部,实务中叠加使用。