← 返回文章列表

七个量化开源项目综述:从因子发现、研究闭环到实盘执行

深度剖析 AlphaGen、RD-Agent、AlphaForge、AlphaAgent、QuantaAlpha、vn.py 与 alphalens:从单因子挖掘、Agent 自进化到实盘交易闭环的全景对比。

整理日期:2026-08-05
研究对象:AlphaGen、RD-Agent、AlphaForge、AlphaAgent、QuantaAlpha、vn.py、cloudQuant/alphalens
说明:本文是七篇源码、论文与 Issues 深度审计的综合报告。项目论文中的指标均按作者报告理解,不代表已经独立复现。

一、结论先行

这七个项目并不是七种互相替代的“因子挖掘算法”,而是分布在量化研发链的不同位置:

  • AlphaGen、AlphaForge重点解决“如何自动生成候选因子”;
  • AlphaAgent、QuantaAlpha重点解决“如何让 LLM/Agent 提出、评价并演化研究想法”;
  • RD-Agent把范围扩大到完整研发流程,并让因子研发和模型研发协同进化;
  • cloudQuant/alphalens不生成因子,负责因子诊断和标准化分析;
  • vn.py不判断因子是否有效,负责把研究信号连接到组合回测、模拟盘和实盘执行。

如果从零构建一套可审计的量化研发系统,正确做法不是从七者中选一个“一统全局”,而是分层吸收:

数据与目标合同
候选生成:GA + AlphaGen式合法动作约束 + LLM异质种子
研究编排:RD-Agent式类型化循环
轨迹与谱系:QuantaAlpha式完整研究轨迹
因子资产化:AlphaAgent式DSL、Factor Zoo与质量门
组合价值:AlphaGen式入池边际价值 + AlphaForge式滚动选择
二级诊断:Alphalens
模拟与实盘:vn.py

最重要的共同原则是:

候选因子的价值,不是它单独获得了多高 IC,而是它在固定目标、固定样本、固定成本和封存样本外评价中,为现有因子集合与下游模型带来了多少可复核增量。

二、七个项目在同一研发链上的位置

项目核心角色优化/处理对象主要机制最终输出
AlphaGen符号因子发现RPN 表达式及其加入因子池后的组合表现MaskablePPO、动态动作掩码、线性因子池候选表达式与组合权重
RD-Agent自主研发编排一轮完整研发任务,以及因子/模型方向选择假设—开发—执行—反馈闭环、Co-STEER、bandit 调度实验轨迹、因子、模型与反馈
AlphaForge生成式因子发现与动态组合因子生成分布、Factor Zoo、滚动因子权重Generator/Predictor、Gumbel-Softmax、动态筛选和回归因子库与时变组合
AlphaAgent论文多智能体发现;当前分支为因子研究平台假设、表达式、原创性、因子资产Idea/Factor/Eval Agent;DSL、memmap Factor Zoo、质量门论文候选因子;当前平台因子资产
QuantaAlpha轨迹级自进化研究假设到回测反馈的完整轨迹轨迹池、LLM mutation/crossover、质量门带父子谱系的研究轨迹
cloudQuant/alphalens因子诊断已计算的因子值和未来收益IC、分位数组、换手、秩自相关、tearsheet统计表和诊断图
vn.py交易与执行基础设施行情、订单、成交、持仓、账户和策略事件EventEngine、Gateway、OMS、策略/组合引擎回测、模拟盘和实盘交易状态

这张表揭示了一个常见误区:Alphalens 和 vn.py 不应与 AlphaGen 比“谁挖因子更强”,因为它们根本不在同一层。

三、最容易混淆的四个 Alpha 项目

3.1 AlphaGen:核心是“因子池级价值”,不是 PPO 本身

AlphaGen 深度研究笔记

AlphaGen 用 RPN token 序列表示因子表达式,通过栈状态和动态 action mask 阻止非法公式,再用 MaskablePPO 生成候选。

