新浪财经

【华泰金工林晓明团队】因子观点融入机器学习——华泰人工智能系列之四十三

新浪财经

关注

来源:华泰金融工程

林晓明   S0570516010001    

              SFC No. BPY421    研究员

李子钰   S0570519110003    研究员

何康       S0570520080004   研究员

王晨宇    S0570119110038   联系人

报告发布时间:2021年3月10日

摘要

本文构建了可融入因子观点的随机森林模型,提升了随机森林的灵活性

相比线性模型,机器学习模型的复杂程度大幅提升,模型对于历史数据的拟合能力变强,但灵活性下降。在动态演化的金融市场中,机器学习的这些特性使其备受挑战。为了提升模型的灵活性,我们改进了sklearn的随机森林模型,可指定优先分裂的因子来分裂决策树,从而人为增大优先因子的重要性。最后,我们以价值、成长、质量为优先分裂因子分别训练模型,构建了中证800价值、中证800成长、中证800质量三个组合,该测试能为构建结合机器学习的SmartBeta策略提供一种思路。

面对量化投资中的挑战,如何提升机器学习的灵活性值得关注

2020年2季度,知名资产管理公司AQR发表了论文《Can Machines“Learn” Finance?》,文中列举了机器学习在金融投资领域面临的挑战:(1) 模型的可解释性;(2) 金融市场的低信噪比;(3) 市场始终在演化。对于因子投资,在一个因子有效性持续变化的市场中,线性模型具有简单灵活的优势。而机器学习模型由于结构复杂,灵活性相比线性模型大幅下降。具体表现为模型在历史数据上训练好之后不易调整,一旦市场环境发生变化,模型面临失效的风险,投资者想调整却无从下手。因此,本文着重讨论如何改进现有机器学习模型来提升灵活性。

随机森林模型改进:可指定优先分裂的因子

随机森林模型具有非线性拟合能力强和可解释性较强的优势,但对于动态演化的金融市场来说,标准的随机森林模型依然难以供投资者做主观调整。为了将因子观点融入模型,我们针对sklearn中的随机森林源码做了修改,使得模型中的决策树可在顶端的若干层根据指定的优先因子进行分裂,人为增大这些因子的重要性。改进后的模型新增了两个参数(1)speci_features:优先分裂的因子;(2)max_speci_depth:在决策树顶部使用优先因子分裂的层数。

选股组合测试:以价值、成长、质量为优先分裂因子分别构建模型

本文使用改进后的随机森林模型构建特定风格的组合,主要选取三类风格因子为优先分裂因子:价值、成长和财务质量。在中证800成分股内,我们构建了中证800价值、中证800成长、中证800质量三个月频调仓的组合,测试了不同max_speci_depth下模型的表现。以价值因子为例,其他参数不变的情况下,随着max_speci_depth的增大,价值因子在模型里的重要性上升。本文的选股组合测试能为构建结合机器学习的SmartBeta策略提供一种思路。

风险提示:通过随机森林模型构建选股策略是历史经验的总结,存在失效的可能。模型可解释性方法可能存在过度简化的风险。

机器学习模型在量化投资应用中的挑战

2020年2季度,知名资产管理公司AQR在Journal Of Investment Management上发表了论文《Can Machines“Learn” Finance?》,讨论了机器学习模型在量化投资应用中的可行性。虽然机器学习在许多领域已经大获成功,然而在金融投资领域依然面临诸多挑战,文中列举如下:

模型的可解释性

相比线性模型,机器学习模型的复杂程度大幅提升,使得模型的可解释性降低,成为“黑箱”。机器学习的这一“黑箱”属性在一些行业或许并不构成问题,然而,资管行业的特殊性在于,资产管理人有义务理解并告知委托人投资策略的风险所在,此时模型的可解释性就显得尤为关键。幸运的是,目前业界有大量关于机器学习模型可解释性研究的成果,我们在前期报告《揭开机器学习模型的“黑箱”》(2020.2.6)做了详细讨论。

金融市场的低信噪比

对于量化投资,金融市场的一大特征就是低信噪比(Low Signal-to-noise Ratio)。一方面有效信号往往淹没在繁多的噪声中。另一方面,由于交易行为的存在,金融市场的低信噪比特征将会长期持续。例如,一个有效的多头信号会伴随着投资者的交易而推升股价,从而持续削弱该信号的有效性,市场的表现越来越接近有效市场假说。

