如何避免程序化交易中的过度拟合
在建立量化交易模型的过程中,很多人都会经历过度拟合的情况。过度拟合其实是机器学习领域和统计学领域的一个概念。一般被用作表示一个模型在测试时表现的非常好,但是在实践过程却成绩却不如预期。
对于传统的机器学习来说过度拟合的影响不是很明显,但金融数据时间序列特征和数据的高噪音特性则决定了过度拟合会带来的巨大影响。所以,我们在进行建模时一定要严谨避免过度拟合的情况发生。
01 过度拟合产生的原因
程序化交易系统的设计过程包括两个部分,这两个部分都有可能造成过度拟合。
交易系统设计的第一部分是形成一个完整的交易规则体系。形成交易规则一般有自上而下和自下而上两种方法:自上而下的方法是基于对市场行情的长期观察总结出来规律,再在规律的基础之上形成数量化的交易策略,这一过程需要长时间交易经验的积累;
自下而上的方法是从市场数据出发,进行统计分析得出市场特征而形成的交易策略。
交易者在将交易系统用历史数据进行回测时,往往会根据测试结果对交易规则进行重新训练形成新的交易规则,或者对这些规则进行组合,这样产生的交易系统很容易是对市场数据的拟合。
同时在数量化实现交易系统的过程中,一般会采用参数来描述系统。设计者会通过增加参数个数和优化这些参数,寻找出最佳的交易系统。
如果参数个数较多或过度优化参数,往往就会产生对历史行情的完美过度拟合,而未来的绩效却大打折扣。
02 如何避免过度拟合
设计交易系统的目标是在未来实盘的行情中可以产生利润,而不是为了追求一条漂亮的历史测试曲线,过度拟合的交易系统是一个“美丽的陷阱”。如何逃离这个陷阱呢?我们认为可以从交易规则的形成和交易系统开发两大方面着手。
现代数学对金融市场的数据分析表明,时间价格序列包括两个部分:
第一部分是确定项,可以从中找出一定的规律;
第二部分是随机项,没有确定性的规律可言,出现某一现象只是概率性的。
当我们从市场历史行情中提取交易规则时,需要分析规则的逻辑性和规律性,交易规则需要能够反映市场的规律性,具有一定的合理性。
当交易者通过各种途径形成交易规则后,在具体的交易系统设计过程中,需要注意如下问题:
第一,增加历史测试数据样本容量,避免交易次数过少。
做商品期货的朋友都知道,如果通过分类品种的方式进行回测的话,不活跃的品种可能一年之内都没有多少次交易,即便是几年的时间下来也交易不到100次。这样少的交易量所作出的结果是没有意义的并且非常容易造成过度拟合。特别是套利类策略持仓的策略就会更加的长,一年也就几次的交易量,这样就更不可靠了。
所以我们在进行策略的回测时就要增加交易策略的次数,一般来说300次以上的交易次数才能证明策略是有效的。
第二,在测试时,将测试的数据样本分为样本内和样本外。
设计系统的时候采用样本内数据,然后用样本外数据测试得出的系统,如果效果大大降低,那么这种系统极有可能是拟合的。
第三,核心参数不宜过多。
参数过多的系统是一个多自由度系统,在优化多个参数之后总会得出一个漂亮的系统,但这种系统的可靠性是令人怀疑的。
第四,在对交易系统的参数进行优化时,我们需要对最优参数附近的参数进行考察。
如果附近参数系统的性能远差于最优参数的性能,那这个最优参数有可能是一个过度拟和的结果,数学上称为奇点解,是不稳定的。如果市场的特征稍微发生变化,最优参数可能会成为最差参数。
第五、保证一定的平均利润。
有些策略我们在验证之后会发现交易的次数比较多,业绩表现也不错,但是平均利润过低。有些朋友可能会觉得,平均利润低有什么关系呢,只要盈利就可以了。但是除了要注意盈利外还要有滑点的意识,如果平均盈利过低,那么就非常有可能受到滑点的影响。稳定盈利的量化交易策略最终也会变成稳定亏损的策略。