今日开源[第32期] Vibe-Trading

Vibe-Trading 项目分析报告

分析日期:2026-07-14


一、项目介绍

1.1 项目概述

Vibe-Trading 是由香港大学数据科学实验室(HKUDS) 开源的 AI 驱动多智能体金融研究工作台。其核心理念是"自然语言驱动量化交易"——用户无需编写代码,只需用日常语言描述交易想法,Agent 即可自动完成数据拉取、策略编写、回测执行、报告生成全流程。项目定位为 "Your Personal Trading Agent"(你的个人交易代理),一条命令即可赋予智能体全面的交易研究能力 [1]。

1.2 项目信息

项目 详情
项目名称 Vibe-Trading
项目地址 https://github.com/HKUDS/Vibe-Trading
项目官网 https://vibetrading.wiki/
PyPI 包 vibe-trading-ai
作者/组织 HKUDS(香港大学数据科学实验室)
Stars 22,000+(截至 2026 年 7 月)
当前版本 v0.1.11(2026 年 7 月 11 日发布)
开源协议 MIT License
主要语言 Python 3.11+(后端)、TypeScript/React(前端)
仓库创建 2026 年 4 月 1 日
提交数 583+ commits

1.3 项目示意图

项目官网展示了以下可视化界面:

  • 三栏式 Web UI:左侧策略树 + 中央对话流 + 右侧回测图表(K 线图、权益曲线、相关性热力图)
  • Swarm 实时仪表板:多智能体协作状态实时流式展示,包含等待/运行/完成/失败等状态卡片
  • Alpha Zoo 因子库浏览器:因子目录、因子对比视图、排名表
  • Research Loop 流程图:Route(路由)→ Ground(数据获取)→ Test(回测验证)→ Deliver(报告交付)四步研究闭环

README 提供英文、中文、日文、韩文、阿拉伯文五种语言版本。


二、项目亮点

2.1 自然语言驱动全流程

用户只需用日常语言描述策略想法(如"回测沪深300的20/50日均线交叉策略,2024年全年"),Agent 自动完成:识别市场 → 选择数据源 → 编写策略代码 → 执行回测 → 输出报告。整个过程无需手动编写任何代码 [2]。

2.2 Alpha Zoo 因子库(461 个预构建因子)

内置四大因子源:

因子源 数量 说明
qlib158 158 个 来自微软 Qlib 的因子库
alpha101 101 个 Kakushadze 101 Formulaic Alphas(arXiv:1601.00991)
gtja191 191 个 国泰君安 2014 短线因子报告
academic 11 个 Fama-French 5 因子 + Carhart 动量 + Jegadeesh 反转 + Amihud 非流动性等

支持因子对比(alpha compare)、IC/IR 分析、分位数回测等 [3]。

2.3 多智能体 Swarm 团队(29 个预设)

基于 DAG 编排的多智能体协作系统,Kahn 算法分层调度,层内并行、层间串行。典型预设:

预设 流程
investment_committee 多头/空头辩论 → 风险审查 → PM 最终决策
quant_strategy_desk 筛选 + 因子研究 → 回测 → 风险审计
crypto_trading_desk 资金费率/清算/流向 → 风险管理

2.4 安全纵深防御

机制 说明
AST 静态分析沙箱 编译阶段拦截 os.system、subprocess、eval 等 20+ 危险函数
外部安全审计 完成 2026-07-10 外部安全审计全部 10 项发现
Docker 最小权限 非 root、cap_drop ALL、read_only rootfs
Single Mandate Gate 实盘需用户承诺标的/订单量/敞口/杠杆等限制

2.5 16 个即时通讯渠道适配器

支持 WebSocket、Telegram、Slack、Discord、Matrix、WhatsApp、Signal、QQ/NapCat、微信/企业微信、飞书/钉钉/Teams、邮件等渠道,Agent 可通过这些渠道接收研究请求并返回结果 [1]。

