alphagen

GitHub
1.1k 303 较难 1 次阅读 今天开发框架其他
AI 解读 由 AI 自动生成,仅供参考

AlphaGen 是一款基于强化学习自动挖掘股票预测因子(Alpha)的开源工具。在量化投资领域,人工设计有效的交易因子不仅耗时费力,且难以发现复杂的非线性规律,AlphaGen 正是为了解决这一痛点而生。它能够自动生成具有协同效应的公式化因子组合,显著提升策略的预测能力。

该工具特别适合量化研究员、算法工程师以及金融领域的 AI 开发者使用。其核心亮点在于将强化学习应用于因子挖掘过程,能够探索传统方法难以触及的庞大解空间。除了核心的强化学习算法,AlphaGen 还展现了极强的扩展性:它不仅提供了基于 Qlib 的完整数据流水线,支持从 Baostock 获取真实市场数据进行复现,还创新性地集成了大语言模型(LLM)模块,支持利用 LLM 进行自动化的迭代式因子生成。此外,项目代码结构清晰,允许用户通过定义标准接口轻松适配现有的量化计算框架,无论是学术研究还是实盘策略开发,都能提供强有力的技术支持。

使用场景

某量化私募团队的因子研究员正致力于挖掘能预测短期股价波动的新型公式化 Alpha 因子,以优化现有的多因子选股模型。

没有 alphagen 时

  • 人工挖掘效率低:研究员依赖手工构造或简单的遗传规划(如 gplearn),每天仅能验证数十个因子表达式,难以覆盖庞大的搜索空间。
  • 因子同质化严重:自动生成的因子往往与现有库中的因子高度相关,缺乏新意,无法提供额外的超额收益来源。
  • 组合协同性差:单独表现好的因子在线性组合后效果互相抵消,缺乏对因子间“协同效应”的整体优化机制。
  • 迭代周期漫长:从提出假设、编写代码到回测验证,一个完整的迭代周期需要数天,难以快速响应市场风格切换。

使用 alphagen 后

  • 自动化大规模搜索:利用强化学习算法,alphagen 能在短时间内自动探索数百万种公式组合,日均生成并筛选出数百个候选因子。
  • 发现非线性新因子:通过奖励机制引导模型跳出局部最优,成功挖掘出人类难以直观构思的复杂非线性因子,显著提升了因子的独特性。
  • 直接优化组合表现:工具不仅关注单因子 IC 值,更直接以因子池的整体预测能力(Pool IC)为目标进行训练,确保生成的因子集合具有极佳的互补性。
  • 端到端快速迭代:集成 Qlib 数据管道后,实现了从数据加载、因子生成到绩效评估的全流程自动化,将策略迭代周期从“天”级缩短至“小时”级。

alphagen 通过强化学习将因子挖掘从“手工作坊”升级为“智能工厂”,在保证因子多样性的同时最大化了组合的预测合力。

运行环境要求

操作系统
  • 未说明
GPU

需要 PyTorch 设备支持(device 参数),具体型号和显存未说明,但涉及强化学习和 LSTM 网络,建议使用 NVIDIA GPU

内存

未说明

依赖
notes1. 必须预先按照 Qlib 文档准备元数据,但实际股票数据需通过 baostock 脚本单独下载并存储到指定路径。2. 核心实验脚本为 train_maskable_ppo.py,运行实验需使用 'python -m scripts.NAME' 格式。3. 若使用内置管道,需配置正确的本地数据存储路径;若使用外部管道,需实现 AlphaCalculator 接口。4. 模型检查点兼容 stable-baselines3 格式,因子池以 JSON 格式保存。
python未说明
qlib
stable-baselines3
torch
gplearn (modified)
dso (modified)
alphagen hero image

快速开始

AlphaGen

基于强化学习的自动化公式化阿尔法生成。

本仓库包含我们被KDD 2023应用数据科学(ADS)赛道接收的论文《通过强化学习生成协同式公式化阿尔法集合》的代码,该论文已在ACM DL上公开。此外,本仓库还包含了对这项工作的若干扩展。

仓库结构

  • /alphagen 包含基础数据结构和启动阿尔法挖掘流水线所需的核心模块;
  • /alphagen_qlib 包含用于数据准备的 qlib 特定 API;
  • /alphagen_generic 包含为我们的基线设计的数据结构和工具,这些工具基本遵循 gplearn 的 API,但针对量化交易流水线进行了修改;
  • /alphagen_llm 包含 LLM 客户端抽象以及一组用于基于 LLM 生成阿尔法的提示词,并提供了一些基于 LLM 的自动迭代式阿尔法生成流程。
  • /gplearn/dso 包含我们基线的修改版本;
  • /scripts 包含若干用于运行实验的脚本。

结果复现

请注意,您可以选择使用我们内置的阿尔法计算流水线(见选项 1),也可以实现一个适配器以接入您自己的流水线(见选项 2)。

选项 1:股票数据准备

