您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[国泰君安证券]:解构机器学习系列之一:遗传规划解构与投资思考 - 发现报告

解构机器学习系列之一:遗传规划解构与投资思考

2023-08-26张晗国泰君安证券何***
解构机器学习系列之一:遗传规划解构与投资思考

遗传规划本质上是在随机变异基础上通过固定规则筛选的量价特征拟合工具,其流程包括初始化种群、公式变异、因子筛选和二次筛选等步骤。遗传规划不等于暴力搜索,我们发现算法结构尤其是因子筛选标准对遗传规划结果亦有较大影响,并且通过特定优化算法可以提升特征挖掘效率。 适应度函数的构建方式决定了种群进化的方向和量价因子构建的效果。我们通过多组因子挖掘试验发现,(1)使用不同因子评价指标作为适应度函数时,挖掘出的量价因子在不同维度的表现呈现出导向性,并且以年化收益或夏普比率作为适应度函数的效果整体上优于RankIC和ICIR;(2)当每组因子内部按照对应的适应度函数值排序时,不同组排名靠前的因子之间的两两IC相关性均值有所提升;(3)指标计算时使用多空收益或多头收益不仅影响因子表现,亦影响收益分层稳健性。 基于父代个体选择和适应度调整的优化算法可以提升种群多样化,进而可提升因子挖掘效率和质量。我们通过多组因子挖掘试验表明,在束搜索的基础上组合使用多种算法可以进一步提升量价因子平均夏普比率,其中束搜索、家庭竞争和排挤算法三者组合的效果最优,因子多空组合夏普比率平均值相比于无优化算法时提升0.88。遗传规划因子的样本外有效性来源于市场定价规律的延续性,我们发现优化算法在提升因子样本内表现的同时亦提升了其样本外表现,因此不必过分担忧优化算法带来的过拟合问题。 遗传规划因子应用于量化选股策略可提升传统策略表现,并在不同股票池中均能提供较高收益。我们构建了日频换仓的量化选股策略,每季度重新挖掘量价因子,策略2022年以来(样本外)多空组合费后年化收益28.37%,多头费后年化收益16.20%。若未来交易费用进一步下行,则策略表现有望提升。此外,从不同区间挖掘的因子表现上看,在2022年前后市场交易层面的定价特征或发生较大变化。 风险提示:量化模型失效风险:本篇报告的结论完全来自于量化模型和历史数据,请注意模型在样本外失效风险。 1.引言 量价领域的研究不是数据挖掘,区别在于对内心世界的认知。量价数据的体量相对较大并且信噪比低,传统研究更多地偏向于“从数据中来,到数据中去”的过程;而由于缺乏对内心世界的理解和认知,通过数据建模得到的量价策略在不同环境中表现不稳定。我们秉持着从符号世界到内心世界再到符号世界的研究思想,挖掘量价策略有效性的根源,通过对交易过程的理解改进传统模型,从而进一步提升量价策略有效性。 图1对内心世界的认知是量价领域研究的核心 市场对微观交易层面的定价规律的认知尚不充分,遗传规划可以提供补充信息。经典行为金融学研究首先通过对投资者心理的分析提炼出一系列投资者交易逻辑,再结合实证检验归纳得出投资异象,并据此构建相应的套利策略。这一过程存在两个问题:一是研究范围依赖于主观构建的微观交易逻辑,理论体系的更新和变迁往往发生在特定投资策略崩塌之后,如2017年小盘股风格切换后市场才普遍开始控制风险暴露;二是归纳得到的量价特征往往对时间序列参数敏感,如相对强度在不同周期下可能分别表现为短期反转、中期动量和长期反转。 图2量化策略变迁往往发生在市场风格切换之后 自2015年ALPHA101因子公布以来,遗传规划算法已逐渐被市场认知,目前已经成为量价特征挖掘的基础工具。遗传规划的意义在于提供了一种与经典研究相反的过程,即,先找到行之有效的公式形式,再倒推出其中蕴含的投资者交易逻辑。这一方法拓展了量价特征研究的边界,有助于增强我们对交易过程的认知。 市场对遗传规划的普遍认知是暴力搜索工具,认为算力是影响特征挖掘效率的唯一因素。我们在解构遗传规划的基础上,认为算法结构中因子筛选标准对遗传规划结果亦有较大影响,并且通过特定优化算法可以提升特征挖掘效率。具体而言,在本篇报告中我们关注以下几个问题: (1)因子筛选中计算因子多空收益和多头收益的效果差异; (2)使用不同指标作为适应度函数时挖掘因子的效果差异; (3)特定优化算法对因子筛选过程的影响。 2.遗传规划解构 2.1.遗传规划基本流程 交易过程对价格的影响反映了投资者交易决策机制和定价规律,短周期量价特征本质上是通过一系列公式的组合拟合出这种定价规律。这些量价特征可以按照“公式-数据-参数”的形式转化为公式树结构,进而可以使用遗传规划方法挖掘出有效的量价特征。遗传规划的基本流程包括初始化种群、变异和筛选等,其中初始化种群过程使用若干算子随机形成公式树,变异过程通过随机改变公式树的结构、算子或参数生成新的特征,筛选过程通过RankIC、ICIR、夏普比率等适应度函数从种群中选出优秀特征。 图3遗传规划基本流程 图4公式树示例(abs(inv(min(max(sub(L, 5), ts_zscore(C, 10)), V)))) 2.1.1.初始化种群 初始化种群过程通过随机组合算子、数据和参数生成若干公式树,每个公式树根据其公式形式计算得到的就是一个量价因子。我们使用的遗传规划算子包括基本运算类、条件选择类、时间序列类三个大类共60个算子(算子列表详见附录),相比于开源算法大幅增加了时间序列算子的范围和数量,更加适合于金融数据处理。 图5遗传规划算子分类 2.1.2.公式树变异 遗传规划中的变异过程分为两步,首先选择一个父代个体用于变异,其次选择一种变异方法生成新的子代。在选择父代个体的过程中,传统做法通过轮盘赌或者锦标赛策略选择个体,前者按照个体适应度函数值大小设置概率抽样,后者在种群中随机抽取少量个体并从中选择适应度函数值最大的个体,这两种方法本质上仍是有偏随机抽样。变异方法关注公式树结构的变化,包括交叉变异、子树变异、结点变异和提升变异等方法,同时保留一定概率使父代因子直接保留至子代。 图6遗传规划常见变异方法 图7种群变异过程示例 2.1.3.因子筛选 “物竞天择”的核心驱动因素是外部环境,在遗传规划过程中因子筛选亦是关键步骤和熵减步骤。遗传规划本质上是贪心算法,结果容易受到随机性影响进入早熟收敛,其中初始化种群和变异过程增加了随机性,而筛选过程可以通过以特定适应度函数为目标确定种群进化方向、减少随机性。因此,筛选过程的设计对于遗传规划的效果具有决定性的影响。 因子筛选过程中的核心问题是如何评价一个因子的质量。不同的评价指标可能带来不同的结果。常见的评价指标一般包含以下几类:一是收益能力,如年化收益、多头收益等;二是左尾风险,如最大回撤、VaR等; 三是收益稳健性,如胜率、夏普比率、分层收益单调性等;四是预测能力,如RankIC、ICIR等。 图8遗传规划的常见适应度函数 2.1.4.二次筛选 通过上述过程挖掘的遗传规划因子仅能保证在种群中是最优的,并不一定是有效的,因此需要对挖掘出的因子进行二次筛选。这个过程以往是人工进行的,我们将这一过程写入算法中,希望提高算法的自动化和规范化程度。我们对挖掘出的因子进行如下限制:在样本期内,因子适应度函数值超过一定阈值。同时,同一批因子内部或者不同批次因子之间可能存在相关性过高的情况,从而限制了因子池中其他因子的作用,因此我们对于新因子要求其与因子池中任意因子的相关性不超过50%;当因子数量较大时,为了提高运行效率,我们要求新因子与因子池主成分(累计贡献率)的相关性不超过50%。 >90% 2.1.5.遗传规划因子挖掘基准结果 本小节我们使用基本的遗传规划框架展示量价因子挖掘的效果,以便为后续的研究提供基准。我们使用因子多空收益的夏普比率作为适应度函数,模型没有使用额外的优化算法,股票范围为沪深A股,样本内区间为2022年。模型设定和超参数设置如下表所示。 表1:遗传规划过程模型设定和超参数设置示例 我们使用上述遗传规划模型进行10轮量价因子挖掘,样本内扣费后多空收益的夏普比率大于0.5的共有24个因子。按照样本内年化夏普排序的前5个因子的公式形式如下表所示。这些因子本身不是投资者行为特征,而是从不同角度对投资者行为特征的近似拟合。由于非线性模型的过拟合问题,部分形式复杂的因子可能与形式简单的因子具有相似的效果,因此根据因子形式对因子解析和分类的做法有待商榷。 表2:遗传规划挖掘量价因子公式示例 上述因子的净值走势和样本内外回测结果如下所示。值得注意的一点是,这几个因子的年化换手率均较低,这是由于计算因子收益率时已扣除手续费,高换手率的因子的实际收益能力下降从而在使用适应度函数排序时靠后。 图9前5量价因子累计净值走势示例(多空) 图10前5量价因子累计净值走势示例(多头) 表3:遗传规划挖掘量价因子回测结果示例(样本内) 2.2.因子筛选中不同收益类型的差异 在因子评价中指标计算选择多头收益还是多空收益取决于需求。若将遗传规划因子应用于线性多因子量化选股模型,则由于卖空限制更多关注于多头收益;若将遗传规划因子应用于神经网络模型,则以多空收益为基础计算指标可以提升因子截面差异与分层稳健性,进而可能提高模型效率。我们通过以不同类型收益计算的夏普比率为适应度函数进行多组因子挖掘试验,发现指标计算使用的收益类型不仅影响因子收益表现,亦影响因子收益分层稳健性。 图11使用不同类型收益时净值走势存在差异(多空)图12使用不同类型收益时净值走势存在差异(多头) 表4:使用不同类型收益计算指标做为适应度函数的回测结果(样本内) 从收益表现上看,使用多空收益计算指标时,因子在样本内多空收益净值和夏普比率均更高;反之亦然。从因子收益分层上看,使用多空收益计算指标的多头端收益相对更低,而分层稳健性相对更高。 在收益分层上的差异引出了另一个问题,即量价因子收益的非线性分层现象。我们在之前的报告中提出传统量价因子的收益分层并非完全单调,可能呈现出北斗星型、余弦型等非线性形态。我们以多空收益计算的夏普比率作为适应度函数进行因子挖掘时,实际上自动排除了中间价差组合收益高于两端价差组合收益的情况,因而得到的因子收益分层单调性相对较强。后续研究若构建动态最大价差组合,也许可以获得更加多元化的结果。 图13使用多空收益时因子分层稳健性较高 表5:量价因子在不同维度的表现存在差异 下面我们将分析不同因子评价指标作为适应度函数对因子挖掘效果的影响,探讨适应度函数选择的最优方案。具体而言,我们分别选择年化夏普、年化收益、RankIC、ICIR、胜率(日频)等指标及其组合作为遗传规划模型的适应度函数,进行10轮挖掘。为了适当提高因子挖掘效率,我们使用了束搜索方法。此处不同适应度函数对应的早停阈值选择存在一定的主观性,我们通过多轮测试控制使用不同适应度函数进行遗传规划挖掘的难度基本相同(10轮挖掘得到因子数量大致相当),从而在相似的标准下比较不同适应度函数的影响。 表6:不同适应度函数及其早停条件阈值 一个显而易见的结论是:使用某个指标作为适应度函数,挖掘出的量价因子往往在这个指标上表现突出。具体而言,我们发现:(1)以因子收益能力为主的指标(年化收益、夏普比率)为适应度函数挖掘出的因子其年化收益和夏普比率更高;(2)以因子预测能力为主的指标(RankIC、ICIR、胜率)为适应度函数挖掘出的因子在对应指标上表现略好,但在收益和夏普上表现大幅低于其他指标;(3)使用多指标组合作为适应度函数挖掘出的因子在各维度上表现中庸,没有表现出“1+1>2”的效果。 这一现象反映了因子评价指标的不完备性,以及适应度函数选择对因子挖掘效果的导向作用。 图15使用不同适应度函数挖掘出的因子平均累计净值走势(前10) 表7:使用不同适应度函数挖掘因子回测结果统计(样本内,前10) 2.3.2.同质性:本质上是对投资者决策机制的拟合 在上一节的基础上,我们发现使用不同指标作为适应度函数挖掘出的量价因子IC相关性整体较低,如下表所示,除年化收益组和夏普比率组之外,不同组因子之间两两IC相关性均值都不超过30%。这一结论进一步验证了上一节的结论,即使用不同指标作为适应度函数挖掘出的量价因子存在较为明显的差异性。 表8:使用不同适应度函数挖掘出的因子之间相关性较低(前40) 若在每组内部按