第 8 章 · 01 遗传规划自动因子挖掘 本节摘要:本节讲因子挖掘新范式的第一种——遗传规划(Genetic Programming,GP)。前几章的因子都是人手工构造,耗时且受限于想象力。遗传规划借鉴生物进化,把因子表示为公式树(由算子、变量、常数组合而成),通过交叉(组合两个公式的部分)、变异(随机改动公式)、选择(按适应度筛选)的迭代过程,自动演化出大量候选因子,用适应度(通常是 IC)筛选出有效的。华泰 AI 系列第 21 篇首次把遗传规划用于选股因子挖掘,第 23 篇进一步优化。遗传规划的优势是「自动 + 可解释」——生成的因子是显式公式,人能读懂;劣势是过拟合风险极高(搜索空间巨大,容易找到「恰好拟合历史」的伪因子),必须严格控制。
本节摘要:本节讲因子挖掘新范式的第一种——遗传规划(Genetic Programming,GP)。前几章的因子都是人手工构造,耗时且受限于想象力。遗传规划借鉴生物进化,把因子表示为公式树(由算子、变量、常数组合而成),通过交叉(组合两个公式的部分)、变异(随机改动公式)、选择(按适应度筛选)的迭代过程,自动演化出大量候选因子,用适应度(通常是 IC)筛选出有效的。华泰 AI 系列第 21 篇首次把遗传规划用于选股因子挖掘,第 23 篇进一步优化。遗传规划的优势是「自动 + 可解释」——生成的因子是显式公式,人能读懂;劣势是过拟合风险极高(搜索空间巨大,容易找到「恰好拟合历史」的伪因子),必须严格控制。本节讲清遗传规划的进化机制、公式树表示、交叉变异、适应度设计、过拟合控制,为后续 CTA 信号挖掘打底。
内容来源:仓库研报 华泰 AI 系列第 21 篇(遗传规划选股因子)、第 23 篇(再探遗传规划),知识结构化整理。
⚠️ 学习提示:遗传规划是过拟合的「重灾区」——它能搜索天文数字的公式组合,几乎一定能找到「历史 IC 高」的伪因子。学本节时,务必把「过拟合控制」当作核心,而非「怎么搜出高 IC 因子」。后者不难,难的是搜出的因子在样本外仍有效。
阅读完本节,你应当能够:
传统因子挖掘依赖研究员的「灵光一现」——基于经济逻辑或经验,手工构造因子(如「过去 20 日收益率」「量价相关」),再测试筛选。这条路有几个瓶颈:
遗传规划的目标就是自动化这个过程:把因子表示为可组合的公式,让算法自动搜索「哪些算子组合哪些变量能产生高 IC 因子」。它不是替代人的经济逻辑,而是在人定义的算子与变量空间内,高效穷举与优化。华泰 AI 21/23 把它系统用于选股,证明了「自动挖因子」的可行性。
遗传规划是进化算法(Evolutionary Algorithm)的一种,核心思想借鉴生物进化:
经过多代进化,种群的平均适应度提升,最终出现高适应度的「优秀因子」。这与生物「适者生存」的过程同构。
遗传规划把因子表示为公式树(expression tree)——一种树形结构,叶子节点是变量或常数,内部节点是算子。
例如,因子「过去 5 天收益率」的公式树:
return ← 算子(根) / \ close 5 ← 变量(收盘价)与常数(窗口)
更复杂的因子「(成交量变化率) × (过去 10 天波动率)」:
multiply / \ divide stddev / \ / \ volume delta volume 10
公式树的组成部分:
| 组成 | 说明 | 例子 |
|---|---|---|
| 变量 | 原始数据 | close(收盘价)、volume(成交量)、high、low |
| 算子 | 对变量的运算 | return、stddev、mean、correlation、add、multiply |
| 常数 | 数值参数 | 5、10、20(窗口)、0.5(权重) |
算子分两类:
通过这些算子与变量的组合,可以表示极其丰富的因子形态——这正是遗传规划搜索的空间。
💡 核心心法:遗传规划的效果,极大程度上取决于算子集与变量集的设计。算子太少,搜索空间受限,挖不出好因子;算子太多,搜索空间爆炸,易过拟合。华泰 21/23 在算子集设计上做了大量工程,这是实战的关键。
遗传规划通过两种操作产生新公式:
选两个父代公式树,各自随机选一个子树,交换,产生两个子代。例如:
add(return(close,5), stddev(volume,10))multiply(mean(close,20), rank(high))return(close,5) 与 B 的 mean(close,20):
add(mean(close,20), stddev(volume,10))multiply(return(close,5), rank(high))交叉本质是「基因重组」——把两个有效因子的部分组合,可能产生更好的因子。
随机选一个公式树的节点,替换为新生成的子树(随机算子+变量+常数)。例如:
return(close,5)return(close,10)return(high,5)stddev(volume,20)变异引入新的「基因」,防止种群陷入局部最优(所有公式越来越像,搜不到新形态)。
适应度函数(fitness function)衡量因子的好坏,遗传规划据此选择。选股因子挖掘中,适应度通常是:
选择机制:适应度高的个体更可能被选为父代。常用方法:
华泰 21 主要用 IC 作为适应度,结合样本外验证防止过拟合。
遗传规划的最大风险是过拟合——搜索空间巨大,几乎一定能找到「历史 IC 高但样本外失效」的伪因子。华泰 23 重点讨论了多种控制手段:
把数据分为训练集(用于适应度评估)与样本外集(不参与进化,只做最终验证)。只有训练集 IC 高且样本外 IC 仍显著的因子才被采纳。
参见华泰 AI 14/16。用多个不同的训练-验证时间窗口,只选在所有窗口都稳定的因子,避免对单段历史的过拟合。
因子公式越复杂(树越深、节点越多),过拟合风险越高。在适应度里加复杂度惩罚(类似正则化),倾向简单因子。
防止种群「趋同」(所有公式都很像),保持公式形态的多样性,避免搜到的都是同一类伪信号。常用「适应度共享」或限制相似个体的数量。
只提供「经济逻辑合理」的算子与变量,避免算法钻牛角尖(如用无意义的常数拟合噪声)。
⚠️ 学习提示:这五种手段要组合使用,任何单一手段都不够。尤其样本外检验与时序交叉验证是底线,没有这两个,遗传规划挖出的因子几乎一定是过拟合。华泰 23 的核心贡献就是系统化这套防过拟合流程。
华泰 21 首次把遗传规划用于选股因子挖掘,主要发现:
华泰 23(再探遗传规划)进一步优化:
优势:
局限:
💡 定位心法:遗传规划适合挖「中等复杂度、可解释、与人工因子互补」的因子。它不适合替代深度学习(后者能学更复杂模式),也不如人工因子有强经济逻辑。它是因子库的有益补充,而非银弹。
下一节,我们看遗传规划的另一应用——CTA 信号挖掘,把同样的进化算法用于商品/期货的趋势交易信号,与选股挖掘有何差异。