将历史数据根据时间先后分为两段,后一段数据用于样本外测试。构建模型时,参数优化和定性选择使用前一段数据(称为“训练集”),所得模型的测试使用后一段数据(称为“测试集”)。(两段数据的大小要大致相等,若数据量不够,则至少用三分之一的数据做测试。训练集的最小含量由上一节提到的经验规则决定。)在理想情况下,基于训练集的最优参数和决策,对于测试集也是最优的,不过实际上很难做到这一点。但测试集上的业绩起码要合理。否则,模型就存在数据迁就偏差,需要进一步简化并减少参数。
动态参数优化是更严密、也更复杂的样本外测试方法。这种方法通过使参数不断适应变化的历史数据,来消除数据迁就偏差。
无参数交易模型
我曾为之工作过的一个投资经理,很热衷于宣传他的交易模型“没有任何自由参数”。由于业内的保密行规,他没有透露过更多的技术细节。
后来,我开始明白无自由参数交易模型的含义了,并不是说不包含任何参数,如不包含计算价格趋势时要用的回溯期或确定建仓或清仓时间的阀值,这是不可能的。真正的含义是所有这些参数都在一个移动回溯窗口中进行动态优化。假如你问:“模型中有固定的盈利上限吗?”交易员会诚实地回答:“没有,盈利上限并不是一个输入参数,它是由模型本身所决定的。”
无参数交易模型的优势在于,能够减少多参数输入模型的过度优化风险(数据迁就偏差)。因此,回测业绩应与未来交易的实际业绩更加吻合。
(注意,参数优化并不一定是挑选那个回测业绩最好的参数集。通常,更应该是基于不同参数集的某种平均来做交易决定。)
在下达下一条指令前,及时对所有参数进行优化,是对计算的一个很大考验,若要进行多堆优化就更加困难了。因此,在开始研究例7.1所述的状态转换模型之前,我自己极少使用无参数交易模型。状态转换模型基本上是无参数的(我在优化时忽略了一些参数,不是因为任何技术上的困难,而是时间有限)。在这个例子中,我怎么在几分钟之内完成回测参数优化的呢?我使用了高端回浏文易平台(Alphacet Discovery)。
最靠谱的样本外测试方法,很多交易员都很熟悉,叫做“仿真交易”。用尚未发生的真实数据运行模型,是最可靠的测试方式。仿真交易不仅能做真实准确的样本外测试,同时也常常可以发现模型中的前视偏差,以及各种与操作相关的问题。第5章将详细讨论仿真交易。
对于一个需要通过测试来核实的公开策略,从策略的公开日到测试日的这段时间,是不折不扣的样本外测试期。只要不在样本外测试期优化模型的参数,这段时间跟策略的仿真交易的效果一样好。