回测实践的局限性
回测实践的通俗解释
回测实践是通过在历史价格数据上运行一个交易构想(例如,基于规则的进出场策略),来评估该构想的过程。其目标是估算如果在过去遵循相同的规则,该构想可能产生的结果。
一次典型的回测通常包括:(1) 历史数据,(2) 一个根据这些数据生成操作的规则或模型,以及 (3) 一种计算结果的方法,例如盈亏、回撤和胜率。这些计算依赖于对每个时间段内发生情况的假设(例如,记录的数据点之间价格如何变动),以及对交易执行的假设(例如,佣金、点差和订单是否成交)。
为什么回测可能不如表面看起来有用
一个关键的局限性在于,回测是对过去的模拟,而非对未来的观察。即使历史结果看起来很强劲,从历史中学习到的关系在新的市场条件下可能不会重复。以下的局限性解释了常见的失败模式。
1) 历史数据与市场微观结构的缺失
大多数回测使用记录的价格K线或逐笔数据,但实际交易涉及的细节远超许多数据集所能捕捉的内容。如果你的历史数据不完整、以改变价格含义的方式进行了调整,或缺乏建模订单成交所需的信息,那么回测结果可能与实盘交易情况存在偏差。
此外,从记录价格到可能成交之间的映射是不确定的。例如,如果一个规则假设在某个特定价格水平成交,但实际市场可能在订单执行前已越过该水平,那么模拟结果就会过于乐观。
2) 成本、执行质量与滑点假设
即使策略逻辑正确,结果也高度依赖于交易成本和执行的假设。回测有时使用简化的成本模型(例如,固定点差或无滑点),或假设订单完美成交。在实际中,点差会扩大,流动性会变化,滑点可能随波动率和交易时段而变化。
由于微小的成本差异在大量交易中会累积,忽略或低估这些影响的回测可能会夸大策略表现。
3) 过度拟合与数据窥探
回测可能无意中“拟合”特定数据集的噪声。当尝试大量参数并选择那些提升历史结果的参数时,就会发生这种情况。你越是反复在相同数据上搜索表现良好的参数组合,该表面优势越可能是特定于该时间段的,而非市场的一般特性。
一个相关问题是数据窥探:反复测试多个变体,直到某个变体表现良好。如果没有仔细划分训练期和测试期,强劲的历史结果可能并不反映可重复的机制。
4) 非平稳市场与变化的条件
市场并非稳定系统。波动率状态会变化,市场参与结构会转移,流动性也会移动。在一种环境下有效的规则,在点差、波动率或相关性变化时可能表现不同。
即使没有监管或结构性事件,价格序列的统计特性也可能漂移。这意味着你在测试期间隐含“嵌入”的假设可能不再成立。
5) 被测试内容定义模糊
由于输入和规则不同,回测之间可能难以比较。对于任何案例,你都应能明确说明:
- 使用了何种数据频率(例如,K线还是逐笔数据)。
- 指标或特征是如何计算的,以及是否仅使用了当时可用的信息。
- 进出场是如何决定的,以及如何建模订单成交。
如果这些细节中的任何一项不清晰,回测可能并未真正测试预期的构想,而是在测试所选实现方式的副产品。
可提高可靠性的验证方法
你无法通过回测“证明”一个策略将来一定有效,但可以检查结果是否可能稳健。
一种实用的验证方法是明确地定义假设并测试其敏感性。例如,在合理范围内调整成本参数,或使用不同市场条件下的不同历史时期。此外,使用样本外测试:在未用于参数选择的数据上评估规则。