数学、统计与计算方法 / QT21

时间序列验证与信息泄漏

按一个预测原点重建训练、预处理与标签成熟,解释未来缩放不必改善成绩。

Agent Markdown ↓
本领域路线 · 7 / 9 重建滚动原点,区分合法更新、未来尺度和修订信息。

预测方法不是一个脱离时间的公式。它先接收记录,再拟合预处理和模型,最后等预测目标成熟,才能计算误差。本篇沿一段真实历史重放,把这些时点放回计算中。读完后,你应能为一个预测原点列出完整信息账本,指出违规发生在哪一步,而不只是看到好成绩便怀疑“有未来函数”。

1. 在 2009 年末,我们到底算了什么?

仍使用 202607 CRSP 数据库 vintage 下由当前 CIZ 生产链重建的 BusEq 月收益快照:1990-01—2025-12,共 432 月,无目标窗口缺失,百分数除以 100 后运算。它是历史计算材料,不是逐月当时可见的资料集合。先约定教学时钟:月份结束后可知该月收益,并预测下一月。来源真实发布时间和系统接收延迟没有在这份行业组合文件中重建。1

以预测 2010-01 为例,训练目标为 1991-01 至 2009-12 的 228 行。1990 年只供最大 12 期滞后预热;各模型不能各自多取一批较早目标行,随后再比较不同样本的误差。

环节本原点允许使用的对象
决策原点2009-12 月末后的教学信息截面
拟合目标 \(y_s\)1991-01—2009-12 已成熟收益
拟合特征 \(x_s\)每个目标月之前的 \(p\) 个滞后;所有训练特征中最晚的收益月是 2009-11
标准化参数仅由这些训练特征行求出的列均值与列标准差
新预测输入 \(x_t\)从 2009-12 起向前取 \(p\) 个滞后;这行不参与本次 scaler 拟合
当前输出对 2010-01 的预测
何时评价2010-01 目标成熟后,才用真实 \(r_t\) 计算误差

注意两个容易混在一起的范围:训练标签可以到 2009-12,而训练滞后特征最晚到 2009-11;2009-12 收益作为本次新输入出现。标准差必须说明“在哪些行上估计”,不能只写含糊的“用了截至今天的数据”。2

2. 把一次预测写成可重复的过程

给定候选 \((p,\lambda)\),在每个目标月 \(t\) 之前依次做:

train = 已成熟的共同目标行 1991-01,...,t-1
X_train[s] = (r[s-1],...,r[s-p]); y_train[s] = r[s]
从 X_train 拟合 mean、sd,不从完整文件拟合
Z_train = (X_train-mean)/sd
拟合不惩罚截距的 RSS/n + lambda*||beta||²
对 x_new=(r[t-1],...,r[t-p]) 使用相同 mean、sd
输出并保留 prediction[t];目标成熟后才添加 error[t]

这是扩展窗口:起点固定,终点随原点推进。滚动窗口则只保留固定长度的最近历史;二者估计目标与适应变化的方式不同,不是“移动原点”就自动意味着训练长度固定。FPP3 的 rolling forecasting origin 指评价原点向前滚动,其示例训练集可以扩展。3

本实验用 2010—2019 的 120 个原点比较 12 个回归候选与两条基线。选择完成后,进入 2020—2025 的 72 月历史评价:\(p,\lambda\) 或基线身份已冻结,但模型系数仍按照原定扩展规则逐月重估。冻结超参数不等于冻结所有系数,也不等于禁止合法的新标签进入训练。2

例如下一原点预测 2010-02 时,2010-01 收益已按教学时钟成熟,训练行增至 229。这时使用它是正常更新;把它提前用于 2010-01 的预测则是信息越界。残差来自参与拟合的数据,预测误差来自该原点尚未参与拟合的目标,两者不能混报。4

3. 一个真实对照:越界不一定让分数更好

我们故意构造一个错误版本:每个原点都用完整样本的滞后特征列拟合标准化参数。该池含目标月份 1991-01—2025-12 的特征行,最晚原始特征收益到 2025-11。对 2009 年末的原点而言,它显然包含未来信息。拟合标签仍只取过去,以便隔离“标准化范围”这一项变化。

