CPU-GPU 异构计算平台 Shark 应用:GPLearn 自动因子挖掘

本页介绍 DolphinDB 3.0 的 CPU-GPU 异构计算平台 Shark、其核心模块,以及基于 Shark GPLearn 的自动因子挖掘与应用案例。

Source: https://dolphindb.cn/blogs/332

What this page covers

技能认证特训营第二期报名入口

页面顶部提供培训营报名与优惠信息,以及报名链接入口。

CPU-GPU 异构计算平台 Shark 应用:GPLearn 自动因子挖掘(文章信息)

本节给出文章标题、作者与发布日期。

Shark 介绍

本节介绍 Shark 作为 DolphinDB 3.0 推出的 CPU-GPU 异构计算平台,并概述核心功能模块与适用场景。

Shark GPLearn(功能与工作流程)

本节说明 Shark GPLearn 的功能特点、与 Python GPLearn 的差异,并介绍 GPLearnEngine/GPExecutor 架构与训练/执行流程及降频挖掘支持。

快速上手:符号回归

本节通过符号回归示例展示:构造模拟数据、创建 GPLearnEngine、运行 gpFit,并查看拟合结果。

应用案例:日频因子挖掘

本节介绍日频数据准备、训练参数与自定义 RankIC 适应度函数,以及基于 alphalens 的因子评价与筛选流程。

应用案例:分钟频因子挖掘

本节介绍分钟频数据准备、训练设置(包含适应度函数与 initProgram 配置),以及因子评价与可视化输出。

应用案例:降频因子挖掘(分钟频→日频)

本节介绍以分钟频输入训练日频目标的降频因子挖掘,包括降频列配置、一致性约束与预测结果切片注意事项。

进阶:自动因子挖掘

本节介绍多轮迭代自动因子挖掘的思路与筛选规则,包括中性化处理、相关性阈值与 IC 阈值配置等。

性能对比(Shark GPLearn vs Python GPLearn vs Python Deap)

本节在统一的训练参数与数据规模下,对比 Shark GPLearn、Python GPLearn 与 Python Deap 的训练耗时,并给出测试环境与功能差异点。

总结

本节回顾 Shark GPLearn 覆盖的应用场景,并描述未来扩展方向。

常见问题(FAQ)

本节汇总单因子测试方法、判别条件,以及自动因子挖掘配置的修改位置。

附录(版本、代码与数据下载)

本节提供代码适用版本信息,并列出脚本/代码文件与脱敏数据文件下载链接。

Facts Index