它最有价值的思想并不是“用 PPO 挖因子”,而是:

  1. 候选因子加入当前 alpha pool;
  2. 重新优化整个池的组合权重;
  3. 用更新后的池表现评价候选;
  4. 继续生成能补足现有因子池的新因子。

这使搜索目标从“最高单因子 IC”转向“对现有组合是否有边际贡献”。

但当前实现存在动作 0 与 padding 冲突、最优权重引用可变张量、策略观察不到完整因子池状态、奖励更接近更新后绝对目标而非严格边际增量、数值算子防护不足等问题。论文配置与当前 master 也已经漂移。因此应重写其状态、奖励和实验层,而不是直接运行旧脚本。

3.2 AlphaForge:核心是“先造因子库,再动态选因子”

AlphaForge 深度研究笔记

AlphaForge 同样使用序列化表达式,但不是 PPO 搜索,而是训练:

  • Generator:生成表达式 token;
  • Predictor:近似表达式的真实适应度;
  • Generator 通过 Predictor 的可微信号优化;
  • 多样性损失减少模式坍塌。

候选通过 IC、ICIR 和相关性筛选后进入 Factor Zoo。下游再按近期表现动态选择因子,并用滚动线性回归估计组合权重。

它与 AlphaGen 的关系是:

  • AlphaGen 把“候选入池后组合是否变好”直接放进搜索目标;
  • AlphaForge 先生成和筛选因子,再把动态选择/组合放到第二阶段。

AlphaForge 的方法价值高于代码价值。仓库有硬编码路径/GPU、旧依赖、Qlib 耦合、eval() 和许可证缺失等问题,适合重新实现“两阶段架构”,不适合原样移植。

3.3 AlphaAgent:论文方法与当前仓库已经分叉

AlphaAgent 深度研究笔记

论文 AlphaAgent 使用:

  • Idea Agent:提出金融假设;
  • Factor Agent:把假设转成表达式;
  • Eval Agent:评价预测能力、原创性、假设一致性和复杂度;
  • AST 最大公共子树:衡量结构原创性。

但 2026 年当前默认分支已经重构为 A 股多因子研究平台,重点变成:

  • DSL parser;
  • 批量因子计算;
  • memmap Factor Zoo;
  • IC/稳定性/覆盖率等质量门;
  • PIT 基本面;
  • 可选 AgentScope FactorMiner。

当前分支的相关性去重主要是因子输出层面的截面相关,并不是论文的 AST 最大公共子树;模型回测和实盘阶段也仍在推进。因此不能用当前仓库的可运行程度证明 KDD 论文已经复现。

它对工程的最大价值不是“多 Agent”,而是表达式资产化、Factor Zoo、manifest、PIT 数据纪律和因子交付门

3.4 QuantaAlpha:核心是“演化研究轨迹”,不只是演化表达式

QuantaAlpha 深度研究笔记

QuantaAlpha 保存完整轨迹:

hypothesis
→ expression
→ calculation/code
→ backtest
→ feedback

高质量轨迹进入 Trajectory Pool,再由 LLM 做 mutation/crossover。这与传统 GA 的区别是:

  • GA 在表达式树节点上做确定性结构操作;
  • QuantaAlpha 在假设和研究语义层做变异与融合;
  • 前者更可重复,后者更适合产生异质研究方向。

两者最合理的关系是互补,而不是替换:LLM 提出方向和种子,DSL 保证合法,GA 做真实 AST 变异/交叉,固定 evaluator 评价,轨迹池记录谱系和失败。

当前项目的主要风险是验证集反复参与轨迹选择、Prompt 中“要求正交”不等于数值上强制正交,以及默认回测公开存在同日涨跌停字段用于开盘交易过滤的潜在前视问题。相关收益在修正并重跑前不能作为投资证据。

四、三个 Agent 项目的层级差异

RD-Agent、AlphaAgent 和 QuantaAlpha 都出现 Agent,但它们处理的问题并不相同。

