自动因子挖掘神器,9 秒挖完 166W 行数据!

这是一篇关于高性能自动因子挖掘的技术实践文章,包含文章标题与作者/日期等信息。

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

What this page covers

技能认证特训营第二期报名活动

页面顶部包含活动提示,提供限时报名链接,并强调专属福利优惠。

自动因子挖掘神器,9 秒挖完 166W 行数据!

文章展示标题与作者/日期信息,整体定位为高性能自动因子挖掘的技术实践内容。

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

本节介绍遗传算法的来源与应用场景,并说明 gplearn 在量化因子挖掘中的性能与数据维度支持限制。

方案:DolphinDB Shark GPLearn 的能力差异

本节提出 Shark GPLearn,并概述其算子库、GPU 实现、分组语义、三维数据支持与单机多卡扩展能力。

示例概览与白皮书入口指引

本节说明将以股票日频 K 线数据进行因子挖掘示例,并指引至官网开发者中心白皮书获取完整案例与代码。

第一步:导入数据并进行预处理

本节给出示例数据时间范围,并概述 A 股筛选、指标计算、清洗与股票筛选等预处理步骤。

第二步:训练模型

本节说明训练/测试拆分、引擎创建与算子库配置、自定义适应度函数与训练调用,并给出样本规模与耗时信息。

第三步:因子评价

本节说明因子挖掘后需要评价,并给出使用 DolphinDB Alphalens 进行 IC/IR 分析的流程、函数与并行/批量处理方式,以及示例阈值。

第四步:模型优化

本节通过进化轮次、节俭系数与初始化公式等参数对比,讨论适应度、公式复杂度与可解释性的权衡,并给出初始化种群策略的改进方向与示例观察。

结尾:获取白皮书与下载试用

页面结尾引导访问官网获取《Shark GPLearn 高性能因子挖掘白皮书》,并下载试用 DolphinDB。

Facts index

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