发布 2026-10-27

未来函数

未来函数,指代码读取了在成交那一刻根本不存在的数据 —— 它是前视偏差在代码层面的形态,也是伪造回测最快的办法。


本页目录

是什么

未来函数,指代码读取了在成交那一刻根本不存在的数据。

它造成的失真有个正式名字:前视偏差。但两者不是一回事。前视偏差说的是结果被污染了;未来函数说的是代码里哪一行在偷看未来。

这个区别很实用。「有没有前视偏差」是个判断题,容易扯皮;「这一行是不是读了整个数组」是是非题,一分钟就能答。

为什么在 AI 量化里更常见

让大模型写一段回测,它会主动写出未来函数 —— 你没要求,它也会。因为它默认的归一化、排序、算阈值方式,都是在整个数组上做的,而整个数组里就包含了未来。

模型不算“犯错”,它只是按你问的答了。「写一个能证明这个策略有效的回测」和「写一个在当时就能跑出来的回测」是两个不同的要求,只有后者才算测试。

常见形态

形态 代码在干什么
全样本归一化 除以整段时期的均值或标准差
同根收盘价成交 用收盘价做决策,又在同一个收盘价成交
重述财报 用后来修正过的数字,而不是当时首次披露的
今天的成分股 遍历现在的指数成分,而不是当时的
前复权序列 用前复权价,于是后来的分红被算进了过去的价里
未来的股票池 把测试期之后才退市的股票提前剔掉

怎么检查

把数据按每个决策日截断,重跑一遍。

如果某一天的数字,在加上后面的数据之后变了,那这段代码就在读未来。 这一个测试能抓出绝大多数情况,成本只是一层循环。