风险与策略 · 高级 · 阅读约需 8 分钟

滚动前推验证:让未来数据远离训练

设计按时间推进的研究流程,评估完整决策程序,而非精心修饰的历史规则。

滚动前推验证:让未来数据远离训练 — 原创教学插画。不提供实时价格或业绩承诺。
原创教学插画。不提供实时价格或业绩承诺。

检验流程,而不是最终公式

滚动前推研究会反复利用某个历史日期当时可获得的信息拟合模型,冻结由此产生的决策,并在之后的区间评估。然后向前推进。这模拟了一个必须在不知道未来的情况下运作的研究流程。它不会使策略自动盈利,也不会消除所有偏差。

写明每个步骤允许改变什么。信号参数、资产选择、波动率估计与成本假设都是程序的一部分。若研究者看到测试期结果后手动调整这些内容,程序就已改变,该时期不再是干净的评估。可复现的日程,比由自主修改拼接出的图表更有信息价值。

有意识地选择滚动或扩展历史窗口

扩展窗口随时间推进保留全部较早观察值。它可以稳定估计,但也可能保留过时市场环境的数据。滚动窗口使用固定长度的近期数据,便于适应变化,却增加抽样噪声。两种方法都不是普遍更优;相关权衡取决于预期哪种经济关系会持续。

在比较结果前,应基于可辩护的理由选择窗口长度。尝试数十种长度后挑选最优,只是把优化移到了更高一层。记录每个测试区间中的观测数、不同市场阶段和实际交易数。历时很长但独立决策很少的样本,提供的证据可能少于时间跨度给人的印象。

数据泄漏隐藏于数据准备过程

按时间顺序划分是必要但不充分的。使用全样本均值标准化特征,会让未来观测影响过去输入。选择存续证券、使用修订后的宏观数据,或在文件公开前就将其纳入,都会产生其他形式的事后偏差。应在训练数据上拟合变换,并尽可能保留当时可获得的信息状态。

标签同样重要。如果某训练样本预测未来五天的收益,其结果可能与测试期的开始重叠。应移除或隔离标签窗口跨越边界的观察值。软件可以在训练与测试索引之间插入间隔,但选择有意义的间隔,需要理解具体数据集中的标签期限、发布延迟与依赖关系。

区分特征对应的日期,与预测目标真正可知的日期。周一形成的信号可以只使用周一已知输入,但其未来五天收益在周二还没有发生完。周二重新训练时,不能把这条完整未来收益标签当成已知数据。纳入训练的规则必须检查整个标签区间和可获得时间,而不只是数据行的起始时间早于截止日。

在训练中调参,保留未触碰的评估集

参数选择只能使用训练区间内的信息,必要时可采用内部按时间顺序进行的验证程序。外层测试区间随后评估选定的流程。这种嵌套将选择模型与衡量选择效果区分开来。它也会提高计算成本,但总比获得一个便宜却受到污染的结果更好。

按真实时间顺序汇总连续测试收益,包括没有持仓的时期。一致应用费用和执行假设。不要在未检查经济含义时,直接平均看起来漂亮的各折测试比率,否则短暂平静区间可能获得与漫长动荡区间相同的表面权重。在合并结果旁展示各区间的离散程度。

不理想的结果也是可用证据

如果滚动前推表现扣除成本后恶化、依赖单一区间,或因小幅时间调整而剧变,应调查而非粉饰。区分数据或实现缺陷与策略本身缺乏支持。修复真实错误可以成为重新运行的理由,但之前已接触结果这一事实必须保留在研究历史中。

如果值得进一步评估,最后应冻结规则说明,并进行一个真正全新的模拟观察期。预先定义收集哪些数据,以及什么会使假设失效。目的不是不断优化直到出现漂亮曲线,而是确定有纪律、可实施的流程能否经受失败机会的检验。

让持仓与资金连续跨越验证边界

重拟合模型不等于自动平仓。假设一月至三月的测试结束时,仍有一项按原规则应在四月退出的仓位,应预先决定:继续执行原退出规则、改用有记录的新规则,还是支付相应成本将其关闭。若每个测试折都无记录地重置为现金,可能抹去亏损、凭空恢复资金,或避开困难的过渡。研究设计既要规定新预测,也要规定旧持仓如何处理。

资本同样必须连续传递。一个测试区间赚 10%,下一个亏 10%,财富乘数为 1.10 × 0.90 = 0.99,即净亏 1%。把两段收益率平均为零,不能重现账户。应保留按真实时间顺序排列、使用一致资金与仓位口径的收益序列,再计算汇总指标。若测试折在日历上重叠,不要把同一天账户收益计两次,应说明由哪个模型决策,或并行模型怎样分配资本。

每个训练截止点内都应重新完成必要的选择,包括特征筛选、标准化、缺失值填补及候选算法比较。即使最终估计器正确重训,用全样本拟合一次的转换仍会泄漏未来信息。TimeSeriesSplit 可以提供时间顺序切分及可选的索引间隔,却不知道金融标签何时成熟、公告何时修订,也不知道未平仓头寸该如何跨过边界;这些仍由研究设计负责。

逐折保留台账:训练终点、可用观测、选定参数、首个可成交时间、初始持仓、成本和最终持仓,并说明每次跳过观测或订单的原因。这样才能区分经济机制减弱、样本变化与程序边界错误。修复真实缺陷后,应一致重跑整个流程,同时保留旧结果及修复记录,不能把已见过结果的修正版说成完全未受观察的实验。

快速测验

这个概念掌握了吗?

哪一种操作泄露了未来信息?

延伸阅读 · 一手资料

scikit-learn · TimeSeriesSplit 文档 ↗
一般教育内容,并非交易建议。示例简化了真实市场。使用任何产品前,请核实具体合约、成本与规则。
下一课:投资组合风险:权重掩盖了什么 →