人工智能
系列
十三
基于
遗传
规划
因子
挖掘
20190807
证券
32
谨请参阅尾页重要声明及华泰证券股票和行业评级标准 1 证券研究报告证券研究报告金工研究/深度研究 2019年08月07日 林晓明林晓明 执业证书编号:S0570516010001 研究员 0755-82080134 陈烨陈烨 执业证书编号:S0570518080004 研究员 010-56793942 李子钰李子钰 0755-23987436 联系人 何康何康 021-28972039 联系人 1金工金工:养老目标基金的中国市场开发流程养老目标基金的中国市场开发流程2019.07 2金工金工:如何有效判断真正的周期拐点?如何有效判断真正的周期拐点?2019.07 3金工金工:博观约取:价值和成长博观约取:价值和成长 Smart Beta2019.07 再探基于遗传规划的选股因子挖掘再探基于遗传规划的选股因子挖掘 华泰人工智能系列之二十三本文对遗传规划提出了三个改进方向,进一步提升其因子挖掘能力本文对遗传规划提出了三个改进方向,进一步提升其因子挖掘能力 本文是对华泰金工前期报告基于遗传规划的选股因子挖掘(2019.6)的补充和改进,目的是进一步提升遗传规划挖掘选股因子的能力。本文提出并测试了 3 个改进方向:(1)新的适应度指标因子互信息和多头超额收益;(2)非线性因子的使用方法;(3)交叉验证控制过拟合。测试中展示了20 多个挖掘出的选股因子供投资者参考。通过方法论的介绍,本文旨在说明遗传规划或许能挖掘出大量因子(尤其是非线性因子),这对于能够利用非线性因子的机器学习选股模型来说具有重要意义。改进方向改进方向 1:新的适应度指标因子互信息和多头超额收益:新的适应度指标因子互信息和多头超额收益 互信息可以捕捉因子和收益间的非线性关系,在遗传规划中使用互信息作为适应度指标,可以挖掘出多个互信息较高的因子。在分层测试中,该类因子与收益的关系大多呈现出“中间分层收益高,两端分层收益低”的特性,且分层规律稳定,这种规律能被基于机器学习的多因子选股模型有效利用。另外,部分投资者可能希望以多头超额收益来评价因子,本文也将多头超额收益加入到适应度指标中,挖掘出了数个多头超额收益较高的因子。改进方向改进方向 2:非线性因子的使用方法:非线性因子的使用方法 对于非线性因子的使用,一般有两大类方法,第一类方法是在因子合成时直接使用机器学习模型(如 XGBoost、神经网络等)拟合因子与收益率间的关系,该类方法在本系列前期报告中有过大量介绍。第二类方法是对单个因子做非线性变换,重构因子与收益之间的关系,最终得到线性因子。第二类方法中有两个具体方法:三次方回归残差法和多项式拟合法。两个方法各有优劣,在本文的测试中,三次方回归残差法较为简单,但转换效果较差;多项式拟合法转换效果较好,但需要逐个对因子拟合非线性关系,拟合结果对不同因子不能通用。改进方向改进方向 3:交叉验证控制过拟合:交叉验证控制过拟合 为了控制过拟合的风险,我们在 gplearn 中加入交叉验证环节,观察新因子在验证集上的适应度表现,据此来评价遗传规划挖掘有效因子的能力。加入交叉验证之后,遗传规划的流程如下:将数据集按指定比例划分为训练集和验证集两部分,训练集用于训练和进化,循环生成子代因子;对于每一代新生成的因子,模型都会在验证集上计算适应度,并记录每一代的验证集平均适应度,观测验证集平均适应度的收敛性,当其明显收敛时,停止循环。在本文的测试中,确实观察到了因子平均适应度在验证集收敛的情况。风险提示:通过遗传规划挖掘的选股因子是历史经验的总结,存在失效的可能。遗传规划所得因子可能过于复杂,可解释性降低,使用需谨慎。本文仅对因子在全部 A 股内的选股效果进行测试,测试结果不能直接推广到其它股票池内。相关研究相关研究 2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 2 正文目录正文目录 遗传规划回顾和改进方向.5 改进方向 1:新的适应度指标.5 互信息.5 多头超额收益.6 改进方向 2:非线性因子的使用方法.6 三次方回归残差法.7 多项式拟合法.7 改进方向 3:交叉验证控制过拟合.8 遗传规划选股因子挖掘的测试流程和测试结果.9 测试流程.9 测试结果.10 遗传规划所得因子的单因子测试.11 分层测试法说明.11 互信息作为适应度指标挖掘所得因子的测试结果.11 Alpha1 因子的详细测试结果.13 Alpha2 因子的详细测试结果.16 Alpha3 因子的详细测试结果.18 Alpha4 因子的详细测试结果.20 Alpha5 因子的详细测试结果.22 Alpha6 因子的详细测试结果.24 小结.25 多头超额收益作为适应度指标挖掘所得因子的测试结果.26 Alpha21 因子的详细测试结果.27 Alpha22 因子的详细测试结果.28 Alpha23 因子的详细测试结果.29 Alpha24 因子的详细测试结果.30 结论.31 风险提示.31 2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 3 图表目录图表目录 图表 1:遗传规划的总体流程.5 图表 2:互信息和 F 检验的说明.6 图表 3:非线性规模因子处理示意图.7 图表 4:交叉验证流程图.8 图表 5:原始因子列表.9 图表 6:函数列表.9 图表 7:遗传规划测试过程的统计信息(适应度为互信息).10 图表 8:互信息作为适应度指标挖掘所得因子.12 图表 9:Alpha1Alpha20 因子分层测试中的最高收益层表现.12 图表 10:Alpha1Alpha20 因子的相关性矩阵.13 图表 11:Alpha1 分层组合 110 净值除以基准净值.14 图表 12:Alpha1 各分层组合年化超额收益率.14 图表 13:Alpha1 分层组合 110 净值除以基准净值(三次方回归残差法).14 图表 14:Alpha1 分层组合 110 净值除以基准净值(多项式拟合法).14 图表 15:Alpha1 的分层测试表现(因子做行业+4 个常见风格中性,三次方回归残差法).15 图表 16:Alpha1 的分层测试表现(因子做行业+4 个常见风格中性,多项式拟合法).15 图表 17:Alpha2 分层组合 110 净值除以基准净值.16 图表 18:Alpha2 各分层组合年化超额收益率.16 图表 19:Alpha2 分层组合 110 净值除以基准净值(三次方回归残差法).16 图表 20:Alpha2 分层组合 110 净值除以基准净值(多项式拟合法).16 图表 21:Alpha2 的分层测试表现(因子做行业+4 个常见风格中性,三次方回归残差法).17 图表 22:Alpha2 的分层测试表现(因子做行业+4 个常见风格中性,多项式拟合法).17 图表 23:Alpha3 分层组合 110 净值除以基准净值.18 图表 24:Alpha3 各分层组合年化超额收益率.18 图表 25:Alpha3 分层组合 110 净值除以基准净值(三次方回归残差法).18 图表 26:Alpha3 分层组合 110 净值除以基准净值(多项式拟合法).18 图表 27:Alpha3 的分层测试表现(因子做行业+4 个常见风格中性,三次方回归残差法).19 图表 28:Alpha3 的分层测试表现(因子做行业+4 个常见风格中性,多项式拟合法).19 图表 29:Alpha4 分层组合 110 净值除以基准净值.20 图表 30:Alpha4 各分层组合年化超额收益率.20 图表 31:Alpha4 分层组合 110 净值除以基准净值(三次方回归残差法).20 图表 32:Alpha4 分层组合 110 净值除以基准净值(多项式拟合法).20 图表 33:Alpha4 的分层测试表现(因子做行业+4 个常见风格中性,三次方回归残差法).21 图表 34:Alpha4 的分层测试表现(因子做行业+4 个常见风格中性,多项式拟合法).21 图表 35:Alpha5 分层组合 110 净值除以基准净值.22 2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 4 图表 36:Alpha5 各分层组合年化超额收益率.22 图表 37:Alpha5 分层组合 110 净值除以基准净值(三次方回归残差法).22 图表 38:Alpha5 分层组合 110 净值除以基准净值(多项式拟合法).22 图表 39:Alpha5 的分层测试表现(因子做行业+4 个常见风格中性,三次方回归残差法).23 图表 40:Alpha5 的分层测试表现(因子做行业+4 个常见风格中性,多项式拟合法).23 图表 41:Alpha6 分层组合 110 净值除以基准净值.24 图表 42:Alpha6 各分层组合年化超额收益率.24 图表 43:Alpha6 分层组合 110 净值除以基准净值(三次方回归残差法).24 图表 44:Alpha6 分层组合 110 净值除以基准净值(多项式拟合法).24 图表 45:Alpha6 的分层测试表现(因子做行业+4 个常见风格中性,三次方回归残差法).25 图表 46:Alpha6 的分层测试表现(因子做行业+4 个常见风格中性,多项式拟合法).25 图表 47:多头超额收益作为适应度指标挖掘所得因子.26 图表 48:Alpha21Alpha24 因子的相关性矩阵.26 图表 49:Alpha21 分层组合 110 净值除以基准净值.27 图表 50:Alpha21 各分层组合年化超额收益率.27 图表 51:Alpha21 的分层测试表现(因子做行业+4 个常见风格中性).27 图表 52:Alpha22 分层组合 110 净值除以基准净值.28 图表 53:Alpha22 各分层组合年化超额收益率.28 图表 54:Alpha22 的分层测试表现(因子做行业+4 个常见风格中性).28 图表 55:Alpha23 分层组合 110 净值除以基准净值.29 图表 56:Alpha23 各分层组合年化超额收益率.29 图表 57:Alpha23 的分层测试表现(因子做行业+4 个常见风格中性).29 图表 58:Alpha24 分层组合 110 净值除以基准净值.30 图表 59:Alpha24 各分层组合年化超额收益率.30 图表 60:Alpha24 的分层测试表现(因子做行业+4 个常见风格中性).30 2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 5 遗传规划回顾和改进遗传规划回顾和改进方向方向 在本系列前期报告基于遗传规划的选股因子挖掘(2019.6)中,我们介绍了遗传规划的基本原理,如图表 1 所示,遗传规划从随机生成的公式群体开始,通过模拟自然界中遗传进化的过程,来逐渐生成契合特定目标的公式群体。然后我们对遗传规划程序包 gplearn进行深度改进,实现了遗传规划在因子挖掘上的应用。本篇报告将在上一篇报告的基础上,从适应度指标的选择、非线性因子的使用方法和控制过拟合的手段这三个不同的角度探索模型的改进方向。图表图表1:遗传规划的总体流程遗传规划的总体流程 资料来源:华泰证券研究所 改进改进方方向向 1:新的适应度指标:新的适应度指标 在遗传规划中,适应度衡量了公式运算结果与给定目标的相符程度,是公式进化的重要参考指标。本系列前期报告基于遗传规划的选股因子挖掘(2019.6)中使用 RankIC 来作为因子的适应度指标,它是传统多因子选股模型中对因子的评价指标之一,主要衡量因子和收益间的线性关系。在本篇报告中,我们在 gplearn 中加入了两个新的适应度指标互信息和多头超额收益,并测试它们的因子挖掘效果。互信息互信息 在基于机器学习的多因子选股模型中,非线性因子也能被有效使用,此时就需要一个能衡量因子和收益间非线性关系的适应度指标。本系列前期报告人工智能选股之特征选择(2018.7)中介绍过互信息指标,在此我们将再次介绍该指标的原理。互信息的概念来自概率论和信息论,常用于度量两个随机变量之间的关联程度。不同于相关系数仅能够捕捉两个随机变量之间的线性相关性,互信息方法可以捕捉两个变量之间的任何统计依赖性。两个离散随机变量 X 和 Y 的互信息定义为:I(X;Y)=(,)log(,)()()其中,p(x,y)是 X 和 Y 的联合概率分布函数,p(x)和 p(y)分别是 X 和 Y 的边缘概率分布函数。在连续随机变量的情形下,求和替换为二重定积分:2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 6 I(X;Y)=(,)log(,)()()其中,p(x,y)是 X 和 Y 的联合概率密度函数,p(x)和 p(y)分别是 X 和 Y 的边缘概率密度函数。直观上,互信息反映了联合分布 p(x,y)与边缘分布乘积 p(x)p(y)的相似程度,它能够度量X 和 Y 共享的信息,量化了已知两个变量其中一个时,另一个变量不确定性的减少程度。例如,如果 X 和 Y 相互独立,则已知 X 不会对 Y 提供任何信息,那么 p(x,y)=p(x)p(y),两者的互信息为零。在使用互信息作为适应度指标时,因子与收益之间的互信息越大,两者之间共享的信息越多,那么两者的关联度越高。下面的例子来自 sklearn 官网,形象地说明了互信息的效果。例如有三个特征 X1,X2,X3,它们服从区间0,1内的均匀分布,定义 y 如下:=1+(6 2)+0.1 (0,1)其中(0,1)为标准正态分布。我们可以使用 F 检验和互信息来分析 y 和 X1,X2,X3的关系,结果展示在图表 2 中。可以看出,F 检验只能评价变量间的线性关系,y 和 X1之间的线性关系较高(F-test=1.00),y 和 X2的线性关系较低(F-test=0.28)。互信息能评价变量之间的任何统计依赖性,y和X2的互信息较高(MI=1.00),y和X1之间的互信息较低(MI=0.36),X3没有出现在 y 的表达式中,所以 y 和 X3之间没有任何相关性。在遗传规划中使用互信息作为适应度指标,就能够逐渐挖掘出互信息较高的因子。图表图表2:互信息和互信息和 F 检验的说明检验的说明 资料来源:sklearn,华泰证券研究所 多头多头超额超额收益收益 RankIC 衡量的是因子和收益之间的线性关系,但对于部分投资者来说,可能希望以多头超额收益来评价因子。因此,我们也将多头超额收益加入到适应度指标中,具体计算如下:参照分层回测的做法,同时考虑正向因子和负向因子,跟踪计算分层组合第一层和最后一层的组合净值;在样本期期末计算这两个组合的年化超额收益率,取两者较大值作为多头超额收益。改进方改进方向向 2:非线性因子的使用方法:非线性因子的使用方法 由于互信息可以衡量变量间的非线性关系,所以使用互信息挖掘出来的因子往往是非线性因子,即因子在分层测试中并非头部(或尾部)组合表现最好,而是中间层次的组合表现最好。对于非线性因子的使用,一般有两大类方法,第一类方法是在因子合成时直接使用机器学习模型(如 XGBoost、神经网络等)拟合因子与收益率间的关系,该类方法在本系列前2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 7 期报告中有过大量介绍,此处不再赘述。第二类方法是对单个因子做非线性变换,重构因子与收益之间的关系,最终得到线性因子。第二类方法中有两个具体方法:三次方回归残差法和多项式拟合法,我们将进行详细介绍。三次方回归残差法三次方回归残差法 三 次 方 回 归 残 差 法 方 法 主 要 参 考 了 BARRA 的 报 告 Characteristics of Factor Portfolios(Menchero,2010),报告介绍了一种计算非线性规模因子 Non-linear Size(NLS)的方法。NLS 因子由规模因子和规模因子三次方项的线性组合构造,公式如下:()=(3)()()()=0 其中,()表示特定截面日期的第 n 只股票的因子值,表示非线性规模因子,表示规模因子,通过求解上面的方程组可以得到非线性规模因子()的解析解。在实际计算中,用3对过原点回归取残差即可得到。这种因子转换的效果如下:图表图表3:非线性规模因子非线性规模因子处理示意图处理示意图 资料来源:华泰证券研究所,Characteristics of Factor Portfolios(Menchero,2010)在图表 3 中,横轴表示原始因子的暴露度,纵轴表示转换后因子的暴露度,三条曲线分别对应:蓝线-三次方回归残差(),红线-三次方规模因子(3),黑线-原始规模因子()。在转换后,的峰值位于原始因子的中间部分,而左右两端的取值较低,实现了因子的非线性转换,而且效果与我们的转换目标相似。因此,我们可以套用这种方法来转换互信息高分因子。多项式拟合法多项式拟合法 多项式拟合法是一种适用性更广的转换方法,具体做法是用第 T+1 期的股票收益对第 T期因子的多项式进行回归,用回归拟合得到参数来对因子进行多项式转换。在我们挖掘出的非线性因子中,因子与股票收益的关系曲线单调性最多只出现两次转变,而且曲线不一定是对称的。考虑到因子的这些特征,我们认为把多项式的最高阶定为三次比较合适,回归模型具体表达式如下:,+1=3+2+,+1:股票 i 在第 T+1 期的收益率 :股票 i 在第 T 期的因子暴露度 在实际计算中,我们采用滚动回归的方式,每隔 20 个交易日做一次回归拟合,使用历史500 天的数据作为回归样本,每次拟合出来的参数用于转换未来 20 个交易日的因子。2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 8 与三次方回归残差法相似,多项式拟合法也是使用因子的高次函数来重构因子,不同的是,前者只使用了因子本身的数据信息,而后者进一步加入了股票收益的信息。在形式上,多项式拟合法还考虑了二次项的影响,提升了转换函数的灵活度。改进方改进方向向 3:交叉验证控制过拟合:交叉验证控制过拟合 在本系列报告的 基于遗传规划的选股因子挖掘 中,我们在训练因子和评估算法性能时,使用的是同一个数据集,用已经在训练环节出现过的样本来评估算法性能,容易产生过拟合。为了控制过拟合的风险,我们在 gplearn 中加入交叉验证环节,观察新因子在验证集上的适应度表现,据此来评价遗传规划挖掘有效因子的能力。图表图表4:交叉验证流程图交叉验证流程图 资料来源:华泰证券研究所 加入交叉验证之后,遗传规划的流程如下:将数据集按指定比例划分为训练集和验证集两部分,训练集用于训练和进化,循环生成子代因子,这一部分与原先的算法基本一致;对于每一代新生成的因子,我们都会在验证集上计算适应度,并记录每一代的验证集平均适应度,观测验证集平均适应度的收敛性,当其明显收敛时,停止循环。2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 9 遗传规划选股因子挖掘的测试流程遗传规划选股因子挖掘的测试流程和测试结果和测试结果 测试流程测试流程 测试流程包含下列步骤:1.数据获取和特征提取:(1)股票池:全 A 股,剔除 ST、PT 股票,剔除每个截面期下一交易日涨停和停牌的股票。(2)回测区间:2010/1/42019/7/31。时间排前 80%的截面为训练集,后 20%的截面为验证集。(3)原始因子列表如图表 5 所示,都是个股的原始量价信息,未经过特征工程。(4)函数列表如图表 6 所示。(5)预测目标:个股 20 个交易日后的收益率。图表图表5:原始因子列表原始因子列表 名称名称 定义定义 return1 个股日频收益率(由相邻两个交易日的后复权收盘价计算得来)。open,close,high,low,volume 个股日频开盘价、收盘价、最高价、最低价、成交量。vwap 个股日频成交量加权平均价。turn,free_turn 个股日频换手率、自由流通股换手率。资料来源:Wind,华泰证券研究所 图表图表6:函数列表函数列表 类型类型 名称名称 定义定义 X:以下函数中自变量 X 一般可以理解为向量1,代表 N 只个股在某指定截面日的因子值,例如:X=close+open;若 X 为矩阵,则以下函数可以理解为对每个列向量分别进行运算,再将结果按列合并。基础函数 add(X,Y)返回值为向量,其中第 i 个元素为+基础函数 sub(X,Y)返回值为向量,其中第 i 个元素为-基础函数 mul(X,Y)返回值为向量,其中第 i 个元素为*(对应 matlab 中的点乘)基础函数 div(X,Y)返回值为向量,其中第 i 个元素为/(对应 matlab 中的点除)基础函数 abs(X)返回值为向量,其中第 i 个元素为的绝对值 基础函数 sqrt(X)返回值为向量,其中第 i 个元素为 abs()的开方 基础函数 log(X)返回值为向量,其中第 i 个元素为 abs()的对数 基础函数 inv(X)返回值为向量,其中第 i 个元素为的倒数 自定义函数 rank(X)返回值为向量,其中第 i 个元素为在向量 X 中的分位数。自定义函数 delay(X,d)返回值为向量,d 天以前的 X 值。自定义函数 ts_corr(X,Y,d)返回值为向量,其中第i个元素为过去 d天值构成的时序数列和值构成的时序数列的相关系数。自定义函数 ts_cov(X,Y,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列和值构成的时序数列的协方差。自定义函数 scale(X,a)返回值为向量 a*X/sum(abs(x),a 的缺省值为 1,一般 a 应为正数。自定义函数 delta(X,d)返回值为向量 X-delay(X,d)。自定义函数 signedpower(X,a)返回值为向量 sign(X).*(abs(X).a),其中.*和.两个运算符代表向量中对应元素相乘、元素乘方。自定义函数 decay_linear(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列的加权平均值,权数为 d,d 1,1(权数之和应为 1,需进行归一化处理),其中离现在越近的日子权数越大。自定义函数 ts_min(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列中最小值。自定义函数 ts_max(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列中最大值。自定义函数 ts_argmin(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列中最小值出现的位置。自定义函数 ts_argmax(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列中最大值出现的位置。自定义函数 ts_rank(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列中本截面日值所处分位数。自定义函数 ts_sum(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列之和 自定义函数 ts_prod(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列的连乘乘积。自定义函数 ts_stddev(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列的标准差。自定义函数 ts_zscore(X,d)返回值为向量,其中第 i 个元素为过去 d 天值构成的时序数列的平均值除以标准差。自定义函数 rank_sub(X,Y)返回值为向量,其中第 i 个元素为在向量 X 中的分位数减去在向量 Y 中的分位数。自定义函数 rank_div(X,Y)返回值为向量,其中第 i 个元素为在向量 X 中的分位数除以在向量 Y 中的分位数。自定义函数 sigmoid(X)返回值为向量,其中第 i 个元素为1+exp()1,将 X 映射到(0,1)的区间 资料来源:gplearn,华泰证券研究所 2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 10 2.使用遗传规划进行因子挖掘:1)使用图表 5 中的因子和图表 6 中的函数集,生成大量公式,并按照图表 4 的流程进行公式的进化和筛选。2)公式适应度的计算:假设有公式 F,得出该公式在截面 t 上对所有个股的因子向量后,我们会对因子进行以下处理:a)中位数去极值:设为该向量中位数,1为向量|的中位数,则将向量中所有大于+51的数重设为+51,将向量中所有小于51的数重设为 51;b)中性化:在每个截面 t 上,对进行行业、市值、20 日收益率、20 日换手率、20 日波动率中性化,以剔除以上五个因子的影响。经过以上处理后,计算处理后因子适应度(互信息或多头超额收益)。3.对遗传规划挖掘出的因子进行 IC 测试、分层测试和相关性分析。测试结果测试结果 在遗传规划的运行过程中,我们可以监控公式群体的一些统计信息来得知当前公式进化的状况。图表 7 展示了某次测试中的统计信息(适应度为互信息)。可以看出,随着进化代数的增加,训练集和验证集的平均适应度都逐渐上升趋于收敛。实际应用中,可以在验证集平均适应度达到最优后停止算法的运行。图表图表7:遗传规划测试过程的统计信息遗传规划测试过程的统计信息(适应度为互信息适应度为互信息)世代世代 公式群体的平均长度公式群体的平均长度 训练集平均适应度训练集平均适应度 验证集平均适应度验证集平均适应度 1 6.86 0.0138 0.0135 2 8.22 0.0159 0.0159 3 7.79 0.0179 0.0174 4 7.41 0.0204 0.0204 5 7.32 0.0216 0.0221 6 6.48 0.0210 0.0205 7 5.38 0.0210 0.0201 8 4.57 0.0197 0.0198 资料来源:Wind,华泰证券研究所 2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 11 遗传规划所得因子的单因子测试遗传规划所得因子的单因子测试 本章中,我们将分别展示通过互信息和多头超额收益作为适应度指标挖掘出的因子,并进行单因子测试。分层测试法说明分层测试法说明 分层测试法与回归法、IC 值分析相比,能够发掘因子对收益预测的非线性规律。也即,若存在一个因子分层测试结果显示,其Top组和Bottom 组的绩效长期稳定地差于Middle组,则该因子对收益预测存在稳定的非线性规律,但在回归法和 IC 值分析过程中很可能被判定为无效因子。分层测试构建方法如下:1.股票池:全 A 股,剔除 ST、PT 股票,剔除每个截面期下一交易日停牌的股票。2.回测区间:2010/1/42019/7/31。3.换仓:月频调仓,在每个截面期核算因子值,构建分层组合,在截面期下一个交易日按当日 vwap 换仓,交易费用默认为单边 0.15%。4.分层方法:先将因子暴露度向量进行预处理(去极值,中性化),将股票池内所有个股按处理后的因子值从大到小进行排序,等分 N 层,每层内部的个股等权重配置。当个股总数目无法被 N 整除时采用任一种近似方法处理均可,实际上对分层组合的回测结果影响很小。分层测试中的基准组合为股票池内所有股票的等权组合。5.多空组合收益计算方法:用 Top 组每天的收益减去 Bottom 组每天的收益,得到每日多空收益序列1,2,,则多空组合在第 n 天的净值等于(1+1)(1+2)(1+)。6.本文分层测试的结果均不存在“路径依赖”效应,我们以交易日=20 天为例说明构建方法:首先,在回测首个交易日 K_0 构建分层组合并完成建仓,然后分别在交易日K_i,K_(i+20),K_(i+40),按当日收盘信息重新构建分层组合并完成调仓,i 取值为 120 内的整数,则我们可以得到 20 个不同的回测轨道,在这 20 个回测结果中按不同评价指标(比如年化收益率、信息比率等)可以提取出最优情形、最差情形、平均情形等,以便我们对因子的分层测试结果形成更客观的认知。互信息互信息作为适应度指标挖掘所得作为适应度指标挖掘所得因子的因子的测试测试结果结果 使用互信息作为适应度指标后,遗传规划挖掘出了多个非线性因子。图表 8 展示了这些因子的表达式、互信息和 RankIC(因子进行了行业、市值、20 日收益率、20 日波动率、20日换手率中性化),图表 9 展示了这些因子分层测试中超额收益最高层次的测试结果。2 1 9 1 6 5 3 6/3 6 1 3 9/2 0 1 9 0 8 0 7 1 5:0 1 金工研究/深度研究|2019 年 08 月 07 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 12 图表图表8:互信息作为适应度指标挖掘所得因子互信息作为适应度指标挖掘所得因子 因子因子 表达式表达式 互信息互信息 RankIC Alpha1-ts_cov(delay(turn,3),volume,7)0.0197-0.81%Alpha2-ts_cov(delay(volume,5),vwap,4)0.0198-0.57%Alpha3-ts_cov(ts_cov(delay(low,3),turn,7),turn,7)0.0193 0.91%Alpha4-ts_cov(ts_cov(sub(vwap,close),high,5),turn,7)0.0243-0.92%Alpha5-mul(ts_sum(vwap,5),ts_cov(volume,vwap,3)0.0222 4.03%Alpha6-ts_cov(ts_max(turn,7),free_turn,9)0.0168 4.03%Alpha7 rank_div(rank_sub(rank_div(close,open),open),ts_min(sub(free_turn,close),3)0.0271 2.07%Alpha8 ts_cov(ts_prod(low,4),close,6)0.0328 0.52%Alpha9-mul(free_turn,mul(ts_cov(low,high,5),delta(low,5)0.0255 2.14%Alpha10-div(add(turn,volume),ts_zscore(close,9)0.0224 1.54%Alpha11-ts_cov(mul(close,return1),turn,7)0.0242 3.32%Alpha12-ts_cov(mul(close,return1),turn,4)0.0264 3.08%Alpha13-div(rank_div(vwap,volume),ts_prod(close,10)0.0392 0.75%Alpha14-ts_cov(ts_prod(turn,5),turn,7)0.0250 2.73%Alpha15-mul(free_turn,mul(high,delta(low,5)0.0275 2.06%Alpha16-mul(return1,mul(turn,decay_linear(turn,5)0.0279 1.11%Alpha17 ts_cov(mul(close,rank_div(close,return1),high,10)0.0356 0.46%Alpha18-ts_min(ts_prod(delta(vwap,10),10),10)0.0230 1.19%Alpha19-ts_cov(ts_stddev(turn,4),close,6)0.0279 2.85%Alpha20 mul(free_turn,rank_sub(open,delta(volume,9)0.0222 1.92%资料来源:Wind,华泰证券研究所 图表图表9:Alpha1Alpha20 因子因子分层测试中的最高收益层分层测试中的最高收益层表现表现 年化收益率年化收益率 年化波动率年化波动率 夏普比率夏普比率 最大回撤最大回撤 月均双边换手率月均双边换手率 年化超额年化超额收益率收益率 年化跟踪年化跟踪误差误差 信息比率信息比率 超额收益超额收益最大回撤最大回撤 超额收益超额收益Calmar 比率比率 相对基准相对基准月度胜率月度胜率 Alpha1 11.32%25.86%0.44 54.17%157.36%4.48%2.76%1.62 4.88%0.92 65.22%Alpha2 10.46%26.26%0.40 57.80%158.07%3.79%2.45%1.55 3.80%1.00 65.22%Alpha3 9.04%27.08%0.33 57.77%163.12%2.68%2.21%1.21 3.50%0.77 58.26%Alpha4 8.83%25.83%0.34 57.38%155.37%2.09%3.97%0.53 12.12%0.17 58.26%Alpha5 10.89%26.31%0.41 56.46%155.88%4.19%3.06%1.37 5.03%0.83 59.13%Alpha6 9.64%27.38%0.35 58.53%159.21%3.35%1.81%1.85 2.91%1.15 66.09%Alpha7 7.46%26.70%0.28 60.79%154.37%1.07%3.03%0.35 6.80%0.16 51.30%Alpha8 7.70%26.15%0.29 58.78%146.03%1.11%3.99%0.28 11.23%0.10 49.57%Alpha9 9.56%27.35%0.35 56.61%163.23%3.25%2.10%1.55 3.02%1.08 63.48%Alpha10 9.56%27.06%0.35 59.83%158.61%3.18%2.04%1.56 4.72%0.67 65.22%Alpha11 9.54%26.53%0.36 56.71%160.66%2.99%2.54%1.18 5.05%0.59 59.13%Alpha12 9.38%26.66%0.35 57.35%161.70%2.88%2.33%1.24 3.42%0.84 59.13%Alpha13 9.23%26.30%0.35 58.07%102.47%2.54%5.10%0.50 12.85%0.20 48.70%Alpha14 9.30%25.86%0.36 55.91%153.15%2.56%3.19%0.80 8.18%0.31 64.35%Alpha15 8.93%27.08%0.33 57.24%162.71%2.58%2.01%1.29 3.17