2.6 创新点

  • ReAct + 5 级上下文压缩:解决长对话 token 溢出问题,确保关键决策链在复杂量化研究中不被丢弃
  • SignalEngine 契约:策略输出标准化为 [-1.0, 1.0] 信号序列,Agent 自动生成符合接口的 Python 代码
  • 影子账户系统:从用户交易记录提取隐含策略,进行 8 维度收益归因(delta-PnL 分解为噪声交易、提前离场、延迟离场、过度交易、错失信号)
  • Research Autopilot:假设 → 信号引擎 → 回测的端到端自动化闭环

2.7 与同类项目的差异化优势

维度 Vibe-Trading TradingAgents Qlib(微软) Backtrader vn.py
核心范式 自然语言 → Agent 自动执行 多智能体 LLM 交易决策 ML 驱动因子研究 Python 代码编写策略 C++ 引擎 + Python 插件
上手门槛 自然语言即可 需配置 需 ML 背景 需编程基础 需 C++/Python
多智能体 ✅ 29 个 Swarm 预设
MCP 集成 ✅ 22+ 个 MCP 工具
跨市场 6 大市场 主要美股 聚焦 A 股 需自行扩展 聚焦 A 股/期货
记忆系统 ✅ FTS5 + 跨会话
安全审计 ✅ 外部审计通过 未知 N/A N/A N/A
策略导出 Pine Script/TDX/MQL5 有限 有限

三、项目运行环境

3.1 硬件要求

  • 无特殊硬件要求,普通 PC 即可运行
  • 若使用本地 LLM(Ollama),建议 16GB+ 内存
  • Docker 部署需支持 Docker 的任意系统

3.2 操作系统支持

平台 支持状态
Windows 已通过基线兼容性测试(4,701 passed, 47 skipped)
macOS 支持
Linux 支持(Docker 部署推荐)

3.3 软件依赖

核心依赖:

依赖 版本/说明
Python >= 3.11
langchain >= 0.1.0
langgraph >= 0.2.50
fastapi >= 0.104.0
pandas >= 2.0.0
numpy >= 1.24.0
duckdb >= 1.2.0
yfinance >= 0.2.30
tushare >= 1.2.89
pydantic >= 2.0.0

前端依赖: React + TypeScript + Vite + Zustand(状态管理)+ ECharts(图表渲染)

LLM Provider 支持(13+): OpenAI、DeepSeek、Gemini、Qwen、Kimi、Ollama、Codex OAuth、OpenRouter、Zhipu/GLM、Kimi for Coding、Requesty、OpenCode 等

3.4 安装步骤

方式一:PyPI 一键安装(推荐)

pip install vibe-trading-ai
vibe-trading init          # 交互式生成 .env
vibe-trading               # 启动交互式 CLI/TUI
vibe-trading serve --port 8899  # 启动 Web 服务

方式二:源码安装

git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
pip install -e .
vibe-trading

方式三:Docker 零配置部署

git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
cp agent/.env.example agent/.env
# 在 .env 中填入 LLM API Key(也支持本地 Ollama 零成本运行)
docker compose up --build
# 浏览器打开 http://localhost:8899

方式四:MCP 插件接入

vibe-trading-mcp 配置到 Claude Desktop / Cursor / Windsurf 的 MCP 配置中,22 个工具无需任何 API Key 即可调用。


四、项目代码介绍

4.1 代码架构图

