Skip to content
全部期权指南
用同一组实际结果上的损失比较两种预测13 分钟阅读

Diebold–Mariano 检验:如何比较预测准确度

了解 Diebold–Mariano 检验的比较对象、损失差与序列相关如何影响统计量,以及为什么预测准确度不等于交易盈利。

本指南内容检验比较的是预测的期望损失

简短摘要

Diebold–Mariano(DM)检验用于判断:针对一组相同的实际结果进行评估时,两种预测流程的期望损失是否相同。它依据逐期损失差构造序列,因此损失函数、预测期限以及日期之间的依赖性都会影响结果。拒绝原假设只支持在既定评估设计下存在差异;这并不能证明某个模型会持续占优,也不能证明交易策略扣除成本后能够盈利。

检验比较的是预测的期望损失

Diebold–Mariano 检验比较两个模型在相同评估日期对同一目标所作的预测。每个预测起点都要对应相同的实际结果、预测期限和信息截点。之后,检验判断一种预测流程的平均损失是否系统性地不同于另一种,同时允许损失差随时间变化。

Diebold 和 Mariano 的原论文针对一般损失函数提出竞争预测具有相同预测准确度这一原假设的检验,而不只讨论均方误差(Diebold and Mariano, 1995)。这里的“准确度”指在选定损失函数下期望损失较低。它不表示预测为真、能够解释因果关系、在分布各处均校准良好,或适用于所有决策。

假设模型 A 和 B 在同一时点预测同一个未来收益。DM 检验不检验任一模型的某个系数是否为零,也不检验两个模型在估计样本中的拟合值是否相同。它比较的是两者在评估样本中的预测误差如何按选定损失函数计分。

应先明确评估设计,再解释统计量。目标变量、预测起点、期限、损失函数、缺失结果处理、重新估计安排,以及单侧或双侧备择假设共同决定检验的问题。若不同模型采用了不同设置,损失差就不再代表条件相同的比较。

定义配对预测和损失差

令 $y_t$ 表示预测起点 $t$ 的实际目标值,$\hat y_{A,t}$ 与 $\hat y_{B,t}$ 分别表示模型 A、B 的预测。预测误差为 $e_{A,t}=y_t-\hat y_{A,t}$ 和 $e_{B,t}=y_t-\hat y_{B,t}$。给定损失函数 $L$,日期 $t$ 的损失差定义为:

$$ d_t=L(e_{A,t})-L(e_{B,t}) $$

按此符号约定,$d_t$ 的均值为负表示 A 的观测损失较低;均值为正则表示 B 的观测损失较低。总体原假设是 $E[d_t]=0$。双侧备择关注任一方向的期望损失差,单侧备择关注事先选定的方向。不能在看到哪个模型胜出后再挑选方向。

平方误差损失 $L(e)=e^2$ 会让大误差承担更大权重;绝对误差损失 $L(e)=|e|$ 不容易被单个极端误差支配。分位数损失适用于非对称预测目标,其他损失可以衡量预测表现的其他方面。更换损失函数可能改变模型排名,因此在说明损失前,“最佳预测”并无唯一含义。Tashman 对样本外预测检验的综述也强调,评估方法应匹配预测问题(Tashman, 200000065-0))。

两个模型必须使用相同的预测起点和实际结果。如果某个模型恰好缺少困难日期的预测,只为它悄悄删除该日期会改变比较样本。如果实际部署中每月都会用新数据重新估计模型,评估预测也应采用同一规则;固定参数预测回答的是另一个问题。[Walk-forward 验证](/zh-CN/learn/walk-forward-validation-expanding-vs-rolling-windows-explained)说明如何按时间顺序生成不使用未来数据的预测。

四个预测起点的例子说明平均差

考虑四个假设的预测起点,并以百分点表示目标值和误差。模型 A 的误差为 $[1,2,0,1]$,模型 B 为 $[2,1,1,1]$。每一对都对应相同的实际收益和预测区间。这些数字仅为演示计算而虚构。

使用平方误差损失时,A 的损失为 $[1,4,0,1]$,均方误差为 $(1+4+0+1)/4=1.50$ 平方百分点。B 的损失为 $[4,1,1,1]$,均方误差为 $(4+1+1+1)/4=1.75$。在这四个结果中,A 的 MSE 低 0.25 平方百分点。

