机器学习与因子(四): 遗传规划: 模型、优化与应用
创建于 更新于
摘要
本报告深入研究遗传规划算法在A股因子挖掘中的应用,针对过拟合风险提出早停机制、吝啬系数、热启动和父子竞争等优化措施,提高样本外因子稳定性和模型泛化能力。优化后的复合因子在主流宽基指数回测表现优秀,尤其在中证1000指数组合年化收益达24.63%,样本外收益率稳健,显示遗传规划在量化选股因子构建中的有效性和实用价值[page::0][page::16][page::17][page::20]。
速读内容
遗传规划算法简介与改进机制 [page::3][page::11]

- 遗传规划通过模拟自然选择进化,随机生成公式树,在多代迭代中优化因子表达式。
- 传统gplearn库无法同时处理多维面板和时序数据,现对底层代码升级支持以满足选股需求。
- 引入早停机制、公式膨胀控制(吝啬系数)、热启动和父子竞争减少过拟合和表达式冗余,提升模型效率和因子有效性。
参数设定与因子挖掘流程 [page::6][page::9][page::12]
| 参数 | 定义 | 设定值 |
|----------------|-----------------------------|----------|
| 世代数量 (generations) | 公式进化代数 | 5 |
| 种群大小 (population size) | 每代公式数量 | 1500 |
| 适应度指标 (metric) | RankIC作为公式进化适应度评价标准 | RankIC |
| 交叉概率 (pcrossover) | 父代交叉变异概率 | 0.6 |
| 子树变异概率 (psubtreemutation) | 子树随机替换概率 | 0.03 |
| 吝啬系数 (parsimonycoefficient) | 公式复杂度惩罚系数 | 0.005 |
- 数据利用2018年1月至2023年10月全A股量价数据,因子构造以月频预测20日收益为目标。
- 使用33种运算函数,包含基础和自定义时序量价指标,结合19个原始单因子进行公式组合[page::4][page::9][page::12]。
因子筛选与性能表现 [page::10][page::15][page::16]
- 优化后筛选出100个适应度高且过拟合较少的因子。
- 样本内外因子RankIC维持稳定,样本外因子年化收益如因子1为12.9%、因子37为10.3%,显示较强泛化能力。
- 单因子与复合因子策略均表现出较优超额收益,吝啬系数有效抑制了公式臃肿,提高理解性和计算效率。
复合因子回测结果与指数对比分析 [page::17][page::18][page::19]
| 指标 | 沪深300 | 中证500 | 中证1000 |
|--------------|---------|---------|----------|
| 年化收益率 | 6.10% | 12.17% | 24.63% |
| 夏普比率 | 0.2753 | 0.6332 | 1.1404 |
| 年化超额收益率 | 7.46% | 9.04% | 20.48% |
| 最大回撤 | -25.59% | -25.64% | -27.95% |
| 超额最大回撤 | -13.56% | -6.76% | -13.45% |
| 样本外2022年超额收益 | 6.71% | -0.06% | 21.52% |
| 样本外2023年超额收益 | 9.50% | 5.59% | 26.29% |
- 回测显示因子在中证1000指数成分股表现最优,收益率和风险调整后表现优越。
- 指数选股范围及市值差异导致不同指数中模型表现差异,反映因子风格及市场结构对策略影响明显。