\(p=12\),2010—2019 验证合法训练窗标准化 RMSE越界全样本标准化 RMSE最大单月预测差
OLS,\(\lambda=0\)5.135414965.13541496约 \(7.3\times10^{-15}\)
Ridge,\(\lambda=0.1\)5.120765735.122835530.03948464

表内三列误差单位均为百分点/月。OLS 的差异只有浮点量级;ridge 的越界版本反而稍差。我们不改参数来制造“泄漏让曲线更漂亮”的效果,因为要检验的是信息使用,而不是预先安排一个方向的答案。2

为什么 OLS 会不变?设原输入 \(x=m+Dz\),\(D\) 为对角非奇异尺度矩阵。仿射预测函数可写成

\[ a+x^Tb=(a+m^Tb)+z^TDb. \]

在有截距、斜率无约束、同一转换作用于训练和新输入时,这是一一对应的重参数化。OLS 最小化相同的残差集合。本例每个训练设计都满列秩,因此唯一预测函数被对应起来,样本外预测也相同。若秩不足,只能先说训练拟合向量与解集合在映射下相同;两种坐标下软件各自挑出的最小范数系数,其样本外外推未必一样。

Ridge 则额外惩罚系数。改了 \(D\) 却仍用同一个坐标中的 \(\lambda\|\beta\|^2\),等于改变了对原预测函数的代价,所以预测可以变。预测目标与正则化 已推导这一点。这个特例也不意味着 OLS 对标签泄漏、未来特征选择或其他预处理免疫。

在实验中先选一个验证月份,读训练标签终点、特征尺度及输入,再打开故意越界的对照。请先说哪项记录不应出现,最后才看 RMSE;不能反过来以“分数没有改善”证明流程合法。

4. 日期排序之外,还要区分观察期、发布和接收

经济数据尤其能说明这个区别。美国 2020Q2 GDP 描述第二季度,但以下两个数并不是在季度末同时可得:

观察期版本BEA 发布时点实际 GDP 环比年化率
2020Q2Advance2020-07-30 08:30 EDT−32.9%
2020Q2Second2020-08-27 08:30 EDT−31.7%

这两行是原始发布记录;它们的差为 1.2 个百分点,而非观察期移动。56 若信息截止在 2020-08-03,公开发布截面只能选择初值,不能把后来次值写回这个原点。

发布时点仍不等于研究系统收到、解析、完成计算的时点。没有 received_at 日志,就保留未知;不能由“08:30 发布”推出“08:30:01 系统已能下单”。历史重放可明确假设一个延迟,再研究该假设下的结果,但这不把假设变成历史事实。

前面 BusEq 的时间切分也因此有两层评价:运算确实不让后面标签参与前面拟合,但所用文件版本不是每个历史原点的原始可得版本。准确的描述是“当前冻结快照上的按时间算法重放”。只有额外恢复来源版本和接收过程,才可进一步评价当时的可执行性。

一个有分量的研究阅读例是 Kelly、Malamud、Zhou 的脚注33:作者交代了通胀数据的月度日期约定与实际发布滞后的区别。阅读论文时应把这种约定记入方法条件,而不是看到“样本外”三个字就忽略它。7

5. 预测三个月时,标签什么时候成熟?

假设在月份 \(s\) 结束后预测接下来三个月的复合收益:

\[ Y_s=(1+r_{s+1})(1+r_{s+2})(1+r_{s+3})-1. \]

在月份 \(t\) 结束时,训练可使用这行标签的必要条件是 \(s+3\le t\),还要满足相关原始材料已接收。不能只因特征行的日期 \(s\le t\) 就把未来三个月的完整标签拿来拟合。

当前信息截面:2020-03 月末标签覆盖月份是否成熟
原点 2019-122020-01—2020-03是,在本例月末可知假设下
原点 2020-012020-02—2020-04
原点 2020-022020-03—2020-05
原点 2020-032020-04—2020-06否,这是新的预测对象

