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

Discussion in 'Philosophy and Strategy' started by JackSplor, Jan 26, 2018.

  1. 实战大数据 | 量化策略之样本外数据测试的必要性
    [​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
      我们 ( BotVS 量化交易平台 ) 旨在改变当前量化圈无干货,交流闭塞, 骗子横行的现状,打造一个更纯净的量化圈子。这个世界从来没有人创造知识与理论,它们只是早已存在等待我们发掘。

      [​IMG]

      分享是一种态度,更是一种智慧!
    宽客在线
    作者 Hukybo
     
    rok likes this.