样本外留出集是指在研究过程中,将较晚的一段数据单独保留,而用更早的数据做出研究选择。在打开该数据段之前,先冻结一个策略版本、成本模型和评估方法。它回答的是这个被冻结的版本在这一个预留时段上的表现;它并不是前向滚动评估中反复进行的拟合与测试流程。

单一预留留出集与单向审查边界先前的观察支持研究选择;随后在开启一个更晚的留出集之前,锁定策略版本、成本模型、指标与边界。一旦查看,结果可能影响后续选择,因此修订后的规则需要新的较晚证据。一个冻结版本 · 一个更晚的预留区段开发数据已查看 · 替代方案已尝试保留选择历史锁定规则 + 参数成本模型 + 指标日期边界仅开启一次一个更晚的预留区段报告所有预先声明的结果不得反馈到此评估中若结果改变了规则,则将留出集标记为已使用;为后续证据预留空间留出集只是一份证据 · 反复选择仍然重要
先前的观察支持研究选择;随后在开启一个更晚的留出集之前,锁定策略版本、成本模型、指标与边界。一旦查看,结果可能影响后续选择,因此修订后的规则需要新的较晚证据。 教学说明图 · 非实时市场数据

在打开较晚数据段之前冻结设计

先写下假设、规则版本、参数、开平仓约定、成本、基准、评估指标和日期边界。说明在选择该版本之前测试了多少个备选方案。在设计过程中,将较晚的观测数据排除在图表、参数扫描和人工查看之外。如果您已经查看过全部历史数据,就不要把一段熟悉的数据称为未被触碰;请寻找更晚的数据来源时段,或如实描述现有数据段。

按时间顺序预留留出集。将相邻的价格K线随机分配到拟合组和测试组,可能会泄露局部市场背景。明确训练窗口是否包含完整的指标预热期,以及跨越边界时的仓位如何处理。保留原始数据来源和确切的规则版本,以便在不改变输入的情况下重复评估。

结果只使用一次——并记录发生了什么变化

将冻结的规则和成本模型应用于留出集。保存完整台账和预先声明的指标,包括表现不佳的结果、回撤、被拒绝的信号和缺失数据的影响。不要在看到一个不利的数据段后修改规则,然后在同一个留出集上重新运行。该数据段此时已经影响了您的研究选择:将留出集标记为已使用,记录它改变了什么,并预留新的较晚观测数据来评估修订后的版本。

留出集无法修复数据质量差、执行假设不现实、幸存者偏差、前视偏差或早期阶段过度搜索等问题。它本身可能包含一个罕见的市场状态,对其他时段说明不了什么。小样本可能存在噪声。在给出结果的同时,说明其日期跨度、规模、交易笔数、选择历史和局限性。

查看留出集后该怎么做一旦查看预留的留出集,该留出集即成为研究历史的一部分。保留该结果;若该结果影响了修订,则为新规则设定版本,并为评估预留更晚的未见观测。保留首次结果 · 将下一次检验推进到更晚的数据留出集已查看保存结果与台账标记为已使用记录哪些信息影响了您版本修订保留先前规则为下一次评估预留更晚且未见过的日期将旧留出集报告为开发历史,绝不作为新证据不要删除或重新标记不利的首次结果
一旦查看预留的留出集,该留出集即成为研究历史的一部分。保留该结果;若该结果影响了修订,则为新规则设定版本,并为评估预留更晚的未见观测。 教学说明图 · 非实时市场数据

将预处理保留在开发边界之内

按时间顺序划分日期本身并不能防止信息泄露。模型还可能从归一化数值、缺失值填补规则、所选特征、概率阈值或其他变换中学习。scikit-learn 的指南指出,应在训练数据上拟合这些步骤,然后将学到的变换应用于留出数据;在合并后的全部历史上拟合归一化器,会让较晚的观测数据影响模型。其数据泄露指南解释了这一通用的机器学习陷阱。