内置流水线需要 Qlib 库和本地存储的股票数据。

  • 请务必阅读!我们需要 Qlib 提供的部分元数据(但不需要实际的股票价格/成交量数据),因此请先按照 Qlib 中的数据准备流程进行操作。
  • 我们实际使用的股票数据来自 baostock,这是出于对 Qlib 所用数据源时效性和真实性问题的考虑。
  • 可以通过运行脚本 data_collection/fetch_baostock_data.py 下载数据。新下载的数据默认保存在 ~/.qlib/qlib_data/cn_data_baostock_fwdadj 目录下。此路径可根据您的具体需求进行自定义,但在加载数据时请确保使用正确的路径(在 alphagen_qlib/stock_data.pyStockData._init_qlib 函数中,应通过 qlib.init(provider_uri=path) 将路径传递给 Qlib)。

选项 2:适配外部流水线

如果您已有更优的阿尔法计算实现,可以实现 alphagen.data.calculator.AlphaCalculator 的适配器。接口定义如下:

class AlphaCalculator(metaclass=ABCMeta):
    @abstractmethod
    def calc_single_IC_ret(self, expr: Expression) -> float:
        '计算单个阿尔法与预定义目标之间的 IC 值。'

    @abstractmethod
    def calc_single_rIC_ret(self, expr: Expression) -> float:
        '计算单个阿尔法与预定义目标之间的 Rank IC 值。'

    @abstractmethod
    def calc_single_all_ret(self, expr: Expression) -> Tuple[float, float]:
        '同时计算单个阿尔法与预定义目标之间的 IC 和 Rank IC 值。'

    @abstractmethod
    def calc_mutual_IC(self, expr1: Expression, expr2: Expression) -> float:
        '计算两个阿尔法之间的 IC 值。'

    @abstractmethod
    def calc_pool_IC_ret(self, exprs: List[Expression], weights: List[float]) -> float:
        '首先将阿尔法线性组合,'
        '然后计算线性组合与预定义目标之间的 IC 值。'

    @abstractmethod
    def calc_pool_rIC_ret(self, exprs: List[Expression], weights: List[float]) -> float:
        '首先将阿尔法线性组合,'
        '然后计算线性组合与预定义目标之间的 Rank IC 值。'

    @abstractmethod
    def calc_pool_all_ret(self, exprs: List[Expression], weights: List[float]) -> Tuple[float, float]:
        '首先将阿尔法线性组合,'
        '然后同时计算线性组合与预定义目标之间的 IC 和 Rank IC 值。'

提醒:不同阿尔法评估出的值可能具有截然不同的量级,建议在组合之前对其进行归一化处理。

运行前

我们实验的主要组件位于 train_maskable_ppo.py 中。

以下参数可以帮助您构建一个 AlphaCalculator

  • instruments(证券集合)
  • start_time & end_time(每个数据集的时间范围)
  • target(目标股票趋势,例如 20 天收益率)

以下参数将定义一次强化学习运行:

  • batch_size(PPO 的批量大小)
  • features_extractor_kwargs(LSTM 共享网络的参数)
  • device(PyTorch 设备)
  • save_path(检查点保存路径)
  • tensorboard_log(TensorBoard 日志路径)

运行实验

请以模块方式运行本项目根目录下的各个脚本,即 python -m scripts.NAME ARGS...。使用 python -m scripts.NAME -h 查看参数说明。

  • scripts/rl.py:AlphaGen/HARLA 的主要实验
  • scripts/llm_only.py:完全基于与 LLM 迭代交互的阿尔法生成器
  • scripts/llm_test_validity.py:测试系统提示如何影响 LLM 生成有效阿尔法的比例

运行后

  • 模型检查点和阿尔法池位于 save_path 目录下;
    • 该模型与 stable-baselines3 兼容
    • 阿尔法池以人类可读的 JSON 格式存储。
  • TensorBoard 日志位于 tensorboard_log 目录下。

基线方法

基于 GP 的方法

gplearn 实现了遗传编程,这是一种常用于符号回归的方法。我们维护了一个修改后的 gplearn 版本,使其与我们的任务兼容。相应的实验脚本是 gp.py

深度符号回归

DSO 是一个成熟的深度学习框架,用于符号优化任务。我们维护了一个精简版的 DSO,使其与我们的任务兼容。相应的实验脚本是 dso.py

交易(实验性)

我们基于 Qlib 实现了一些交易策略。演示请参阅 backtest.pytrade_decision.py

引用我们的工作

@inproceedings{alphagen,
    author = {Yu, Shuo and Xue, Hongyan and Ao, Xiang and Pan, Feiyang and He, Jia and Tu, Dandan and He, Qing},
    title = {Generating Synergistic Formulaic Alpha Collections via Reinforcement Learning},
    year = {2023},
    doi = {10.1145/3580305.3599831},
    booktitle = {Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining},
}

贡献

欢迎提交 Issue 或 Pull 请求。

贡献者

本项目由MLDM研究组,IIP, ICT, CAS 维护。

维护人员包括:

感谢以下贡献者:

同时感谢对我们的项目进行深入研究的以下内容:

  • 《因子选股系列之九十五:DFQ强化学习因子组合挖掘系统》

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

156.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架