新浪财经

【华泰金工林晓明团队】基于量价的人工智能选股体系概览——华泰人工智能系列之二十八

新浪财经

关注

来源:华泰金融工程

摘要

本文构建了基于量价的人工智能选股体系并测试其有效性

经过华泰金工前期报告的探索,我们认为人工智能模型已经可以很好融入多因子选股模型的因子生成和多因子合成步骤。在多因子模型的信息来源中,量价信息能提供海量的数据,是最适合AI技术运用的领域。本文构建了基于量价信息的全流程人工智能选股体系,主要包含三个步骤:(1) 遗传规划自动挖掘因子;(2) 机器学习模型进行多因子合成;(3) 机器学习模型的可解释性分析。在测试中,该体系能提供独立于传统多因子模型的增量超额收益。

步骤1:遗传规划自动挖掘因子——因子的适应度、增量信息和挖掘效率

因子是超额收益的来源。遗传规划通过暴力生成+进化的方式,从原始量价数据中挖掘选股因子。该步骤中有三个关键环节:(1)因子适应度的定义,如果以因子的RankIC作为适应度,则可以挖掘线性因子;如果以因子的互信息为适应度,则可以挖掘非线性因子。非线性因子可能描述了市场中更高维度的规律,如果能利用这种规律,则可能为现有体系提供增量的alpha信息。(2)挖掘增量信息需要引入因子正交化机制,为了避免频繁正交化带来的时间开销,我们提出以残差收益率为预测目标的增量信息挖掘方法。(3)提升因子挖掘的效率需要借助高性能计算的技术。

步骤2:机器学习模型进行多因子合成——强拟合能力和过拟合的权衡

相比线性模型,机器学习模型有更强的拟合能力,能够拟合非线性关系。实际应用中,需要在机器学习的强拟合能力和过拟合现象间寻找平衡点。针对机器学习模型易过拟合的缺点,我们引入特征选择和时序交叉验证调参。本文选择嵌入式特征选择方法——随机森林模型,在模型训练时自动进行特征选择,并使用时序交叉验证对模型的三个关键参数寻优。

步骤3:机器学习模型的可解释性分析——从“黑箱”到“白箱”

模型的可解释性是指人类能够理解其决策原因的程度。优秀的可解释性有助于打开机器学习模型的“黑箱”,提升人类对模型的信任,其重要性体现在:建模阶段,辅助研究人员理解模型,进行模型的对比选择,必要时优化调整模型;在投入运行阶段,向他人解释模型的内部机制和结果,并通过可解读的反馈结果不断优化模型。本文主要使用基于SHAP值的方法进行模型可解释性分析。

基于量价的人工智能选股能提供独立于传统多因子模型的增量超额收益

本文从日频量价信息出发,通过遗传规划滚动挖掘调仓周期为20个交易日的因子,并使用随机森林模型拟合得到合成因子。合成因子进行行业、市值、20日收益率、20日波动率、20日换手率五因子中性化后,RankIC均值为8.87%,IC_IR为1.16,分五层测试中TOP组合年化超额收益率为9.65%,信息比率为3.08。将合成因子叠加到使用传统因子的模型上后构建中证500增强选股组合,可使得组合的年化超额收益率平均提升1.38%,信息比率平均提升0.14。SHAP值可解释性分析显示,随机森林模型有效利用了遗传规划挖掘出的线性因子和非线性因子。

风险提示:通过人工智能模型构建的选股策略是历史经验的总结,存在失效的可能。遗传规划所得因子可能过于复杂,可解释性较低,使用需谨慎。机器学习模型存在过拟合的风险。机器学习模型解释方法存在过度简化的风险。

本文研究导读

自2017年6月以来,华泰金工在人工智能选股领域持续耕耘,在已发布的20多篇深度研究报告中,我们对人工智能运用于多因子选股进行了全方位的探索和论证。随着A股市场的风云变换和AI技术的持续发展,我们也观察到人工智能选股方法已逐渐在各个机构中得到实践,成为多因子模型的重要补充部分。继往开来,我们将在前期报告的基础上,梳理出一套基于量价信息的全流程人工智能选股体系,并在未来尝试不断改善体系中的各个环节。本文将主要关注以下内容:

1.目前人工智能技术能融入多因子选股的哪些环节?