Vibe-Trading/
├── agent/                          # 核心 Agent 代码(Python)
│   ├── src/
│   │   ├── agent/                  # ReAct 循环、上下文压缩
│   │   │   └── loop.py             # 核心 Agent 循环
│   │   ├── api/                    # FastAPI 路由模块
│   │   │   ├── system_routes.py    # 系统路由
│   │   │   ├── channels_routes.py  # 渠道管理路由
│   │   │   └── settings_routes.py  # 设置路由
│   │   ├── backtest/               # 7 个回测引擎 + SignalEngine 契约
│   │   │   ├── runner.py           # AST 安全沙箱
│   │   │   └── signal.py           # SignalEngine 基类
│   │   ├── factors/                # Alpha Zoo 因子库
│   │   │   ├── registry.py         # 因子注册表
│   │   │   ├── operators.py        # 因子运算符
│   │   │   └── safety_gates.py     # 安全门控
│   │   ├── loaders/                # 18 个数据源加载器 + 自动回退链
│   │   ├── connectors/             # 10 个券商连接器
│   │   │   ├── ibkr.py             # Interactive Brokers
│   │   │   ├── robinhood.py        # Robinhood
│   │   │   ├── tiger.py            # 老虎证券
│   │   │   ├── alpaca.py           # Alpaca
│   │   │   ├── okx.py              # OKX
│   │   │   └── binance.py          # Binance
│   │   ├── providers/              # 13+ LLM Provider 适配层
│   │   ├── skills/                 # 79 个金融技能(Markdown + YAML)
│   │   ├── swarm/                  # 多智能体 DAG 编排引擎
│   │   ├── shadow/                 # 影子账户系统
│   │   └── channels/               # 16 个 IM 渠道适配器
│   ├── config/swarm/               # 29 个 Swarm 预设(YAML)
│   └── .env.example                # 环境变量模板
├── frontend/                       # React + TypeScript 前端
│   └── src/
├── tools/                          # 辅助工具脚本
├── scripts/                        # 构建/部署脚本
├── wiki/                           # 文档站点源码
├── cli.py                          # CLI 入口
├── run_agent.py                    # Agent 运行入口
├── api_server.py                   # FastAPI 服务器入口
├── mcp_server.py                   # MCP 服务器入口
├── pyproject.toml                  # 项目配置与依赖
├── docker-compose.yml              # Docker 编排
├── Dockerfile                      # Docker 多阶段构建
└── README.md / README_zh.md        # 多语言文档

4.2 五层架构

用户交互层:CLI/TUI │ Web UI (React+TS) │ MCP Server │ API Consumer
       ↓
入口层:cli.py / api_server.py (FastAPI+SSE) / mcp_server.py
       ↓
Agent 核心层:ReAct 循环 + 5 层上下文压缩 + ToolRegistry + SkillsLoader
       ↓
工具与数据层:Backtest │ Shadow Account │ Factor Analysis │ Web Search
       ↓
LLM 抽象层(13 Provider)+ 数据存储层(SQLite FTS5 / 文件系统)

4.3 核心模块介绍

模块 路径 功能
ReAct Loop agent/src/agent/loop.py 核心 Agent 循环,Reasoning + Acting 模式,内置 5 级上下文压缩
Swarm 引擎 agent/src/swarm/ DAG 编排多智能体,Kahn 拓扑分层,层内并行/层间串行
回测引擎 agent/src/backtest/ 7 个市场引擎,模板方法模式,3 种统计验证,4 个权重优化器
Alpha Zoo agent/src/factors/ 461 个因子,因子注册表、对比工具、IC/IR 分析
数据加载层 agent/src/loaders/ 18 个免费数据源 + 自动回退链,支持本地 CSV/Parquet/DuckDB
券商连接器 agent/src/connectors/ 10 个券商,paper/live 属性化,Single Mandate Gate 安全门控
LLM Provider agent/src/providers/ 13+ 模型适配,显式能力层隔离各 Provider 协议差异
IM 渠道 agent/src/channels/ 16 个即时通讯适配器,CLI/REST/Web UI 三端管理
影子账户 agent/src/shadow/ 交易记录解析 → 隐含策略提取 → 8 维度归因报告

4.4 核心代码解析

4.4.1 ReAct 核心循环 + 5 级上下文压缩

