实战大数据

Author: 扫地僧, Created: 2018-01-26 16:54:56, Updated: 2019-12-03 17:57:13

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

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

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


更多内容