2.如何构建基于量价的人工智能选股体系?体系中各个步骤的关键问题和解决方案是什么?

3.基于量价的人工智能选股体系测试效果如何?

人工智能融入多因子选股体系

从多因子选股到人工智能选股

多因子选股模型是当前最重要的定量管理模型之一,被广泛应用于构建主动量化、指数增强、量化对冲组合。多因子选股模型由套利定价模型(Arbitrage Pricing Theory,APT)发展而来,模型定量刻画了股票预期收益率与股票在每个因子上的因子载荷(风险敞口),以及每个因子每单位因子载荷(风险敞口)的因子收益率之间的线性关系,其一般表达式为:

上式本质上是一个截面上的线性回归模型,人们重点关注模型中各个因子的金融学逻辑和统计显著性,并对因子进行线性组合来得到预期收益。随着市场的演进和技术的进步,多因子模型的发展也在与时俱进,其中一个方向就是在流程中融入人工智能模型。

传统的多因子选股模型主要包含三个步骤:因子生成、多因子合成、组合优化和风险控制。作为一种截面上的统计模型,多因子选股模型与人工智能模型有诸多共通之处,可借助大量人工智能领域的方法来做改进。如图表1所示,经过华泰金工前期报告的探索,我们认为人工智能模型已经可以很好融入多因子选股模型的前两个步骤:因子生成和多因子合成。

1. 对于因子生成步骤,传统多因子研究中人们一般从市场可见的规律和投资经验入手,进行因子挖掘和改进,常见的因子如估值、成长、财务质量、波动率等都是通过这种方法研究得出的。遗传规划作为一种优秀的特征生成工具,能在海量数据中自动探索,通过“进化”的方式得出一些经过检验有效的选股因子,拓展了因子生成的可探索领域。

2. 对于多因子合成步骤,传统多因子模型中一般使用线性回归、ICIR加权等线性模型来合成因子,其优点是模型简单可控。在人工智能领域,则有各类机器学习模型(如随机森林、XGBoost、神经网络等)能替代线性模型来进行因子合成。相比线性模型,机器学习模型有更大的模型容量(capacity),可以利用大量数据和高维因子,并进行非线性关系拟合。

3. 对于组合优化和风险控制,目前主流的方法是基于Barra的多因子风险模型进行风险预测和管理,并结合二次规划模型进行组合优化。如何将人工智能模型运用于该步骤有待更加深入的研究,强化学习可能是一个方向(由于目前我们尚无具体的相关研究,图表1中该处标为浅红色)。强化学习目前被广泛用于序列决策相关的问题中,如AlphaGO(围棋AI)、AlphaStar(星际争霸AI)、自动驾驶等。多因子模型中,组合优化步骤会在每个截面上根据预期收益和预期风险给出投资组合权重,强化学习或许可以融入组合优化步骤,得出更优的投资组合权重。

基于量价的人工智能选股体系概览

量价数据是A股市场中最丰富的数据来源,从日频到Tick级别的量价数据描述了市场参与者在各个频率上的交易行为。由于A股市场并非完全有效的市场,众多投资者的交易行为造成了股票短期的定价偏差,使得从中获得超额收益成为可能。基于量价的量化策略尝试从各个频率上的交易行为中总结出市场规律,这种规律可以是基于严密逻辑推理得出的,也可以是基于人工智能模型自动挖掘得出的。通过科学的流程设计,人工智能模型可以自动挖掘市场中短期存在的量价规律,并利用海量的历史量价数据进行验证。如图表2所示,我们总结梳理了基于量价的人工智能选股体系,该体系囊括了多篇华泰金工人工智能选股报告的研究成果。

1. 原始量价数据:这里指个股在某个频率(从分钟频到日频)上的量价信息,包含开盘价、收盘价、最高价、最低价、成交量等,具体选用何种频率的量价数据,与策略的换手率有很大关系。

2. 遗传规划自动挖掘因子:遗传规划通过暴力生成+进化的方式,从原始量价数据中挖掘选股因子。本系列前期报告《基于遗传规划的选股因子挖掘》(2019.6.10)和《再探基于遗传规划的选股因子挖掘》(2019.8.7)中介绍了相关应用。该步骤包含以下关键点:

(1) 遗传规划中适应度的定义:我们认为在选股因子挖掘的过程中,适应度的定义是一个重要环节。如果以因子的RankIC作为适应度,则可以挖掘线性因子;如果以因子的互信息为适应度,则可以挖掘非线性因子。如图表3和图表4所示,不同于线性因子,非线性因子的收益和因子暴露之间并非为单调关系,该类因子可能描述了市场中更高维度的规律,如果能利用这种规律,则可能为现有体系提供增量的alpha信息。

方法(a)的问题在于对每个待计算适应度的因子来说,都要和已有因子进行正交化,这会造成过大的时间和计算资源的开销,使因子挖掘效率低下(经过测试,因子正交化所需时间约占适应度计算时间的70%)。而方法(b)只需要在每一轮因子挖掘前计算残差收益率即可,可以提升因子挖掘的效率。另外值得注意的是,方法(b)使用线性回归来计算残差收益率,但因变量中可能包含非线性因子,且因变量之间也不完全正交,此时可考虑使用核主成分分析(KPCA)对因变量进行非线性降维后得到正交的主成分,再计算残差收益率。关于核主成分分析的介绍和实证,请参见附录1。

(3)   提升因子挖掘的效率:遗传规划需要在有限时间内进行启发式搜索,算法的运行速度越快,则能遍历的可能情形越多,因此优化算法的运行速度可提升因子挖掘的效率。遗传规划中时间开销较大的步骤有两个:因子计算和适应度计算,对于因子计算速度的优化,可考虑以下方法:

a)      利用并行计算:例如遗传规划某一代中要遍历500个因子,可将500个因子平均分为10组,交给10个线程(或进程)并行计算。

b)      利用速度更快的语言或程序包:单个因子涉及到大量的矩阵运算,可考虑使用C/C++等高性能语言实现。对于Python来说也有一些高性能计算的程序包可以使用,例如Bottleneck,详细内容可参见附录2。

3. 机器学习模型进行因子合成:在这个步骤,我们使用机器学习模型(如随机森林、XGBoost、神经网络等)来替代线性模型进行因子合成。相比线性模型,机器学习模型有更大的模型容量,可以综合利用遗传规划挖掘出的线性和非线性因子。针对机器学习模型易过拟合的缺点,我们引入特征选择和时序交叉验证调参的方式来缓解过拟合。

(1)     特征选择:特征选择方法可以缓解模型的“维数灾难”,提升泛化能力。相比于传统的因子来说,通过遗传规划挖掘出的因子可解释性较差,因子存在失效的可能,因此特征选择变得更加重要。如图表5所示,特征选择的大类方法有过滤式、包裹式、嵌入式三类。

a)      过滤式:该方法先使用特征选择对原始特征集合进行“过滤”,再基于过滤后的特征训练模型,这一特征选择过程与后续模型的训练无关。

b)      包裹式:该方法考虑后续模型的性能并以之作为特征子集优劣的评价准则,包裹式特征选择为给定的模型“量身定做”了最优的特征子集,由于需要多次训练模型,该方法的时间成本远大于过滤式方法。

c)       嵌入式:将特征选择和后续模型训练融为一体,即在模型训练过程中自动完成特征选择,例如Lasso 回归、随机森林可视为嵌入式特征选择方法。

关于特征选择的更详细内容可参见本系列前期报告《人工智能选股之特征选择》(2018.7.25)。

(2)   时序交叉验证调参:交叉验证是选择模型最优超参数的重要步骤。由于股票因子在不同横截面上存在时间序列相关性,不满足样本独立同分布假设,所以使用传统交叉验证方法(如K折交叉验证)选择参数可能出现未来信息预测历史的“作弊”行为,我们推荐使用时序交叉验证调参,本系列前期报告《对抗过拟合:从时序交叉验证谈起》(2018.11.28)有过详细介绍。

4. 机器学习模型的可解释性:由于原理复杂,多数人倾向于认为机器学习模型是一个“黑箱”,然而近年来对于机器学习模型可解释性方面的研究也有较大进展。模型的可解释性是指人类能够理解其决策原因的程度。优秀的可解释性有助于打开机器学习模型的“黑箱”,提升人类对模型的信任,其重要性体现在:建模阶段,辅助研究人员理解模型,进行模型的对比选择,必要时优化调整模型;在投入运行阶段,向他人解释模型的内部机制和结果,并通过可解读的反馈结果不断优化模型。本系列前期报告《揭开机器学习模型的“黑箱”》(2020.2.6)有过详细介绍。