逐期损失差 $d_t=L(e_{A,t})-L(e_{B,t})$ 为 $[-3,3,-1,0]$,其均值 $(-3+3-1+0)/4=-0.25$,与 A 的平均损失减去 B 的平均损失一致。负号按此约定支持 A,但还无法说明差异是否大于抽样噪声。四组预测远不足以构成有说服力的统计证据。

损失定义也会改变“更好”的含义。在另一个假设例子中,C 的绝对误差为 $[0,0,0,3]$,D 为 $[1,1,1,1]$。按绝对损失,C 的均值为 0.75,D 为 1,因此 C 更优;按平方损失,C 的均值为 2.25,D 为 1,因此 D 更优。如果不先确定哪些预测错误更重要,检验无法替你解决这种分歧。

<!-- Illustration placement: after this section; text-free conceptual scene showing two forecast paths against one realized path, with visibly different miss distances and no labels or numerical claims. -->

DM 统计量用不确定性标准化平均损失差

样本平均损失差为 $\bar d=T^{-1}\sum_{t=1}^{T}d_t$,其中 $T$ 是配对预测结果的数量。它的标准误取决于 $d_t$ 的长期方差,而不仅是某一个日期的方差。检验统计量的一般形式为:

$$ DM=\frac{\bar d}{\sqrt{\widehat{\Omega}/T}} $$

$\widehat{\Omega}$ 是损失差序列的长期方差估计。若日期之间相互独立,按所选估计方法,它会接近 $d_t$ 的方差。但预测损失常会成簇出现:高波动时期可能同时放大两个模型的误差;$h$ 期目标还可能使相邻误差窗口共享实际收益。忽略正向依赖会低估标准误,让证据显得过强。

一种常见的 HAC 构造先估计去均值损失差的自协方差 $\hat\gamma_k$,再计算 $\widehat{\Omega}=\hat\gamma_0+2\sum_{k=1}^{q}w_k\hat\gamma_k$。采用 Bartlett 权重时,带宽 $q$ 以内 $w_k=1-k/(q+1)$。Newey 和 West 提出了对异方差和自相关一致的半正定协方差估计量(Newey and West)。核函数和带宽属于实现选择,应公开并按预测设计确定,而不是为了得到偏好的 p 值而调整。[HAC 标准误指南](/zh-CN/learn/robust-standard-errors-heteroskedasticity-hac-finance-explained)介绍了更一般的协方差估计问题。

在检验满足常规条件时,标准 DM 统计量渐近服从标准正态参考分布。绝对值较大表示观测到的平均损失差相对于估计不确定性较大。符号表示按既定排序哪一个模型损失较低;p 值不衡量差异大小或经济价值。p 值也不是原假设为真的概率,更不是未来预测成功的概率。

多步预测会重叠,因此有限样本处理也很重要

每期预测多个期间后的目标时,评估窗口会重叠。例如,每月预测未来三个月的累计收益,与一个月后发布的预测共享三个月收益中的两个月。即使月收益相互独立,这种重叠也可能使预测误差和损失差出现序列相关。

在基本的 $h$ 步预测设置中,方差计算至少应纳入到 $h-1$ 阶的依赖关系。这不是通用带宽规则:滚动重估、持续性目标、波动聚集以及损失函数都可能带来更长依赖。应记录预测期限、预测起点间隔,以及选择 HAC 截断阶数或其他方差估计方法的原因。预测行数并不自动等于独立证据数量。

原始渐近检验在中等样本中可能无法达到预期显著性水平。Harvey、Leybourne 和 Newbold 针对均方预测误差比较提出了有限样本修正(HLN, 199700719-4))。期限为 $h$、预测数为 $T$ 时,一种常见形式是将 DM 统计量乘以:

$$ DM_{HLN}=DM\sqrt{\frac{T+1-2h+h(h-1)/T}{T}} $$

修正后的统计量通常与自由度为 $T-1$ 的 t 分布比较。$T=60$、$h=5$ 时,乘数约为 $0.925$。这个例子只展示修正系数的计算,不表示 60 个观测对特定模型足够,也不表示假设成立。修正只处理特定的有限样本问题,无法修复信息泄漏、无效目标、未建模依赖、反复选择模型或错误设定的损失函数。

嵌套模型需要不同的预测比较论证

