量化回测必须要保证数据的时序正确性(point-in-time), 也就是在历史上任一时间点看到的数据是那一时间点能得到的最新数据而且不是偷窥未来的数据。 这个概念说起来比较绕,需要举一个例子来说明。

比如看一只股票A的历史财报, 这家公司在2014/04/29公布了2014年第一季度财报的第一个版本(V1), 在2014/07/29公布了2014年第一季度财报的第二个版本(V2),在2015/03/31对公布了2014年第一季报的第三个版本(V3)。(虽然不是每一只股票都会像这样更正过去的财报,但这种更正过去财报的情况会在很多只股票里出现。)

今天是2016/08/08,我能看到第三个版本(v3)的2014年第一季财报。如果我坐着时空穿梭机回到历史, 比如回到2014/12/31,我能看到的最新版本是2014年第一季财报的第二版本(v2),而第三版是在2015年公布的,所以我看不见。 如果我回到2014/06/01,我只能看到2014年第一季财报的原始版本, V2和V3我都看不见。

量化回测引擎就像一个时空穿梭机,能回到历史,并且和上面的我看到一样的数据。量化回测引擎不偷窥未来的数据,同时又能看到当时的最新版本数据。这就是所谓的Point-in-time, 也就是时序的正确性。

市面多数财经网站或者财务软件都查到的股票的历史财报信息都只有一个版本,比较好的网站会显示最新版本的信息。如果直接从这些网站或软件下载财报信息作量化回测,就容易犯下使用未来函数的错误。

果仁网 www.guorn.com 上面的量化指标都考虑到财务指标多个版本的复杂性,保证财务数据时序上的正确性,在任何一点看到是那一点的最新数据但不是未来数据,这样回测出的结果才会避免使用未来函数的错误。