halo 的技术博客

返回

先说结论:一个正确的 VaR 模型必须满足比”突破率等于名义值”强得多的条件:突破必须对昨天之前的一切信息不可预测。Engle 和 Manganelli(2004)的动态分位数(DQ)检验把这个条件变成一个回归——把去中心化的突破序列回归到滞后突破、当期 VaR 等解释变量上,模型正确时所有系数应为零,检验统计量服从 χ²。它是 Christoffersen 一阶马尔可夫检验的严格推广:不止看昨天破没破,还看更远的滞后和 VaR 水平本身。我在 GARCH-t(6) 模拟上实测:静态正态 VaR 的突破序列在 Christoffersen 独立性检验下 p=0.51 安然过关,DQ 检验 p=0.004 直接拒绝;功效实验里 DQ 在高波动持续性下达到 63%,比一阶检验的 40% 高出一半

突破序列应该是什么样的#

回顾 VaR 回测的逻辑链。定义突破指示 It=1{Lt>VaRp,t}I_t = \mathbf{1}\{L_t > VaR_{p,t}\}。如果模型的条件分位数是对的,那么:

E[ItFt1]=pE[I_t \mid \mathcal{F}_{t-1}] = p

在昨天为止的全部信息 Ft1\mathcal{F}_{t-1} 条件下,今天突破的概率恒等于 pp。这一个式子蕴含两层:

  1. 无条件突破率是 ppKupiec POF 检验的对象);
  2. 突破对任何 t1t-1 时刻可观测的变量都不可预测——不能用昨天的突破预测、不能用上周的突破预测、不能用当期 VaR 的高低预测、不能用任何市场变量预测。

Christoffersen(1998)检验了第二层的一个特例:ItI_t 是否独立于 It1I_{t-1}(一阶马尔可夫)。但违背可预测性的方式远不止”昨天破今天更容易破”这一种。两个典型漏网:

  • 长程依赖:波动周期长于一天时,突破可能隔 2-5 天再聚集,一阶转移概率看不见;
  • VaR 水平依赖:模型在低 VaR(平静期)时突破率偏高、高 VaR 时偏低——突破概率和 VaR 水平相关,但这不体现在相邻两天的转移结构里。

DQ 检验的思路是把”对一切信息不可预测”落实为一个可操作的回归检验。

检验构造:Hit 回归#

定义去中心化突破序列:

Hitt=ItpHit_t = I_t - p

模型正确时 HittHit_t 是期望为 0 的鞅差序列。把它回归到 tt 时刻已知的解释变量上:

Hitt=β0+j=1qβjHittj+βq+1VaRp,t+εtHit_t = \beta_0 + \sum_{j=1}^{q} \beta_j \, Hit_{t-j} + \beta_{q+1} \, VaR_{p,t} + \varepsilon_t

原假设 H0:β=0H_0: \beta = 0(所有系数含截距全为零)。Engle-Manganelli 给出的检验统计量:

DQ=β^XXβ^p(1p)    χ2(k)DQ = \frac{\hat\beta^\top X^\top X \hat\beta}{p(1-p)} \;\sim\; \chi^2(k)

其中 XX 是回归设计矩阵,kk 是回归元个数。分母 p(1p)p(1-p)HittHit_tH0H_0 下的方差——这不是普通的 OLS F 检验,因为残差是伯努利型的,方差已知为 p(1p)p(1-p),直接代入。

三个解释变量的选择各有分工:

  • 滞后 HitHit(通常取 4 阶):抓突破聚集,覆盖一阶马尔可夫抓不到的隔日聚集;
  • 当期 VaRp,tVaR_{p,t}:抓”突破概率随 VaR 水平变化”——静态模型的典型病灶;
  • 截距:抓无条件突破率偏离 pp,把 Kupiec 的功能内嵌了进来。

所以 DQ 是个联合检验:频率错、聚集错、水平依赖错,任何一种都会推高统计量。这既是优点(一个检验管三件事)也是代价(拒绝后要额外归因是哪一层错了)。

