`

【浙商金工】 机器学习与因子(四): 遗传规划: 模型、优化与应用

创建于 更新于

摘要

本报告系统阐述了遗传规划(GP)在选股因子挖掘中的应用与改进,重点通过改良gplearn底层代码处理多维面板及时序数据,加入防止过拟合的机制(如早停、吝啬系数、热启动、父子竞争)显著提升模型表达能力及泛化性能。实验以A股全市场数据为样本,挖掘出100个因子,并在沪深300、中证500、中证1000等主流宽基指数中进行复合因子回测验证,结果显示遗传规划复合因子在样本外区间具备较强的超额收益能力和稳定性,尤其在中证1000表现优异,年化收益率超24%,回撤较低。报告同时强调过拟合风险及参数敏感性,建议结合后续非线性因子合成技术深化因子优化。[page::0][page::1][page::7][page::8][page::12][page::13][page::15]

速读内容

  • 遗传规划因子挖掘核心改进与流程 [page::0][page::2]



- 通过随机初始化大量因子表达式(树形结构),计算适应度(使用RankIC),采用遗传算法(选择、交叉、变异等)不断迭代进化最优因子。
- GP算法本质模拟生物进化,利用变异与交叉产生多样化因子组合,努力逼近适应度最优解。
  • 遗传规划因子进化方法详解 [page::3][page::4]





- 交叉(crossover):两父代公式树交换子树,生成多样后代。
- 子树变异(subtree mutation):随机替换部分子树保持多样性。
- 点变异(point mutation):随机替换部分节点和叶子。
- Hoist变异:提升子树简化公式樹结构。
  • 过拟合预防机制创新及效果 [page::7][page::8][page::9][page::10]

- 早停机制设定RankIC阈值控制迭代提前停止,避免过拟合;
- 吝啬系数(parsimony coefficient)惩罚公式过长膨胀,提升因子可解释性及效率;
- 热启动机制增大初代种群体量,挑选更优秀种群启动进化,解决早熟收敛;
- 父子竞争和保留机制避免子代退化(子不如父)现象,保持种群多样性。

- 模型稳定性提升,复杂因子表达简洁有较高适应度,样本外泛化能力明显提升。
  • 因子挖掘数据与回测表现 [page::11][page::12][page::13][page::14]

- 使用Wind数据,时间为2018-2023,样本内外分期回测,目标为20日后收益率预测因子。
- 多因子复合回测覆盖沪深300、中证500与中证1000股票池,考虑市值、行业约束等。
- 回测绩效亮点:
- 中证1000指数年化收益24.63%,2022年与2023年样本外年化收益分别达21.52%和26.29%,最大回撤-13.45%。
- 沪深300指数年化超额收益6.1%,样本外区间超额收益约6.7%-9.5%,最大回撤-13.56%。
- 中证500指数年化收益12.17%,样本外收益10.32%和5.59%,最大回撤-6.76%。


  • 量化因子构建方法总结 [page::0][page::5][page::6][page::12]

- 结合Python gplearn库自定义函数集,融合加减乘除等基础函数及多种时序量价指标,支持多维面板数据。
- 因子基于月频挖掘,目标预测20交易日后收益。
- 应用自定义算子和惩罚机制控制公式表达复杂度。
- 回测阶段,优选适应度高、样本外表现稳定的因子进行等权复合,综合考察不同行情下的稳定性和收益能力。
  • 风险提示与未来方向 [page::0][page::15]

- 超参数对模型结果影响较大,机器学习模型基于历史数据,未来表现存在不确定性,仅供参考。
- 后续需发展时序性控制机制及增强因子相关性检验,尝试结合非线性和深度学习方法优化因子合成。

深度阅读

一、元数据与概览



报告标题:【浙商金工】机器学习与因子(四): 遗传规划: 模型、优化与应用
作者:陈奥林
发布机构:浙商证券研究所
发布日期:2023年12月27日
研究主题:机器学习中的遗传规划(Genetic Programming, GP)算法在因子挖掘中的模型优化与应用,主要针对A股市场的股票选股因子的构建、模型升级、过拟合控制及其样本外表现。

核心观点摘要
  • 本文基于对传统遗传规划算法的底层改造,特别是引入过拟合预防机制如早停、吝啬系数、热启动和父子竞争,大幅提升了因子挖掘的表达能力和泛化能力。

- 成功挖掘了100个高适应度且样本外表现稳健的因子,特别是在中证1000指数复合因子回测中,2022年及2023年样本外收益优异,最高年化收益可达26.29%。
  • 改进算法有效控制了遗传因子挖掘中的过拟合与公式膨胀,提升样本外的稳健性和因子的实用价值。

- 风险提示主要关注模型设定超参数敏感性及机器学习模型基于历史数据的局限性。

整体而言,报告旨在展示遗传规划算法在量化因子挖掘中的最新改进,并通过实证检验其有效性与风险性,为投资提供辅助决策基础。[page::0] [page::1]

---

二、逐节深度解读



1. 引言与遗传规划基础(页1)



该章节介绍遗传规划算法的基本概念、来源及应用演进。遗传规划是一种模拟自然选择和进化的机器学习方法,最早由史密斯和克拉姆提出,科扎著书推广。它通过随机生成计算机程序集合(种群),并通过适应度评价机制不断筛选和进化,最终逼近最优解。
  • 遗传规划以树状结构表达计算机程序,兼容多种编程语言(Lisp、C、Fortran等)。

- 90年代因计算量限制应用较少,随着计算能力提升,近年在多个领域包括金融实现突破。
  • 金融领域量化投资因子库建成,通过遗传规划从海量数据中“先有公式,后有逻辑”挖掘复杂因子,弥补传统人工经验挖掘的局限。

- Gplearn是python开源的遗传规划库,但存在无法同时处理多维面板数据与时间序列数据的问题,报告针对该不足进行了底层代码改进。

此章节为后续模型创新和因子挖掘奠定理论基础。[page::1]

2. 数据采集与处理(页1)


  • 数据来源:Wind数据库,涵盖高质量的A股上市公司量价数据。

- 时间范围:2018年1月至2023年10月,共70个月,具备充分历史与较新数据。
  • 数据清洗采用KNN缺失值填充和统一标准化,确保输入数据符合遗传规划模型需求。


数据质量与时序长度保障模型有效训练和长期稳定性测试。[page::1]

3. 遗传规划算法运作机制(页2-4)



报告通过示意图分别展示了遗传规划的进化流程与因子挖掘迭代流程(图1,图2)。初始种群随机生成后,通过适应度评价筛选优质个体。进化操作包括:
  • 交叉(Crossover):选取两个公式树,交换子树部分生成新个体(图3),实现基因重组合。

- 子树变异(Subtree Mutation):随机替换某父代子树,带来多样性(图4)。
  • 点变异(Point Mutation):替换单个节点或叶子,调整表达式细节(图5)。

- Hoist变异:子树“提升”精简公式,避免过度臃肿(图6)。

这些变异促进种群多样性与适应性平衡,以寻找更优公式表达股票因子结构。参数如适应度定义、迭代次数、种群大小和树深度是演化过程决定性因素(表1)。其中,适应度定义(本文采用RankIC)直接影响因子有效性的筛选标准。深度过大会导致因子复杂难解释及过拟合。[page::2] [page::3] [page::4]

4. 自定义函数集及因子挖掘流程(页5-6)



针对gplearn基础函数集限制,报告扩展了自定义函数集(表2),引入多个时序和量价指标函数,力求捕捉更丰富信息。具体流程:
  • 股票池为全A股,去除上市时间不足6个月及ST、PT等标的。

- 目标预测为未来20个交易日收益率,定位月频因子,提高策略稳定性。
  • 训练时使用19个量价原始因子,33个运算函数,包括自带和新增,覆盖截面与时序计算。

- 用大种群和多代迭代挖掘潜力因子,由于遗传规划存在过拟合风险,后续重点关注该问题。

因子结果在训练集RankIC尚佳,但样本外存在衰减,表明传统遗传规划挖掘因子存在泛化能力不足问题。[page::5] [page::6]

5. 过拟合预防机制及模型优化(页7-11)



5.1 优化设计


  • 早停机制:当适应度超过预设阈值即停止迭代,防止过拟合迭代过深。

- 吝啬系数(parsimony coefficient):惩罚因子表达式复杂度,抑制公式膨胀以提高可解释性和防止过拟合。
  • 热启动:初始种群生成更大规模个体并筛选,提升初始质量避免早熟收敛。

- 父子竞争机制:防止优秀父代丢失、促进多样性,预防进化过程的过早趋同和子代不如父代现象。

5.2 参数调整


  • 初始种群设置为1500个。

- 迭代代数控制在5代以内防止过度迭代导致的子不如父现象。
  • 吝啬系数选取0.005为最优取值,达到控制复杂度且维持适应度提升的平衡。


优化结果显示,复杂但难解释的深度较大因子表达式被抑制,因子表达简洁且适应度接近甚至优于复杂因子(图7、表7、表9)。迭代过程中适应度提升趋势稳定,避免过拟合效应(表8)。整体效率提升,减少了计算资源浪费,提高了样本外表现稳定性的可能性。[page::7] [page::8] [page::9] [page::10] [page::11]

6. 因子回测与复合因子表现(页11-14)



6.1 单因子回测


  • 以因子1、9、32、37为代表,均表现出稳定正的样本内外超额收益和RankIC,样本外表现延续训练期效果,因子泛化能力较好。

- 部分因子20天持有期超额收益高达12.9%,部分因子波动较大,表现出一定风格属性。

6.2 复合因子回测


  • 采用等权复合在沪深300、中证500、中证1000等主流宽基指数内回测。

- 在中证1000成分股中复合因子表现最佳,年化收益高达24.63%,2022年及2023年持续超额贡献(分别为21.52%、26.29%),最大回撤控制在-13.45%左右,表现稳健。
  • 沪深300年化超额收益为6.1%,回撤-13.56%,信息比率0.7481,表现中等水平。

- 中证500收益表现居中,回撤更小(-6.76%)但样本外收益略低。
  • 不同指数成分股市值结构和风格差异显著,影响因子表现。中证1000较多小市值股更契合模型因子的风格属性。


6.3 差异性分析


  • 因子表现受跟踪指数成分股的市值、行业和风格轮动影响。

- 近年沪深300大盘指数表现相对弱势,中证500、1000中小盘股受益较好,提升因子有效性。
  • 选股范围不同(仅指数成分股或扩展全市场)可能产生不同拟合和回测结果。


以上分析表明,遗传规划因子在中小盘和宽基指数中具有良好选股能力,且泛化表现较为理想。[page::11] [page::12] [page::13] [page::14]

---

三、图表深度解读



图1:遗传规划流程展示(页2)



展示遗传规划从随机生成种群到基因适应度评估、选择、交叉、变异及迭代的完整流程。流程清晰反映进化算法核心思路:适者生存和遗传变异的双重作用,促进公式进化直至满足终止条件。

图2:遗传规划因子挖掘迭代流程(页2)



进一步细化运算步骤,从随机创建初代个体、适应度判定、多种遗传算子的选择(复制、交叉、变异),不断增加新个体直到满足迭代代数或效果目标。图示强调了概率性遗传算子在进化中的核心地位。

图3-6:交叉与多种变异机制(页4)


  • 交叉图演示了两个父树中子树交换的过程,体现基因重组能力,有助搜索新公式组合。

- 子树变异示意新的随机子树插入,保持群体多样性。
  • 点变异展示节点层面的随机替换,更细致调整表达式。

- Hoist变异“提升”子树精简表达式,预防因子过于复杂。

这些结构直观帮助理解遗传规划中进化多样化机制的技术细节。

图7:复杂因子表达式示例(页9)



树状图中展示了运算层级复杂的因子表达式结构,包括多层嵌套的标准差、均值、排名等时序统计运算。该图直观表明在未加阉割的遗传规划中可能出现过长难理解的表达式。

图8-10:沪深300、中证500、中证1000组合收益曲线(页13-14)


  • 曲线展示模型复合因子选股策略与基准指数基准的净值对比,紫色区域为超额净值回撤区间。

- 中证1000回撤相对沪深300更小且净值曲线稳健向上,说明遗传规划因子在小盘股中更具优势。
  • 沪深300因子收益波动较大但信息比率接近0.75,说明在大盘中策略相对稳健。

- 中证500表现中等,稳中带进且回撤控制良好。

曲线结合底层数据佐证了报告结论,有力证明改进遗传规划因子的实际投资价值。

---

四、估值分析



本报告不涉及具体股票公司或板块估值分析,主要聚焦因子挖掘模型的能力提升和回测表现分析。估值部分主要表现为因子适应度(Fitness)和回测策略收益等金融量化指标。适应度定义关键采用RankIC及其稳定性(RankICIR)来衡量因子预测能力和泛化性。

---

五、风险因素评估



报告明确识别了以下主要风险:
  • 模型测算风险:遗传规划模型超参数如种群大小、迭代次数、吝啬系数等选择对结果影响较大,模型参数设定不当可能引发失真。

- 样本依赖风险:机器学习基于历史数据,过度拟合训练样本数据后,样本外表现可能下降,因子效果不一定可复制。
  • 过拟合风险:虽然模型通过早停和复杂度惩罚控制部分过拟合,但仍无法完全避免,实际环境变化可能导致模型失效。


报告未明显给出针对风险的缓解策略,提醒投资者需谨慎使用模型结果作为唯一决策依据。

---

六、批判性视角与细微差别


  • 报告作者对遗传规划过拟合问题认识到位,拆分改进机制细致,但对部分参数如吝啬系数设定的合理性缺乏更具体理论支持,依然偏重经验调整。

- 对热启动和父子竞争机制的设计富有创新,但详细实现效果未见统计显著性检验和多次实验验证。
  • 虽然展示了多个因子RankIC数值和回测策略,报告未针对因子与传统因子的相关性做出深入剖析,缺乏对因子风格、本质及逻辑可解释性的深入探讨。

- 样本外表现确实有所改善,但报告未充分说明策略在不同市场环境下的敏感性,尤其是极端市场时模型的稳健性尚待检验。
  • 图表中回撤数据较为突出,暗示策略潜在风险仍存在,投资者应综合考虑。

- 报告从技术层面展开,但对业务层面如何结合人工经验因子进行充分补充较少。

---

七、结论性综合



本报告详细阐述了遗传规划算法在股票选股因子挖掘中的改进策略与应用效果。通过底层代码的优化、自定义函数集扩充及多项过拟合预防机制引入,显著提高了模型计算效率、因子表达简洁性和选股能力。核心改进包括:
  • 早停机制有效避免迭代过深带来的过拟合;

- 吝啬系数对因子表达复杂度进行惩罚,提升因子可解释性及样本外泛化;
  • 热启动方法提高初代种群质量,减少早熟收敛;

- 父子竞争保持种群多样性,防止子代不如父代现象。

基于Wind数据的实证回测中,遗传规划所挖掘的100个高适应度因子在样本内和样本外均表现稳定,尤其在中证1000指数中的复合因子回报率达到年化24.63%,2022年及2023年样本外超额收益分别达到21.52%和26.29%,最大回撤控制在-13.45%左右,显示出靠谱的稳健性和一定抗风险能力。沪深300和中证500中因子表现相对温和,反映出因子适当偏好中小盘股风格,受市值和风格轮动影响明显。

图表及回测数据清晰佐证了遗传规划改进模型相较传统模型在过拟合控制与整体性能提升上的突破。报告充分展现了遗传规划技术在量化因子挖掘的潜力和实际应用意义,为投资组合管理提供了强有力的技术支撑。

风险方面仍需关注模型超参数敏感性、历史数据依赖导致的未来表现不确定性以及机器学习算法固有的过拟合风险,投资者须结合实际谨慎操作。

综上,报告展示了一个技术全面、数据充分、方法创新且实证验证扎实的遗传规划因子挖掘改进框架,为未来机器学习因子研究和量化投资实践提供了宝贵参考。[page::0] [page::1] [page::2] [page::3] [page::4] [page::5] [page::6] [page::7] [page::8] [page::9] [page::10] [page::11] [page::12] [page::13] [page::14]

---

附:重要图表展示



图1:遗传规划流程展示




图2:遗传规划因子挖掘迭代流程展示




图3-6:交叉及变异操作示意

  • 交叉演示

  • 子树变异

  • 点变异

  • Hoist变异



图7:复杂因子表达式示例




图8:沪深300组合收益曲线(样本外2022/01/01至2023/10/31)




图9:中证500组合收益曲线(样本外2022/01/01至2023/10/31)




图10:中证1000组合收益曲线(样本外2022/01/01至2023/10/31)


报告