做技术分析的时候,少不得都要跟参数打交道。比如看均线指标,是看5日均线、10日均线还是看40日,这个“多少日”就是均线指标的参数;使用布林带的时候,中轨周期是一个参数,标准差倍数也是一个参数。如果再进一步对商品价格走势特点有所了解,就会发现,不同的商品价格走势特点会有很大的不同,就像不同的人又不同的性格一样。所以在设计交易系统的时候,针对不同的商品,就需要选择最适合的参数组合了,这一工作流程就是我们常说的“参数优化”了。
但是对参数的优化,一不小心又会陷入到过度拟合的误区。物理学界有句名言,大概意思是说:只要有六个参数,就能拟合出一头大象。过度拟合造成的结果就是:回测结果看起来非常漂亮,但是一用到实盘,结果就惨不忍睹。那是因为参数过度拟合后的系统,只是完美的贴合了过去的价格走势,一旦未来行情出现变化,系统的适应能力就急剧下降。
所以参数优化存在一组矛盾,业内一位做高频量化的高手腾天,对这一矛盾的描述是:没有稳定的最佳。而《海龟交易法则》的作者费斯是这样描述的:对参数进行优化,有助于提高未来的盈利预期,但是未来能够实现这种盈利预期的可能性又会有所降低。
我们在实际的优化操作中,就是要调和这对矛盾,防止走极端。具体来说,经常会用到的一些方法如下:
样本内数据优化,样本外数据检测
这个可以说是最常用也是最有效的一种方法了。具体操作思路是将可以获得的历史数据分成两部分,一部分作为样本内数据,另一部分作为样本外数据。将交易系统的参数在样本内进行优化,取优化的参数组合,在样本外数据上面进行测试,如果测试结果表现符合预期,说明参数组合具有一定的适应性,否则,就有过度拟合的风险。
下面两幅图,左图就是一个典型的过度拟合,对样本内数据进行优化获得的参数组合用在样本外的时间周期上(2010-2014),可以发现结果差了很多。而右图则表现出样本内优化出的参数,在样本外也有很好的适应性。
(注:图片摘自知乎用户名为“教父”的live)
这种方法来源于数据挖掘,应用范围很广,但在量化投资中应用会碰到一个实际问题:In Sample和Out Sample样本大小的确定。而这个样本大小的确定,实际相当于为系统又多引入了一个参数。
第二种方法就是Walk Forward Backtesting,这种方式的作法就像是下面的图所显示的,如果我们有12个星期的历史资料可以用的话,我们先用第1到第4个星期的数据来跑优化,然后将跑出来的参数值套用在第5个星期的资料上。这时候第1-4个星期的数据就是In-Sample-Data,套用在第5个星期的绩效就是Out-Of-Sample的绩效。
然后我们把测试的窗口往后挪一个星期,重新跑第2-5个星期的优化,然后将跑出来的参数值套用在第6个星期上。这样重复8次。然后将所有out-of-sample的结果结合在一起(就是图下面绿色的部分)。同样,这一方法,也面临测试窗口长度的选择,也相当于一个新的参数的引入。
第三种常用的方法是考察最优参数周边参数的表现,如果都有不错的表现,则说明优化的参数组合并非参数孤岛,可以使用。这一手法通常结合前面两个方法使用。而这一方法在实际操作中,又会引入步长这一额外的参数。
有意思的是,我们为了使得系统具备更强的稳定性,避免过拟合,需要选择更强适应性的参数组合以及更少的参数数目,然后为了达到这一目的,往往又需要引入新的参数帮助我们进行决策。
因此,我想,无论是哪种交易模式,交易中想要长久盈利,关键是将策略构建于市场难以撼动的基本特征上。而在参数选择的层面,相较于“寻优”,我觉得“避劣”同样重要。就像,你很难知道是东北虎还是孟加拉虎将来在地球上生存得更久,但大概基因突变的白虎会最先消失(过度拟合的参数就如同白虎)。
完
原创声明:本文获作者授权发布,欢迎个人转发,谢绝媒体、公众号或网站未经授权转载。
本文首发于微信公众号:期7货小师妹。文章内容属作者个人观点,不代表和讯网立场。投资者据此操作,风险请自担。