量化交易建模最重要的一个方面是避免过度拟合。过度拟合是统计学和机器学习领域的概念,指的是模型在训练数据中拟合程度很好,但在测试数据中表现却不如人意。
一.过度拟合的影响
传统的机器学习问题,此类过度拟合的不会很明显。比如对于分类问题,一般训练集准确度99%,测试集即使过度拟合也有95%,这其实影响并不会很大。但是对于金融数据而言,由于数据的高噪音及时间序列特征,训练数据和测试数据往往会有较大差异,如果建模过程不是很严谨,很容易出现严重的过度拟合现象,结果就是样本内稳定赚钱的策略,到了样本外就稳定亏钱。
二.如何避免过度拟合
避免过度拟合的思想需要贯穿在量化建模的整个过程中,每一个步骤都需要遵循客观严谨的原则。一个好的量化交易建模体系,必须能较好地克服过度拟合的情况,使得量化研究人员按照整个研发流程走下来得到的策略,就能够很好地避免过度拟合。根据我们的经验,可以通过以下几点来实现:
1.保证一定的交易次数
对于商品期货策略,如果分品种进行回测,部分不活跃品种可能一年都没有20次交易,几年下来总的交易次数不到100次,这样就难以形成统计意义,非常容易过度拟合。如果是套利类策略,持仓时间更长,可能一年才几次交易,结果的可靠性就更加存疑了。因此,对于这种情况,有必要多品种同时回测,增加策略的交易次数,一般有300次以上的交易次数才能比较好地证明策略有效性。
2.保证一定的平均利润
有些策略虽然交易次数多,效果也不错,但是平均利润过低,实盘交易中如果受到滑点的影响,很可能从稳定盈利变成稳定亏损。因此,需要保证一定的平均利润,最好有10倍买卖价差以上,才能更好地避免滑点带来的影响。
3.避免重复使用测试数据
一般来说测试数据只使用一次才是最准确的,否则,反复使用测试数据也会导致过度拟合的问题。即使建模后进行模拟交易,中低频一个月也没有很多交易,很难评价策略的好坏。因此,只能在建模中保证过程的严谨性,保证有1、2年完全样本外的测试数据,最后的结果才会真实可靠。
三.如何提高模型质量
当然,很多过度拟合的情况之所以会发生,是因为研究过程中难以得到令人满意的结果,比如正常套路建模得到的策略在样本外总是表现不好,很难得到样本外表现好的策略,久而久之,只好把样本外的数据放到样本内进行优化,才能得到好的结果。或者说交易次数多了平均利润就少了,两个条件无法同时满足。为此,我觉得有如下几个方法可以提高模型质量:
1.提高因子质量
因子是建模的基础,如果因子质量太差,无论模型再复杂,也无法得到好的结果。因此,可以逐个考察因子的质量。例如用单个因子建模,看是否会出现过度拟合的情况。正常来说,单个因子是结构最简单的模型,不会过度拟合的。如果单个因子建模质量不佳,说明这个因子或许只是随机噪音,可以及时剔除,不必放入模型。
2.优化筛选标准
在样本内挑选策略的时候,不必设置太苛刻的标准。如果标准太苛刻,反而会过度拟合到样本内的数据,很多时候无法泛化到样本外。而且,当个品种的策略与品种走势高度相关,如果品种走势不理想,策略长时间不盈利反而是正常现象,如果非要选择在不利行情都能表现好的策略,那么就大大增加了过度拟合的风险。
3.增加策略多样性
金融市场有句话说“过去的业绩不代表未来”,那么放到策略上就是“过去好的策略不代表未来还会好”。过去的投资组合理论喜欢用均值方差模型,但困难在于收益均值很难预测。因此,最近几年人们逐渐使用风险平价模型来代替。在选择策略的时候,不必对过往业绩做出过于苛刻的规定,否则容易得出相关性极高的策略。可以从各个维度来筛选策略,增加策略多样性。
4.金融数据的时间序列特征
由于金融数据的时间序列特征,建模的时候最好采取滚动向前的方法。为了保证训练集有足够的交易次数,训练时间也要足够长。如果测试结果对训练、测试集的划分过于敏感,很可能是长度不够交易次数不够导致的,这些都要小心。
综上所述,金融量化建模需要建立严谨的研究框架,从因子构造到投资组合优化整个流程都需要时刻避免过度拟合,这样最后的结果才会更为可靠。