十几行代码。DQ 检验在文献引用里的地位和它的实现难度完全不成比例——这是那种”知道了就是白捡”的工具。

实验:DQ 看见了 Christoffersen 看不见的病#

数据生成过程:GARCH(1,1) + t(6) 创新,1000 天,检验做在 95% VaR 上(层级选择的理由后面说)。三个模型:

  1. GARCH-t(6):正确模型;
  2. GARCH-正态:波动路径正确、尾部偏薄;
  3. 静态正态:无条件波动,完全忽略波动聚集。

结果:

模型突破次数(期望 50)DQ 统计量(df=6)DQ p 值Christoffersen IND p 值
GARCH-t(6)(正确)584.420.6200.829
GARCH-正态531.830.9350.592
静态正态2219.140.0040.505

三个 VaR 模型的 DQ 检验对比

最有信息量的一行是静态正态:Christoffersen 独立性检验 p=0.51,完全无罪释放;DQ 检验 p=0.004,毁灭性拒绝。同一个突破序列,为什么结论天差地别?

看突破的时间分布就明白了:

静态模型的突破在高波动期扎堆

静态正态只突破了 22 次(95% 层级下期望 50 次——静态波动在这条路径上整体偏保守),但这 22 次几乎全部挤在高波动时段。问题在于:突破太稀疏时,相邻两天连续突破(n11n_{11})这个事件本身就很少发生,Christoffersen 检验赖以定罪的 π^11\hat\pi_{11} 估计不出名堂——本例 π^11=0.045\hat\pi_{11}=0.045π^01=0.021\hat\pi_{01}=0.021,差异有但样本撑不起显著性。而 DQ 的定罪证据来自另外两路:截距项(22 次 vs 期望 50 次,频率显著偏低)和 VaR 水平项(突破全部发生在真实波动高、而静态 VaR 相对偏低的时段,HittHit_tVaRtVaR_t 显著相关)。这两路证据一阶马尔可夫检验根本没有入口。

突破指示序列的自相关结构

自相关图进一步展示了”隔日聚集”:静态模型的突破序列在滞后 1-5 阶都有正自相关,其中不少超出置信带——这正是 4 阶滞后回归元的猎物,而一阶转移矩阵只能看到滞后 1。

顺带一提,GARCH-正态在 95% 层级安然通过(p=0.94)是正常的:它的病在深尾(97.5% 之外),95% 分位点上正态和 t(6) 差别不大。这就是上一篇 Acerbi-Szekely ES 检验Z1Z_1 幅度检验存在的理由——尾部形状的错要用幅度信息抓,突破序列的 0/1 结构对它天然低敏。

功效对比:滞后阶数买来了什么#

固定待检模型为静态正态 VaR,让真实过程的波动持续性 α+β\alpha+\beta 从 0 扫到 0.98,每档 250 次独立试验,对比 DQ(4 阶滞后 + VaR 项)和 Christoffersen 一阶独立性检验的拒绝率:

波动持续性DQ 功效Christoffersen IND 功效
0.00(无聚集)0.0200.076
0.500.0480.100
0.800.1600.176
0.900.2760.208
0.950.4280.252
0.980.6280.396

DQ vs Christoffersen 功效对比

两个读法:

高持续性区间 DQ 显著占优。真实市场的日频波动持续性普遍在 0.95-0.99,正是 DQ 领先幅度最大的区间(0.43 vs 0.25,0.63 vs 0.40)。波动周期越长,突破聚集越”弥散”在多阶滞后上,多阶回归的信息优势越大。

低持续性区间 DQ 略逊——这是自由度的价格。DQ 用 χ2(6)\chi^2(6),Christoffersen IND 用 χ2(1)\chi^2(1);当真实的偏离恰好集中在一阶转移上时,DQ 把检验功效摊薄到了六个方向。没有免费午餐:解释变量越多,覆盖的备择假设越广,单个方向上的功效越低。这也是实务上滞后阶数取 4 而不是 20 的原因——Engle-Manganelli 原文用 4 阶,后续功效研究(Berkowitz et al., 2011)确认 4 阶附近是覆盖面和功效的合理折中。