模型 A 可能是模型 B 的受限版本,例如 B 在 A 的基础上增加了预测变量。即使原假设认为新增变量在总体中没有预测价值,估计出的系数仍可能给 B 的预测带来噪声。因此,即使新增变量未改善底层预测过程,大模型的观测 MSE 也可能更高。为非嵌套竞争模型设计的等准确度逻辑不能不加区分地套用。

Clark 和 West 针对嵌套模型提出近似正态的预测精度相等检验,并调整平方误差比较,以扣除大模型估计噪声的影响(Clark and West, 2007)。该修正不是所有 DM 检验的通用替代品,而是针对特定嵌套模型问题、损失函数和渐近设定。先确定模型是否嵌套,再选择原假设分布符合设计的方法。不能假定软件给出的标准 DM p 值适用于所有模型关系。

还要区分其他预测表现。较低的 MSE 未必能改善区间覆盖率、概率校准、方向准确度或后续决策。预测比较即使在样本外进行,也可能使用在模型开发期间被反复查看的不合格留出集。应说明模型关系、估计方案、预测期限,以及生成每个预测时使用的数据范围。

预测准确度不等于交易优势

DM 结果评估预测损失;交易决策评估收益与风险过程。下一期收益的 MSE 较低,并不保证信号足够频繁地判断对交易方向、合理设置仓位,或经受换手、价差、市场冲击、手续费、借贷成本、资金费和执行延迟。反过来,平均平方误差稍高的预测,如果在策略敞口最大的时期更准确,仍可能改善决策。对此类主张,损失函数可能需要反映实际决策,而不只是方便的一般预测指标。

统计显著的差异在经济上也可能很小。应同时报告平均损失差的可解释单位和不确定性,而不只是 p 值或“获胜者”标签。如果主张的是投资组合结果,应在合适的后续数据上按现实交易假设回放完整且固定的决策规则,并单独报告净结果。除非损失函数明确包含这些结果,DM 不会计算组合损益或扣除成本。

该检验也不能修正研究者在大量模型、目标、预测期限、损失函数、日期区间或交易规则中搜索后,只报告最有利比较的问题。反复成对检验会引入自己的选择偏差。保留搜索记录,并使用适合所声明结论集合的多重检验方法。[多重检验和假发现率指南](/zh-CN/learn/multiple-testing-false-discovery-rate-finance-explained)说明了广泛搜索后沿用普通阈值为何会误导。DM 是评估工具,不是数据窥探修正。

报告足够细节以便复现比较

清晰的报告应说明目标和单位、信息截点、预测起点、期限、重新估计安排以及共同评估样本。报告损失函数和 $d_t$ 的符号定义、每个模型的平均损失及其平均差、事先选择的单侧或双侧假设,并列出方差估计量、核函数、带宽、检验统计量、参考分布、p 值,以及适用时的置信区间或不确定性估计。

还应披露模型是否嵌套、缺失结果和极端值如何处理、检查了多少备选规格,以及评估期间是否影响了模型选择。展示差异大小,不要只说是否越过阈值。$d_t$ 的时间序列或累计损失差图能揭示总体均值掩盖的状态变化,但图示不能取代考虑依赖关系的推断。

在量化交易中,还应说明如何把预测转成行动:信号阈值、仓位大小、再平衡时间、风险控制、执行价格和成本假设。DM 只比较输入的预测损失序列;它无法验证数据管线、使不同评估样本变得可比、证明因果关系,或保证历史排名持续。应将其作为透明模型评估的一部分,并结合遵循时间顺序的预测设计和明确的决策层面评估。

常见问题

Q1Diebold–Mariano 检验会比较模型系数吗?

不会。它比较两种预测流程针对配对结果产生的预测误差期望损失。系数检验回答的是关于模型参数的另一个问题。

Q2可以将该检验用于多期预测吗?

可以,但目标窗口重叠会让连续的损失差产生序列依赖。应采用匹配预测期限和模型设计的方差估计,并在适用时进行有限样本修正,同时记录选择。

Q3显著结果是否意味着更好的预测可以赚钱?

不意味着。它支持在当前评估设计下所选预测损失存在差异。盈利能力还取决于如何将预测转换为仓位、承担的风险,以及实际执行与交易成本。

资料来源与延伸阅读

报告问题

我们会准备一封包含本文链接的邮件。发送后,Mark 才会收到你的反馈

快速检查

读完指南后,用 3 道题检查一下

问题 1 / 3

问题 01

基本 Diebold–Mariano 比较的原假设是什么?

选择答案即可查看解释

期权术语表