AgentLoop 位于 agent/src/agent/loop.py,实现标准的 ReAct(Reasoning + Acting)模式。核心流程:

  • 接收用户自然语言输入
  • 通过 LLM 推理确定需要调用的工具(数据拉取、因子计算、回测等)
  • 工具批量执行:读操作通过 ThreadPoolExecutor 并行(最多 8 线程),写操作串行
  • 结果回传给 LLM 进行下一轮推理
  • 内置 5 级上下文压缩防止 token 溢出:
级别 机制 触发条件
L1 微压缩 静默截断冗余工具输出,保留关键指标 零 API 成本,始终启用
L2 滑动窗口 保留最近 N 轮完整交互,更早轮次仅留摘要 始终启用
L3 语义摘要 LLM 生成 JSON 结构化摘要 token > 40K 触发
L4 知识蒸馏 重复领域知识提取为独立 context block 跨会话重复知识
L5 全局记忆 FTS5 持久化,新会话自动召回 跨会话

4.4.2 SignalEngine 策略契约

# agent/backtest/signal.py
class SignalEngine:
    """策略信号引擎基类,所有策略必须实现 generate 方法"""
    def generate(self, data: pd.DataFrame) -> np.ndarray:
        """
        返回信号数组:-1.0 = 空头, 0.0 = 持有现金, 1.0 = 多头
        """
        raise NotImplementedError

# Agent 自动生成的均线交叉策略示例
class MACrossover(SignalEngine):
    def generate(self, data: pd.DataFrame) -> np.ndarray:
        fast = data['close'].rolling(20).mean()
        slow = data['close'].rolling(50).mean()
        return ((fast > slow).astype(float) * 2 - 1).values

回测引擎要求策略输出值域为 [-1.0, 1.0] 的信号序列。Agent 自动生成符合接口的代码并注入引擎执行。SignalEngine 契约将自然语言策略描述与可执行回测代码之间的桥梁标准化,确保 Agent 生成的代码与回测引擎无缝对接。

4.4.3 Swarm DAG 编排引擎

Swarm 系统基于有向无环图(DAG)实现多智能体协作:

组件 职责
SwarmRuntime 编排引擎,后台守护线程执行,SSE 实时事件流
SwarmWorker 轻量级 ReAct 循环,独立工具注册表和技能白名单
Mailbox 基于文件系统的 Agent 间消息传递
TaskStore DFS 三色环检测 + Kahn 拓扑分层

investment_committee 预设为例的 DAG 编排:

Layer 0(并行):  bull_advocate(多头) │ bear_advocate(空头)
       ↓
Layer 1(依赖 L0): risk_officer(风险官) → 汇总多空辩论
       ↓
Layer 2(依赖 L1): portfolio_manager(组合经理) → 最终决策

Kahn 算法确保层内节点并行执行,层间串行依赖,最大化并发效率同时保证逻辑正确性。

4.4.4 AST 安全沙箱

# agent/backtest/runner.py(简化逻辑)
import ast

FORBIDDEN_CALLS = {
    'os.system', 'subprocess.Popen', 'subprocess.call',
    'subprocess.run', 'eval', 'exec', 'os.environ',
    'os.remove', 'os.unlink', 'shutil.rmtree',
    'socket.socket', 'urllib.request', 'http.client',
    # ... 共 20+ 危险函数
}

class SafetyVisitor(ast.NodeVisitor):
    def visit_Call(self, node):
        func_name = self._resolve_func_name(node.func)
        if func_name in FORBIDDEN_CALLS:
            raise SecurityError(f"Forbidden call: {func_name}")
        self.generic_visit(node)

def validate_strategy_code(code: str):
    """编译阶段通过 AST 静态分析拦截危险函数调用"""
    tree = ast.parse(code)
    SafetyVisitor().visit(tree)
    # 通过检查后编译执行
    compiled = compile(tree, '<strategy>', 'exec')
    return compiled

编译阶段通过 AST 静态分析拦截 os.systemsubprocessevalexec 等 20+ 危险函数,拒绝网络访问、子进程创建、不安全文件操作。支持嵌套函数体内部的检测。比运行时捕获更安全——即使 LLM 生成了恶意代码也不会被执行。