4.1 RD-Agent:研发操作系统

RD-Agent 深度研究笔记

RD-Agent 的研究单元是“一轮研发工作”:

提出假设
→ 生成实验任务
→ Co-STEER实现代码
→ 隔离运行
→ 结果反馈
→ 记录知识

在量化场景中,它还能在“继续研究因子”和“继续研究模型”之间调度资源。它覆盖范围最广、工程最完整,但也最重:Linux、Docker、Qlib、LLM、容器和多类依赖共同构成复现门槛。

适合借鉴它的类型化流程、受控执行、失败知识库和因子—模型调度;不适合把完整依赖栈搬进一个已有 GA 项目。

4.2 AlphaAgent:研究角色与因子资产

论文 AlphaAgent 强调“谁提出假设、谁实现、谁审查”,侧重研究角色分工和原创性;当前代码则更偏向因子 DSL、存储与交付。

它位于 RD-Agent 之下:

  • RD-Agent 可以编排很多类型的研发任务;
  • AlphaAgent 的方法和当前平台主要围绕因子研究;
  • AlphaAgent 式 Factor Zoo 可以成为 RD-Agent 式循环的持久化资产层。

4.3 QuantaAlpha:研究轨迹与演化谱系

QuantaAlpha 不试图成为通用开发平台,而是把每次量化研究过程保存为可繁殖的轨迹。它最适合补充:

  • parent IDs;
  • mutation/crossover 来源;
  • 研究假设;
  • 每阶段状态;
  • 失败原因;
  • 完整回测反馈。

它可以成为 RD-Agent 循环中的“轨迹与演化策略”,也可以直接加在传统 GA 之上。

五、Alphalens 与 vn.py:一个负责诊断,一个负责执行

5.1 Alphalens 是因子体检仪

cloudQuant/alphalens 深度研究笔记

Alphalens 处理的是已经算好的 date × asset 因子值,输出:

  • IC/ICIR;
  • 分位数组收益;
  • Top-Bottom spread;
  • alpha/beta;
  • quantile turnover;
  • factor rank autocorrelation;
  • event study;
  • tearsheet。

它不能自动知道:

  • 因子何时可知;
  • 给定价格是否可成交;
  • 股票池是否 point-in-time;
  • 多个候选是否造成数据窥探;
  • 组合是否覆盖成本和容量。

如果收盘后才能得到的信号仍从同日收盘价计算 forward return,Alphalens 会正确执行错误的时间合同。因此它只能做二级诊断,不能替代权威标签、OOF、walk-forward、成本模型和封存测试。

此外,cloudQuant fork 的 README/setup/源码头部偏向 Apache 2.0,根 LICENSE 却是 MIT 文本,复制和再分发前需要澄清许可。

5.2 vn.py 是事件驱动交易底座

vn.py 深度研究笔记

vn.py 的核心是:

  • EventEngine:事件队列与分发;
  • Gateway:统一连接、订阅、下单、撤单和查询接口;
  • OMS:缓存订单、成交、持仓、账户和合约;
  • 策略/App:CTA、组合、算法交易等;
  • vnpy.alpha:较新的因子数据集、模型、信号分析和组合回测能力。

vn.py 不判断一个因子是否具有真实 Alpha。它接收已经版本化的信号或目标权重,负责交易状态与执行。

研究系统和 vn.py 之间应通过工件连接:

signal_date
effective_time
instrument / vt_symbol
score or target_weight
model_version
data_version
holding_period
expiry_time

不要把 GA 搜索、模型训练或重型研究计算放进事件线程。一个慢 handler 会阻塞事件队列;实盘还必须处理断线重连、部分成交、订单幂等、冻结量、交易所开平规则和状态恢复。

六、七个项目的共同点

