量化概念 11:未来函数(回测结果最常见的失真来源)
回测结果的可信度,取决于一个容易被忽略的前提:计算过程中不能使用信号发出时刻之后才存在的信息。一旦用了,回测就会系统性高估收益——这不是策略有效的证据,而是数据污染。这种污染在量化里叫未来函数(look-ahead bias),是回测结果失真最常见的来源。它不报错、不告警,只是安静地让曲线变好看,直到实盘无法复现时才被察觉。
什么是未来函数
定义很直接:决策用到了信号发出时刻之后才有的数据。
信号 T 日收盘后才产生,成交假设却落在 T 日收盘价上;因子描述历史,统计量却取自含未来样本的整段数据。每引入一处,回测就偏离真实收益一分。这不是策略强,是数据被污染了。

它藏在哪里
成交价:按 T 日收盘价成交——信号收盘后才产生,却买在收盘价上(T+1 那篇的坑一,本质就是未来函数)。
前复权:用未来的除权事件反推历史价格。下一次分红之后,此前的全部历史价格都会被改写——历史序列中混入了未来信息。
数据清洗:去极值、标准化使用全样本的中位数、均值,等于用整段历史(含未来)的统计量去修正过去的每个样本点。
幸存者偏差:样本只包含当前仍上市的股票,退市股被排除,回测天然高估(下一篇详述)。
财报对齐:用当前已披露的财报计算历史某日的因子值。财报披露存在滞后,当时市场可用的还是旧报表。
成分与分类:用当前的指数成分、行业分类回测历史——成分与分类随时间是变化的。
参数选择:在整段历史上搜索最优参数再回测,属于数据窥探(data snooping),与过拟合同源(后续文章详述)。
为什么难以发现
未来函数不产生任何错误信号。浮点误差会崩溃,数据缺失会有提示,而未来函数只是让结果偏乐观。更隐蔽的是它的累积性:当回测与实盘不一致时,多数人先怀疑执行、再怀疑参数,很少会逐项审计数据管线中的时点假设——问题恰恰可能出在这里。
如何检查
- 时点审计:对每个输入逐一确认——该数值在信号发出时刻是否可得。不可得,即存在未来函数
- 只用当时数据:信号、因子、清洗统计量一律取 T 日及之前的滚动窗口。我的系统有一条硬校验:信号只允许使用当日及以前的数据,违反即判失败
- 时移测试:将信号整体延后一日重跑,结果应基本稳定;若收益大幅下降,说明原收益中包含未来信息
- 逐笔核对:抽取若干交易,用当时的公开信息手工复盘,能对上才算可信
小结
未来函数是回测结果失真的隐蔽来源,常见于成交价假设、复权处理、数据清洗、幸存者偏差、财报对齐与参数选择。检查原则只有一条:每个输入在信号发出时刻是否真实可得。遇到显著优于预期的回测结果,优先怀疑数据与口径,而非策略本身。
寒蝉 Hancic