风险提示及未来研究方向 [page::0][page::20]
- 超参数设置敏感,历史回测不代表未来表现,模型存在失效风险。
- 后续计划加入人工干预机制动态调整进化方向,降低因子相关性,结合深度学习等方法提高因子质量与时序alpha建模能力。
深度阅读
金融工程深度报告详尽分析
—— 机器学习与因子(四): 遗传规划: 模型、优化与应用
报告日期:2023年12月22日
分析师:陈奥林(执业证书号:S1230523040002)
---
一、元数据与概览
- 标题:机器学习与因子(四): 遗传规划: 模型、优化与应用
- 发布机构:浙商证券研究所
- 报告作者:陈奥林
- 日期:2023年12月22日
- 主题:本报告以遗传规划(Genetic Programming,GP)在金融因子挖掘中的应用为核心,详细阐述了遗传规划模型的建立、改进、参数设置、过拟合预防与应用效果,重点展示针对A股全市场因子的挖掘结果及其在主要宽基指数中的复合因子回测表现。
- 核心论点:
- 通过底层代码升级及引入过拟合预防机制(包括早停、吝啬系数、热启动、父子竞争等),大幅降低遗传规划模型的过拟合,提高因子有效性和样本外泛化能力。
- 挖掘出100个满足适应度定义的因子,并基于表现优异的单因子构建复合因子,在沪深300、中证500和中证1000主要指数中取得稳定的超额收益,尤其在中证1000表现优异,年化收益超过24%。
- 目标价及评级:本报告更偏重于模型技术挖掘与策略开发,不涉及具体标的目标价及投资评级。
---
二、逐节深度解读
1. 引言(第3页)
- 论点概述:
遗传规划是一种模拟自然界生物进化的机器学习算法,由随机生成的程序组成初始种群,通过迭代适应度评估、选择、交叉和变异,逐步优化公式表达,实现自动化因子构建。与传统经济学逻辑驱动的因子构建模式相反,遗传规划采用“先有公式,后有逻辑”的归纳法,通过大规模数据拟合自动发现潜在有效因子。
- 技术背景与局限:
- 传统gplearn库无法处理多维面板与时序数据,限制了其在量化选股因子开发中的直接应用。
- 报告通过改造底层代码解决该瓶颈,同时引入过拟合预防机制以提升模型稳定性。
- 逻辑与意义:该章节作技术铺垫,解释为什么遗传规划技术具有独特优势及现实应用中存在的挑战,预示后续改进方向和模型实证。
2. 数据采集与处理(第4页)
- 数据来源:Wind数据库,提供全面的A股量价及经济数据。
- 时间范围:2018年1月至2023年10月,70个月数据跨度。
- 处理方法:缺失值填补(KNN)、数据格式及量纲统一,通过长时间序列保障了因子挖掘的时效性和稳定性。
- 意义:基础完整、干净的面板数据为遗传规划建模提供坚实的数据基础,对因子长期稳定性验证尤为重要。
3. 遗传规划因子挖掘简介(第4-8页)
- 模型流程概述与图示(图1-2,5页):初始随机生成种群(公式),计算适应度(以RankIC为核心指标),选出适应度高的公式进行交叉、子树变异、点变异、Hoist变异等操作,多代迭代寻找优良公式。
- 参数设定(表1,6页):详细列举遗传规划关键参数,包括iterations(世代数)、populationsize(群体规模)、parsimonycoefficient(吝啬系数,类似正则化)、tournament size(锦标赛选择规模)、initdepth(初始树深)、适应度指标等。
- 复杂操作详解(3.3节,各种变异和进化方法,图3-6,7-8页):通过图示明晰交叉、子树变异、点变异、Hoist变异的具体机制,有助于理解遗传规划如何通过“基因”重组和突变生成新的因子表达式。
- 函数集扩展(表2,8-9页):在gplearn自带的基本算子基础上,加入大量自定义时序和价格量指标,如tsmean、tsstddev、tsdema、tsrsi、tslr_slope等,提高模型挖掘金融特征的能力。
- 逻辑总结:遗传规划通过树形公式表达金融因子,基于多变异操作提升多样性并借助适应度筛选优质因子;自定义函数集的扩充是实现有效因子的关键环节。
4. 挖掘流程与结果(第9-10页)
- 原始因子:19个量价和收益率指标作为基准因子输入。
- 计算方程与参数:33个运算符包含基本算子和自定义时序运算。常数窗口设定如1、5、10、20、40、60用来限定时序窗口大小。
- 模型参数(表4):
- 世代数较短(3代),群体500个,适应度指标使用RankIC,交叉概率0.6,变异概率低。
- 结果(表5):前20名的因子表现,样本内RankIC最高达到15.8%(即个股收益率排名相关系数),说明遗传规划在样本内的拟合较好。
- 问题指出:存在明显的样本内外表现衰减(过拟合问题),暗示需要进一步改进防范机制。
5. 过拟合预防机制(第11-15页)
- 核心思路:引入早停机制、吝啬系数(parsimony coefficient)惩罚过长公式、保留优质父代、热启动和父子竞争机制,提升模型效率和因子质量,降低计算资源浪费。
- 关键参数调整(表6):
- 迭代次数增加到5代,群体规模提升至1500,锦标赛选择规模降至10,增加了多样性和搜索空间。
- 吝啬系数设置为0.005以控制公式复杂度。
- 模型效果展示(图7,表7,表8,表9):
- 吝啬系数有效控制了公式长度,避免过长公式针对适应度的边际收益递减。
- 优化后模型挖掘出100个有效因子,因子表达更简洁,过拟合现象明显改善。
- 迭代过程中,模型的适应度先上升后维持稳定,未出现早期严重的子不如父现象,说明进化策略有效。
6. 单因子与复合因子回测(第16-19页)
- 单因子回测(表10):
- 回测时间:训练样本内2020-2021,样本外2022-2023。
- 选股池:全A股剔除新股和特别股。
- 选取因子1、9、32、37为代表,20日调仓频率下,年化超额收益13%左右,样本外RankIC表现稳定,波动较大反映因子风格特性。
- 复合因子回测(表11、12,图8-10):
- 复合因子在沪深300、中证500、中证1000指数内分别构建,调仓周期为月频。
- 回测表现:中证1000表现最优,年化收益率24.63%,信息比率1.4456,超额收益最大回撤-13.45%,2022、2023年样本外收益率均超过20%。
- 沪深300、中证500表现同样稳健,超额收益6-12%,最大回撤控制在合理范围内。
- 差异分析:
- 不同指数成分股特征差异明显:沪深300偏大盘蓝筹及金融业,中证500/1000偏中小市值增长。
- 市场风格轮动及指数的结构差异导致因子表现差异显著。
- 低市值指数因子效果更好,说明遗传规划因子更适合捕捉中小盘股票的alpha。
7. 总结与讨论(第20页)
- 整体结论:
- 传统遗传规划存在计算量大、易过拟合、复杂公式解释性差等问题,本报告通过引入多项优化机制,显著提升了模型的效率和泛化能力。
- 遗传规划能够有效挖掘复杂且非线性的股票因子交互关系,挖掘出的因子表现稳定,复合因子在样本外表现优异。
- 后续建议进一步考虑因子时序特征和相关性约束,以及结合深度学习等非线性合成方法以提升因子挖掘的效果。
8. 风险提示(第20页)
- 模型超参数选择敏感,收益指标基于历史数据,未来表现存在不确定性。
- 机器学习和遗传规划模型均基于历史数据训练,不能直接代表未来行情,仅供参考。
---
三、图表深度解读
图1:遗传规划流程展示(第4页)
- 展示内容:展示遗传规划过程的基本循环结构:随机生成初始种群 -> 计算适应度 -> 判断迭代终止条件 -> 选择适合个体 -> 繁殖(交叉和变异) -> 新种群。
- 解读:图示突显GP以“自然选择”为核心的进化机制,体现随机生成公式通过适应度筛选并迭代升级的逻辑,为后续算法详细展开奠定基础。
- 局限:未细化变异类型及避免过拟合的措施,报告后续章节对这内容展开。
图2:遗传规划因子挖掘迭代流程(第5页)
- 内容:更细化的流程图,标明了参数(世代数M,当前世代G)、多种遗传操作选择(繁殖、交叉、变异),以及适应度计算和终止条件。
- 解读:展示遗传操作基于概率的选择机制和迭代终止条件,为方法论透明度增强。
- 结合文本:明确了遗传规划如何通过↺循环逐步寻找最优因子表达式的过程和不同操作的概率影响。
图3-6(第7-8页):四种遗传变异操作的示例(交叉、子树变异、点变异、Hoist变异)
- 内容:
- 交叉通过父代与捐赠者子树交换生成后代。
- 子树变异用随机子树替换父代子树,增加多样性。
- 点变异在公式树中随机更换节点或叶子。
- Hoist变异通过提升子树局部节点简化表达式。
- 意义:这些变异操作是产生新因子的基石,保证多样性与挖掘的深度,报告结合图片及文字直观且系统展示了这些操作。
图7(第13页):复杂因子表达式示意图
- 内容:深度5、长度10的复杂表达式树,包含多级标准差、时序最大值和排名等计算。
- 解读:这一类因子虽然可能适应度高,但解释困难,表达臃肿是过拟合风险的表现。
- 结合文本:说明引入吝啬系数抑制此类公式过长,提升因子可解释性和模型泛化。
图8-10(第18-19页):三大指数(沪深300、中证500、中证1000)组合收益曲线
- 图形数据:分别展示不同指数成分内构建的复合因子投资组合累计净值(蓝线)、超额净值(绿色)、基准净值(红色)及超额回撤(紫色)。
- 解读:
- 中证1000组合增长明显,累计净值超过2倍,回撤显著降低。
- 回撤表现分散,沪深300与中证500回撤较大,但超额净值在近两年有所恢复。
- 和表12结合:收益率、信息比率与最大回撤数据形成完整风险收益图谱,说明遗传规划复合因子在小盘指数持有显著alpha能力。
---
四、估值分析
本报告专注因子挖掘模型科学与应用,未涉及具体标的估值。报告的衡量指标为适应度(RankIC)、超额收益率及信息比率等量化指标,体现模型本身的预测和选股能力,并以多因子复合策略回测作为策略估值和效用的验证手段。
---
五、风险因素评估
- 模型测算风险:模型超参数(世代数、群体大小、吝啬系数等)对因子的适应度及最终挖掘结果影响显著。参数选择须谨慎,避免过度拟合或欠拟合。
- 样本外失效风险:所有基于历史数据的机器学习模型均存在未来表现不可预测风险,特别是遗传规划基因表达复杂多样,需结合样本外稳定性进行严格验证。
- 数据质量风险:数据缺失、异常或时序失真可能影响因子生成。报告通过KNN填补和数据标准化降低该风险。
- 市场变化风险:快速风格轮动和结构性改革可能导致已挖掘因子失效。报告中三个主流指数的表现差异即体现风格切换带来的业绩波动。
- 缓解措施:加入早停、吝啬系数等机制以降低过拟合程度,同时采取多样化因子组合降低单因子失效风险。
---
六、批判性视角与细微差别
- 过拟合风险及控制力度:报告强调吝啬系数和早停机制,但最优参数选择依赖实验,经调整仍难完全避免过拟合现象,尤其在复杂度较高公式中。
- 迭代代数限制:模型迭代次数受限为5代,迭代不足可能漏掉潜在优质因子,而代数过多又容易造成过拟合,如何平衡仍为难题。
- 因子多样性与相关性:报告提到后续工作需控制因子相关性,但当前版本挖掘因子可能存在同质化,影响最终组合的多样化收益。
- 模型计算资源说明不充分:模型运行耗时高度依赖硬件和算力,当前缺乏具体性能指标,限制了评估模型实际应用的可行性。
- 样本外表现的稳定性波动:样本外因子IC及超额收益存在波动,未提供因子风格说明和市场环境变化的深度关联分析。
---
七、结论性综合
本报告系统而全面地介绍了遗传规划在金融因子挖掘领域的应用,从数据准备、算法框架、关键参数设定及变异操作,到过拟合预防、因子表达简化及后续改进方向,形成了完整的技术实现链条。
技术亮点:
> - 通过对传统gplearn底层代码的升级,实现了多维面板数据与时序数据同时处理,极大增强模型适用性。
- 引入了多种过拟合预防机制,包括早停机制、吝啬系数、热启动和父子竞争,不仅提升了模型效率,且有效缓解了过拟合问题。
> - 扩充了丰富的自定义函数集,涵盖时间序列与量价指标,提升了因子的表达能力和复杂度管理能力。
数据驱动发现:
> - 选用A股2018-2023年70个月数据,结合19个原始因子和33个运算符进行因子挖掘。
- 优化后模型提炼出100个高质量因子,样本内外RankIC表现稳定,单因子及复合因子均能持续提供超额收益。
回测成果:
> - 复合因子在沪深300、中证500和中证1000三个主流宽基指数均表现稳定,尤其是中证1000,年化收益达24.63%,信息比率高达1.44,样本外表现优异,回撤控制合理。
- 不同指数间因子表现差异体现了市值风格和行业配置的影响,反映出遗传规划因子具有较强的风格适应能力。
未来研究方向:
> - 纳入因子时间序列特性约束,进一步降低因子相关性,提升组合多样性与抗风险能力。
- 结合机器学习和深度学习技术,实现非线性因子的合成与增强。
> - 加强人工干预机制,实现进化过程的动态参数调整,提升模型收敛速度和因子质量。
整体来看,本报告不仅展示了遗传规划算法在量化投资因子挖掘中的应用潜力,更通过技术创新和严格回测验证了因子有效性和策略表现,体现了遗传规划在复杂金融数据处理领域的独特优势与发展前景。
---
溯源标注:
[page::0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]