halo 的技术博客

返回

前几篇我们讲了协方差怎么收缩噪声特征值怎么剪,都是在解决采样误差——数据不够、维度太高。但协方差还有另一个完全独立的敌人:时变性。市场波动率不是常数,相关性会在危机里齐刷刷跳升,而教科书默认的等权滚动窗口对此的反应速度,用一个词形容就是:迟钝。

先上本文实验里最扎眼的数字。两资产市场、相关系数从 0.3 跳到 0.8(模拟危机传染),估计器收敛到新相关值 90% 所需的天数:

估计器收敛天数
EWMA λ=0.9418 天
252 天滚动窗口234 天

滚动窗口需要把窗口里的旧数据几乎全部换血才能承认世界变了——将近一年。这一年里你的风险模型报告的相关性、VaR、组合波动率全是过时的。EWMA(指数加权移动平均)用一个参数 λ 解决这个问题,这就是 J.P. Morgan RiskMetrics(1996)留给行业最持久的遗产。

波动率与相关性追踪:EWMA 贴着真实值走,滚动窗口慢半年到一年

一行递推公式#

EWMA 方差估计只有一行:

σ^t2=λσ^t12+(1λ)rt12\hat\sigma^2_t = \lambda \hat\sigma^2_{t-1} + (1-\lambda) r_{t-1}^2

协方差同理,把 r2r^2 换成两资产收益的乘积。展开递推式可以看到它本质是对历史平方收益做指数衰减加权:滞后 kk 天的观测拿到权重 (1λ)λk(1-\lambda)\lambda^k。滚动窗口是”窗口内等权、窗口外清零”的阶梯函数;EWMA 是平滑衰减,昨天的信息永远比前天重要。

注意矩阵版本的一个好性质:每天的更新 rrr r^\top 是秩 1 半正定矩阵,λ 加权和保持半正定——EWMA 协方差矩阵天然不会出现负特征值,这比很多修补样本协方差的方法省心。

λ 是唯一的旋钮:半衰期与有效样本量#

λ 控制记忆长度,两个换算公式值得记住:

  • 半衰期k1/2=ln0.5/lnλk_{1/2} = \ln 0.5 / \ln \lambda。λ=0.94 → 11.2 天;λ=0.97 → 22.8 天
  • 有效样本量Neff=(1+λ)/(1λ)N_{\text{eff}} = (1+\lambda)/(1-\lambda)。λ=0.94 → 约 32 天;λ=0.97 → 66 天

指数衰减权重与 λ 的换算:λ=0.94 半衰期 11 天,有效样本量 32

RiskMetrics 的经典取值是日频 λ=0.94、月频 λ=0.97,这不是理论推导,是当年在几百个资产上最小化方差预测误差的经验优化结果。它隐含的判断是:日频波动率的可预测结构大约只有两三周的记忆——和 GARCH(1,1) 在多数市场估出的 α+β≈0.98(对应类似衰减速度)互相印证。事实上 EWMA 就是 GARCH(1,1) 取 ω=0、α+β=1 的退化特例:不均值回复、不收敛到长期方差,永远跟着最近的市场走。

VaR 回测:迟钝的代价#

用 GARCH 生成的十年日收益(波动聚集是真实的),每天用前一天的波动率估计预测 1% VaR,统计击穿率:

估计器1% VaR 击穿率
真实 σ(上帝视角)1.44%(采样噪声)
EWMA λ=0.941.40%
252 天滚动窗口1.67%

整体差 0.27 个百分点看着不大,但分年度看就露馅了:滚动窗口的击穿集中在波动率抬升的年份——波动率涨了它还拿着一年前的低波动数据算 VaR,于是连环击穿;等它终于追上来,波动率又回落了,它又开始高估风险、浪费风险预算。风险估计的滞后不是均匀分布的误差,是顺周期的系统性错误:最需要风控收紧的时候它最松。

分年度 VaR 击穿率:滚动窗口的击穿集中在波动率抬升年份

诚实的另一面:EWMA 不解决维度诅咒#

到这里 EWMA 看起来全面碾压,但把它喂给组合优化器试试。20 资产(单因子结构 + GARCH 共同波动、相关结构恒定)、月度再平衡最小方差组合、八年样本外:

协方差估计器OOS 年化波动率
EWMA λ=0.9416.0%(最差)
EWMA λ=0.9714.2%
滚动 252 天样本协方差12.9%
全历史样本协方差12.5%(最好)

20 资产最小方差组合 OOS 波动率:λ=0.94 反而最差

排序完全反过来了。原因不复杂:λ=0.94 的有效样本量只有 32 天,拿 32 天的信息去估 20×20=210 个协方差参数,等效于 T/N≈1.6 的极端样本匮乏——前面讲过这正是优化器误差最大化的重灾区。而这个模拟市场的相关结构是恒定的,时效性毫无价值,等权长窗口的低方差估计完胜。

这个对照实验说清楚了 EWMA 的定位:它解决时效性,不解决维度诅咒,两者还互相冲突——λ 越小追得越快,有效样本越少、矩阵越噪。工程上的调和方案:

  1. 一维风险度量(单资产 VaR、波动率目标)用小 λ:只估一个参数,32 天样本足够,时效性收益全拿;
  2. 高维协方差用大 λ 或直接叠加收缩:先 EWMA 更新、再 Ledoit-Wolf 收缩,或者用 DCC-GARCH 把波动率(各自 GARCH,追得快)和相关性(缓慢演化)拆开建模——相关性本来就比波动率稳定得多;
  3. 检查 N_eff 对 N 的比值Neff/N<3N_{\text{eff}}/N < 3 就该警惕,这是和滚动窗口 T/N 完全同源的判据。

实现细节与坑#

初始化:递推需要 σ^02\hat\sigma^2_0。用前 60 天样本方差初始化,然后烧掉(burn-in)约 3 个半衰期再开始使用输出,初始化误差衰减到 λ3313%\lambda^{33}\approx13\% 以下。直接拿第一天的 r12r_1^2 初始化会让前两个月的估计随机漂移。

去均值:日频收益均值约 0.03%,平方后对方差贡献不足 1%,RiskMetrics 直接假设均值为零。周频以上建议老实减均值。

相关系数要用同一 λ:分子协方差和分母两个方差必须用相同 λ 递推,否则相关系数可能跑出 [−1, 1]。

λ 不要拿收益率数据调优:用波动率预测误差(如 QLIKE 损失)调,拿组合收益调 λ 就是把风险模型变成了另一个过拟合的 alpha 模型。

结语#

EWMA 是风险建模里性价比最高的一行代码:零参数估计(λ 是约定不是估计)、天然半正定、对波动聚集的响应速度接近 GARCH。它的边界同样清晰——有效样本量 32 天的估计器不该被塞进高维优化器。下次看到风险系统里同时存在”日频 λ=0.94 算 VaR”和”月度协方差矩阵做配置”,不要以为是不一致,那是各干各的活。

参考文献#

  1. J.P. Morgan/Reuters (1996). RiskMetrics — Technical Document (4th ed.).
  2. Engle, R. (2002). Dynamic Conditional Correlation. Journal of Business & Economic Statistics, 20(3).
  3. Patton, A. (2011). Volatility Forecast Comparison Using Imperfect Volatility Proxies. Journal of Econometrics, 160(1).
EWMA 协方差 RiskMetrics:用指数衰减权重让风险估计跟上市场
https://blog.halo26812.eu.org/blog/ewma-riskmetrics-covariance
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