6.1 都在对抗巨大搜索或状态空间

  • AlphaGen:合法表达式序列空间;
  • AlphaForge:表达式生成分布;
  • AlphaAgent:假设、表达式和评价空间;
  • QuantaAlpha:研究轨迹与演化路径;
  • RD-Agent:研发任务、代码和因子/模型方向;
  • Alphalens:不做搜索,但提供统一诊断空间;
  • vn.py:不做研究搜索,但管理大量异步交易状态。

6.2 都需要明确的数据与时间合同

无论算法多先进,都必须固定:

  • 字段在什么时间可知;
  • 标签预测哪个区间;
  • 何时交易;
  • 使用什么价格;
  • 股票池如何随时间变化;
  • 复权、停牌、涨跌停和退市如何处理。

这些问题不是 Qlib、Alphalens 或 vn.py 自动解决的,也不能交给 LLM 自由决定。

6.3 因子去重需要多层判定

七个项目共同指向一个结论:字符串不同不等于因子不同。

可靠去重应组合:

  1. 规范化表达式哈希;
  2. AST/公共子树相似性;
  3. 因子值截面相关;
  4. 行业/风格残差相关;
  5. 加入现有模型后的 OOF 增量。

6.4 单一指标会诱导系统钻评价器漏洞

如果只奖励 IC,系统可能找到高换手、低覆盖或时序错误的因子;如果只奖励回测收益,可能利用成交规则;如果只奖励原创性,可能生成独特但无效的噪声。

共同需要的质量门包括:

  • 语法与数值安全;
  • 字段可用时间;
  • 覆盖率;
  • IC/RankIC/ICIR;
  • 子期与月度稳定性;
  • 分位数单调;
  • 换手、成本和容量;
  • 行业/风格暴露;
  • 冗余度;
  • 封存样本外增量。

七、核心区别:它们各自在优化什么

项目直接优化/管理的对象容易被误解成
AlphaGen候选加入因子池后的组合目标“PPO 单因子挖掘器”
AlphaForgeGenerator 分布和后续滚动组合“另一个 AlphaGen”
AlphaAgent论文中的多视角因子研究;当前代码中的因子资产“当前 main 就是论文完整实现”
QuantaAlpha完整研究轨迹及其谱系“LLM 版遗传编程”
RD-Agent通用研发循环和因子/模型资源调度“量化因子库”
Alphalens已有因子的统计诊断“可交易回测器”
vn.py异步交易状态和订单执行“自动产生 Alpha 的研究框架”

八、工程成熟度与复现边界

第一梯队:长期工程平台

  • vn.py:交易基础设施最成熟,MIT 明确,但具体 gateway 和异常恢复仍需单独硬化。
  • RD-Agent:Agent 研发框架最完整,MIT 明确,但依赖最重,Docker/Qlib/LLM/资源条件使复现复杂。

第二梯队:有清晰框架、仍属快速演进

  • AlphaAgent 当前分支:DSL、Factor Zoo、PIT 和指标体系有工程价值,但与论文分叉,模型/回测/实盘未完整闭环,许可证未明确。
  • QuantaAlpha:轨迹结构清晰,但回测时序、CI、许可证和跨平台问题仍需处理。
  • cloudQuant/alphalens:统计分析代码较成熟、现代 Python 兼容改善,但旧打包、测试弱断言和许可证冲突需要关注。

第三梯队:论文随附代码特征明显

  • AlphaGen:思想重要,但论文/当前配置漂移,依赖、状态、奖励和数值安全需要现代化重写。
  • AlphaForge:生成与动态组合方法有价值,但硬编码、旧依赖、eval()、Qlib 耦合和许可证缺失使代码复用风险高。

这里的“梯队”评价的是工程复现和生产边界,不是论文创新高低。

九、如果把七者组合成一套系统

建议的职责分配如下。

9.1 权威数据与目标层

保留现有 MySQL/canonical panel,先固定研究合同:

  • 原始因子目标:chg_m_alpha
  • 增量因子目标:chg_m_alpha - MLP_OOF prediction
  • 标签、持有期、组合构造和回测时域同步;
  • 生成器只读数据,不能修改 evaluator。

