一、立项背景和目标
随着A股市场量化交易竞争日益激烈,传统人工挖掘Alpha因子的方式面临效率低下、逻辑同质化严重以及极易过拟合历史噪音等痛点。本项目旨在构建一套基于强化学习(Deep Reinforcement Learning)的自动化因子挖掘引擎。核心目标是:利用AI在巨大的数学公式搜索空间中自主探索,构建出具备高预测能力、强抗过拟合能力(极低相关性)以及跨周期稳健性的A股超短线(3日预测周期)因子池,为量化策略提供低相关的底层Alpha信号。
二、软件功能、核心功能模块介绍
本系统主要由以下核心模块构成:
1. 数据引擎模块:基于Qlib框架与AkShare数据源,实现A股全市场历史行情的自动化下载、清洗与二进制格式转换,为模型提供高吞吐的数据支持。
2. 因子生成与评估模块:采用MaskablePPO算法,将公式拼装建模为掩码动作空间;AI生成公式后,自动调用底层矩阵算子计算因子值。
3. 动态复合奖励引擎(核心创新):摒弃了传统单一IC奖励,自主研发了多目标复合奖励机制。包含:基于RankIC与RankICIR的增量预测奖励、基于池内因子两两皮尔逊相关性的多样性增量奖励,以及严苛的“硬拒绝机制”(相关性>=0.6的公式直接淘汰入池)。
4. 状态监控与导出模块:实时监控因子的信息系数(IC)、ICIR、因子相关性(pearson_mean)及探索熵等指标,并将最优模型自动导出为轻量级JSON文件。
三、业务流程、功能路径描述
1. 环境准备:启动本地量化数据管道,将A股历史数据转换为Qlib格式;配置训练超参数(如学习率、因子池容量、目标预测周期等)。
2. 强化学习循环:系统启动后,AI智能体在动作空间中随机采样,拼装出完整的数学表达式;底层计算引擎基于矩阵运算评估该公式的截面表现。
3. 奖励反馈与策略更新:将复合奖励值(预测增量+多样性增量)反馈给Critic网络,指导Actor网络在下一轮迭代中优先生成高分因子,同时严厉惩罚同质化公式。
4. 产出与回测:训练收敛后,系统输出包含最优因子组合及其权重的JSON文件;该文件最终被导入至外部的MATLAB等专业回测系统中,进行严谨的实盘模拟与风险评估。
一、整体架构和设计思路,不同模块使用的技术栈
本项目采用“数据流-生成流-反馈流”闭环架构。底层数据流基于 Qlib 与 AkShare,实现全市场行情清洗与高压缩比二进制转换;核心生成流采用强化学习,将因子公式生成建模为马尔可夫决策过程(MDP);评估反馈流则基于 PyTorch 实现高效的截面矩阵运算与多目标奖励计算;最终产物通过轻量级 JSON 格式无缝对接外部的 MATLAB 回测引擎。
技术栈:Python、PyTorch、Qlib(数据底座)、Stable-Baselines3 / sb3-contrib(MaskablePPO 算法)、AkShare(数据源)、MATLAB(回测终端)。
二、我的负责模块和结果(量化)
我独立负责了该系统的**核心奖励机制重构、底层源码 Bug 修复与矩阵性能加速**。
量化结果:1. 训练速度实现质的飞跃,FPS(每秒环境步数)从原始的 4 提升至 49(超 10 倍加速);2. 成功将因子池的“平均两两相关性(pearson_mean)”压制在 0.08 的极低水平,彻底解决因子同质化;3. 成功产出多组测试集 Rank IC 稳定突破 0.03(极优组达到 0.09)的短周期因子组合,并通过外部回测验证。
三、我遇到的难点、坑,和解决方案
1. 数据源网络死锁(坑):原生 Baostock 接口基于 Socket 通信,极易被本地网络或防火墙拦截报错。
解决方案:重构了 data_collection 模块,全面切换至走 HTTP/HTTPS 协议的 AkShare 接口,并加入防爬延时,彻底解决数据下载中断问题。
2. 开源框架的算法陷阱(坑):官方代码使用 Pearson IC 作为奖励,导致模型疯狂死记硬背历史妖股,测试集不仅失效还出现负向指标;且底层代码存在 n_updates 统计错误、列表越界、除零、无限递归等 Bug。
解决方案:重写继承类,彻底废除原生逻辑。加入严格的 None 值与除零保护;重构状态机修正统计 Bug;更重要的是,自研了一套“复合奖励引擎”——包含 Rank IC/ICIR 增量奖励、多样性增量奖励,并创新性地加入了“皮尔逊相关性 >= 0.6 的硬性拒绝入池”机制,逼迫 AI 寻找真正正交的因子。
3. CPU 算力瓶颈导致训练停滞(坑):在计算因子两两相关性时,原生的双层 for 循环受限于 Python GIL,仅单核运作,训练慢如蜗牛。
解决方案:利用 PyTorch 的底层矩阵乘法算子(th.mm)替代循环。将因子矩阵堆叠后一次性进行向量化矩阵乘法,瞬间激活了 i9 处理器的多核算力,实现算力吃满与极速收敛。