市场始终在演化

金融市场不仅呈现出低信噪比特征,还存在不断演化的现象。具体表现为市场本身的交易行为和内外部环境的变化都将持续影响信号的有效性,使得对于收益率的预测问题是非平稳的(non-stationary)。机器学习的优势在于学习稳定且可外推至未来的规律,而在非平稳的环境中,机器学习容易对噪声过拟合。

以因子投资为例,图表1为中证800成分股内各大类风格因子的累积RankIC,可知风格因子的表现有很大的不稳定性。市值因子在2017年前后的表现截然相反,从小市值风格变为大市值风格。估值因子在2019年前长期有效,2019年出现持续回撤。2017年后,动量反转、波动率、换手率因子的有效性相比之前大幅减弱。近两年表现较好的成长和财务质量因子在更早的时间则有一些波动。总体来看,风格因子的表现并不稳定。

在一个因子有效性持续变化的市场中,线性模型具有简单灵活的优势,传统的线性收益预测模型为:

然而机器学习模型由于结构复杂,灵活性相比线性模型大幅下降。具体表现为机器学习模型在历史数据上训练好之后不易调整,一旦市场环境发生变化,模型面临失效的风险,投资者想调整模型却无从下手。

此外,我们在将机器学习应用于因子投资时发现,如果将量价类因子和基本面因子一起输入模型,量价类因子往往具有过大的权重,这对于倾向于使用基本面因子的投资者来说并非是一个理想的结果。而机器学习模型灵活性低的特性又导致投资者难以通过模型调整来增大基本面因子的权重。

例如,我们以82个因子(因子详细列表参见附录)作为输入,使用过去2年的月频数据,在中证800内训练随机森林模型,得到因子重要性排名前10的因子如图表2所示,可知量价类因子占了80%(蓝色背景),权重过高。

综上所述,考虑到金融市场具有信噪比低和不断演化的特点,如何提升机器学习模型的灵活性使得投资者对模型更加可控,将是本文的研究重点。我们将基于随机森林模型,从源代码层面进行改进,使投资者可以指定当前需要重配的因子,实现因子观点融入机器学习。

随机森林模型改进:可指定优先分裂的因子

在华泰金工人工智能选股系列报告中,我们经过测试对比,认为基于决策树的机器学习模型(如随机森林、Boosting)最适合结合传统多因子数据构建选股模型,其具有非线性拟合能力强和可解释性较强的优势。因此本文针对随机森林进行改进。

随机森林模型简介

随机森林(Random Forest)是一种由诸多决策树通过Bagging的方式组成的分类器。如图表3所示,我们由原始数据集生成N个Bootstrap数据集,对于每个Bootstrap数据集分别训练一个弱分类器,最终用投票、取平均值等方法组合成强分类器。

随机森林模型中的基本单元是决策树。决策树的构建完全基于数据驱动,模型寻找输入特征中信息增益最大的分裂方式来分裂决策树,直到分裂停止。通过多层的决策树分裂,模型可对历史数据做高精度的拟合,但对于动态演化的金融市场来说,对历史数据的高精度拟合未必能保证外推性。决策树的复杂性也使得投资者难以对已训练好的模型进行调整。

Python程序包sklearn提供了方便可调用的随机森林模型,模型的主要参数如下:

可指定优先分裂因子的随机森林模型

为了构建可指定优先分裂因子的随机森林模型,我们针对sklearn中的随机森林源码做了修改,使得模型中的决策树可在顶端的若干层根据指定的因子进行分裂,人为增大这些因子的重要性。

如图表5所示,假设决策树总共有5层,我们设定决策树的前3层只能使用成长类因子(ROE_G_q,Sales_G_q,Profit_G_q,OCF_G_q,因子详细说明请参见附录)分裂,则决策树的前3层只包含成长类因子,第4层和第5层才用其他因子分裂。这样构建的决策树中,成长类因子起到了主导作用,从而达到了向模型输入成长因子偏好的目的。

修改后的随机森林主要参数如下,我们新增了两个参数speci_features和max_speci_depth。

sklearn源码修改要点