还是那个诚实的提醒:即便是占优的 DQ,在 1000 天、持续性 0.98 的设定下功效也只有 63%。单个样本、单次检验定罪坏模型的概率从来不高,回测检验的正确用法是滚动窗口 + 多期累积证据,而不是一锤定音。

工程实现清单#

  1. 层级选择:DQ 依赖突破序列有足够的”事件密度”。99% 层级 250 天期望才 2.5 次突破,滞后 HitHit 几乎全是 p-p 常数列,回归退化。监管口径在 99% 报数,诊断口径在 95% 甚至 90% 跑 DQ,分层回测定位问题。
  2. 回归元可以扩展Ft1\mathcal{F}_{t-1} 里任何变量都是合法回归元——滞后收益的绝对值、已实现波动、VIX。怀疑模型对哪类信息失明,就把那个变量加进去。DQ 本质是个开放框架,标准配置只是默认菜单。
  3. 别用 OLS 的 F 检验 p 值:残差是移位伯努利,不是高斯。统计量的分母必须用 p(1p)p(1-p),服从 χ2(k)\chi^2(k)。拿 statsmodels 跑 OLS 然后读 F-test 是常见错误。
  4. 样本前 q 天丢弃:滞后回归元需要 warmup,T=250T=250 时丢 4 天无所谓,但要在代码里显式处理,别让 NaN 静默传播。
  5. 拒绝后的归因:DQ 拒绝只说”有病”,不说病在哪。看单个系数的 t 值:截距大→频率错(换分布尺度);滞后项大→聚集(换波动模型);VaR 项大→水平依赖(模型对市场状态失明,考虑加状态变量或换 CAViaR 类模型)。

与检验家族的分工#

到这篇为止,VaR/ES 回测工具箱的拼图完整了:

  • Kupiec POF:突破次数对不对(无条件覆盖);
  • Christoffersen:突破是否相邻聚集(一阶条件覆盖);
  • DQ(本篇):突破是否对广义信息集不可预测(一般条件覆盖,涵盖前两者);
  • Acerbi-Szekely Z1/Z2:突破之后的幅度对不对(ES 校准);
  • 巴塞尔交通灯:把统计证据翻译成资本处罚(监管执行层)。

如果只能挑两个进生产:DQ 管突破的时间结构,Z2 管突破的幅度结构——这两个组合的覆盖面最大,且互相正交。

诚实边界#

  • 线性回归只能抓线性可预测性。如果突破概率是某个变量的非线性函数(如仅在极端 VIX 时失效),线性 DQ 可能漏检。扩展方向是把回归元做非线性变换,或干脆用 logit 链接(Berkowitz 的 CaViaR-based 变体)。
  • 回归元选择是研究者自由度。滞后阶数、是否加 VaR 项、加哪些外生变量——不同配置给出不同 p 值。诚实的做法是预注册标准配置(4 阶 + VaR 项),把探索性的变量扫描明确标注为诊断而非检验。
  • χ2\chi^2 是渐近分布T=250T=250p=1%p=1\% 时有限样本下 size 会偏离名义水平,小样本要用蒙特卡洛模拟临界值(模拟 i.i.d. Bernoulli(pp) 序列跑同一个回归)。
  • 检验对了不等于模型有用。DQ 全绿只说明 VaR 序列与数据相容,不说明它是最优的——一个恒等于经验分位数的宽松模型也可能通过。回测检验是模型的下限守门员,不是上限裁判。

DQ 检验的元教训值得单独记一笔:“正确校准”的完整定义是对信息集条件化的,任何只检验边际性质的工具(次数、相邻转移)都只覆盖了必要条件的一角。把原假设写成条件期望形式、再把条件信息显式搬进回归——这个”检验即回归”的构造思路,在计量经济学里反复出现(鞅差检验、事件研究、预测评估皆然),学会一次,处处能用。

动态分位数 DQ 检验:把 VaR 突破回归到信息集上
https://blog.halo26812.eu.org/blog/dynamic-quantile-test-dq
Author halo
Published at 2026年7月27日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