资源加载中... loading...

量化策略之样本外数据测试的必要性

Author: 发明者量化-小小梦, Created: 2018-01-26 12:11:58, Updated: 2019-07-31 18:03:38

实战大数据 | 量化策略之样本外数据测试的必要性

img

  • NO:01

    人的一生,从小到大、从大到老,其实是一个不断犯错,又纠正,又犯错的过程,几乎谁也无法例外。或许曾经犯下许多,在现在看来很低级的错误;亦或许错过许多上车的机会,比如:房地产、互联网、数字货币等等…先别管是不是泡沫,就问你泡沫来的时候,你在不在场?

    以至于,常听人说: 「我当初就不该……」 「假如……我会……」

    我曾经抱着这个问题,很长时间都不能释怀,后来才渐渐明白。其实,这并不是一件值得恐惧的事情,因为当时每个选择,无论是对还是错,都将让我们远离预先设定的结果,走向一片未知;而我们的反思,只是在历史数据之外,开启了上帝视角。

  • NO:02

    我见过许许多多交易系统,回测的时候成功率可以达到50%以上。在这么高胜率的前提下,还可以有1:1以上的盈亏比。可是,无一例外,这些系统一旦付诸实盘,基本上都是亏损的。导致亏损的原因有很多,其中就有,在回测的时候,不经意间,从右往左看,开启了上帝视角。

    img

    然而,交易就是这样一件纠结的事情,事后回看无比清晰,但如果我们不带上帝视角的光环,回到当初,依然不知所措。这就牵扯到量化的根源问题——历史数据的局限。那么,如果仅仅用有限的历史数据,来检验交易系统,则很难避免“看着后视镜开车”的问题。

  • NO:03

    但在数据有限的情况下,怎么尽可能的充分利用有限的数据对交易策略进行全面的检验?通常有两种方法:递推式检验和交叉式检验。

    递推式检验的基本原理:用前一段较长的历史数据去训练模型,并用随后相对较短的数据去检验模型,然后不断地向后移动取数据的窗口,重复训练与检验的步骤。

    img

    1、训练数据:2000年至2001年,测试数据:2002年; 2、训练数据:2001年至2002年,测试数据:2003年; 3、训练数据:2002年至2003年,测试数据:2004年; 4、训练数据:2003年至2004年,测试数据:2005年; 5、训练数据:2004年至2005年,测试数据:2006年;

    …以此类推…

    最后对(2002年、2003年、2004年、2005年、2006年…)的测试结果进行统计,来综合评估策略表现。

    如下图,可以直观的解释递推式检验的原理:

    img

    上图分别展示了递推式检验的两种方法。

    第一种:每次检验时,测试数据比较短,测试次数较多。 第二种:每次检验时,测试数据比较长,测试次数较少。

    在实际应用中,可以通过改变测试数据的长度,进行多次测试,用来判断模型在应对非平稳数据的稳定性。

  • NO:04

    交叉式检验的基本原理:把全部数据等分为N个部分,每次用其中的N-1个部分做训练,用剩下的部分做检验。

    img

    把2000年至2003年按照每年划分,分为4个部分。那交叉校验的操作过程如下: 1、训练数据:2001-2003,测试数据:2000; 2、训练数据:2000-2002,测试数据:2003; 3、训练数据:2000、2001、2003,测试数据:2002; 4、训练数据:2000、2002、2003,测试数据:2001;

    img

    如上图所示:交叉式检验最大的优点就是充分的利用有限的数据,每个训练数据同样也是测试数据。但交叉检验应用到策略模型的检验时也存在明显的缺点:

    1、当价格数据非平稳时,模型的测试结果往往不可靠。例如,用2008年的数据做训练,用2005年的数据做测试。很有可能2008年的市场环境与2005年相比发生了很大的变化,所以模型测试的结果不可信。

    2、与第一条类似,在交叉检验中,如果用最新的数据训练模型,而用较老的数据测试模型,这本身就不怎么符合逻辑。

  • NO:05

    另外,在对量化策略模型进行检验时,无论是递推式检验还是交叉式检验都遇到到数据重叠的问题。

    img

    在开发交易策略模型时,大部分的技术指标是基于一定长度的历史数据。例如,利用趋势性指标,计算过去50天的历史数据,而下一个交易日,该指标又是该交易日前50天的数据计算得出,那么计算这两个指标的数据有49天是相同的,这会导致每相邻两天该指标的变化很不明显。

    img

    数据重叠会导致以下影响:

    1、模型预测的结果变化缓慢导致持仓变化缓慢,这就是我们常说的指标的滞后性。

    2、对模型结果检验的一些统计值不可用,由于重复数据导致的序列相关,使得一些统计检验的结果不可靠。

  • NO:06

    优秀的交易策略应该能够在未来具有获利性。样本外测试,除了能客观检测交易策略外,更能有效率节省宽客的时间。

    大部分情况下,直接采用全部样本的最优参数,投入实战是非常危险的。

    如果对进行参数优化的时间点前的所有历史数据进行区分,划分为样本内数据与样本外数据,先利用样本内数据进行参数优化,再利用样本外数据进行样本外测试,则可以将这种错误排查出来,与此同时还能检验优化后的策略是否适用于未来的市场。

  • NO:07

    就如同交易一样,我们永远没有办法穿越时间,为自己做一个一点错误都没有的正确决定。如果有上帝之手或者从未来穿越回来能力,那么不经过测试,直接上线实盘交易,也能赚的盆满钵满。而我等凡人,则必须在历史数据中检验我们的策略。

    可是,即便拥有庞大数据的历史,但面对浩瀚无尽且不可预测的未来,历史就显得极度匮乏。所以基于历史自下而上倒推出来的交易系统,终究会随着时间而沉没。因为历史不能穷尽未来。因此一个完整的正期望交易系统必须由其内在原理/逻辑所支撑。

    img

  • NO:08

    我们 ( 发明者量化 量化交易平台 ) 旨在改变当前量化圈无干货,交流闭塞, 骗子横行的现状,打造一个更纯净的量化圈子。这个世界从来没有人创造知识与理论,它们只是早已存在等待我们发掘。

    img

    分享是一种态度,更是一种智慧!

宽客在线 作者 Hukybo


More