相邻原点的三个月标签会共享收益月。因此,即使每个预测都遵守信息约束,多个误差也可能相关,不能机械当作独立观测估计标准误。隔离范围应从标签成熟与评价问题推导,不是对所有时间序列统一“空三个月”。FPP3 对多步预测原点评价提供了相应结构,本篇没有为这个三个月目标运行新的 RMSE。3

6. 独立重建与解析

解释题。 在预测 2010-01 前,用全样本求标准差,随后发现 OLS 的预测完全不变。是否就证明未来标准化没有问题?

解析。 没有。计算步骤仍依赖未来信息;本例不变来自明确条件下的仿射重参数化。它只能说明这一模型恰好对这项变换不敏感。把同一流程用于 ridge、筛选变量或选择模型,结论都需要另核。应修复流程,而不是用偶然的输出不变代替信息证明。

迁移题一。 截止 2020-08-03,分析规则比较 GDP 公布值是否大于 −32。用哪一版?能否断言自己的系统 7 月 30 日 08:30:01 已得到信号?

解析。 在公开发布口径下,初值 −32.9 不满足规则;8 月 27 日才发布的 −31.7 会满足,但不能提前使用。系统是否收到及完成计算没有日志便不能判断。这项规则是教学设定,不是经检验可盈利的交易信号。

迁移题二。 2020-03 月末训练三个月目标,最新能纳入的原点是哪月?再用明确虚构的月收益 \(1\%,-2\%,3\%\) 算一次标签。

解析。 最新是 2019-12;2020-01 原点的标签还含 4 月。虚构标签为 \(1.01\times0.98\times1.03-1=0.019494\),即 1.9494%,不能简单加成 2%。这只是标签算式核对,不是新增的历史绩效结果。

最后再分开两件事:时间顺序正确,可以阻止某类未来信息进入拟合;它不能自动消除“尝试许多流程后只留下最好一个”的选择效应。下一篇保留全部尝试,研究后者。选择效应与多重检验


  1. French 30 Industry PortfoliosFIZ/CIZ 来源说明。具体样本身份和所有 432 行见随包输入及 CSV。 ↩︎

  2. 实际计算结果,forecast 的逐原点拟合与 future_scaling_controls;复算程序。原点、尺度与标签均可逐行重建。 ↩︎ ↩︎ ↩︎

  3. FPP3,§5.10 Time series cross-validation 全节。多期复合标签成熟条件由本文定义直接推出,未声称该书给出本例金融回测。 ↩︎ ↩︎

  4. FPP3,§5.8 Evaluating point forecast accuracy 全节。 ↩︎

  5. BEA,2020Q2 Advance Estimate 原发布,页首发布时间及 GDP 开篇。 ↩︎

  6. BEA,2020Q2 Second Estimate 原发布,页首、GDP 开篇和 Updates to GDP 表。 ↩︎

  7. Kelly、Malamud、Zhou,2024 发表版,§V.A,p.487 脚注33。未读取的附录稳健性不作为本篇证据。 ↩︎

动手试一试

时间序列验证与信息泄漏:交互

这篇词条与哪些内容相连

图中汇集本篇及其段落的直接关系,具体使用位置见下方列表。箭头按关系名称阅读。例如“需要先修”指向需要掌握的内容;推荐阅读顺序另见本领域路线。

逐条查看关系与依据

KEEP ASKING

把这一页,变成一堂课。

专属 Prompt 与同源材料会一并复制。Agent 先读取指定文献,再围绕本页的材料、推导和练习展开教学。

READ TOGETHER

一起读,也一起把问题说清楚。

关于整篇的想法留在这里;某个推导、算例或表格的问题,可以点小节旁的“章说”,在原处展开讨论。

使用 GitHub 账号参与

本篇讨论

搜索笔记

让 Agent 教我

这里包含专属 Prompt 及本次学习范围的正文、案例、来源和图表说明,分支内容以当前选择为准。复制后粘贴到你常用的 Agent。