什么是前视偏差
前视偏差是指:在回测历史数据时,使用了当时实际上还不知道的未来信息,导致回测结果失真。
前视偏差最核心的问题,是违反了时间因果,把未来才能知道的信息带到当前决策里。
为什么危险
因为在真实交易中,你不可能提前知道未来才会形成的信号,或者未来才会披露的数据。
如果在回测中用了这些信息,回测结果就会虚假变好。这样得到的策略看起来有效,但实盘很可能根本做不到。
常见例子
1. 信号和收益错位
比如:
- 今天收盘后才根据数据得出买入信号
- 却把今天这一天的涨跌幅记为策略收益
这是不对的。因为今天收盘后才知道信号,今天已经无法买入,也就不可能获得今天这段收益。
2. 财报数据错位
比如:
- 在 2025 年 1 月 1 日选股
- 却使用 2024 全年净利润增速作为判断条件
这通常也是错的。因为在 2025 年 1 月 1 日,大多数公司的 2024 年完整年报还没有披露。
如何避免
- 决策只能使用在当时已经能够获取到的数据。
- 要区分清楚信号产生时间、交易执行时间、收益计算时间。
- 常见做法是:昨天收盘后生成信号,今天开盘执行。
- 可以使用
shift(1)让今天的持仓或收益与昨天已经生成好的信号对齐。 - 财务数据、指数成分股等,要按实际披露时间/实际生效时间来处理。
我的理解
前视偏差最核心的点就是,违反了时间因果,将未来的信息带入到了现在使用,从而造成回测结果失真。
同时也要注意:有些问题不一定属于前视偏差,而是收益计算与真实成交时点不一致。前者是原则性错误,后者更接近成交假设或收益对齐问题。