4.4.5 Alpha Zoo 因子库 API

from vibe_trading.factors import ZooSignalEngine
from vibe_trading.factors.registry import AlphaRegistry

# 列出所有 qlib158 因子
alphas = AlphaRegistry.list(zoo="qlib158")

# 用前 5 个因子构建信号引擎
engine = ZooSignalEngine.from_zoo(
    zoo="qlib158",
    factors=alphas[:5],
    rebalance="weekly",
)

# 执行回测
result = engine.backtest(
    universe="CSI300",
    start="2023-01-01",
    end="2024-12-31",
)
print(result.sharpe, result.max_drawdown, result.annual_return)

Alpha Zoo 提供统一 API 访问 461 个因子,支持因子对比(alpha compare)、IC/IR 分析、分位数回测等。Agent 可以根据用户的自然语言描述自动选择合适的因子组合并构建信号引擎。


五、项目应用与评价

5.1 应用场景

场景 说明
自然语言量化研究 快速验证策略想法,无需编写代码,适合非技术背景投资者
多智能体 Swarm 协同 模拟真实机构投研流程,辩论式决策提供可解释性
跨市场数据与回测 覆盖 A 股/港股/美股/加密/期货/外汇六大市场,统一研究全球资产配置
影子账户 + 交易归因 上传券商导出文件(同花顺/东财/富途),自动分析交易画像与行为偏差
AI Agent 工作流集成 通过 MCP 协议提供 22 个工具,可直接嵌入 Claude Desktop / Cursor / Windsurf 等
策略导出 一键导出 Pine Script / 通达信公式 / MT5 MQL5 代码,打通研究到实盘
定时研究执行 后台调度器按 interval/cron 定时触发研究任务

5.2 项目优点

  1. 零门槛上手:自然语言交互,不需要编程和量化金融背景,一句"回测沪深300的20/50日均线交叉策略"即可开始。
  2. 完全开源 MIT 协议:可商用、可二次开发、可本地部署,无任何许可证限制。
  3. 生态完整:461 个因子、79 个技能、29 个 Swarm 团队、18 个免费数据源、10 个券商连接器,开箱即用。
  4. 安全可靠:通过外部安全审计全部 10 项发现,AST 沙箱、Docker 最小权限、Single Mandate Gate 多层防护。
  5. 多入口访问:CLI、Web UI、MCP 插件、Docker 四种方式,满足不同用户习惯。
  6. 社区活跃:日均 2+ PR,社区贡献者众多,文档支持中英日韩阿五种语言。
  7. 策略可导出:支持 Pine Script、通达信、MQL5 等主流平台,从研究到实盘无缝衔接。
  8. 零成本起步:21/22 个 MCP 工具无需任何 API Key,支持本地 Ollama 运行,完全免费可用。

5.3 项目不足

  1. 项目较新:2026 年 4 月才创建,生态和稳定性仍在快速迭代中,前端偶尔有小 bug。
  2. 实盘交易受限:定位为研究回测平台,10 个券商连接器目前以 paper/read-only 为主,暂不适合需要直接连券商实盘的用户。
  3. 数据质量依赖第三方:免费数据源可能存在数据延迟或覆盖不全的问题,高质量数据需付费 QVeris。
  4. LLM 依赖:复杂策略生成的准确性依赖 LLM 模型能力,低质量模型可能导致策略逻辑错误。
  5. 回测不等于实盘:回测表现不代表实盘结果,需注意过拟合和幸存者偏差风险。
  6. Python 版本限制:要求 Python 3.11+,部分老旧系统可能不兼容。
  7. 文档仍在完善中:部分高级功能(如自定义 Swarm 编排、券商连接器开发)文档覆盖不足,学习曲线偏陡。

参考来源

posted @ 2026-07-15 00:19  zhang-yd  阅读(99)  评论(0)    收藏  举报