如何验证关于回测定义的信息?
在评估主张前先定义回测
回测是将预定义的决策流程应用于历史数据,以观察其表现的方法。在验证层面,首要关键步骤是明确你正在评估的具体描述中“预定义”的含义:规则应在查看结果之前就已固定,输入应为模拟时段当时可获得的历史数据。
为了验证一个回测定义,需将稳定的机制与可变条件区分开来。稳定机制是核心理念(将规则应用于过去数据并计算结果)。可变条件则包括所选数据、执行假设、成本模型、绩效指标以及开发过程中所做的任何选择决策。
建立用于检查定义的来源层级
在验证有关该概念的信息时,使用一个简单的来源层级结构,优先考虑经久不衰的解释,而非不断变化的提供商或市场细节:
- 通用参考来源:教育材料、教科书和方法论概述中的定义。这些有助于确认基本概念(在历史数据上测试规则)。
- 方法文档来源:解释回测工作流程的文档,例如如何构建输入(时间序列、事件时间戳)、如何模拟订单以及如何计算指标。
- 特定主张的原始或权威参考:如果信息包含具体、当前或与实体相关的主张(例如关于某个平台的回测引擎),应对照最直接可用的文档进行验证。
在持久性验证中,通常只需要前两个层级。如果作者无法清晰说明机制,则应将额外细节视为未经验证。
可独立复现的验证步骤
你可以通过检查描述是否包含足够细节以复现逻辑来验证回测定义。使用以下清单:
- 陈述假设:列出所用数据(包括其时间段及时间戳对齐方式)、策略/规则的输入内容,以及决策做出的时间。
- 明确规则和参数:验证规则集是否明确,且所有参数均已声明。
- 定义模拟方法:确认模型如何将信号转化为结果。例如,是否假设交易在决策时间后的下一个可用价格发生,还是在同一时间(这可能暗示了当时无法获知的信息)?
- 计入成本和实际摩擦:定义可能是通用的,但关于绩效的主张应说明交易成本、点差、滑点或类似影响是如何表示的。
- 固定评估指标:检查定义是否说明了测量内容(如随时间的回报、回撤或相对于基准的误差)及其计算方式。
- 执行独立复现:如果描述提供了足够结构,你应该能够在相同历史时期实现相同的机制,并复现出方向一致的结果。
如果作者无法回答这些问题,内容可能仍在使用“回测”一词,但可能并未描述一个一致或可验证的流程。
加强定义的证据或示例检查
测试定义的一个有效方法是寻找“最小示例”结构。最小示例描述:
- 一个较小的历史窗口,
- 一个固定的规则集,
- 从决策时间到模拟执行的清晰映射,
- 以及一个指标计算方法。
即使没有实时数据,你也可以通过检查是否存在时间矛盾来验证定义的内部一致性。例如,如果描述使用未来价格在同一时间戳决定交易,则存在时间错配。另一个常见检查是方法是否在看到结果后更改规则,这会削弱“预定义”的含义。
必须验证的局限性和失败模式
回测对于了解流程是有用的,但不能保证未来结果。若干实质性局限可能使基于回测的结论无效或失真:
- 前视偏差(Look-ahead bias):如果方法使用了在做出决策时本不可用的信息。
- 过度拟合(Overfitting):如果参数和规则变体被调整以适应不会泛化的历史模式。
- 数据窥探(Data-snooping):如果尝试了许多变体,但只报告看起来最好的版本。
- 执行现实差距:如果模拟忽略了在实盘条件下重要的成本、延迟、流动性或滑点。