[量化大讲堂系列1]量化策略模型的测试方法简介:递推式检验VS交叉式检验

在量化策略模型特别是预测式(Predictive-Based Trading Model)量化策略模型的开发过程中,关键的一步是对模型进行样本外的检验。我们通常会把数据分为样本内和样本外,但在数据有限的情况下,怎么尽可能的充分利用现有的数据对模型进行全面的检验?业界常用的两种方法就是:递推式检验和交叉式检验。

1. 递推式检验(WalkForward Testing)


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

  1. 训练数据:1996年至2007年,测试数据:2008年;
  2. 训练数据:1997年至2008年,测试数据:2009年;
  3. 训练数据:1998年至2009年,测试数据:2010年。

最后对测试集(2008、2009及2010年)的测试结果进行统计,用以评价模型的表现。

用下图可以直观的解释递推式检验的原理:上图,每次检验时,测试数据(Test period)比较短,测试次数较多;下图,每次检验时,测试数据(Test period)比较长,测试次数较少。实际应用时,可以通过改变测试数据(Test period)的长度,进行多次测试,用来判断模型在应对非平稳数据(Nonstationarity)的稳定性。

[量化大讲堂系列1]量化策略模型的测试方法简介:递推式检验VS交叉式检验_第1张图片
Paste_Image.png

递推式检验相对于其他检验方法(例如Cross Validation)最大的缺点就是不能最大效用的利用有限的数据,特别是当历史数据不够多的时候。

2. 交叉式检验(Cross Validation)


上面说到的递推式检验,每次我们去一部分数据,用其中较早的数据去训练模型,然后再用剩下的数据去检验模型。而在交叉式检验中,我们把全部数据等分为N个部分,每次用其中的N-1个部分做训练,用剩下的部分做检验。比如我们把2005年至2008年按照每年划分,分为4个部分。那交叉校验的操作过程如下:

  1. 训练数据:2006-2008,测试数据:2005;
  2. 训练数据:2005-2007,测试数据:2008;
  3. 训练数据:2005、2006、2008,测试数据:2007;
  4. 训练数据:2005、2007、2008,测试数据:2006.
[量化大讲堂系列1]量化策略模型的测试方法简介:递推式检验VS交叉式检验_第2张图片
Paste_Image.png

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

  1. 当价格数据非平稳时,模型的测试结果不可靠。例如,用2008年的数据做训练,用2005年的数据做测试。很有可能2008年的市场环境与2005年相比发生了很大的变化,所以模型测试的结果不可信。
  2. 与缺点1类似,在交叉检验中,我们会用最新的数据训练模型,而用较老的数据测试模型,这本身就不怎么符合逻辑。

3. 数据重叠(Overlap)引发的思考


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

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

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

  1. 模型预测的结果变化缓慢导致持仓变化缓慢,这就是我们常说的指标的滞后性。
  2. 对模型结果检验的一些统计值不可用,由于重复数据导致的序列相关,使得一些统计检验的结果不可靠。

4. 模型评价VS绩效评价


对量化策略模型的评价有两种维度:

  1. 模型本身的预测表现:比如预测准确率、R平方(线性回归)等;
  2. 基于模型的预测结果进行交易的表现:比如盈利因子、夏普比率等。

那我们在开发量化策略的时候,到底该采用哪种评价标准呢?预测精准的模型,可能最终的交易表现还不如预测相对不精准的模型。模型的预测准确性与基于模型预测结果的交易表现之间并不是线性的关系,比如有些模型的准确率低,但每次都能抓住大行情;而有些模型准确率高,但每次出大行情就预测不准。所以,在开发量化策略模型的时候,评价标准还是要选择最终的交易表现。 当然,如果能找到预测结果好、交易表现也很好的模型是最好的结果。

你可能感兴趣的:([量化大讲堂系列1]量化策略模型的测试方法简介:递推式检验VS交叉式检验)