Entity Attribute Value Confidence
CPU-GPU 异构计算平台 Shark 应用:GPLearn 自动因子挖掘发布日期2026-03-11high
文章作者署名LiuFeifanhigh
Shark产品定位DolphinDB 3.0 推出的 CPU-GPU 异构计算平台high
Shark底层支撑以 DolphinDB 的高效存储系统为底层支撑,深度融合 GPU 并行算力,为计算密集型任务提供显著性能加速medium
Shark核心功能Shark Graph:通过 GPU 加速 DolphinDB 通用计算脚本,实现复杂分析任务并行化执行high
Shark核心功能Shark GPLearn:面向因子挖掘,支持基于遗传算法的自动化因子发现与优化high
Shark适用场景/价值主张帮助 DolphinDB 突破 CPU 算力瓶颈,提升在高频量化、实时风控等大规模数据分析场景的计算效率medium
Shark GPLearn模块定位基于 Shark 异构计算平台的高性能因子挖掘模块,可直接从 DolphinDB 读取数据并调用 GPU 进行自动因子挖掘与因子计算high
Shark GPLearn适用人群/场景适用于对性能具有较高要求的各类因子挖掘场景,提高投研效率medium
Shark GPLearn相较 Python GPLearn 的差异更丰富的算子库(包括使用三维数据的相关算子),并提供高效 GPU 版本实现high
Shark GPLearn训练语义引入分组语义,支持训练中进行分组计算high
Shark GPLearn频率处理能力支持对快照频、分钟频等中高频原始特征数据进行分钟频、日频的因子挖掘high
Shark GPLearn硬件并行能力支持单机多卡进行遗传算法因子挖掘high
Shark GPLearn 文档算子列表参考Shark GPLearn 快速上手文档链接:https://docs.dolphindb.cn/zh/tutorials/gplearn.html#gplearn__section_btv_r55_x1chigh
Shark GPLearn模块组成主要分为 GPLearnEngine 和 GPExecutor 两大模块high
GPLearnEngine职责训练调度:包括种群生成、进化和变异操作等;初始化生成初始公式种群并用目标函数衡量相符程度high
适应度函数示例回归问题适应度可使用目标值与公式结果间的均方误差(MSE)high
适应度函数示例量化因子适应度可使用因子 IC 作为适应度high
GPLearnEngine父代选择与进化方式依据适应度选出父代,通过交叉变异(Crossover Mutation)、子树变异(Subtree Mutation)、Hoist 变异、点变异(Point Mutation)进化high
GPExecutor职责对挖掘出的因子进行适应度计算;将二叉树转为后缀表达式(逆波兰表达式)并在 GPU 上执行算子队列high
GPExecutor后缀表达式示例div(x,add(y,0.15)) 转换为 [0.15, y, add, x, div]high
GPExecutor执行机制遍历执行队列:数据算子加载入栈;函数算子按参数出栈并利用 GPU 执行,结果入栈;最终栈顶为因子值并调用适应度函数计算适应度high
Shark GPLearn降频因子挖掘支持创建引擎时可通过参数指定聚合列;训练时按聚合列分组并随机选择聚合函数;通过函数签名实现算子维度约束自动生成含降频因子的表达式medium
快速部署测试环境参考文档Shark GPLearn 快速上手文档第 2 章:https://docs.dolphindb.cn/zh/tutorials/gplearn.htmlhigh
符号回归定义无需假定函数形式,自动发现数据集的数学表达式;核心为在表达式空间中搜索以拟合目标函数;常用实现为遗传编程(GP)high
符号回归示例目标函数目标函数表达式y = 2x0 + x1 - x1²(图片说明中给出)medium
createGPLearnEngine(符号回归示例)关键参数示例populationSize=1000, generations=20, stoppingCriteria=0.01, tournamentSize=20, functionSet=[add, sub, mul, div, sqrt, log, reciprocal, pow], fitnessFunc=mse, initMethod=half, initDepth=[1,4], restrictDepth=true, constRange=[0,2.0], seed=123, parsimonyCoefficient=0.01, crossoverMutationProb=0.8, subtreeMutationProb=0.1, hoistMutationProb=0.0, pointMutationProb=0.1, minimize=true, deviceId=0, verbose=truehigh
gpFit(符号回归示例)调用方式res = engine.gpFit(1)high
符号回归示例结果拟合效果返回最优表达式适应度为 0,且表达式 sub(add(add(x0, x1), x0), mul(x1, x1)) 与目标函数逻辑等价medium
日频数据准备数据文件DailyKBar.csv(通过 loadText 读取)high
日频因子挖掘数据划分训练集区间2020.08.12 至 2022.12.31 的所有交易日high
日频因子挖掘数据划分测试集区间2023.01.01 至 2023.06.19 的所有交易日high
日频训练特征要求数据类型/排序建议训练特征需要 FLOAT/DOUBLE 类型;训练数据最好根据分组列排序high
日频样例特征与标签包含字段SecurityID、TradeTime(由 TradeDate 改名)、preclose/open/close/high/low/volume/amount/pctchg/vwap/marketvalue/turnover_rate/EP(1/PE)/BP(1/PB)与 ret20(未来20日收益率)high
createGPLearnEngine(日频示例)关键参数示例groupCol=SecurityID, seed=42, populationSize=1000, generations=10, tournamentSize=20, minimize=false(最大化), initMethod=half, initDepth=[2,4], restrictDepth=true, windowRange=[5,10,20,40,60], constRange=0, parsimonyCoefficient=0.05, crossoverMutationProb=0.6, subtreeMutationProb=0.01, hoistMutationProb=0.01, pointMutationProb=0.01, deviceId=0high
日频示例 initProgram初始种群来源使用 alphaFactor(含 world quant 101 与 国泰君安 191 部分表达式)values(),take(..., 600) 作为初始种群high
parsimonyCoefficient(节俭系数)用途用于限制公式树长度,通过对原始适应度加惩罚项得到惩罚后适应度high
节俭系数方向规则(Shark)最小化适应度时的影响节俭系数为正鼓励更短公式树;为负鼓励更长公式树high
节俭系数方向规则(Shark)最大化适应度时的影响节俭系数为正鼓励更长公式树;为负鼓励更短公式树high
自定义适应度函数(日频因子挖掘)RankIC 均值形式训练产生的因子值按日期计算 RankIC(spearmanr)后取均值(公式以图片给出)medium
setGpFitnessFunc用途与支持的辅助算子可将自定义适应度函数与日期分组列传入引擎;自定义适应度支持 groupby/contextby/rank/zscore 等辅助算子(详见函数页面)high
setGpFitnessFunc 文档链接https://docs.dolphindb.cn/zh/funcs/s/setgpfitnessfunc.htmlhigh
gpFit(日频挖掘)返回数量参数programNum=30;engine.gpFit(programNum) 返回适应度前 programNum 的因子公式high
alphalens 模块用途用于单因子评价函数开发(引用教程链接)high
Alphalens 在 DolphinDB 中的应用教程链接https://docs.dolphindb.cn/zh/tutorials/Practical_Factor_Analysis_Modeling.htmlhigh
单因子评价流程(本教程实现)数据预处理对因子值进行 zscore 标准化;调用 alphalens::get_clean_factor_and_forward_returns 计算不同周期收益并按分位数分组high
单因子评价流程(本教程实现)IC 方法调用 alphalens::factor_information_coefficient 计算每日 rankIChigh
单因子评价流程(本教程实现)分层回测方法按持仓周期调整分组(周期内后续天沿用第一天分组);调用 alphalens::mean_return_by_quantile 与 plot_cumulative_returns_by_quantile 生成分组收益/累计收益high
analysisFactors 输出输出内容rankICRes(各因子 RankIC 序列)、quantileRes(分组区间收益表现)、rankICStats(训练/测试/全量统计:RankIC均值、RankIC IR、signRate)high
日频因子筛选条件(示例)阈值abs(RankIC)≥0.05、abs(RankICIR)≥0.5、signRate≥0.65(并去除重复组合)high
分钟频因子挖掘数据划分训练集区间2021-03-01 至 2021-10-31high
分钟频因子挖掘数据划分测试集区间2021-11-01 至 2021-12-31high
分钟频数据准备数据文件MinuteKBar.csv(通过 loadText 读取)high
分钟频标签 ret240定义move(close,-241)\close-1 作为未来240分钟收益率;并过滤 ret240 为 NULL 的行high
createGPLearnEngine(分钟频示例)适应度函数fitnessFunc = spearmanr(Shark 自带斯皮尔曼相关系数)high
createGPLearnEngine(分钟频示例)initProgram 设置initProgram = NULL(不使用 Alpha 101/191 初始表达式)high
createGPLearnEngine(分钟频示例)关键参数示例seed=42, populationSize=1000, generations=5, tournamentSize=20, initDepth=[3,5], restrictDepth=true, windowRange=[30,60,120,240,480], constRange=0, parsimonyCoefficient=0.8, crossoverMutationProb=0.8, subtreeMutationProb=0.1, hoistMutationProb=0.02, pointMutationProb=0.02, deviceId=0, minimize=falsehigh
降频因子挖掘输入/输出频率使用分钟频K线作为训练输入;使用标的列与日期列作为降频列;使用日频个股20日后收益率作为训练目标(分钟频输入到日频输出)high
createGPLearnEngine(降频示例)降频列参数dimReduceCol = ["SecurityID", "TradeDate"]high
降频挖掘 targetData 长度要求一致性要求targetData 向量长度需要与 trainData 按降频列聚合产生的分组数量一致high
gpPredict(降频因子)注意事项gpPredict 输出行数与输入相同,只有前 n 行有效(n=最终分组数);需用 [0:rows(totalData)] 切片获取降频因子结果high
自动因子挖掘方法目标与迭代机制以每轮挖掘解释收益率的增量信息为目标;以剔除风格因子(对数化市值、行业)后的残差收益率为预测目标;筛选后入库并用新因子回归更新残差收益率,重复多轮medium
自动因子挖掘流程图图示存在图 3-25 展示 Shark GPLearn 自动因子挖掘标准化流程high
自动因子挖掘数据处理中性化处理加入行业信息与市值信息,对预测目标进行行业市值中性化处理(对数市值+行业 one-hot;ols residual)high
自动因子挖掘筛选逻辑(示例实现)相关性与IC规则保留因子相关性均值小于0.7;若相关性超过0.7,则保留 IC 值最高的因子,其余剔除high
自动因子挖掘参数配置(示例)outerIterNum3(重置种群迭代次数/大循环)high
自动因子挖掘参数配置(示例)innerIterNum5(遗传算法迭代次数/小循环)high
自动因子挖掘参数配置(示例)icThreshold0.03(因子表达式 IC 阈值)high
自动因子挖掘参数配置(示例)corrThreshold0.7(因子表达式相关系数均值阈值)high
自动因子挖掘参数配置(示例)returnNum100(单次模型返回因子数量)high
性能对比实验对比对象Shark GPLearn、Python GPLearn、Python Deap 在相同测试环境与条件下进行性能对比high
性能对比参数设置共同迭代次数generations/ngen = 5high
性能对比参数设置共同种群规模populationSize/population_size/population = 1000high
性能对比参数设置共同锦标赛规模tournamentSize/tournament_size/tournsize = 20high
性能对比数据规模标的数量3002 只股票high
性能对比数据规模训练集样本量1744162 条high
性能对比数据规模测试集样本量333222 条high
性能对比数据划分训练集日期范围2020-08-12 至 2022-12-31high
性能对比数据划分测试集日期范围2023-01-01 至 2023-06-19high
性能对比适应度函数统一选择因子值与 ret20 的 Pearson 相关系数(自定义适应度函数)high
训练耗时对比DolphinDB Shark(版本 3.00.4 2025.09.05 LINUX_ABI x86_64)训练耗时6.3 shigh
训练耗时对比Python GPLearn(版本 3.12.7)训练耗时189 shigh
训练耗时对比Python Deap(版本 3.12.7)训练耗时1102 shigh
性能提升结论相对 Python GPLearn 的倍数30.0 倍high
性能提升结论相对 Python DEAP 的倍数174.9 倍high
Shark 相对 Python GPLearn/Deap 的功能差异(列举)支持项restrictDepth=true 全程限制公式树深度;groupCol 支持适应度函数分组运算;windowRange 指定窗口大小范围;更丰富的 functionSet;更便捷的表达式字符串解析调用方式(sqlColAlias+parseExpr)medium
测试环境(硬件)CPUIntel(R) Xeon(R) Gold 5220R CPU @ 2.20GHzhigh
测试环境(硬件)GPUNVIDIA A30 24GB(1块)high
测试环境(硬件)内存512GBhigh
测试环境(软件)操作系统CentOS Linux 7 (Core)high
DolphinDB(测试环境)server 版本3.00.4 2025.09.05 LINUX_ABI x86_64high
DolphinDB license(测试环境)限制16 核 128 GBhigh
Shark GPLearn(总结)覆盖场景实现日频因子挖掘、分钟频因子挖掘、降频因子挖掘、自动因子挖掘四大应用场景high
Shark GPLearn(路线图)未来计划进一步扩展对 DolphinDB 内置函数算子支持,并允许通过脚本语言定义更灵活的自定义函数算子medium
单因子测试方法(FAQ)常用方法分类ICIR 法、回归法、分层回测法;本文主要使用 ICIR 法与分层回测法high
线性预测能力判别条件(FAQ)RankIC/分层回测判别训练期与测试期 RankIC 符号相同且绝对值大于阈值;或分层回测满足 Top>Middle>Bottom 且 RankIC 稳定为正;或 Top<Middle<Bottom 且 RankIC 稳定为负medium
非线性预测特征判别条件(FAQ)分层回测特征Middle 组收益显著高于 Top 组与 Bottom 组medium
自动因子挖掘配置修改(FAQ)修改位置与参数在“应用案例自动因子挖掘.dos”的文件开头修改 outerIterNum、innerIterNum、icThreshold、corrThreshold 以调整配置与逻辑medium
附录:代码适用版本(Shark)版本号3.00.4 2025.09.09 LINUX_ABI x86_64high
代码文件(第2章)下载链接01.快速上手符号回归.dos:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/01.%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E7%AC%A6%E5%8F%B7%E5%9B%9E%E5%BD%92.doshigh
代码文件(第3章)下载链接02.应用案例日频因子挖掘.dos:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/02.%E5%BA%94%E7%94%A8%E6%A1%88%E4%BE%8B%E6%97%A5%E9%A2%91%E5%9B%A0%E5%AD%90%E6%8C%96%E6%8E%98.doshigh
代码文件(第3章)下载链接03.应用案例分钟频因子挖掘.dos:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/03.%E5%BA%94%E7%94%A8%E6%A1%88%E4%BE%8B%E5%88%86%E9%92%9F%E9%A2%91%E5%9B%A0%E5%AD%90%E6%8C%96%E6%8E%98.doshigh
代码文件(第3章)下载链接04.应用案例降频因子挖掘.dos:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/04.%E5%BA%94%E7%94%A8%E6%A1%88%E4%BE%8B%E9%99%8D%E9%A2%91%E5%9B%A0%E5%AD%90%E6%8C%96%E6%8E%98.doshigh
代码文件(第3章)下载链接05.应用案例自动因子挖掘.dos:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/05.%E5%BA%94%E7%94%A8%E6%A1%88%E4%BE%8B%E8%87%AA%E5%8A%A8%E5%9B%A0%E5%AD%90%E6%8C%96%E6%8E%98.doshigh
代码文件(第4章)下载链接Compare_SharkGPLearn.dos:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/Compare_SharkGPLearn.doshigh
代码文件(第4章)下载链接Compare_PythonDeap.py:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/Compare_PythonDeap.pyhigh
代码文件(第4章)下载链接Compare_PythonGPLearn.py:https://docs.dolphindb.cn/zh/tutorials/script/shark_gplearn_application/Compare_PythonGPLearn.pyhigh
脱敏数据文件下载链接DailyKBar_masked.zip:https://docs.dolphindb.cn/zh/tutorials/data/shark_gplearn_application/DailyKBar_masked.ziphigh
脱敏数据文件下载链接MinuteKBar_masked.zip:https://docs.dolphindb.cn/zh/tutorials/data/shark_gplearn_application/MinuteKBar_masked.ziphigh
脱敏数据文件下载链接Industry_masked.zip:https://docs.dolphindb.cn/zh/tutorials/data/shark_gplearn_application/Industry_masked.ziphigh