在统计学中,过适现象(英语:overfitting,或称:过度拟合)是指在调适一个统计模型时,使用过多参数。对比于可取得的资料总量来说,一个荒谬的模型模型只要足够复杂,是可以完美地适应资料。过适一般可以识为违反奥卡姆剃刀原则。当可选择的参数的自由度超过资料所包含资讯内容时,这会导致最后(调适后)模型使用任意的参数,这会减少或破坏模型一般化的能力更甚于适应资料。过适的可能性不只取决于参数个数和资料,也跟模型架构与资料的一致性有关。此外对比于资料中预期的噪声或错误数量,跟模型错误的数量也有关。

在建立量化交易模型的过程中,很多人都会经历过度拟合的情况。过度拟合其实是机器学习领域和统计学领域的一个概念。一般被用作表示一个模型在测试时表现的非常好,但是在实践过程却成绩却不如预期。

对于传统的机器学习来说过度拟合的影响不是很明显,但金融数据时间序列特征和数据的高噪音特性则决定了过度拟合会带来的巨大影响。所以,我们在进行建模时一定要严谨避免过度拟合的情况发生。

过度拟合产生的原因

程序化交易系统的设计过程包括两个部分,这两个部分都有可能造成过度拟合。

交易系统设计的第一部分是形成一个完整的交易规则体系。形成交易规则一般有自上而下和自下而上两种方法:自上而下的方法是基于对市场行情的长期观察总结出来规律,再在规律的基础之上形成数量化的交易策略,这一过程需要长时间交易经验的积累;

自下而上的方法是从市场数据出发,进行统计分析得出市场特征而形成的交易策略。

交易者在将交易系统用历史数据进行回测时,往往会根据测试结果对交易规则进行重新训练形成新的交易规则,或者对这些规则进行组合,这样产生的交易系统很容易是对市场数据的拟合。

同时在数量化实现交易系统的过程中,一般会采用参数来描述系统。设计者会通过增加参数个数和优化这些参数,寻找出最佳的交易系统。

如果参数个数较多或过度优化参数,往往就会产生对历史行情的完美过度拟合,而未来的绩效却大打折扣。

如何避免过度拟合

设计交易系统的目标是在未来实盘的行情中可以产生利润,而不是为了追求一条漂亮的历史测试曲线,过度拟合的交易系统是一个“美丽的陷阱”。如何逃离这个陷阱呢?我们认为可以从交易规则的形成和交易系统开发两大方面着手。

现代数学对金融市场的数据分析表明,时间价格序列包括两个部分:

第一部分是确定项,可以从中找出一定的规律;

第二部分是随机项,没有确定性的规律可言,出现某一现象只是概率性的。

当我们从市场历史行情中提取交易规则时,需要分析规则的逻辑性和规律性,交易规则需要能够反映市场的规律性,具有一定的合理性。

当交易者通过各种途径形成交易规则后,在具体的交易系统设计过程中,需要注意如下问题:

第一,增加历史测试数据样本容量,避免交易次数过少。

回测的目标是提供证据,佐以证明通过以上流程所确定的策略,无论是应用于历史(训练)数据还是测试数据(注5)均可盈利。它可以反映该策略未来在“真实世界”中的预期表现。由于种种原因,回溯测试不能保证一定成功。这或许就是量化交易最为微妙之处,由于它包含了大量的偏差,我们必须尽尽力仔细审查并剔除它们。我们将讨论几种常见类型的偏差,包括先窥偏差(注6)、幸存者偏差(注7)与优化偏差(亦称“数据窥视偏差”,注8)。回溯测试中其他几个重要方面,包括历史数据的可用性与清洁度、真实交易成本及可靠回测平台上的决定。我们会在后续“交割系统”一节深入讨论交易成本。

策略一旦确定,我们就需要获取历史数据,并藉此展开测试,如有可能还可改进策略。现在卖数据的很多,所有资产类型的数据都有。通常,数据的质量、深度、时间间隔不同,其价格也不同。刚入门的量化交易员(至少零售等级)最初使用雅虎金融板块(YahooFinance)的免费数据就行。对于数据供应商,这里不再赘言。我想重点谈一谈处理历史数据时,时常遇到的问题。

 对于历史数据,人们主要关心的问题,包括数据精度或清洁度、幸存者偏差、应对如分发红利、拆分股票等公司行为的调整。

 精度与数据整体质量有关,无论数据是否包含错误。有时错误容易识别,比如使用一个窄带滤波器(注9),就可以找出时间序列数据中的“窄带”并更正它们。其他时候,错误又很难甄别,经常需要根据多个数据供应商提供的数据进行对比检查。幸存者偏差通常是免费数据集或廉价数据集的一个”特征“。对于一个带有幸存者偏差的数据集,它不包含已经不再交易的资产数据。 

做商品期货的朋友都知道,如果通过分类品种的方式进行回测的话,不活跃的品种可能一年之内都没有多少次交易,即便是几年的时间下来也交易不到100次。这样少的交易量所作出的结果是没有意义的并且非常容易造成过度拟合。特别是套利类策略持仓的策略就会更加的长,一年也就几次的交易量,这样就更不可靠了。

所以我们在进行策略的回测时就要增加交易策略的次数,一般来说300次以上的交易次数才能证明策略是有效的。

第二,在测试时,将测试的数据样本分为样本内和样本外。

设计系统的时候采用样本内数据,然后用样本外数据测试得出的系统,如果效果大大降低,那么这种系统极有可能是拟合的。

第三,核心参数不宜过多。

参数过多的系统是一个多自由度系统,在优化多个参数之后总会得出一个漂亮的系统,但这种系统的可靠性是令人怀疑的。

第四,在对交易系统的参数进行优化时,我们需要对最优参数附近的参数进行考察。

如果附近参数系统的性能远差于最优参数的性能,那这个最优参数有可能是一个过度拟和的结果,数学上称为奇点解,是不稳定的。如果市场的特征稍微发生变化,最优参数可能会成为最差参数。

第五、保证一定的平均利润。

有些策略我们在验证之后会发现交易的次数比较多,业绩表现也不错,但是平均利润过低。有些朋友可能会觉得,平均利润低有什么关系呢,只要盈利就可以了。但是除了要注意盈利外还要有滑点的意识,如果平均盈利过低,那么就非常有可能受到滑点的影响。稳定盈利的量化交易策略最终也会变成稳定亏损的策略。