前向验证是一系列带日期的实验:用当时可获得的信息拟合或指定一条规则,在下一个未见窗口上评估,然后推进边界。与只做一次最终留出不同,它会产出多次按时间顺序排列的评估。规则可以全程固定,也可以按书面计划更新;这两者回答的是不同问题,所以要说明您跑的是哪一种。

重复的按时间顺序前向验证窗口三个示例性连续评估窗口接在更早的训练窗口之后。训练集在每次测试后扩展,因此较早完成的测试只有在已声明的计划下才可能进入后续训练。这些区块展示的是方法结构,而非实测市场收益。重复同一套带日期的流程 · 展示每一个测试窗口较早的观测较晚的观测第 1 轮拟合 / 设定测试 1第 2 轮拟合 / 设定 · 仅在事先声明时才纳入测试 1测试 2第 3 轮按书面更新规则拟合 / 设定测试 3按时间顺序 → · 在结果已知前选择扩展或滚动训练窗口一系列窗口 · 不要只挑选表现最好的测试区间
三个示例性连续评估窗口接在更早的训练窗口之后。训练集在每次测试后扩展,因此较早完成的测试只有在已声明的计划下才可能进入后续训练。这些区块展示的是方法结构,而非实测市场收益。 教学说明图 · 非实时市场数据

先确定问题与窗口安排

在查看输出之前,先指定标的、数据来源、时间周期、成本、基准和评估指标。确定起始日期、拟合窗口长度、测试窗口长度以及窗口如何移动。如果策略按计划重新估计,要事先设定该计划。记录每个选择与问题的关系;窗口大小本身就是可能被过拟合的参数。

举例来说,一个实验可能用两年的历史观测来指定规则,评估接下来的一个季度,然后向前推进一个季度并重复。这些时长仅为示例。要确定每次完成的评估是否并入后续拟合可用的信息、训练窗口是扩展还是滚动,以及参数具体可以如何变化。较短的训练窗口可能遗漏有用的条件;较长的训练窗口可能把不同的条件混在一起。不存在普遍最优的安排。

保持各窗口之间的隔离

在每一步,记录哪些K线可用于设计、哪些更晚的K线保留用于评估。确保所有滚动指标有足够的更早数据完成预热,同时不让未来的测试K线影响该预热。防止未平仓交易、资金费结算或重叠标签以改变既定问题的方式跨越边界泄漏。对于持仓跨越窗口的策略,要说明这些仓位是结转、在边界处平仓,还是从某次计算中排除。

评估窗口完成后,先记录结果,再修改任何内容。如果结果促使您设定新的阈值、退出条件或窗口安排,新版本可以在更晚的区段上测试,但已经看过的评估现在已成为研究过程的一部分。不要反复把一段已被多次检视的区段称为“样本外”。

让间隔与结果的时间跨度相匹配

对于监督模型,某一行的目标可能取决于其信号之后才到达的价格。如果目标向前看两根K线,测试边界附近的最后一批训练标签可能用到测试窗口内的价格。拟合前要排除这些重叠标签;仅有一个按时间排序的时间戳列并不能防止这种泄漏。

当前 scikit-learn 1.9.1 的 TimeSeriesSplit 文档描述:默认训练集扩展,可用 max_train_size 选项限制其大小,以及训练与测试之间以样本数计的 gap。在比较等长的测试折时,它还要求样本等间隔。在其 12 个样本的示例设置中,有三个各含两个样本的测试窗口且 gap=2,第一次划分在样本 1–4 上训练,留出 5–6,测试 7–8;之后的训练折在同样的两样本间隔之前扩展。这是通用机器学习划分器关于索引的一个示例,不是加密策略的结果。间隔要根据您实际使用的目标与持有期来选择;当K线缺失或观测基于事件时,按行数计的间隔可能并不对应实际经过的时间。scikit-learn 记录了这些划分选项。

