前视偏差(look-ahead bias)是指回测使用了在决策时刻不可能获得的信息。它能让一条无用的规则看起来很出色,而且出奇地容易不小心引入。
常见的引入方式
- 在触发信号的收盘价交易。 如果你的规则需要收盘价,你只有在 K 线结束时才知道它。在同一收盘价成交,等于假设你能在那一刻立即行动。
- 在 K 线结束前使用它的最高价或最低价。
- 修订过的数据。 有些数据集事后会被更正;当时交易者看到的原始数字是不同的。
- 用未来值计算的指标,例如居中移动平均或对整段历史做归一化。
Backte.st 如何避免
引擎只读取 已完成 K 线 上的信号,并在 下一根开盘 时成交。周一收盘触发的规则在周二开盘成交,这是你现实中能拿到的第一个价格。
这比一些回测工具更严格,结果因此可能看起来更差。这是有意为之。
延迟入场检验
即使成交是诚实的,策略也可能高度依赖精确的时机。延迟入场 检验让每笔订单 晚一根 K 线 成交,也就是信号后的第二个开盘价。
- 如果结果几乎不变,说明策略不依赖于分毫不差的时机。
- 如果结果崩溃,说明大部分利润来自信号之后的第一根 K 线。这种优势很脆弱:现实中的延迟、跳空和漏单都可能把它吃掉。
一个相近的陷阱:幸存
前视偏差关乎你 何时 知道某件事。它的近亲是知道 哪些 市场以后还会存在。挑选今天的赢家,用昨天的数据测试策略,就是 幸存者偏差。
检查清单
- 规则使用的每个数据在决策时刻都能知道吗?
- 成交是否发生在信号之后、以你实际能拿到的价格?
- 结果在延迟一根 K 线后还能存活吗?
在 实验室 中运行任意策略,比较延迟入场的收益与基础结果。