量化百问
回测数据策略

什么是未来函数(前视偏差)?

未来函数就是在做交易决定时用了当时还不知道的信息,例如用当天最高价决定当天开盘买入,让回测结果看起来比真实执行更好。

要点

展开依据

## 它为什么会让回测失真

前视偏差,也叫未来函数,是指程序在某个时间点做决定时,偷用了之后才会出现或才会公布的信息。回测仍然可以正常运行,曲线甚至可能更漂亮,但这个结果不是当时真实可执行的结果。

例如,盘中决定买入,却使用了当天收盘后才知道的最高价;或者用当天收盘价计算信号,又默认能按这个收盘价毫无摩擦地成交。更保守的做法是:信号用当天已经完成的收盘数据计算,下一交易时点再执行。技术指标也一样,盘前计算 ATR 只能用前一个交易日及以前已经完成的数据。

## 常见来源

  • 用全样本数据提前计算标准化的均值和标准差;
  • 把未来才公布的财报字段放到更早的交易日;
  • 索引写错,读到了尚未发生的 K 线;
  • 用当前仍存续的股票名单倒推历史,造成幸存者或成分前视偏差;
  • 形态确认需要右侧 K 线,却把信号画回左侧低点。

未来收益标签可以在事后制作,但不能进入事件发生时的特征。财务数据要按公告可得日对齐,历史股票池应尽量使用当时真实可选的成分。

## 怎么自查

逐个检查每个变量:做这个决定的时刻,它真的已经拿得到吗?把信号时间、成交时间、数据版本、处理参数和历史成分口径记录下来;用两三个日期手算窗口和顺序。事件驱动框架能按时间推进,但不会自动消除未来函数。

想把这些检查放进完整流程,可以学《财务指标驱动行业内选股》和《回测引擎与事件驱动》。