RepoDaily · 2026-07-02 · Infrastructure / Runtime

Vibe-Trading:内置 450+ 量化因子、群体编排与券商连接器的自然语言交易代理

#8 Infrastructure / Runtime Python +682 HKUDS/Vibe-Trading 打开仓库

HKUDS 推出的 Python 金融研究代理,集成了 LLM 驱动的信号引擎、452 因子库、36 个 MCP 工具、IBKR/Robinhood 连接器,以及回测和多渠道部署能力。

项目类型Infrastructure / Runtime
最适合希望通过本地 AI 代理完成信号生成、回测和券商连接执行的量化研究员与主动交易者
风险等级中等——支持通过 OAuth 网关连接实盘券商,但内置了订单守卫、审计账本和紧急停止开关
评估时间2–4 小时完成本地 Docker 部署与模拟交易;半天完成 IBKR TWS 只读连接

核心问题: 你的团队是否需要一个能用 LLM 编排、从单一 CLI 或 REST 接口跨市场生成、回测和路由交易信号的金融代理?

91/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 91/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 5 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、5 个下一步动作,以及 8 个命令/安装信号。

65维护可信度

趋势热度为 +682 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

96生产准备度

采纳风险标记为 medium,并包含 6 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。

68许可证清晰度

文章中包含许可证来源或许可证表述。

84Agent / AI 适配度

文章正文和元数据中检测到 6 个 AI/Agent 相关信号。

项目概览

Vibe-Trading(包名 vibe-trading-ai,版本 0.1.10,MIT 许可证)是 HKUDS 开发的 Python ≥3.11 自然语言金融研究代理。项目集成了 LangChain/LangGraph 代理循环、回测引擎、从四个知名因子库移植的 452 个预构建量化因子、端口 8899 的 FastAPI 服务器,以及带 Node.js 前端编译的多阶段 Dockerfile。它并非简单的封装——CHANGELOG 记录了将 3216 行单文件 CLI 重构为 agent/cli/ 包、36 个 MCP 工具、带 DAG 依赖管理的群体编排,以及 Interactive Brokers 和 Robinhood 连接器配置文件。

项目的核心理念是:用户可以用自然语言描述一个交易或研究目标,代理会将其分解为完整流水线——从五个行情数据加载器(yfinance、tushare、akshare、mootdx/通达信 TCP、或用于加密货币的 CCXT)之一获取 OHLCV 数据,生成或选择信号引擎,在强制随机对照的严格 alpha-bench 模式下回测,并可选地将结果路由到券商连接器或消息渠道。v0.1.9 新增的 Research Goal 运行时将其形式化为可审计的长期运行检查清单,附带预算跟踪和证据收集。

从基础设施角度看,Vibe-Trading 以单容器方式运行,通过命名 Docker 卷持久化运行记录、会话、群体状态和用户级配置(持久化记忆、sessions.db、影子账户、假设注册表、券商连接器配置、agent.json)。Dockerfile 以非 root 用户 vibe 运行,在 /health 暴露健康检查,并编译支持 WeasyPrint 的环境以生成 PDF 报告。docker-compose.yml 默认将端口 8899 绑定到 127.0.0.1,并通过 host.docker.internal 配置 Ollama 访问以支持本地 LLM 推理。

解决什么问题

  • 大多数 AI 交易原型止步于'生成信号'——缺乏回测严谨性、券商连接性和运营基础设施(审计日志、停止开关、会话持久化),无法超越演示阶段
  • 量化研究员花费大量时间拼接数据加载器、因子库和回测框架;Vibe-Trading 的注册表通过 AST 从每个 alpha 模块提取元数据而无需导入,拒绝 ±inf 和超过 95% NaN 的输出
  • LLM 生成的信号引擎容易出错;v0.1.9 新增了带清晰 JSON 错误的预检验证和强制随机对照的严格 alpha-bench 模式,用于捕获虚假 alpha
  • 跨市场分析繁琐——加密货币与股票对的时间戳不匹配;v0.1.9 对相关性分析的时间戳进行了标准化,mootdx 加载器通过原生 TDX TCP 无需令牌即可访问 A 股数据