特征重要性:对于基于决策树的随机森林、XGBoost模型来说,都可以根据决策树的分裂准则计算特征重要性。特征重要性能够给出各个选股因子的“权重”,从而能得知模型做出决策的主导因素。

SHAP值:SHAP值(https://github.com/slundberg/shap)的概念源于博弈论,核心思想是计算特征对模型输出的边际贡献。SHAP值的原理可以这样通俗地理解:对于每个预测样本,模型都产生一个预测值,SHAP值就是该样本中每个特征所分配到的贡献数值。基于SHAP值可以构建一套完备的机器学习模型可解释性工具。由于SHAP值利用模型的预测结果进行解释,基于 SHAP值的模型解释是一种和模型无关的方法,即机器学习领域中的大多数模型都可以用SHAP值进行解释。目前SHAP值可以完成以下任务:

(1)     通过对比不同模型中各个因子的SHAP值,可得知模型对于因子的使用差异,从而辅助挑选合适的模型。

(2)     SHAP值能给出各个因子的作用方向(如因子是正向的、负向的、或是非线性的),使得研究人员能得知模型对于因子的使用是否符合预期。

SHAP值能分析因子之间的交互作用,从而辅助分析模型对多个因子的交互使用机制。

基于量价的人工智能选股体系测试流程

数据准备

1.       股票池:全A股,剔除ST、PT股票,剔除每个截面期下一交易日涨跌停和停牌的股票。

2.       原始数据为未经过特征工程的个股量价信息,如图表6所示。

3.       挖掘因子所需的函数列表如图表7所示。

使用遗传规划进行因子挖掘

以滚动方式挖掘因子:从2011年1月31日到2020年1月23日,每隔一年,使用过去6年的原始量价数据作为样本内数据挖掘因子。每次挖掘的流程如图表8所示,具体步骤如下:

1.       初始化种群:设置种群大小为500,进化代数为4代。使用图表6中的因子和图表7中的函数集,生成大量因子。

2.       公式适应度的计算:以挖掘增量信息为目标。第一轮挖掘时,以剔除风格因子(行业、市值、20日收益率、20日波动率、20日换手率)的残差收益率为预测目标,计算因子的适应度。从第二轮开始,以上一轮的残差收益率为预测目标,计算因子的适应度。

3.       因子适应度判断:计算因子和残差收益率之间的适应度 (RankIC或互信息),如果因子的适应度大于0.015,则因子进入备选池。

4.       按照遗传规划的流程逐代进化。

5.       备选因子筛选:在备选因子池中,计算两两因子间的相关系数,删除相关性高(因子截面相关系数绝对值在0.8以上)的两个因子中适应度偏低的因子,得到最终因子池。

6.       以收益率为因变量,全部已有因子为自变量,回归得到残差收益率,供下一轮因子挖掘使用。

重复以上(1)~(6)步,进行多轮因子挖掘,直到达到停止条件:预设的最大轮数或者不能挖出新因子,则停止。由于算力有限,本文设置最大轮数为5轮。

图表9展示了部分因子的表达式。图表10中为各个时间点挖掘出的因子数量。

使用机器学习模型合成因子

1.       模型选择:为了简单起见,本文选择嵌入式特征选择方法,即在模型训练时自动进行特征选择。这里我们选择随机森林模型,该模型具有非线性拟合能力,可以自动进行特征选择,且可通过行采样和列采样来缓解过拟合。

2.       特征预处理:

(1)     使用遗传规划挖掘出的因子作为特征。

(2)     中位数去极值:设第T期某因子在所有个股上的暴露度序列为                                               ,为该序列中位数,为序列的中位数,则将序列中所有大于的数重设为,将序列中所有小于的数重设为;

(3)     行业市值中性化:将填充缺失值后的因子暴露度对行业哑变量和取对数后的市值做线性回归,取残差作为新的因子暴露度;

(4)     标准化:将中性化处理后的因子暴露度序列减去其现在的均值、除以其标准差,得到一个新的近似服从N(0, 1)分布的序列。

3.       数据标注:使用经过标准化的个股未来20个交易日收益率。

4.       交叉验证调参和模型训练:从2011年1月31日到2020年1月23日,每隔半年,使用过去6年的数据作为样本内数据,进行时序交叉验证调参并用新参数重新训练模型,各个时间点的调参结果如图表10所示。

样本外预测:在每个样本外数据截面上,使用最新训练的模型预测个股20个交易日后的收益率。

组合构建和回测

对于随机森林模型合成的因子,进行以下测试:

1.       单因子IC测试和分层测试。分析因子的RankIC均值、ICIR、分层组合年化收益率等指标。

2.        构建行业市值中性的中证500增强策略进行回测。分析策略的年化超额收益率、信息比率、超额收益最大回撤等指标。

机器学习模型的可解释性分析

对训练好的模型分析特征重要性和SHAP值,从而得知因子在模型中的权重和作用方向。

测试结果

本章将对基于量价的人工智能选股体系进行详细测试。由于我们使用遗传规划挖掘因子并利用随机森林合成因子,测试的模型简称为“遗传规划+随机森林”模型。

“遗传规划+随机森林”模型的单因子IC测试

我们将“遗传规划+随机森林”模型在每个截面上的预测结果视为合成的单因子,进行单因子IC测试。测试方法如下:

1. 回测区间:2011年1月31日到2020年1月23日。

2. 截面期:每隔20个交易日,用当前截面期因子值与当前截面期至下个截面期内的个股收益计算RankIC 值。

3. 为了分析合成因子的增量信息,会展示因子进行行业、市值、20日收益率、20日波动率、20日换手率五因子中性化后的测试结果。

图表12~图表13展示了合成因子的IC测试结果,合成因子在进行了五因子中性后,RankIC均值为8.87%,IC_IR为1.16,增量信息显著。

“遗传规划+随机森林”模型的单因子分层测试

我们将“遗传规划+随机森林”模型在每个截面上的预测结果视为合成的单因子,进行单因子分5层测试。测试方法如下:

1.     股票池、回测区间、截面期均与IC测试一致。

2.     换仓:在每个截面期核算因子值,构建分层组合,在截面期下一个交易日按当日vwap换仓,交易费用为单边千分之二。

3.     分层方法:先将因子暴露度向量进行一定预处理,将股票池内所有个股按处理后的因子值从大到小进行排序,等分N层,每层内部的个股等权重配置。当个股总数目无法被N整除时采用任一种近似方法处理均可,实际上对分层组合的回测结果影响很小。分层测试中的基准组合为股票池内所有股票的等权组合。

4.     多空组合收益计算方法:用Top组每天的收益减去Bottom组每天的收益,得到每日多空收益序列                                               ,则多空组合在第n天的净值等于。

5.     为了分析合成因子的增量信息,会展示因子进行行业、市值、20日收益率、20日波动率、20日换手率五因子中性化后的测试结果。

图表14~图表15展示了合成因子的分层测试结果,合成因子在进行了五因子中性后,TOP组合年化超额收益率为9.65% ,信息比率为3.08,多空组合年化收益率为28.20%,多空组合夏普比率为3.08。合成因子增量信息显著。

“遗传规划+随机森林”模型构建行业市值中性的中证500增强策略

我们将“遗传规划+随机森林”模型在每个截面上的预测结果视为合成的单因子,构建相对于中证500 的行业、市值中性的全A 选股策略并进行回测,测试方法如下:

1.     股票池、回测区间、截面期均与IC测试一致。

2.     换仓:在每个截面期核算因子值,通过组合优化模型得到新的持仓股票和权重,在截面期下一个交易日按当日vwap换仓,交易费用为单边千分之二。

图表16~图表18展示了不同个股权重偏离情况下的回测结果。

“遗传规划+随机森林”模型增量超额收益分析

“遗传规划+随机森林”模型使用算法自动生成的因子来构建收益预测模型,其相对于使用传统因子构建的收益预测模型能提供多少超额收益?本节将进行分析。测试方法如下:

1.     股票池、回测区间、截面期均与IC测试一致。

2.     换仓:在每个截面期核算因子值,通过组合优化模型得到新的持仓股票和权重,在截面期下一个交易日按当日vwap换仓,交易费用为单边千分之二。

3.     对比的模型:

模型1:“遗传规划+随机森林”模型。

模型2:以估值、成长、财务质量、杠杆、动量反转、波动率、换手率、beta、股价、技术、一致预期共88个传统因子为输入因子,个股20个交易日收益率为拟合目标,使用XGBoost模型得到合成因子(详细模型构建方法可参见报告《人工智能选股之Boosting模型》,2017.9.11)。

模型3:将模型1得到的合成因子和模型2得到的合成因子等权相加。

我们主要对比模型2和模型3的表现,即观察使用传统因子的模型在叠加“遗传规划+随机森林”模型前后超额收益的变化。图表19~图表20展示了模型2和模型3在不同个股权重偏离情况下的回测结果,在4种情况下,模型3相比模型2年化超额收益率平均提升1.38%,信息比率平均提升0.14。

图表21展示了个股权重偏离上限=1.5%时模型2和模型3的超额收益对比。

机器学习模型的可解释性分析

本节将利用SHAP值进行可解释性分析。我们选取最新一次训练的随机森林模型(2019-07),在图表22和图表23中展示模型的|SHAP|均值和SHAP值。|SHAP|均值只反映因子的重要性,SHAP值则包含因子的方向信息。由于因子数量众多而篇幅有限,图中仅展示|SHAP|均值排名前30的因子。图表22中,因子的|SHAP|均值越大,表明因子的重要性越高。图表23中,若因子的颜色分布为严格的左蓝中紫右红,那么在模型中因子为正向的线性因子;若因子的颜色分布为严格的左红中紫右蓝,那么在模型中因子为反向的线性因子;若因子的颜色分布非以上两种情况之一,则模型在使用因子时呈现出一定非线性规律。

进一步地,我们对|SHAP|均值排名靠前的因子进行分析。对于2019年7月训练的模型来说,其利用的是2013年7月至2019年7月的因子数据,因此因子的分层测试区间也为2013年7月至2019年7月。

1. alpha125:ts_corr(sub(open,free_turn),close,10)

在图表24的alpha125的分层测试中,该因子为正向的线性因子,但第一层和第二层区分不大,且第二层比第一层稳定。如图表25所示,alpha125的SHAP值和因子取值的关系可分两部分来分析,当因子取值小于1时(主要对应分层测试的三、四、五层),SHAP值和因子取值近似为正向线性关系,这与因子的分层测试结果吻合。当因子取值大于1时(主要对应分层测试的一、二层),SHAP值随着因子取值的变大变化不大,甚至稍有下降,这也与因子的分层测试结果相呼应,而且模型倾向于给更稳定的第二层更高的SHAP值。以上分析说明随机森林模型对于alpha125的使用符合预期。

2. alpha89: rank_mul(turn, add(high, volume))

在图表26的alpha89的分层测试中,该因子为反向的线性因子,但第四层和第五层区分不大,且第四层比第五层稳定。如图表27所示,alpha89的SHAP值和因子取值的关系可分两部分来分析,当因子取值大于0时(主要对应分层测试的一、二、三层),SHAP值和因子取值为近似为负向线性关系,这与因子的分层测试结果吻合。当因子取值小于0时(主要对应分层测试的四、五层),SHAP值随着因子取值的变小变化不大,甚至稍有下降,这也与因子的分层测试结果吻合,而且模型倾向于给更稳定的第四层更高的SHAP值。以上分析说明随机森林模型对于alpha89的使用符合预期。

随机森林模型对于|SHAP|均值排名3、4、5的因子也基本呈现出线性的逻辑,这与alpha125和alpha89类似,本文不再赘述。接下来我们分析|SHAP|均值排名第6的因子alpha103,该因子为非线性因子。

3. alpha103: ts_corr(high,low,20)

在图表28的alpha103的分层测试中,因子的第二层到第五层的超额收益表现单调,但是第一层的超额收益表现位于中间,因子呈现出非线性特征。如图表29所示,alpha103的SHAP值和因子取值的关系可分两部分来分析,当因子取值小于0.5时(主要对应分层测试的二、三、四、五层),SHAP值和因子取值近似为正向线性关系,这与因子的分层测试结果吻合。当因子取值大于0.5时(主要对应分层测试的一、二层),SHAP值随着因子取值的变大而明显下降,这也与因子的分层测试结果相呼应,以上分析说明随机森林模型对于因子的使用符合预期,这同时也体现出了随机森林模型的非线性拟合能力。

结论和展望

本文在华泰金工人工智能系列前期报告的基础上,梳理出一套基于量价信息的全流程人工智能选股体系,完善了体系中的一些细节,并进行了实证。本文结论如下:

经过华泰金工前期报告的探索,我们认为人工智能模型已经可以很好融入多因子选股模型的因子生成和多因子合成步骤。在多因子模型的信息来源中,量价信息能提供海量的数据,是最适合AI技术运用的领域。本文构建了基于量价信息的全流程人工智能选股体系,主要包含三个步骤:(1) 遗传规划自动挖掘因子;(2) 机器学习模型进行多因子合成;(3) 机器学习模型的可解释性分析。在测试中,该体系能提供独立于传统多因子模型的增量超额收益。

步骤1:遗传规划自动挖掘因子——因子的适应度、增量信息和挖掘效率。因子是超额收益的来源,遗传规划通过暴力生成+进化的方式,从原始量价数据中挖掘选股因子。该步骤中有三个关键环节:(1)因子适应度的定义,如果以因子的RankIC作为适应度,则可以挖掘线性因子;如果以因子的互信息为适应度,则可以挖掘非线性因子。非线性因子可能描述了市场中更高维度的规律,如果能利用这种规律,则可能为现有体系提供增量的alpha信息。(2)挖掘增量信息需要引入因子正交化机制,为了避免频繁正交化带来的时间开销,我们提出以残差收益率为预测目标的增量信息挖掘方法。(3)提升因子挖掘的效率需要借助高性能计算的技术。

步骤2:机器学习模型进行多因子合成——强拟合能力和过拟合的权衡。相比线性模型,机器学习模型有更强的拟合能力,能够拟合非线性关系。实际应用中,需要在机器学习的强拟合能力和过拟合现象间寻找平衡点。针对机器学习模型易过拟合的缺点,我们引入特征选择和时序交叉验证调参。本文选择嵌入式特征选择方法——随机森林模型,在模型训练时自动进行特征选择,并使用时序交叉验证对模型的三个关键参数寻优。

步骤3:机器学习模型的可解释性分析——从“黑箱”到“白箱”。模型的可解释性是指人类能够理解其决策原因的程度。优秀的可解释性有助于打开机器学习模型的“黑箱”,提升人类对模型的信任,其重要性体现在:建模阶段,辅助研究人员理解模型,进行模型的对比选择,必要时优化调整模型;在投入运行阶段,向他人解释模型的内部机制和结果,并通过可解读的反馈结果不断优化模型。本文主要使用基于SHAP值的方法进行模型可解释性分析。

基于量价的人工智能选股能提供独立于传统多因子模型的增量超额收益。本文从日频量价信息出发,通过遗传规划滚动挖掘调仓周期为20个交易日的因子,并使用随机森林模型拟合得到合成因子。合成因子进行行业、市值、20日收益率、20日波动率、20日换手率五因子中性化后,RankIC均值为8.87%,IC_IR为1.16,分五层测试中TOP组合年化超额收益率为9.65%,信息比率为3.08。将合成因子叠加到使用传统因子的模型上后构建中证500增强选股组合,可使得组合的年化超额收益率平均提升1.38%,信息比率平均提升0.14。SHAP值可解释性分析显示,随机森林模型有效利用了遗传规划挖掘出的线性因子和非线性因子。

风险提示

通过人工智能模型构建的选股策略是历史经验的总结,存在失效的可能。遗传规划所得因子可能过于复杂,可解释性较低,使用需谨慎。机器学习模型存在过拟合的风险。机器学习模型解释方法存在过度简化的风险。

附录1:核主成分分析简介

一般来说,主成分分析(Principal Components Analysis, PCA)适用于数据的线性降维。而核主成分分析(Kernel PCA, KPCA)可实现数据的非线性降维,可用于处理线性不可分的数据集。如图表30所示,KPCA的流程是:对于输入空间中的特征X,先用一个非线性映射把X映射到一个高维甚至是无穷维的空间,使其线性可分,然后在这个高维空间进行PCA降维。

与支持向量机SVM类似,运用KPCA时需要选择核函数,常用的核函数有:

为了形象化展示KPCA的效果,我们使用一个sklearn官网的例子来说明。如图表32所示,在二维空间中生成400个具有圆形决策边界的样本数据,红色样本点标签为0,蓝色样本点标签为1(图表32左上方)。显然原始数据是非线性可分的,PCA降维后数据依然非线性可分(图表32右上方)。而KPCA(RBF核)通过非线性映射ϕ将原始数据映射到高维空间后,能够对其进行线性降维(图表32左下方),且KPCA的高维特征空间经过逆转换得到的样本空间与原始空间具有很高的相似性(图表32右下方),说明KPCA对非线性可分数据的降维效果较好。

(

https://scikit-learn.org/stable/auto_examples/decomposition/plot_kernel_pca.html#sphx-glr-auto-examples-decomposition-plot-kernel-pca-py)

图表33展示了三组测试在多个截面上的平均拟合优度和显著性。可以看出,KPCA+线性回归的拟合优度和显著性最高,对增量信息的提纯效果最好。

附录2

遗传规划中,因子使用公式化的方式来表示,计算因子的过程即调用相应的函数(主要是统计类函数) 进行矩阵运算的过程,因此加快矩阵运算的速度可以为算法提速。Bottleneck (https://pypi.org/project/Bottleneck/)是用C语言编写的加速numpy矩阵运算的函数集合。可以完成numpy矩阵的常用数学与统计运算(如求和、均值、方差,以及它们的滚动计算等),并且速度更快。可使用命令pip install bottleneck安装。

Bottleneck能在多种运算函数上比numpy自带函数更快,图表34展示了二者速度的对比,表中的数字代表Bottleneck相比numpy的速度倍数。可以看出在绝大多数场景下Bottleneck有更优性能。

免责申明

本报告仅供华泰证券股份有限公司(以下简称“本公司”)客户使用。本公司不因接收人收到本报告而视其为客户。

本报告基于本公司认为可靠的、已公开的信息编制,但本公司对该等信息的准确性及完整性不作任何保证。本报告所载的意见、评估及预测仅反映报告发布当日的观点和判断。在不同时期,本公司可能会发出与本报告所载意见、评估及预测不一致的研究报告。同时,本报告所指的证券或投资标的的价格、价值及投资收入可能会波动。本公司不保证本报告所含信息保持在最新状态。本公司对本报告所含信息可在不发出通知的情形下做出修改,投资者应当自行关注相应的更新或修改。

本公司力求报告内容客观、公正,但本报告所载的观点、结论和建议仅供参考,不构成所述证券的买卖出价或征价。该等观点、建议并未考虑到个别投资者的具体投资目的、财务状况以及特定需求,在任何时候均不构成对客户私人投资建议。投资者应当充分考虑自身特定状况,并完整理解和使用本报告内容,不应视本报告为做出投资决策的唯一因素。对依据或者使用本报告所造成的一切后果,本公司及作者均不承担任何法律责任。任何形式的分享证券投资收益或者分担证券投资损失的书面或口头承诺均为无效。

本公司及作者在自身所知情的范围内,与本报告所指的证券或投资标的不存在法律禁止的利害关系。在法律许可的情况下,本公司及其所属关联机构可能会持有报告中提到的公司所发行的证券头寸并进行交易,也可能为之提供或者争取提供投资银行、财务顾问或者金融产品等相关服务。本公司的资产管理部门、自营部门以及其他投资业务部门可能独立做出与本报告中的意见或建议不一致的投资决策。

本报告版权仅为本公司所有。未经本公司书面许可,任何机构或个人不得以翻版、复制、发表、引用或再次分发他人等任何形式侵犯本公司版权。如征得本公司同意进行引用、刊发的,需在允许的范围内使用,并注明出处为“华泰证券研究所”,且不得对本报告进行任何有悖原意的引用、删节和修改。本公司保留追究相关责任的权力。所有本报告中使用的商标、服务标记及标记均为本公司的商标、服务标记及标记。

本公司具有中国证监会核准的“证券投资咨询”业务资格,经营许可证编号为:91320000704041011J。

全资子公司华泰金融控股(香港)有限公司具有香港证监会核准的“就证券提供意见”业务资格,经营许可证编号为:AOK809

©版权所有2019年华泰证券股份有限公司

林晓明

执业证书编号:S0570516010001

华泰金工深度报告一览

加载中...