含间隔的12个样本扩展训练窗口十二个等距的虚构样本索引展示三个按时间顺序排列的折,测试集为两个样本,间隔为两个样本。训练集从四个观测扩展到六个再到八个;每个间隔将最后的训练观测与下一个测试集分开。此索引示意图不包含任何市场数据或策略结果。12个有序样本 · 扩展训练 · 两样本间隔折样本索引123训练 1–4训练 1–6训练 1–8123456789101112训练 1–4间隔测试 7–8之后训练 1–6间隔测试 9–10之后训练 1–8间隔测试 11–12仅为索引示意 · 请根据实际结果期限和时间戳选择间隔
十二个等距的虚构样本索引展示三个按时间顺序排列的折,测试集为两个样本,间隔为两个样本。训练集从四个观测扩展到六个再到八个;每个间隔将最后的训练观测与下一个测试集分开。此索引示意图不包含任何市场数据或策略结果。 教学说明图 · 非实时市场数据

gap 选项只分隔样本索引。它不决定未平仓交易如何跨越边界、不重现交易所订单、不考虑各交易场所特有的资金费机制,也不证明特征流水线没有泄漏。要在实验记录中保留目标的起止时间戳、指标预热、交易重叠以及任何边界处理方式。

报告整个序列

展示每一个评估窗口,包括表现疲弱和负面的结果,并附上其参数、交易笔数、成本、敞口和回撤。用稳定的基准比较相同期间,并保留不同市况之间的差异,而不是把它们藏在一个平均值里。如果规则在窗口之间更新,要报告事先声明的更新流程和参数路径。由检视驱动的手动修改是新版本的规则,而不是自适应算法。

更早的测试K线只有在按既定重新拟合计划可用之后,才能并入后续训练数据。在呈现单一总体结果之前,要说明相邻窗口构成一条连续的账户路径,还是每个窗口都重置资金;各窗口百分比之间的算术平均并不自动等于组合收益。记录每一次手动修改,以及每一个被检视的窗口、指标和参数集。修改后的规则需要未用于做出该修改的后续证据。

前向验证的表现仍然取决于数据质量、成交假设、成本以及研究者此前的选择。参数稳定性有参考价值,但不能证明未来稳定。如果只出现少数几个独立事件,几十根相邻K线并不会神奇地构成广泛的样本。重复的安排和指标也会创造选择机会;回测过拟合指南解释了这一独立风险。

产品限制与后续步骤

SuperQuant 提供固定规则的前向验证诊断:评估从历史数据的中点之后开始,报告四个按时间顺序排列的测试窗口,且不重新优化参数。更早的K线为每个窗口提供指标预热。这检验的是一条冻结规则在后续各窗口中的表现,不是拟合与重新训练的优化。单独的“最后 30%”回放是单次划分,如果研究者已经检视过该区段,它就不是未被触碰的。

Disproof Desk 现在允许您查看每个窗口的 UTC 测试区间、指标上下文与测试数据指纹、建模收益、回撤、已平仓交易、手续费和资金费。每个窗口都以相同的起始资金从零开始,因此各窗口的收益不会复利合并为一个账户结果。这些简短的本地指纹有助于发现意外改动,但并非加密签名。

SuperQuant 固定规则四窗口诊断当前的产品诊断会固定一条已提交的规则,并在合成历史的前半段之后报告四个按时间顺序排列的后续评估窗口。更早的K线仅用于指标预热;不会重新拟合参数。此产品专属诊断不同于自适应重新优化过程。一条不变的规则 · 四个后续窗口 · 合成历史前半段 · 历史与规则提交更早的K线用于指标预热;不构成拟合声明后续按时间顺序评估四个报告的窗口 · 相同的已提交参数窗口 1窗口 2窗口 3窗口 4不重新优化参数 · 更早的窗口中不含未来K线工具输出是对内置合成历史的诊断,并非独立的交易所证据描述 SuperQuant 当前行为 · 请查看应用方法论以了解更新
当前的产品诊断会固定一条已提交的规则,并在合成历史的前半段之后报告四个按时间顺序排列的后续评估窗口。更早的K线仅用于指标预热;不会重新拟合参数。此产品专属诊断不同于自适应重新优化过程。 教学说明图 · 非实时市场数据

内置历史数据是合成的。要检视每一个窗口,包括负面的窗口,并记录是否有任何输出影响了规则修改。对于在所有选择之后单独保留的一个更晚区段,请阅读样本外测试;那是另一种评估设计。该产品当前的诊断方法在其研究方法中有所说明。不要把固定规则检验描述为自适应前向验证系统。

从回测工作流程开始,阅读过拟合风险,并在假设工作表中记录一个保留期。严谨的负面结果仍然是值得保留的结果。本指南属于一般性教育内容,不构成投资建议,也不承诺未来表现。