Look-ahead Bias 是一种评估中的时间错误:将后来才可得的信息用于更早的决策、训练或规则选择。事后衡量已经作出的预测的结果,本身并不属于这种错误。
QuantConnect 将 Look-ahead Bias 描述为用后来才可得的信息作决策。因此,我们的核查问题是:在作出这项决策的那一刻,流程实际上能够知道什么?数据属于同一个日历日并不足够。事件发生、发布、接收和发送订单的时间可能各不相同。必须为每项输入证明其可得时间及操作顺序;仅有正确排序的表格并不能提供这种证明。 [2]
LEAN 的时间模型按数据点的 EndTime 传递已经完成的数据点。我们的推论是:整个周期的最终收盘价、最高价、最低价和成交量,不得用于指导该周期内更早的决策。使用多个时间尺度时,每个序列都必须有自己的可得性规则。移动一行可能修复特定错误,但不能替代对时区、周期结束和来源延迟的检查。使用已经知道的前值,与使用当前蜡烛图后来才形成的最终值,是不同的情况。 [1]
FRED 文档区分了今天可得的历史信息与在历史时期已知的信息;ALFRED 可以选择相应的可得时期。我们的方法要求是:处理后来修正的数据时,必须保留当时的版本及其发布时间。经济统计所属周期的日期不能替代发布日期。即使有历史版本,也不能单独证明精确的日内可得时间;这仍需另行核实。不能悄悄把后来的修正放回更早的决策中。 [3]
scikit-learn 要求仅在训练数据上学习变换,然后将同一已学得的变换应用于测试。我们的时间检查包括归一化、缺失值填补、特征选择和训练目标。未来周期的结果可以用于事后评估预测;但不得用于更早地生成该预测或选择规则。在持续重新训练时,只有在相应时刻已经知道的目标结果才能进入训练。 [4]
TradingView 解释,其经纪商模拟器在使用历史 OHLC 数据时,会对蜡烛图内部的价格运动作出假设。我们区分的是:记录的最高价和最低价本身并不能确定所有价格及订单的真实先后顺序。测试必须分开处理信号生成、订单发送和可能的成交。根据后来才知道的极值选择入场或出场,与单纯过于乐观的成本模型是不同的问题。更精细的数据可以改善核查,但不能保证真实成交。 [5]
Freqtrade 比较多次测试的结果以及指标或信号的变化,也指出了访问未来行和对整张表进行聚合的问题。因此,我们的审计不仅检查移位语法,也检查每项计算的来源。文档明确将检查范围限定为测试中已触发的信号。工具没有报告问题,并不代表未执行的分支也已通过检查。必须结合覆盖范围和模拟设置阅读结果;某些限价订单配置可能产生误报。 [6]
TradingView 将 Look-ahead Bias 与 Overfitting 区分开来,后者是让规则贴合特定开发数据。我们的结论是:即使时间上合规的测试,也可能是广泛挑选胜者后的产物。反过来,简单规则也可能泄漏未来信息。修复之后,必须重新计算结果并记录变化;不能保留原先盈利的报告。历史结果与后续结果之间的差异,本身并不能说明原因是时间错误、市场变化还是其他假设。 [5]
NFA 提醒人们注意假设结果与真实交易的区别。因此,我们可复现的记录包含数据及规则版本、输入的可得时刻、账户状态、订单顺序和已说明的成本。审计必须能够只用当时可得的信息重放决策。Paper Trading 可以提供更多持续记录,但其本身既不能保证数据准备正确,也不能保证真实流动性。消除已经证实的错误并不是对未来收益的承诺。 [7]
依靠未来知识获得的利润不是当时可实施的策略
要获得更完整的理解,请将本词条与以下词条结合阅读: Backtesting, Overfitting, Walk-forward Analysis, Survivorship Bias, Paper Trading. 反向关联还来自: Walk-forward Analysis, Overfitting, Survivorship Bias, On-chain Analysis.
01把所有指标向后移动一行就够了吗?+
不够。移位可以消除某种具体的未来值使用,但不会自动解决时区、延迟发布、数据修订或数据准备的问题。关键是证明每项输入在相应时刻确实可得。
02在评估中使用未来结果总是错误吗?+
不是。必须使用后来观察到的结果,才能评估先前形成的预测。错误在于让这项未来信息进入更早的决策、训练或规则选择过程。