sklearn(https://github.com/scikit-learn)是机器学习领域最著名的开源项目。该项目使用Python语言作为各个模块的上层封装,对于追求高性能的底层算法,则使用Cython语言(Cython通过类似Python的语法来编写C语言扩展并可以被Python调用)来实现。Cython的程序文件主要包含两种后缀名形式pxd和pyx:

1. pxd文件是Python扩展模块头文件,类似于C语言的.h头文件。

2. pyx文件是Python 扩展模块源代码文件,类似于C语言的.c源代码文件。

我们针对sklearn主要做了以下文件的修改:

修改完成后,需要重新编译整个项目才能让修改生效。

选股组合测试:以某类风格因子为优先分裂因子

本章我们以某类风格因子为优先分裂因子,使用改进后的随机森林模型构建特定风格的组合。主要选取三类风格因子为优先分裂因子:价值、成长和财务质量。本章的测试能为构建结合机器学习的SmartBeta策略提供一种思路。

本章的测试流程如下:

1. 样本空间:中证800成分股。

2. 回测区间:2011年1月31日至2021年2月26日。

3. 因子库:包含估值、成长、财务质量、杠杆、市值、动量反转、波动率、换手率、一致预期等13大类因子(因子详细说明请参见附录),共82个因子。对因子做去极值、缺失值填充、中性化、标准化的预处理。

4. 预测目标:个股一个月后标准化的收益率。

5. 模型训练:模型进行月度滚动训练,每次训练使用过去24个月的因子数据。

6. 组合构建:月频调仓,每个月最后一个交易日模型打分最高的前100只股票,按照流通市值加权的方法,在下一交易日按收盘价调仓,交易成本为双边千分之四。

中证800价值组合:优先分裂因子为价值类因子

本节我们选取8个价值类因子为优先分裂因子:EP、EPcut、BP、SP、NCFP、OCFP、DP、G/PE(因子详细说明请参见附录)。随机森林的参数设置如下:

模型训练后的特征重要性分析如下,可知排名前8的因子都是价值类因子。

大类因子的特征重要性统计如下,max_speci_depth=4时,价值类因子的特征重要性更高。

max_speci_depth=4的情况下,观察模型中某棵决策树的结构,可知决策树的前4层都使用价值因子来分裂,只有到第5层才使用其他因子(rsi,ln_price,CON_NP_REL,std_3m)。也就是说,模型的选股逻辑由价值因子主导,使用价值因子做了4层判断之后,其他因子对于选股的决策才会起到作用。

中证800成长组合:优先分裂因子为成长类因子

本节我们选取4个成长类因子为优先分裂因子:ROE_G_q,Sales_G_q,Profit_G_q,OCF_G_q (因子详细说明请参见附录)。随机森林的参数设置如下:

模型训练后的特征重要性分析如下,可知排名前4的因子都是成长类因子。

大类因子的特征重要性统计如下,max_speci_depth=4时,成长类因子的特征重要性更高。

max_speci_depth=4的情况下,观察模型中某棵决策树的结构,可知决策树的前4层都使用成长因子来分裂,只有到第5层才使用其他因子(wgt_return_12m,std_FF3factor_12m,bias_turn_12m,return_6m)。

中证800质量组合:优先分裂因子为财务质量类因子

本节我们选取12个财务质量类因子为优先分裂因子:ROE_q,ROE_ttm,ROA_q,ROA_ttm,grossprofitmargin_q,grossprofitmargin_ttm,profitmargin_q,profitmargin_ttm,assetturnover_q,assetturnover_ttm,operationcashflowratio_q,operationcashflowratio_ttm (因子详细说明请参见附录)。随机森林的参数设置如下:

模型训练后的特征重要性分析如下,max_speci_depth=4时,排名前12的因子都是财务质量类因子。max_speci_depth=3时,其他因子的重要性上升。

大类因子的特征重要性统计如下,max_speci_depth=4时,财务质量类因子的特征重要性更高。

max_speci_depth=4的情况下,观察模型中某棵决策树的结构,可知决策树的前4层都使用财务质量类因子来分裂,只有到第5层才使用其他因子(ln_price,OCFP,CON_BP,CON_GPE_REL)。

总结

本文总结如下:

1. 面对量化投资中的挑战,如何提升机器学习的灵活性值得关注。2020年2季度,知名资产管理公司AQR发表了论文《Can Machines“Learn”Finance?》,文中列举了机器学习在金融投资领域面临的挑战:(1) 模型的可解释性;(2) 金融市场的低信噪比;(3) 市场始终在演化。对于因子投资,在一个因子有效性持续变化的市场中,线性模型具有简单灵活的优势。而机器学习模型由于结构复杂,灵活性相比线性模型大幅下降。具体表现为模型在历史数据上训练好之后不易调整,一旦市场环境发生变化,模型面临失效的风险,投资者想调整却无从下手。因此,本文着重讨论如何改进现有机器学习模型来提升灵活性。

2. 随机森林模型改进:可指定优先分裂的因子。随机森林模型具有非线性拟合能力强和可解释性较强的优势,但对于动态演化的金融市场来说,标准的随机森林模型依然难以供投资者做主观调整。为了将因子观点融入模型,我们针对sklearn中的随机森林源码做了修改,使得模型中的决策树可在顶端的若干层根据指定的优先因子进行分裂,人为增大这些因子的重要性。改进后的模型新增了两个参数(1)speci_features:优先分裂的因子;(2)max_speci_depth:在决策树顶部使用优先因子分裂的层数。

3. 选股组合测试:以价值、成长、质量为优先分裂因子分别构建模型。本文使用改进后的随机森林模型构建特定风格的组合,主要选取三类风格因子为优先分裂因子:价值、成长和财务质量。在中证800成分股内,我们构建了中证800价值、中证800成长、中证800质量三个月频调仓的组合,测试了不同max_speci_depth下模型的表现。以价值因子为例,其他参数不变的情况下,随着max_speci_depth的增大,价值因子在模型里的重要性上升。本文的选股组合测试能为构建结合机器学习的SmartBeta策略提供一种思路。

风险提示

通过随机森林模型构建选股策略是历史经验的总结,存在失效的可能。模型可解释性方法可能存在过度简化的风险。

参考文献

[1] Ronen Israel, BryanKelly, Tobias Moskowitz. Can Machines “Learn” Finance? Journal of Investment Management,Vol. 18, No. 2, (2020), pp. 23–36.

附录: 因子列表

因子列表

因子列表

本文的随机森林模型所使用的因子列表如下:

免责声明与评级说明

公众平台免责申明

本公众平台不是华泰证券研究所官方订阅平台。相关观点或信息请以华泰证券官方公众平台为准。根据《证券期货投资者适当性管理办法》的相关要求,本公众号内容仅面向华泰证券客户中的专业投资者,请勿对本公众号内容进行任何形式的转发。若您并非华泰证券客户中的专业投资者,请取消关注本公众号,不再订阅、接收或使用本公众号中的内容。因本公众号难以设置访问权限,若给您造成不便,烦请谅解!本公众号旨在沟通研究信息,交流研究经验,华泰证券不因任何订阅本公众号的行为而将订阅者视为华泰证券的客户。

本公众号研究报告有关内容摘编自已经发布的研究报告的,若因对报告的摘编而产生歧义,应以报告发布当日的完整内容为准。如需了解详细内容,请具体参见华泰证券所发布的完整版报告。

本公众号内容基于作者认为可靠的、已公开的信息编制,但作者对该等信息的准确性及完整性不作任何保证,也不对证券价格的涨跌或市场走势作确定性判断。本公众号所载的意见、评估及预测仅反映发布当日的观点和判断。在不同时期,华泰证券可能会发出与本公众号所载意见、评估及预测不一致的研究报告。

在任何情况下,本公众号中的信息或所表述的意见均不构成对客户私人投资建议。订阅人不应单独依靠本订阅号中的信息而取代自身独立的判断,应自主做出投资决策并自行承担投资风险。普通投资者若使用本资料,有可能会因缺乏解读服务而对内容产生理解上的歧义,进而造成投资损失。对依据或者使用本公众号内容所造成的一切后果,华泰证券及作者均不承担任何法律责任。

本公众号版权仅为华泰证券股份有限公司所有,未经公司书面许可,任何机构或个人不得以翻版、复制、发表、引用或再次分发他人等任何形式侵犯本公众号发布的所有内容的版权。如因侵权行为给华泰证券造成任何直接或间接的损失,华泰证券保留追究一切法律责任的权利。本公司具有中国证监会核准的“证券投资咨询”业务资格,经营许可证编号为:91320000704041011J。

加载中...