palette = ({
naipca_iab: "#18557f", complete: "#18557f",
qz_ipca: "#8a6a1a",
ipca: "#6f9cc0", rp_pca: "#7a7a7a", ff5: "#b3b3b3",
naipca_beta_only: "#8a8378", beta_only: "#8a8378",
band: "rgba(0,0,0,0.06)", muted: "rgba(0,0,0,0.6)", rule: "rgba(0,0,0,0.1)"
})
LANG = (document.documentElement.lang || "en").startsWith("zh") ? "zh" : "en"
STR = ({ en: { view: "View", cost: "Cost (bp per traded dollar)", universe: "Universe", sample: "Sample (months)", log: "Log scale", models: "Models", statistic: "Statistic", theme: "Theme", sort: "Sort by", method: "Method", scenario: "Scenario", block: "Block (months)", metric: "Metric", intervals: "Intervals", cost_bp: "One-way cost (bp)", failed: "Interactive data failed to load. The static figure is shown instead." },
zh: { view: "视图", cost: "成本(每交易一美元,基点)", universe: "股票池", sample: "样本(月)", log: "对数坐标", models: "模型", statistic: "统计量", theme: "主题", sort: "排序", method: "方法", scenario: "情景", block: "块长(月)", metric: "指标", intervals: "区间", cost_bp: "单边成本(基点)", failed: "交互数据加载失败,改为显示静态图。" } })
t = (k) => STR[LANG][k] ?? STR.en[k] ?? k
fmt2 = (x) => (x == null || Number.isNaN(x)) ? "n/a" : x.toFixed(2)
fmt1 = (x) => (x == null || Number.isNaN(x)) ? "n/a" : x.toFixed(1)
fmtBp = (x) => (x == null || Number.isNaN(x)) ? "> 500" : `${Math.round(x)} bp`
parseMonth = (s) => new Date(`${s}-01T00:00:00Z`)
// Sharpe, annualised, sample std (ddof = 1): matches the release convention
sharpe = (r) => {
const n = r.length, m = r.reduce((a, b) => a + b, 0) / n
const v = r.reduce((a, b) => a + (b - m) ** 2, 0) / (n - 1)
const vol = Math.sqrt(v) * Math.sqrt(12)
return vol > 1e-12 ? (m * 12) / vol : NaN
}
netSeries = (r, to, bp) => r.map((x, i) => x - to[i] * bp / 1e4)
wealthPath = (r) => { let w = 1; return r.map((x) => (w *= 1 + x)) }
nberMarks = (nber) => Plot.rectX(nber, { x1: (d) => parseMonth(d.start), x2: (d) => parseMonth(d.end), fill: palette.band })宏观预测评估与状态诊断
研究工具 · 宏观预测评估
在可比样本窗口中评估预测模型,并解释误差从何而来。
在相同的预测起点上,一个模型的误差是否真的小于基准模型?差距是否大于偶然波动?
这套可复用的评估流程让所有模型使用相同的预测起点、目标变量和预测期,在匹配的窗口上比较误差、检验各模型与基准的预测精度是否相同,并按信号状态拆分误差,从而显示结论在多大程度上取决于评估窗口和输出版本。在新的预测变量或模型进入资产配置或风险判断所依据的预测之前,可先用它检验。
输入 逐起点的预测记录(预测起点、预测期、模型、实际值、预测值),所有模型共用同一目标变量,并事先固定基准模型。已在合成数据和英国的两次运行结果上测试;读取新记录文件的加载器属于计划中的扩展。
分析 各模型在相同起点上的误差、累计损失差(差距何时形成),以及用于检验预测精度是否相同的 Diebold–Mariano 检验,并在不同窗口和版本之间对照。
输出 注明预测个数与日期的误差表、附带数字的图表、每个模型相对基准的检验结果,以及同一比较在三个输出版本下的结果。
历史示例与局限
- 存档
- 英国服务业通胀,这套流程的一个应用(存档研究示例,2026 年 2 月研究快照):模型 M0–M6(M6 仅见于最新版本)与设定固定的基准模型 M2 对比,预测期为 3 个月和 6 个月。
- 数据
- ONS 月度数据截至 2025 年 12 月(2026 年 2 月 18 日发布,2 月 22 日和 24 日下载),只有最新数据版次(vintage);评估在构建网站时由存档记录计算。
- 样本
- 共同窗口含 66 至 117 个预测起点,多步预测误差彼此重叠(存在序列相关);信号只出现过一段(2013 年 9 月至 2018 年 2 月)。
- 版本
- 结果随输出版本和窗口而变:M4 相对 M2 的比较在不同版本之间正负号相反;在主检验下,本页没有任何差异在 5% 水平上显著。
- 时点
- 扩展窗口的伪样本外设计,但既不是基于实时数据版次的检验,也不是严格意义上的伪样本外检验:平滑持续性状态、全样本 z 分数,以及存档版本训练中最后 h − 1 个实际结果,在预测起点时都还不可得;数据为最新版次。
- 多重检验
- 80 个 p 值未作多重检验调整,仅凭偶然就可能有几个低于 0.05;凭一个窗口或一个版本得出的模型排序在这里并不稳健。
- 性质
- 本页评估的是过去的预测;它不是预测,也不是可供日常使用的预测服务,其中任何结果都不能说明某个模型在一般意义上预测得更准。完整证据与局限
能回答什么问题
研究员或投资组合经理可以用这套流程向任何预测比较提出以下问题:
- 新预测变量是在同一批起点上降低了误差,还是只是换了一段样本?
- 考虑到多步预测彼此重叠之后,差异是否仍大于抽样误差?
- 换一个样本起点、输出版本或训练规则,结论还成立吗?
- 损失是逐步累积的,还是集中在某一段时期?
- 哪些输入在预测起点时其实还不知道?
输入
| 输入 | 英国示例 | 用于新问题时的要求 |
|---|---|---|
| 目标变量与预测期 | 服务业 CPI 同比(ONS 序列 D7NN)在 3 个月和 6 个月内的变化,单位为百分点 | 所有模型使用同一定义 |
| 预测起点 | 预测起点月份 t(视 t 月数据为已知;实际上 t 月 CPI 在 t + 1 月公布,劳动力市场数据更晚)。M1–M4 与 M6:最新版本从 2006 年起,研究摘要版本从 2010 年起;M0 从 2001 年或 2005 年起;M5 从 2016 年或 2020 年起;直到最后一个已有实际结果的月份(3 个月为 2025 年 9 月,6 个月为 2025 年 6 月) | 同一次比较中所有模型使用相同起点 |
| 预测变量 | 服务业通胀、私营部门常规工资增速、劳动力市场松紧度(slack)指数,以及持续性的三种表示方式 | 每个数值都要注明首次可得的时间 |
| 模型预测 | 逐起点记录:起点、预测期、模型、实际结果、预测值 | 每个模型、起点和预测期各一条记录 |
| 基准 | M2,设定固定的菲利普斯式模型(每个起点重新估计系数) | 在比较之前确定 |
| 数据版次 | 下载时 ONS 的最新数据版次(2026 年 2 月);没有历史版次 | 尽可能为每个数值记录数据版次或发布日期 |
分析步骤
- 读入读取每个存档版本的逐起点预测记录和持续性序列。已实现并测试。
- 校验检查每个模型的预测是否齐全、同一起点上各模型的实际结果是否一致、误差是否等于实际减预测、月份是否连续。已实现并测试(单元测试用人为构造的错误记录逐一检验各项校验)。
- 设置用下方控件选择输出版本、预测期、模型和比较窗口。已实现(控件在预先计算的结果之间切换;每种组合都已在 JSON 中检验)。
- 计算RMSE、MAE、方向命中率和 n;相对 M2 的 RMSE;损失差(loss differential)及其累计值;Diebold–Mariano 检验,采用原始检验的等权长期方差和 Harvey–Leybourne–Newbold 修正,并以 Newey–West(Bartlett)方差作敏感性对照。已实现并测试(用合成算例和一个固定参照值做单元测试;与存档的模型比较汇总表差异在 10⁻⁹ 以内)。
- 比较自身窗口与共同窗口对照,三个输出版本并列,并按信号状态拆分误差。已实现并测试。
- 解读与导出附数值表的图表、默认视图的静态表,以及全部计算结果的 JSON 文件。已实现并测试。
交互演示
控件切换的是构建网站时由存档记录算出的不同结果:每种组合都是一次独立计算,而不是换个标签。默认视图为最新存档版本、3 个月、M4 对 M2、共同窗口。第三个输出版本对最新版本重新估计,训练样本只保留起点前已观测到的实际结果;这一版本只去掉了重叠的训练目标,平滑状态、全样本 z 分数和最新版次数据仍带有前视偏差(look-ahead bias)。
第一步:衡量持续性
图 1:英国服务业通胀的持续性有多强?两种估计回答的是不同的问题;下方为服务业与商品 CPI。
读图说明。持续性指 3 个月年化服务业通胀的自回归系数。滚动估计(虚线)在每个日期只用此前 120 个月的数据,因此不使用之后月份的数据(发布滞后与最新数据版次除外)。状态空间平滑估计(实线及其 68% 区间)使用全样本,包括之后的月份:它是事后描述,并非预测起点时已知的信息。灰色区间表示平滑估计连续三个月低于阈值的月份(持久低持续性信号);这样的时段只有一段,即 2013 年 9 月至 2018 年 2 月。估计值来自最新存档版本(样本始于 2001 年);控件不改变本图。资料来源:ONS MM23 2026 年 2 月 18 日发布(开放政府许可),序列 D7NN 与 D7NM;持续性估计来自作者的存档研究示例输出(2026 年 2 月 24 日)。
第二步:设计公平的比较
- 起点 所有模型使用同一个预测起点 t
- 目标 每个模型预测 y(t, h):t + h 时与 t 时服务业通胀之差
- 误差 实际结果公布后,用实际减预测
- 计分 在所有模型共有的起点上计算 RMSE 与损失差
每个模型在每个起点都用扩展窗口的最小二乘重新估计(至少 60 个月),每个预测期单独回归(直接多步预测)。持续性模型需要更长的历史:在最新版本中,M5 的滚动估计从 2010 年 12 月才开始(研究摘要版本中更晚),所以 M5 的起点最少。各模型若按自身窗口计分,比较的其实是不同时期;共同窗口消除了这一差别,但窗口长度由覆盖最短的模型决定。
图 2:每个模型覆盖哪些预测起点?所选版本和预测期下,各模型自身窗口(条形)与共同窗口(阴影)。
读图说明。每根条形从模型第一个到最后一个已有实际结果的预测起点;n 为起点个数。高亮条形是上方所选模型,深灰色为基准 M2。选择“共同窗口”时,使用阴影所示的区间。资料来源:构建网站时由作者存档研究示例的逐起点记录计算(2026 年 2 月研究快照)。
第三步:查看误差
表 1:各模型的预测误差。所选版本、预测期和窗口下的 RMSE、MAE、方向命中率和 n。
读图说明。误差以同比通胀率的百分点计。相对 M2 的 RMSE = 100 ×(模型 RMSE ÷ M2 RMSE − 1):负值表示误差小于 M2,正值表示更大。方向命中率是预测变化与实际变化符号相同的起点所占比例(不变模型 M0 预测为零,命中率天然很低)。按自身窗口比较时,主比值使用各模型与 M2 共有的起点;存档表一栏以 M2 在其全部起点上的 RMSE 为分母,混合了不同时期(M5 的比值符号甚至因此相反)。资料来源:构建网站时由作者的存档研究示例输出计算;与存档的模型比较汇总表差异在 10⁻⁹ 以内。
第四步:检验稳健性
图 3:差异是否大于抽样误差?又是何时累积起来的?损失差的累计值、Diebold–Mariano 检验,以及同一比较在不同版本和窗口下的结果。
读图说明。每个起点的损失差为 d =(模型误差)² −(M2 误差)²。曲线是它的累计值:模型误差大于 M2 时曲线上升。由于 h 个月的预测彼此重叠(误差在 h − 1 阶以内存在序列相关),Diebold–Mariano 统计量用 d 的均值除以滞后 h − 1 期的长期标准误;与原始检验一样,前 h − 1 阶自协方差取相等权重(矩形核)。Harvey–Leybourne–Newbold 修正针对小样本作调整,p 值为 t 分布的双侧值。p 值取决于方差估计方法:若改用同时列出的 Newey–West(Bartlett)权重,本页最小的 p 值(M6,6 个月,已观测结果版本,共同窗口)从 0.07 降到 0.02。对嵌套的模型对(M0 与 M1 嵌套于 M2,M2 嵌套于 M6),在递归估计下 DM 统计量的极限分布并非标准分布,t 参照分布并不适用,更合适的是 Clark–West 调整,因此这些 p 值仅供参考。在两者总体预测精度相同的原假设下,嵌套模型对中较大的模型需多估计若干系数,在有限样本中误差预期会略大。未能拒绝“预测精度相同”并不等于两个模型同样准确:受样本量所限且误差彼此重叠,检验的功效很低。信号状态拆分使用进入 M4 的上月信号;该信号由平滑估计得出,属于事后分类,在预测起点并不知道;而且信号只出现过一段,所以这一拆分近似于按时期拆分。资料来源:构建网站时由作者的存档研究示例输出计算(2026 年 2 月研究快照)。
这说明什么。 结论取决于版本和评估窗口。在共同窗口上,研究摘要版本(样本始于 2005 年,起点始于 2020 年 1 月)中 M4 的 RMSE 比 M2 低 0.68%(3 个月)和 3.09%(6 个月),最新版本(样本始于 2001 年,起点始于 2016 年 1 月)中则高 2.99% 和 3.40%。这一差别很大程度上来自评估窗口:按研究摘要版本的窗口(2020 年 1 月起)计分,最新版本在 3 个月为 +0.51%,在 6 个月为 −4.04%。其余的变化(样本起点由 2005 年改为 2001 年、新增工资和职位空缺输入)在存档中无法区分。只用已观测结果训练的重新估计与最新版本方向相同(+2.82% 和 +1.64%,最新版本为 +2.99% 和 +3.40%;其共同窗口晚 h − 1 个月开始,即 2016 年 3 月和 6 月);它并没有消除“局限”中列出的其他前视偏差来源。在最新版本中,累计损失差自 2018 年(唯一一段信号于 2018 年 2 月结束之后)至 2020 年逐步上升,2021–2022 年部分回落;差距来自少数几年,而不是持续稳定的规律。主检验(等权长期方差加 HLN 修正)的 p 值没有一个低于 0.05。最小的是 0.07,对应 M6:在已观测结果版本中,M6 在 6 个月的误差比 M2 大(+6.81%);改用 Bartlett 方差时为 0.02,而在 80 次未作多重检验调整的检验中,出现一个这样的结果并不意外。在这里,凭一个窗口或一个版本得出的模型排序并不稳健。
输出
不运行 JavaScript 时,默认视图以静态表给出,同样在构建网站时由同一份数据生成:
静态表(无需 JavaScript):默认视图。最新存档版本(2026 年 2 月 24 日运行;样本始于 2001 年);预测期 3 个月;共同窗口(2016-01 至 2025-09 的预测起点,n = 117)。相对 RMSE 为 100 ×(模型 RMSE ÷ M2 RMSE − 1),负值表示误差小于 M2。DM 检验为 HLN 修正后的统计量及双侧 p 值(长期方差对前 h − 1 阶自协方差取相等权重);M0、M1、M6 与 M2 为嵌套关系,其 p 值仅供参考。
| 模型 | 相对 M2 的 RMSE | n | RMSE | MAE | 方向命中率 | DM(HLN) | p 值 |
|---|---|---|---|---|---|---|---|
| M0 不变预测 | +6.95% | 117 | 0.535 | 0.396 | 0.13 | 1.25 | 0.21 |
| M1 AR(1) | +8.93% | 117 | 0.544 | 0.396 | 0.51 | 1.53 | 0.13 |
| M2 基准 | — | 117 | 0.500 | 0.370 | 0.56 | — | — |
| M3 松紧度 → 平滑持续性 | +2.78% | 117 | 0.514 | 0.372 | 0.62 | 0.62 | 0.53 |
| M4 松紧度 → 持久信号 | +2.99% | 117 | 0.515 | 0.397 | 0.62 | 0.70 | 0.48 |
| M5 松紧度 → 滚动持续性 | −4.05% | 117 | 0.480 | 0.347 | 0.62 | −0.67 | 0.50 |
| M6 M4v2 | +2.82% | 117 | 0.514 | 0.395 | 0.59 | 1.28 | 0.20 |
版本敏感性:M4 相对 M2 的 RMSE(%),按版本、预测期和比较窗口列出;括号内为配对起点数 n 与 DM 检验 p 值。自身窗口一栏:RMSE 比值、n 与 p 值均取 M4 与 M2 的重叠起点。最后一行把最新版本自己的存档预测放到研究摘要版本的共同窗口上计分,用来分离评估窗口的影响。
| 版本 | 3 个月,自身窗口 | 3 个月,共同窗口 | 6 个月,自身窗口 | 6 个月,共同窗口 |
|---|---|---|---|---|
| 最新版本,2026 年 2 月 24 日(样本始于 2001 年) | −1.86% (232; p = 0.55) |
+2.99% (117; p = 0.48) |
−2.01% (229; p = 0.75) |
+3.40% (114; p = 0.71) |
| 研究摘要版本,2026 年 2 月 23 日(样本始于 2005 年) | −3.15% (184; p = 0.36) |
−0.68% (69; p = 0.86) |
−2.64% (181; p = 0.69) |
−3.09% (66; p = 0.70) |
| 最新输入、仅用起点前已观测结果训练 | −2.67% (230; p = 0.45) |
+2.82% (115; p = 0.56) |
−4.91% (224; p = 0.51) |
+1.64% (109; p = 0.89) |
| 最新版本,按研究摘要版本的共同窗口计分(2020-01 起) | — | +0.51% (69; p = 0.91) |
— | −4.04% (66; p = 0.61) |
- 定义。 目标变量 y(t, h) = t + h 时与 t 时服务业 CPI 同比之差(百分点)。RMSE 和 MAE 以百分点计。相对 RMSE = 100 ×(模型 ÷ M2 − 1)。DM 检验:d =(模型误差)² −(M2 误差)²;长期方差对滞后 h − 1 以内的自协方差取相等权重(若该估计不为正则改用 Bartlett 权重;另列 Bartlett 方差下的 p 值);HLN 修正;自由度为 n − 1 的 t 分布;双侧。
- 数据日期。 ONS 数据截至 2025 年 12 月(图 1 中的 CPI 截至 2026 年 1 月);MM23 于 2026 年 2 月 18 日发布;2026 年 2 月 22 日和 24 日下载。两个输出版本分别于 2026 年 2 月 23 日和 24 日运行。这些日期属于存档研究,与本页的构建日期无关。
- 机器可读输出。 forecast_eval.json:本页所有数字,并附存档源文件的 SHA-256 哈希值、一致性检验结果和代码版本。
使用与迁移
更换变量、预测变量、模型或国家,需要匹配且有合法使用许可的数据,在每个起点重新估计,并在匹配的窗口上重新做伪样本外评估。存档的这次研究不是持续更新的通胀预测,也没有接入实时数据源。
第五步:用于其他变量、预测变量或国家
评估函数(误差、相对 RMSE、Diebold–Mariano 检验、累计损失)读入一张逐起点记录表(起点、预测期、模型、实际结果、预测值),已用合成数据和英国的两次运行做过测试;读入新记录文件的加载器属于计划中的扩展。要为新问题生成这些记录,需要做本页没有做的上游工作:
- 定义目标变量及其时间。 选定序列和预测期,记录每个数值的发布日期;有历史数据版次时使用历史版次。
- 构建预测起点时已可得的预测变量。 按发布滞后对每个预测变量作滞后处理,使用滤波或滚动估计,而不是平滑估计。
- 在每个起点重新估计每个模型,只用该起点已观察到的实际结果训练,并写出逐起点记录。
- 在相同起点上评估,使用同一基准、预测期和目标变量,再做上文的版本和窗口核对。
已测试的部分:评估计算(单元测试,与存档表格一致)、输入校验(用人为构造的错误记录)以及扩展窗口预测函数,后者重现英国最新版本存储的预测,误差在 10⁻¹⁰ 以内。未测试的部分:数据下载、状态空间估计,以及任何其他变量、预测变量或国家(计划中的扩展)。英国的结果不能当作新输入的结果;新的预测变量需要自己的数据时点核查、重新估计和匹配的伪样本外窗口。
历史示例、证据与局限
英国服务业通胀,存档研究示例(2026 年 2 月)。 一项简短研究:英国服务业通胀持续性的变化是否有助于预测通胀。写于 2026 年 2 月,是一份研究快照。
| 模型 | 预测变量(除注明外均为起点当月数值) |
|---|---|
| M0 不变预测 | 预测变化设为零 |
| M1 AR(1) 式模型 | 服务业通胀 |
| M2 设定固定的菲利普斯式基准 | 服务业通胀、工资增速、劳动力市场松紧度 |
| M3 以平滑持续性替代松紧度 | 服务业通胀、工资增速、平滑持续性(上月) |
| M4 以持久信号替代松紧度 | 服务业通胀、工资增速、由平滑估计得到的持久低持续性信号(上月) |
| M5 以滚动持续性替代松紧度 | 服务业通胀、工资增速、滚动 120 个月持续性(上月) |
| M6 信号分段菲利普斯(M4v2;仅最新版本) | M2 的预测变量、信号(上月),以及信号与通胀、工资增速的乘积 |
M3–M5 去掉了松紧度指数,因此它们与 M2 的比较是用一个预测变量替换另一个;只有 M6 是在 M2 的预测变量之上加入信号。
- 资料来源。 英国国家统计局(ONS):消费者价格通胀(MM23;服务业 D7NN,商品 D7NM)、劳动力市场统计、平均周薪(私营部门常规工资)、职位空缺;开放政府许可第 3.0 版。英格兰银行:名义国债收益率曲线,仅用于原研究的利率交叉检验,不进入本页评估的预测。
- 输出版本。 2026 年 2 月 23 日的运行(样本始于 2005 年,模型 M0–M5)是作者 2026 年 2 月研究摘要所用的版本。1 2026 年 2 月 24 日的运行(样本始于 2001 年,模型 M0–M6)是最新版本。两者的共同窗口不同(分别始于 2020 年 1 月和 2016 年 1 月),因为在较短的样本中 M5 开始得更晚。把最新版本放到较早版本的窗口上计分,可以分离这一部分:按研究摘要版本的窗口,最新版本中 M4 相对 M2 为 +0.51%(3 个月,n = 69,p = 0.91)和 −4.04%(6 个月,n = 66,p = 0.61)。后一次运行还改变了样本起点,并在输入中加入了工资和职位空缺文件;存档无法区分这两项改动。第三个版本在本页计算,并非存档结果:使用最新版本的输入,训练样本只保留起点时已观察到的实际结果。
- 重现范围。 评估计算:由两个版本的逐起点记录重新计算并测试(已实现并测试)。最新版本的预测:由其存档的处理后输入重新估计,与存储的预测一致到 10⁻¹⁰。数据下载、状态空间平滑和滚动回归没有重跑(存档研究示例)。研究摘要版本的处理后输入已被后一次运行覆盖,因此只能按存档结果评估其预测,也无法按信号状态拆分。一致性检验结果和存档源文件的 SHA-256 哈希值记录在 forecast_eval.json 的 meta 部分。
- 局限。 设计上属于伪样本外检验(每个起点递归重估,起点之后才计分),但并不严格:严格的检验只使用起点时已可得的数据,而这些预测还用到了之后的信息(第 1 至 4 项;其中只有第 3 项使用最新数据版次属于伪样本外检验的常规简化)。(1) M3、M4 和 M6 使用平滑持续性估计,它用到了之后的数据;滞后一个月并不能使它在起点时可得。信号阈值也由 2001–2019 年平滑估计的分布确定,因此对更早的起点同样用到了之后的信息。M5 的滚动估计是唯一只用过去数据的持续性指标。(2) 存档的训练规则包含最后 h − 1 个实际结果,而它们在起点之后才观察到;已观测结果版本只去掉了这些观测,平滑状态、全样本 z 分数和最新版次数据仍带有前视偏差。(3) 数值按所属月份而非发布日期记录,且取自最新数据版次:某月的 CPI 在次月公布,劳动力市场数据更晚并会修订。(4) 松紧度指数由全样本计算的 z 分数合成。(5) 共同窗口较短(66 至 117 个起点),误差彼此重叠,也没有针对多个模型、预测期和版本的多重检验作调整:控件共可显示 80 个 p 值,在 5% 水平上,仅凭偶然也会有几个低于 0.05。(6) 信号只出现过一段。(7) M0、M1 嵌套于 M2,M2 嵌套于 M6,因此 M0、M1、M6 相对 M2 的 DM 检验 p 值仅供参考。
脚注
关于研究摘要数字的说明(注明日期)。 作者 2026 年 2 月的研究摘要称,在共同窗口上,M4 的 RMSE 比 M2 低 0.68%(3 个月)和 3.09%(6 个月)。本页由 2026 年 2 月 23 日运行的逐起点记录重现了这两个数字(分别为 69 和 66 个起点,始于 2020 年 1 月)。经 HLN 修正的 Diebold–Mariano 检验给出 p = 0.86 和 0.70:两项差异都不具有统计显著性。在最新版本(2026 年 2 月 24 日)中,同一比较的 RMSE 比 M2 高 2.99% 和 3.40%(p = 0.48 和 0.71)。↩︎