在开发阶段的观测上拟合数据变换,然后在留出集之前将其冻结这个虚构示例仅用开发阶段的观测来拟合标准化步骤,冻结所学的变换,并将其原样应用于较晚的留出集。在留出集上重新拟合会让较晚的信息渗入模型构建。在留出集之前拟合变换 · 原样应用开发数据拟合缩放器/插补器/特征规则在此选择阈值与模型冻结保存已学习的值保存代码 + 版本留出集打开后不再重新拟合后续留出集用冻结的值进行转换评估一次,然后公布留出集信息不会回流到拟合过程示意性研究流程 · 并非策略表现结果
这个虚构示例仅用开发阶段的观测来拟合标准化步骤,冻结所学的变换,并将其原样应用于较晚的留出集。在留出集上重新拟合会让较晚的信息渗入模型构建。 教学说明图 · 非实时市场数据

例如,如果较早的收益率决定了某个特征的均值和尺度,请在打开留出集之前,将这些拟合值随规则版本一起保存。将保存的变换应用于较晚的观测数据,而不重新计算其参数。特征选择、缺失值处理和任何概率校准也应在开发样本内拟合。然后在预留数据段上对完成的流程评估一次。如果结果影响了某个特征、阈值或流程选择,请将该数据段标记为已使用,并为修订后的版本预留新的较晚数据。

对于没有学习型预处理的规则型策略,同样的边界也适用于那些可以通过查看来调整的选择:指标窗口、标的池筛选、止损距离、基准、成本假设和报告指标。数据指纹和冻结的源代码有助于确定是哪些输入和变换产生了该结果。留出集应接受与开发阶段相同的因果特征生成规则,只使用每个模拟决策时点之前可获得的观测数据。

回测过拟合概率研究的作者报告称,标准留出集技术在投资回测中可能不可靠,并提出一个单独的框架——组合对称交叉验证——来评估选择风险。这也不是针对加密货币的验证,同样不构成保证。对于简单留出集而言,实际教训是披露尝试了多少个备选方案,并避免将一个表现有利的数据段视为对反复选择的完整检验。

研究卡片让边界可执行

以一个虚构的突破研究为例,假设开发工作比较了 12 个规则变体。报告这一搜索过程,选择一个规则,并在打开较晚的预留时段之前将其冻结。一张简洁的测试卡片可以记录:

  • 规则: 确切的入场、出场、仓位大小、指标预热期和任何人工排除项;保存版本标识符。
  • 数据边界: 标的和交易场所、K线周期、时区、数据来源指纹、开发阶段最后时间戳,以及留出集的首个/最后一个时间戳。
  • 执行: 手续费档位或明确假设、买卖价差/滑点模型、资金费率处理、触发/成交时点、跳空,以及边界处已经持有的仓位。
  • 读数: 在打开留出集之前,选择净收益、回撤、交易笔数、敞口、基准和缺失数据处理方式;除汇总结果外,还要保留完整台账。
  • 选择历史: 尝试过的变体数量、它们之间的区别,以及为什么选择这个版本。

如果较晚的时段改变了您对回看窗口、出场、起始日期、指标或成本模型的选择,请记录该决定,并将该数据段作为留出集退役。表现不佳的结果同样是证据的一部分。不要删除一个不方便的窗口,然后把剩余部分描述为最初的预留测试。

它与前向滚动评估有何不同

单一留出集通常在一个较晚的数据段上测试一个冻结的配置。前向滚动流程则重复一个由较早拟合窗口和较晚评估窗口组成的既定序列。两者都需要预先声明的边界,并如实披露每一个调优选择。运行数十个前向滚动方案并只发布最好的一个,同样会产生选择偏差。选择与问题相匹配的方法,而不是图表最好看的方法。

SuperQuant 的诊断性划分可以让模拟测试从较晚时点开始,同时保留较早的观测数据用于指标预热。产品文档提醒,如果研究者已经查看过数据,该划分就不是未被触碰的。其内置历史数据是合成的;仅仅通过划分这些数据,该工具并不会产生独立的交易所证据。除非遵循了完整的预留时段协议,否则请将一次运行描述为诊断性划分。

使用策略假设工作表写下边界,然后阅读前向滚动测试和回测过拟合。一旦证据促成了新规则,请对其进行版本管理并定义新的评估。这是一般性研究指导,不构成投资建议。