基于股票日频 K 线的自动因子挖掘实践
该页面提供文章标题与基础发布信息(作者/日期)区域。
Source: https://dolphindb.cn/blogs/132
What this page covers
- 遗传算法与 python gplearn 的背景与局限。
- DolphinDB Shark GPLearn 的能力概述与特性点。
- 案例入口与从官网白皮书获取完整案例与代码的指引。
- 基于股票日频 K 线数据的因子挖掘分步流程。
- 数据导入与预处理要点(样本范围、筛选与指标处理)。
- 模型训练设置、适应度函数、训练规模/耗时与产出形式。
- 因子评价(IC分析)、实现流程与有效因子筛选阈值。
技能认证特训营第二期报名信息
页面顶部包含技能认证特训营第二期开启及限时报名链接与福利优惠提示。
- 顶部区域包含技能认证特训营第二期的报名信息。
- 页面提供一个限时报名链接。
- 报名信息包含福利或优惠提示。
基于股票日频 K 线的自动因子挖掘实践
文章标题与基础发布信息(作者/日期)区域。
- 该部分呈现文章标题。
- 该部分呈现基础发布信息(含日期)。
遗传算法与 gplearn 背景及局限
介绍遗传算法来源与应用,并以 python gplearn 为例说明其用途与在量化投研场景中的性能与数据维度限制。
- 该部分介绍遗传算法的来源信息。
- 该部分给出遗传算法的应用场景示例。
- 该部分以 python gplearn 说明遗传算法在数据分析中的用途。
- 该部分指出 python gplearn 的性能瓶颈会影响因子挖掘效率。
- 该部分指出 python gplearn 仅支持二维数据特征提取。
Shark GPLearn 产品引入与能力概述
提出 DolphinDB Shark GPLearn 并描述其相对 gplearn 的性能提升、算子库、GPU版本、多卡与三维数据分组语义支持等特性。
- DolphinDB 推出 DolphinDB Shark GPLearn。
- Shark GPLearn 相对 gplearn 的性能提升被描述为“近百倍”。
- Shark GPLearn 被描述为具有更丰富的算子库。
- Shark GPLearn 提供高效的 GPU 版本实现。
- Shark GPLearn 引入分组语义以支持训练中的分组计算。
- Shark GPLearn 支持在三维数据中挖掘因子。
- Shark GPLearn 支持单机多卡进行遗传因子挖掘。
案例入口与白皮书指引
说明将以股票日频K线因子挖掘为例展示使用方法,并指向官网开发者中心白皮书获取完整案例与代码;配有导航截图说明。
- 页面以股票日频 K 线因子挖掘作为示例。
- 页面指向官网开发者中心的白皮书入口以获取完整案例与代码。
- 该部分包含导航截图说明。
基于股票日频 K 线数据进行因子挖掘流程
按步骤描述使用 Shark GPLearn 进行因子挖掘:数据导入预处理、模型训练、因子评价与模型优化。
- 流程包含数据导入与预处理。
- 流程包含模型训练。
- 流程包含因子评价。
- 流程包含模型优化。
第一步:导入数据并进行预处理
给出样本时间范围与预处理要点,包括筛选A股代码前缀、计算收益率与52周高低、删空与筛选全量交易日股票等。
- 示例数据集时间范围为 2020-08-12 至 2023-06-19。
- 预处理选取“0”“3”“6”开头的 A 股数据。
- 预处理包含计算收益率。
- 预处理包含计算 52 周最高价与最低价。
- 预处理包含删除空值与筛选每天都有数据的股票。
第二步:训练模型
描述训练/测试拆分、算子库配置、引擎创建、自定义适应度函数与挖掘因子的流程,并给出训练规模与耗时及产出因子公式示例图。
- 训练/测试拆分为前 80% 日期训练、后 20% 日期测试。
- 输入数据可通过 SQL 函数查询指定列(xCols)。
- createGPLearnEngine 用于创建引擎并初始化遗传算法模型参数。
- 引擎参数包含种群大小与进化代数等设置。
- 可指定算子库(示例提及滑动窗口函数)。
- 自定义适应度函数通过 spearmanr、groupby、mean 实现 rankIC 计算逻辑。
- 训练调用示例为 gpFit(50),用于挑选最优的 50 个因子。
- 测试数据集规模被描述为约 166W 行。
- 训练 50 个因子耗时约 9 秒。
- 挖掘产出包含因子公式(program)的示例展示。
第三步:因子评价
说明需对挖掘因子做单因子评价与回测,介绍 DolphinDB Alphalens 模块与IC分析流程、实现细节及有效因子筛选阈值,并附IC结果图说明。
- 自动挖掘出的因子并非都有效。
- 正式使用前需要单因子评价与多因子回测等步骤。
- 页面介绍 DolphinDB Alphalens 模块。
- 该模块开发逻辑被描述为与 Quantopian 的 Alphalens 相同。
- 该模块可计算不同持仓周期下的因子 IC 值序列。
- 本例使用 IC 值分析法进行简单因子评价。
- calFactor 与 parseExpr 可将公式字符串转为元代码。
- sql 可动态生成语句,eval 执行元代码得到因子值。
- get_clean_factor_and_forward_returns 用于数据处理。
- create_information_tear_sheet 用于计算因子 IC 值。
- 可用 peach 将 single_factor_analysis 批量应用于多因子公式。
- 筛选阈值为 IC 值 > 0.03 且 IR 值 > 0.5。
- 该部分附带 IC 结果图说明。
第四步:模型优化
展示对进化轮次、节俭系数、初始化公式等参数的对比实验与结论,并说明通过增加初始化公式数量与混合随机公式提升种群多样性及结果示例。
- 该部分对进化轮次、节俭系数、初始化公式等参数做对比实验。
- 迭代次数越多,适应度越高,但增长幅度有限。
- 迭代次数越多,因子长度越长,复杂度增高。
- 迭代次数越多,可解释性降低。
- 节俭系数实验仅测试 generations=6 且 parsimonyCoefficient ≤ 0 的情况。
- 节俭系数绝对值越大,对公式长度控制越严格。
- 节俭系数过大可能不利于挖掘有效因子。
- Shark GPLearn 支持设置初始化公式以减少初始公式随机性。
- 初始化公式示例来自国泰君安 191 因子库的 70 号因子。
- 单一初始化公式下,样本内 IC 值有所提升,但生成因子组成单一。
- 可通过增加初始化公式数量来丰富初始种群。
- 可调节 size(initProgram)/populationSize,并混入随机生成公式。
- 改进实验将初始化公式从 1 个增加到 8 个。
- 改进实验中,初代种群 1000 个个体里 500 个来自指定初始化公式。
- 改进实验中,其余初代个体为随机生成公式。
- 筛选后得到表现较好的因子列表(图示对比不同周期指标)。
结尾与白皮书下载试用引导
总结为 Shark GPLearn 自动因子挖掘示例,并引导访问官网获取高性能因子挖掘白皮书与下载试用 DolphinDB。
- 页面引导访问官网获取 Shark GPLearn 高性能因子挖掘白皮书。
- 页面引导下载试用 DolphinDB。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 文章 | 发布日期 | 2024-12-19 | high |
| 遗传算法 | 提出者与机构 | 由美国密歇根大学的 J. Holland 提出 | medium |
| 遗传算法 | 应用场景示例 | 量子计算、电子设计、游戏比赛等 | low |
| python gplearn | 工具定位 | 基于遗传算法开发的数据分析工具 | high |
| python gplearn | 能力 | 可自动生成计算公式、优化特征选择和因子的非线性表达式 | medium |
| python gplearn | 性能问题 | 存在性能瓶颈,导致因子挖掘效率偏低(适应度需计算大量复杂公式) | medium |
| python gplearn | 数据维度支持 | 只支持从二维数据中提取特征,不适用于时间×标的×特征的三维数据挖掘场景 | high |
| DolphinDB Shark GPLearn | 推出方 | 由 DolphinDB 推出 | high |
| DolphinDB Shark GPLearn vs gplearn | 性能提升幅度 | 性能上可实现近百倍提升 | medium |
| DolphinDB Shark GPLearn | 算子库 | 具有更丰富的算子库 | medium |
| DolphinDB Shark GPLearn | GPU实现 | 提供高效的 GPU 版本实现 | medium |
| DolphinDB Shark GPLearn | 分组语义 | 引入分组语义,可在训练中分组计算 | medium |
| DolphinDB Shark GPLearn | 三维数据支持 | 支持在三维数据中挖掘因子 | high |
| DolphinDB Shark GPLearn | 多GPU支持 | 支持单机多卡进行遗传因子挖掘 | medium |
| 案例 | 数据类型 | 股票日频 K 线数据因子挖掘 | high |
| 完整案例与代码 | 获取方式 | 可前往 DolphinDB 官网【开发者中心】-【白皮书】获取 | medium |
| 示例数据集 | 时间范围 | 2020-08-12 至 2023-06-19 | high |
| 示例数据预处理 | 标的筛选 | 选取“0”“3”“6”开头的 A 股数据 | high |
| 示例数据预处理 | 指标处理 | 获取基础指标;计算收益率和 52 周最高价/最低价;删除空值;选取每天都有数据的股票 | medium |
| 训练/测试拆分 | 比例 | 前 80% 日期数据为训练集,后 20% 为测试集 | high |
| 模型输入数据 | 获取方式 | 通过 sql 函数查询指定列(xCols)作为输入数据 | medium |
| createGPLearnEngine | 用途与设置 | 创建引擎初始化遗传算法模型,设置种群大小、进化代数等参数,并指定算子库(如滑动窗口函数) | medium |
| 自定义适应度函数 | 实现逻辑 | 通过 spearmanr、groupby、mean 三个函数实现因子 rankIC 的计算逻辑 | medium |
| 训练调用 | 函数与目标 | 调用 gpFit(50) 进行训练,挑选最优的 50 个因子 | high |
| 测试数据集 | 规模 | 约 166W 行 | medium |
| 训练性能 | 耗时 | 训练 50 个因子耗时约 9 秒 | medium |
| 挖掘产出 | 结果形式 | 挖掘出因子公式(program),示例图中展示函数嵌套并使用 mul、msum、mmax 等算子组合日频字段 | low |
| 自动挖掘因子 | 有效性问题 | 并非所有挖掘出的因子都有效,正式使用前需要单因子评价、多因子回测等步骤 | high |
| DolphinDB Alphalens 模块 | 开发与对标 | DolphinDB 自主开发,开发逻辑与 Quantopian 用 Python 开发的 Alphalens 相同 | medium |
| DolphinDB Alphalens 模块 | 用途 | 可计算不同持仓周期下的因子 IC 值序列 | medium |
| 本例因子评价方法 | 方法 | 使用 IC 值分析法进行简单因子评价 | high |
| calFactor/parseExpr/sql/eval 工作流 | 计算方式 | calFactor + parseExpr 将公式字符串转为元代码;sql 动态生成语句;eval 执行元代码得到因子值 | medium |
| Alphalens 单因子分析 | 关键函数 | get_clean_factor_and_forward_returns 进行数据处理;create_information_tear_sheet 计算因子 IC 值 | medium |
| 批量因子处理 | 并行/批量方式 | 可调用 peach 函数将 single_factor_analysis 应用到所有因子公式上以快速处理大量因子 | medium |
| 有效单因子筛选 | 阈值 | IC 值 > 0.03 且 IR 值 > 0.5 视为有效,并对其进行多因子回测 | high |
| 模型优化参数 | 对比实验参数 | 针对进化轮次、节俭系数、初始化公式等参数进行对比实验 | high |
| 进化轮次影响 | 趋势结论 | 迭代次数越多适应度越高但增长幅度有限;迭代次数越多因子长度越长、复杂度增高、可解释性降低 | medium |
| 节俭系数实验设置 | 测试范围 | 仅测试 generations=6 且 parsimonyCoefficient ≤ 0 的情况 | high |
| 节俭系数影响 | 趋势结论 | 节俭系数绝对值越大,对公式长度控制越严格,产生因子越简洁;但过大时长度影响可能超过 fitness 函数影响,不利于挖掘有效因子 | medium |
| Shark GPLearn | 初始化公式能力 | 支持设置初始化公式,可基于已知有效因子进化变异以减少初始公式随机性、更有目标挖掘因子 | medium |
| 初始化公式来源 | 选择 | 从国泰君安 191 因子库中选取 70 号因子作为初始公式进行优化 | medium |
| 单一初始化公式优化结果观察 | 结论 | 样本内 IC 值有所提升,但因初始公式只有一个,生成因子组成单一 | medium |
| 初始化种群丰富方法 | 方法 | 增加初始化公式数量;调节 size(initProgram) / populationSize 比例并让初始种群加入随机生成公式 | medium |
| 初始化种群设置(改进实验) | 数量配置 | 初始化公式由 1 个增加到 8 个;初代种群 1000 个个体中 500 个由指定初始化公式生成,其余随机生成 | high |
| 改进初始化种群结果 | 结果描述 | 经过筛选,得到表现较好的因子列表(图示对比多因子在1D/5D/20D等周期的指标) | low |
| 白皮书与试用获取 | 行动引导 | 访问官网获取 Shark GPLearn 高性能因子挖掘白皮书,并下载试用 DolphinDB | medium |
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |