在第4章和第5章的策略研究当中,由于回溯测试过程简单化的处理,因此不可避免地会受到未来信息问题的影响。与此同时,最优化的处理只在整个样本数据上进行了一次,因此如果只分析回溯测试的结果,研究人员无法判断研发得到的具体策略是否具有过度拟合的问题。
在这一章中,作者就将介绍一种具有 实践意义的分析方法来处理这些问题,也就是章节名称所提到的推进分析。在具体说明推进分析的框架和使用方法之前,本节首先介绍一下与推进分析有着极高关联性但是适用范围更加广泛的样本外检验,方便读者循序渐进地了解推进分析的框果结构,更好地掌握这种研究方法。
样本外检验是一种被广泛应用于数据科学研究中的检验方法。在数据科学的一般研究情况下, 样本外检验的功能主要是用来判断对数据的处理方法是否存在明显的过度拟合。图6-1给出了一个样本外检验的示例用以说明,先忽略下面的时间轴,实际上样本外检验就是将整个样本分为两个相互不重叠的部分,也就是白色的样本内和灰色的样本外。首先针对样本内的数据进行模型的研究和优化,得到一个在样本内数据上最优的模型方法,再将已经优化完成的模型方法直接放人样本外的数据进行检验,如果样本外的数据检验结果依然说明该模型方法具有显著的效果,那么就可以在一定程度上判断出该模型方法对实际问题处理的有效性。对于在样本内优化得到的具体模型方法,比较其在样本内和样本外数据上各自的效果,两者越接近,那么该模型方法在样本内进行优化时的过度拟合问题就越小。
在样本内、样本外的示例下面加上一个时间轴,是为了指出在处理资产价格等具有时间特征的数据时,往往将样本内的部分取在时间段前期,而将样本外的部分取在时间段后期。当然,将样本外的部分放在时间轴的前面,甚至将样本外分为两部分置于样本内的前后两端,都是可以接受的处理方法,符合样本外检验的基本定义。但是相比较而言,图6-1 的样本处理方式更加合乎逻辑,更为贴合时间流逝下的数据特征。因此一般而言, 这是一种更被接受的处理方法。
量化交易策略的研发作为数据科学的一个专业化分支,实际上是可以直接使用样本外检验来进行过度拟合判断的。但是正是由于量化交易策略研发作为一个分支,具有自身的特殊性和专业性,因此存在一些更为合适的研究方法来判断过度拟合的问题。推进分析正是其中比较具有代表性的-种方法,其不仅可以判别量化交易策略的过度拟合程度,同时具有其他一些比较好的性质特点,是量化交易策略研究中比较常见且值得使用的检验方法。
图6-2给出了一个推进分析的示例。最下面的数字代表随时间前进的交易周期,例如在第4章量化择时策略的数据下,每个数字都代表1日,在第5章量化选股策略的数据下,每个数字都代表1个月,而如果使用的样本数据为分笔数据的话,那么每一个数字都代表两次分笔数据到达的间隔。也就是说,推进分析的计算周期或者说推进周期应该以交易判断的间隔为准,而不是以某一个固定的时间长度为准,日度数据和月度数据的例子只是因为判断交易的时间间隔恰好是日和月而已。
首先来看图6-2中离计数条最近的一行白色框加灰色框,这里的操作类似图6-1中的样本外检验过程。其中白色框包括从周期1到周期5的数据,灰色框则是周期6的数据。假设研究人员要检验的是一个参数待估计的量化交易策略,现在先基于白色框的数据对其进行最优化,得出相应的参数,然后将参数确定好的策略放入灰色框的数据中进行检验,得到相应的结果。优化的具体目标既可以是量化交易策略的整体收益情况,也可以是一个具体模型的预测能力,这在前面的说明和案例讲解中均有涉及,这里不再多做赘述。可以发现,针对这一行数据的
研究操作实际上就是个样本外检验的过程,但是该检验具有一个明显的特点,就是样本外的数据长度仅为一个交易周期。
随后的操作基本.上就是推进分析这个名称的由来。将样本内和样本外两个部分分别按照时间前进的方向向后推进一个周期, 白色框的样本内数据变为了周期2到周期6的数据,灰色框的样本外数据则变成了周期7的数据。同样的,先基于白色框的数据对其进行最优化,得出相应的参数,然后将参数确定好的策略放入灰色框的数据中进行检验,得到对应的结果,这也就是第二行数据得到的样本外检验结果。
之后则每次推进一个周期,进行相同的检验操作,如图6-2中的上面6排,每一行数据都有一个周期下的样本外检验结果。最后将所有灰色框的检验结果汇总,就可以得到从第6个周期直到结束的推进分析检验结果,作者也称其为全部样本下的推进分析检验结果。
值得注意的是,如果具体的量化交易策略本身需要备用数据来参与计算,那么整个研究实际需要的数据量将超过计数框的限制,提前到周期1之前。灰色框的检验计算也需要用到白色框中的数据,从而完成策略的计算。这些内容在图6-2中都没有显示出来,希望读者自行理解。
从上面对推进分析的介绍中其实不难发现,推进分析的整个操作流程非常贴合实际交易的情况。在实际环境中如果使用量化交易策略进行交易,使用者常常会先根据最近的数据优化好策略设置和策略参数之后,再用其来指导当前的交易,而在下一次需要判断是否交易时,再重新优化一遍策略设置和策略参数,从而使得策略更好地反映最近的市场情况。