工作原理

  1. 通过 pip 安装(PyPI 上的 vibe-trading-ai,Python ≥3.11)或运行多阶段 Dockerfile,后者编译 Node.js 前端并安装包括 WeasyPrint 原生库(Pango、HarfBuzz、Cairo)在内的 Python 依赖以支持 PDF 报告渲染
  2. 配置行情数据:回退链覆盖 yfinance、tushare、akshare、mootdx(原生 TDX TCP,无需令牌)和 CCXT(针对受限网络支持代理环境变量,修复 #126)
  3. 通过 `vibe-trading connector list/use/check` 选择连接器配置文件——IBKR 以本地只读 TWS/IB Gateway 配置文件启动;官方 IBKR 远程 MCP 路径以 OAuth mcp.read 探测方式播种;Robinhood Agentic Trading 在 OAuth 后运行,附带委托授权、订单守卫、审计账本和即时停止开关
  4. 通过 /goal CLI 命令或 REST/MCP 端点(start_research_goal、get_research_goal、add_goal_evidence、update_research_goal_status)定义 Research Goal,附带可审计的检查清单标准和预算
  5. 运行群体编排:代理将任务分解为 DAG,上游任务失败时阻塞下游任务(#145),发送 MCP 进度心跳,并支持通过 POST /swarm/runs/{id}/retry 或 MCP retry_run 工具重试
  6. 生成报告:WeasyPrint 从 shadow_account/templates/ 中的 HTML/CSS/Jinja2 模板渲染 PDF 导出;只要 runId 存在,Full Report 链接就会渲染(#150)

Docker 部署与运行时配置

Dockerfile 采用两阶段构建:第一阶段用 node:20-slim 编译前端(npm ci --ignore-scripts,然后 npm run build);第二阶段使用 python:3.11-slim,安装 build-essential 和 WeasyPrint 运行时库(libpango、libharfbuzz、libfontconfig、libcairo、libgdk-pixbuf、fonts-dejavu-core)。缺少这些库时,reporter.py 中的惰性导入 `from weasyprint import HTML` 会失败,PDF 渲染会静默降级为仅 HTML。

运行时以非 root 用户 vibe 运行(通过 useradd 创建,shell 为 /usr/sbin/nologin)。命名 Docker 卷持久化五个目录:agent/runs、agent/sessions、agent/.swarm/runs、agent/uploads 和 /home/vibe/.vibe-trading(持久化记忆、sessions.db 跨会话搜索索引、用户创建的技能、影子账户、假设注册表、券商连接器配置、agent.json)。docker-compose.yml 注释引用了 issue #197:没有 vibe-home 卷,重建/重新创建会清除所有用户级状态。

docker-compose.yml 将 API 服务器绑定到 127.0.0.1:8899(而非 0.0.0.0),并设置 VIBE_TRADING_TRUST_DOCKER_LOOPBACK=1。Ollama 访问通过 extra_hosts 映射默认指向 http://host.docker.internal:11434(需要 Docker Engine ≥20.10)。健康检查每 30 秒访问 http://localhost:8899/health,超时 5 秒,重试 3 次。前端开发服务器(可选 profile)运行在 127.0.0.1:5899。

券商连接器、行情数据加载器与 MCP 工具

  • 券商连接器:IBKR(本地只读 TWS/IB Gateway 立即可用;远程 IBKR MCP 以 OAuth mcp.read 探测方式播种,直到稳定的读取工具名发布)和 Robinhood(OAuth、委托授权、订单守卫、审计账本、即时停止开关)
  • 行情数据回退链:yfinance → tushare → akshare → mootdx(原生 TDX TCP,无需令牌)→ CCXT(加密货币,按 #126 读取代理环境变量);可选 baostock 扩展通过 BaoStock TCP 绕过东方财富 CDN IP 封锁
  • 截至 v0.1.9 共 36 个 MCP 工具,包括绑定到所选连接器配置文件的 trading_* 工具、start_research_goal / get_research_goal / add_goal_evidence / update_research_goal_status、带 MCP 进度心跳的 run_swarm 和 retry_run
  • 群体工作者中操作员配置的外部 MCP 工具(#142)和内置代理的远程 MCP 传输允许在部署时扩展工具面
  • 渠道集成(15+ 可选扩展):telegram、discord、slack、dingtalk、feishu、matrix(通过 matrix-nio 支持 E2E)、wecom、weixin、whatsapp(neonize)、msteams、qq、napcat、mochat,以及一个打包最常用渠道的 meta 'channels' 扩展

CLI 入口与关键命令

  • 两个 console_scripts:`vibe-trading`(cli:main)和 `vibe-trading-mcp`(mcp_server:main)
  • CLI 从 3216 行单文件重构为 agent/cli/ 包,带有刷新的交互式终端 UI(figlet 横幅 + 活动轨)和单一的 cli/_version.py 版本源
  • 连接器子命令:`vibe-trading connector list/use/check/account/positions/orders/quote/history`——全部共享所选配置文件,paper/live 作为连接器下的属性
  • Research Goal:`/goal` CLI 命令加 REST + MCP 端点用于 start/get/add_evidence/update_status
  • 假设注册表 CLI:`list / show / invalidate`,用于管理研究假设
  • SSE 空闲超时可通过 VIBE_TRADING_SSE_TIMEOUT 环境变量配置(#157);--version 从包元数据派生并有 pyproject.toml 回退,无硬编码常量(#156)

采用清单:连接实盘券商前需验证的事项

  • 确认 Python ≥3.11(classifiers 列出 3.11 和 3.12;Development Status 为 4 - Beta)
  • 在任何实盘委托前确认连接器配置文件设为 paper 模式;Robinhood 实盘需要委托授权且订单守卫处于激活状态
  • 在依赖即时停止开关之前测试其路径——CHANGELOG 将其描述为有界连接器的安全保障
  • 如果在 Docker 中运行,检查 vibe-home Docker 卷是否挂载;没有它,issue #197 记录券商连接器配置和 agent.json 会在重建时丢失
  • 通过确认 WeasyPrint 原生库存在来验证 PDF 报告渲染(Dockerfile 安装了它们;裸机安装必须手动操作),否则报告静默降级为仅 HTML
  • 审查带强制随机对照的严格 alpha-bench 模式(#143)——这是项目防止 LLM 生成信号引擎产生虚假 alpha 的主要防线
  • 如果使用 Ollama 进行本地推理,当 Ollama 不在主机端口 11434 时需显式设置 OLLAMA_BASE_URL

谁适合关注

适合关注

  • 想要 452 个预构建因子并附带前视偏差强制检查和算子级健全性检查(拒绝 ±inf 和 >95% NaN),而不需要自建因子框架的量化研究员
  • 运行 IBKR TWS 或 IB Gateway 并希望在承诺实盘执行前拥有一个本地只读代理面的主动交易者
  • 构建多市场研究流水线(A 股通过 mootdx/baostock、美股通过 yfinance、加密货币通过 CCXT)并需要时间戳标准化跨市场相关性的团队
  • 需要 MCP 兼容工具的开发者——36 个 MCP 工具和群体工作者中操作员配置的外部 MCP 工具使 Vibe-Trading 可与其他 MCP 感知代理组合

可以先跳过

  • 需要超低延迟执行(亚毫秒订单路由)的交易者——这是一个 LLM 编排的研究代理,不是托管执行引擎
  • 需要稳定、有文档的公共 API 合同的团队——项目处于 0.1.x,Development Status 为 4 - Beta,IBKR 远程 MCP 路径明确以 OAuth mcp.read 探测方式播种直到稳定的读取工具名发布
  • 有严格合规要求、禁止基于审计账本的交易日志或需要当前连接器集中不存在的 SOC 2 / 受监管托管的组织
  • 任何需要开箱即用 SaaS 的人——Vibe-Trading 是自托管代理,需要 LLM API 密钥或本地 Ollama 实例

风险与注意事项

项目提供了有意义的运营保障措施(订单守卫、审计账本、停止开关、paper/live 配置文件分离),但版本为 0.1.x,Development Status 为 Beta,IBKR 远程 MCP 路径明确标记为不稳定。

  • 版本 0.1.10,classifiers 设为 Development Status :: 4 - Beta——1.0 之前可能出现破坏性变更
  • IBKR 远程 MCP 路径以 OAuth mcp.read 探测方式播种,'直到稳定的读取工具名发布'——远程执行面尚未最终确定
  • LLM 生成的信号引擎需要启用带强制随机对照的严格 alpha-bench 模式(#143)才有意义;否则虚假 alpha 是真实风险
  • Robinhood 连接器使用'委托授权'模型——一旦委托实盘授权,订单守卫和停止开关是主要保障措施,配置错误可能导致真实交易
  • 会话持久化使用 JSONL 文件,带 flush + fsync 写入,读取时跳过损坏行(#147)——数据持久性取决于 vibe-home Docker 卷是否正确挂载
  • 通过升级 langgraph 修复 CVE-2026-28277(v0.1.9 changelog Changed 部分)
  • Docker 运行时以非 root 用户 vibe 运行,shell 为 /usr/sbin/nologin;docker-compose.yml 中端口默认绑定到 127.0.0.1
  • Robinhood 连接器:OAuth 后有界运行,附带委托授权、订单守卫、审计账本和即时停止开关
  • IBKR:以本地只读 TWS/IB Gateway 配置文件启动;远程路径仅为 OAuth mcp.read 探测,直到稳定的读取工具发布
  • LLM 生成信号引擎的预检验证带清晰 JSON 错误(#149),防止格式错误的引擎定义进入回测器
  • /health 健康检查端点允许编排器检测代理进程故障

替代方案比较

方案适用场景代价
Microsoft Qlib
需要成熟的生产级量化研究平台,专注于 alpha 挖掘和模型训练,而非 LLM 编排的自然语言交互时免费,开源(MIT)
Freqtrade
专注于仅加密货币的策略开发,需要成熟的回测和实盘交易循环,但不需要多市场数据加载器或因子库时免费,开源(GPL-3.0)
NautilusTrader
需要高性能、事件驱动的算法交易平台,具备机构级执行能力,不需要 LLM 编排层时免费,开源(LGPL-3.0)
OpenBB Terminal
需要跨资产类别的综合金融数据终端进行分析,但不需要代理循环或券商执行面时免费,开源(AGPL-3.0);OpenBB Pro 为商业版

这个趋势说明了什么

在注册表上构建自定义 Alpha 因子

agent/src/factors/ 注册表通过 AST 从每个 alpha 模块提取元数据而无需导入,在算子层强制执行前视偏差检查(delta(d>=1)),并拒绝 ±inf 和超过 95% NaN 的输出。开发者可以添加自定义因子 YAML/Python 模块,使其自动注册、与 452 因子库对比回测,并通过带强制随机对照的严格 alpha-bench 模式验证。

克隆仓库,在 agent/src/factors/zoo/ 下放置因子模块,运行 `vibe-trading` CLI 确认注册表发现它,并在启用 alpha-bench 模式下回测以验证随机对照拒绝虚假结果。

创建交易提醒渠道机器人

借助 15+ 个可选渠道扩展(telegram、discord、slack、feishu、带 E2E 的 matrix、通过 neonize 的 whatsapp 等),团队可以将代理的 Research Goal 完成事件或群体任务结果连接到消息渠道。Research Goal 运行时通过 add_goal_evidence 发出证据更新,可以转发到渠道机器人。

安装 telegram 扩展(python-telegram-bot>=21.0),在 agent/.env 中配置机器人令牌,定义带检查清单标准的 Research Goal,并验证目标状态变化产生渠道消息。

用外部 MCP 工具扩展群体工作者

v0.1.9 新增了群体工作者中操作员配置的外部 MCP 工具(#142)和内置代理的远程 MCP 传输。这意味着团队可以将内部工具(自定义数据 API、风险计算器、合规检查)暴露为 MCP 端点,让群体任务在多步骤研究流水线中调用它们。

定义 MCP 服务器端点,在群体工作者配置中将其配置为操作员提供的外部工具,通过 POST /swarm/runs 触发群体运行,并确认工作者在任务执行期间调用了外部工具。

下一步建议

通过 Docker 部署并运行 Paper 模式回测

评估 Vibe-Trading 最快的路径是提供的 docker-compose.yml,它处理前端编译、Python 依赖安装、WeasyPrint 原生库、卷持久化和健康检查。这避免了手动解决 WeasyPrint 依赖问题,并确保 vibe-home 卷在重建间保护用户状态。

  1. 克隆仓库并将 agent/.env.example 复制为 agent/.env;添加你的 LLM API 密钥(OpenAI、DeepSeek,或设置 OLLAMA_BASE_URL 用于本地推理)
  2. 运行 `docker compose up -d --build`——多阶段 Dockerfile 用 node:20-slim 编译前端,并安装包括 Pango/HarfBuzz/Cairo 在内的 Python 依赖以支持 PDF 渲染
  3. 验证健康检查:`curl http://localhost:8899/health` 应在启动期 10 秒内返回 200
  4. 在 http://localhost:8899 打开 Web UI(前端从 frontend/dist 作为静态文件提供)或使用 CLI:`docker compose exec vibe-trading vibe-trading connector list`
  5. 配置 paper 模式 IBKR 连接器配置文件(只读 TWS/IB Gateway)或跳过连接器,使用内置行情数据加载器在启用严格 alpha-bench 模式下运行回测

RepoDaily 判断

Vibe-Trading 是目前最完整的开源 LLM 驱动金融代理之一:452 个带前视偏差检查的预构建因子、36 个 MCP 工具、带 DAG 依赖的群体编排、带运营保障的券商连接器,以及生产级 Docker 部署。主要注意事项包括 0.1.x 版本号、明确标记为不稳定的 IBKR 远程 MCP 路径,以及 LLM 生成信号引擎需要启用严格 alpha-bench 模式才可信的事实。对于希望拥有 SaaS 交易代理的自托管替代方案的量化研究员和技术能力较强的交易者,值得在任何实盘委托之前以 paper 模式进行认真评估。

信息来源