9.2 候选生成层

以现有 GA 为主体,吸收:

  • AlphaGen 的 RPN/栈状态/非法动作屏蔽;
  • AlphaAgent 的 DSL 白名单和表达式资产化;
  • QuantaAlpha 的高层研究方向与轨迹谱系;
  • LLM 只生成受限 DSL 种子,不执行任意 Python。

9.3 研究编排层

借鉴 RD-Agent,把流程固化为:

propose
→ construct
→ validate syntax/data
→ quick evaluate
→ full walk-forward
→ sealed audit
→ summarize
→ record

每一步产出结构化工件,并区分研究失败、实现失败、数据失败和评价失败。

9.4 因子池与组合层

组合使用:

  • AlphaGen:评价候选加入现有池后的边际价值;
  • AlphaAgent:Factor Zoo、manifest、哈希和质量门;
  • AlphaForge:对已冻结的因子池做严格 walk-forward 动态选择与组合。

不要让动态组合窗口看到当前或未来标签,也不要用同一验证集同时调搜索、阈值和组合参数。

9.5 诊断与交易层

  • Alphalens:生成统一 IC、分组、换手和稳定性诊断;
  • 权威回测:继续负责真实成本、可交易条件和封存测试;
  • vn.py:接收版本化信号/目标权重,先离线回放,再模拟盘,最后才连接实盘 gateway。

十、选择建议

如果只想解决一个具体问题:

  • 想研究组合级因子搜索目标:先看 AlphaGen
  • 想研究生成因子后如何动态组合:先看 AlphaForge
  • 想建设DSL、Factor Zoo、PIT 与质量门:先看 AlphaAgent
  • 想建设研究轨迹、父子谱系与 LLM 辅助演化:先看 QuantaAlpha
  • 想建设自主研发工作流和因子—模型协同调度:先看 RD-Agent
  • 想统一因子诊断图表:先看 cloudQuant/alphalens
  • 想把研究结果接到模拟盘和实盘:先看 vn.py

十一、最终判断

七个项目共同构成了一张完整的量化研发技术地图,但没有任何一个项目能够单独解决“从数据到稳定实盘”的全部问题。

最合理的技术路线是:

  1. 不更换现有权威数据和目标语义;
  2. 继续以可重复的 GA/DSL 搜索为主体;
  3. 用 LLM 增加研究方向多样性,不赋予其修改评价合同的权限;
  4. 用类型化循环、轨迹谱系和 Factor Zoo 保存全部研究过程;
  5. 按候选对现有池/模型的样本外增量进行选择;
  6. 用动态组合应对因子时变,但把组合选择放进外层 walk-forward;
  7. 用 Alphalens 做诊断,不把诊断当回测;
  8. 用 vn.py 做执行,不把执行平台当研究真相;
  9. 在最终封存测试前,严格限制 Agent 和研究者访问测试结果。

一句话概括:

AlphaGen/AlphaForge 负责“找什么”,AlphaAgent/QuantaAlpha 负责“如何提出、审查和积累”,RD-Agent 负责“如何组织研发”,Alphalens 负责“如何体检”,vn.py 负责“如何交易”;真正的系统价值来自这些层之间清晰、不可越权的数据与评价合同。

十二、七篇原始研究笔记

  1. AlphaGen 项目深度研究:协同因子挖掘原理、代码缺陷与迁移建议
  2. RD-Agent 深度研究:因子—模型协同进化、Co-STEER 与工程边界
  3. AlphaForge 深度研究:生成式因子挖掘与动态因子组合
  4. AlphaAgent 深度研究:KDD 论文方法与 2026 重构代码的分叉
  5. QuantaAlpha 深度研究:轨迹级自进化、质量门与回测风险
  6. vn.py 深度研究:从因子研究到事件驱动实盘的基础设施
  7. cloudQuant/alphalens 深度研究:因子诊断体系、适用边界与许可风险