基于股票日频 K 线的自动因子挖掘实践

介绍遗传算法与 gplearn,并说明其在量化因子挖掘中的性能与数据维度限制。

Source: https://dolphindb.cn/news/detail/332

What this page covers

技能认证特训营第二期报名促销

页面顶部的限时报名入口与福利优惠提示。

新闻栏目与文章标题/日期

标注栏目为新闻,并给出文章标题与发布日期。

背景:遗传算法与 gplearn 的应用与局限

介绍遗传算法与 gplearn,并说明其在量化因子挖掘中的性能与数据维度限制。

解决方案:DolphinDB Shark GPLearn 及优势概述

提出 Shark GPLearn 并描述其相对 gplearn 的性能提升、算子库、GPU 与三维数据支持等能力。

案例引导与白皮书获取指引

引出以日频 K 线因子挖掘为例,并提示完整案例与代码可在官网开发者中心白皮书获取。

实践流程:基于股票日频 K 线数据进行因子挖掘

以四步流程(数据预处理、训练、评价、优化)展示如何使用 Shark GPLearn 进行因子挖掘。

第一步:导入数据与预处理

说明样本时间范围、训练指标计算与 A 股筛选、指标获取、收益率与 52 周高低、去空值与数据完整性筛选等预处理项。

第二步:模型训练(引擎、算子库、适应度、训练与耗时)

描述训练/测试拆分、SQL 获取输入列、创建 GPLearn 引擎与配置参数/算子库、定义适应度与训练输出因子数量及性能表现。

第三步:因子评价(Alphalens 模块与 IC/IR 分析流程)

说明使用 DolphinDB Alphalens 模块进行因子 IC 序列计算、批量单因子分析与有效因子筛选阈值。

第四步:模型优化(进化轮次、节俭系数、初始化公式)

通过对进化代数、节俭系数与初始化公式等参数做对比实验,讨论适应度、长度/可解释性与种群多样性权衡,并给出一种扩充初始化公式的设置方式。

结语与白皮书/试用引导

总结示例并引导访问官网获取 Shark GPLearn 白皮书并下载试用 DolphinDB。

Facts Index

Entity Attribute Value Confidence
基于股票日频 K 线的自动因子挖掘实践发布日期2024.12.19high
遗传算法提出者美国密歇根大学的 J. Hollandmedium
遗传算法应用场景示例量子计算、电子设计、游戏比赛等medium
python gplearn工具定位基于遗传算法开发的数据分析工具medium
python gplearn能力描述可自动生成计算公式、优化特征选择和因子的非线性表达式,用于因子挖掘low
python gplearn性能问题存在性能瓶颈,导致因子挖掘效率偏低(适应度计算涉及大量复杂公式)medium
python gplearn数据维度限制只支持从二维数据中提取特征;不适用于金融三维数据(时间、标的、特征)挖掘场景high
DolphinDB Shark GPLearn推出者DolphinDBhigh
DolphinDB Shark GPLearn相对 gplearn 的性能提升近百倍提升medium
DolphinDB Shark GPLearn算子库具有更丰富的算子库low
DolphinDB Shark GPLearnGPU 支持提供高效的 GPU 版本实现medium
DolphinDB Shark GPLearn分组语义引入分组语义,可在训练中分组计算medium
DolphinDB Shark GPLearn三维数据因子挖掘支持支持在三维数据中挖掘因子high
DolphinDB Shark GPLearn提升 GPU 性能的并行方式支持单机多卡进行遗传因子挖掘medium
示例案例案例主题基于股票日频 K 线数据的因子挖掘high
完整案例及代码展示获取位置DolphinDB 官网【开发者中心】-【白皮书】medium
示例数据集(股票日频 K 数据)时间范围2020 年 8 月 12 日至 2023 年 6 月 19 日high
数据预处理筛选范围选取“0”“3”“6”开头的 A 股数据high
数据预处理处理项获取基础指标、计算收益率与 52 周最高价/最低价、删除空值、选取每天都有数据的股票等high
训练指标构建计算项计算收益率、个股 20 个交易日后的收益率等训练相关指标medium
模型训练流程步骤顺序拆分训练集和测试集 → 获取训练集 → 配置算子库 → 创建 GPLearnEngine 引擎 → 自定义适应度函数 → 挖掘因子high
训练/测试集划分比例前 80% 日期数据作为训练集,剩下 20% 作为测试集high
数据获取方式方法通过 sql 函数查询指定列(xCols)作为模型输入数据high
createGPLearnEngine用途创建引擎以初始化遗传算法模型,并设置种群大小、进化代数等参数且指定算子库(如滑动窗口函数)high
自定义适应度函数用于 rankIC 计算的函数组合spearmanr、groupby、meanhigh
gpFit(50)训练配置/输出进行训练并挑选最优的 50 个因子high
测试数据集规模约 166W 行high
训练性能耗时训练 50 个因子耗时约 9 秒high
DolphinDB Alphalens 模块开发者与定位DolphinDB 自主开发;开发逻辑与 Quantopian 用 Python 开发的 Alphalens 相同medium
DolphinDB Alphalens 模块能力可计算不同持仓周期下的因子 IC 值序列high
因子评价流程(IC 值分析法)操作顺序计算单因子 → 单因子分析 → 获取每日收盘价 → 调用自定义函数对批量获得的因子进行 IC 值分析high
calFactor因子计算机制通过 parseExpr 将公式字符串转化为元代码;用 sql 动态生成 sql 语句;用 eval 执行元代码得到因子值high
get_clean_factor_and_forward_returns用途用于数据处理以获得单因子分析中间结果high
create_information_tear_sheet用途用于计算因子的 IC 值high
peach用途将 single_factor_analysis 应用到所有因子公式上以快速处理大量因子high
有效因子筛选标准(本例)阈值IC 值大于 0.03 且 IR 值大于 0.5high
模型优化目标原因/动机为更快挖掘出有效因子,需要反复调参low
模型优化参数(本例)对比项进化轮次、节俭系数、初始化公式high
进化轮次与结果关系(表格解读)趋势迭代次数越多适应度越高但增长幅度有限;迭代次数越多因子长度越长、公式复杂度增高并影响可解释性medium
节俭系数测试设置(本例)测试条件仅测试 generations=6 时 parsimonyCoefficient ≤ 0 的情况high
节俭系数与结果关系(表格解读)趋势节俭系数绝对值越大,对公式长度惩罚越严;设置过大时长度影响可能超过 fitness 函数影响,不利于挖掘有效因子medium
DolphinDB Shark GPLearn初始化公式能力支持设置初始化公式,用户可基于已知有效因子进行进化和变异以减少初始随机性并更有目标地挖掘因子medium
初始化公式来源(本例)选择从国泰君安 191 因子库中选取 70 号因子作为初始公式进行优化medium
单一初始化公式的影响(本例观察)结论样本内 IC 值有所提升,但因初始公式只有一个导致生成的因子组成单一medium
丰富初始化种群的方法(本例建议)方式增加初始化公式数量;调节 size(initProgram) / populationSize 的比例并在初始种群中加入随机生成公式medium
初始化种群配置(本例设置)数量与构成初始化公式从 1 个增加到 8 个;初代种群 1000 个个体中 500 个由指定初始化公式生成,其余随机生成high
资源获取与试用引导指引可访问官网获取 Shark GPLearn 高性能因子挖掘白皮书,并下载试用 DolphinDBmedium
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high