
GitHub: https://github.com/hkuds/vibe-trading
vibe-trading 是一个让 LLM 用自然语言驱动量化研究 + 受控实盘的 Agent 平台——它把 18 个数据源、450+ 公式 alpha、9 家券商 connector、Swarm 多 Agent、Alpha 反推策略(Shadow Account)塞进同一个 ReAct 内核,并用一整套「纵深防御」(mandate + sentinel kill switch + audit ledger)让「Agent 替你下单」从「信 prompt」变成「审代码」。

— 项目主标识,「Vibe-Trading」 视觉锚点

— 自进化 Agent:跨 session 记忆 + skill progressive disclosure + persistent memory

— Swarm 多 Agent 团队:DAG 编排 + intra-layer 并行 + topological 检 cycle

— 跨市场数据 + 回测:A 股 / 港股 / 美股 / 加密 / 期货 / 外汇,18 个数据源带 fallback chain

— Shadow Account:把你的交割单反推成可 backtest 的策略代码
Demo 视频: - Natural-language backtest & multi-agent swarm debate — Web UI + CLI - Multi-agent swarm demo (second clip)
https://github.com/hkuds/vibe-tradinghkuds 是香港大学数据智能实验室(Data Intelligence Lab@HKU)的组织账号,PI 推断为 Chao Huang 教授(Google Scholar user=Zkv9FqwAAAAJ,站点 sites.google.com/view/chaoh)。实验室主页自述「Passionately Dedicated to Exploring the Forefront of the Data Science & AI」——3 年内孵出 89 个公开 repo,旗下 nanobot 44K★、LightRAG 37K★(EMNLP 2025)、CLI-Anything 44K★、DeepTutor 25K★、ViMax 10K★、AI-Trader 是同行/竞争项目。这种「Lab-as-Factory」的孵化模式意味着 vibe-trading 不是一个人的 side project,而是有组织保障、有品牌延续、有同款工程哲学背书的「垂类套件」——具体表现为:vibe-trading 的 AgentLoop / Skills / Tools / Memory 骨架与 nanobot 同源,再叠加金融领域约束(mandate / live gate / 18 loader / alpha zoo)。
作者看到的核心问题是:LLM Agent 在 high-stakes 场景下的「可信执行」鸿沟。当前市面上的 AI 量化项目(QuantDinger、backtrader、vectorbt 等)要么是没有 LLM 的纯回测库,要么是 LLM 提建议但人执行,更激进的(AI-Trader 同门兄弟)走「100% 全自动」路线——vibe-trading 选择第三条路:研究层让 LLM 全面参与,实盘层用代码做结构性约束。时机为什么是 2026 Q2?因为 LangChain 1.x 稳定(vibe-trading 锁 >=1.0.0,<2)、MCP 协议 2025 末成熟(vibe-trading 直接提供 MCP server)、多厂商 reasoning models(Gemini thoughtSignature / Kimi-k2.5 thinking / DeepSeek reasoning_content)刚好齐备——所有底层组件都到了能搭一个生产级 Agent 平台的临界点。
明确选择 vs 明确不做的对比: - 选择:自然语言接口(「帮我看看 NVDA 是否符合动量 + 低波策略」就能跑全流程)、多 Agent Swarm(投资委员会式辩论)、跨市场数据(18 个 loader 含 mootdx/baostock/tushare/akshare/eastmoney/tencent 等中文圈最全)、Shadow Account(反推用户策略)、MCP 入口(让 Claude Desktop / Cursor 用户直接接入)。 - 不做:MCP 入口永远不暴露下单工具(mcp_server.py:13-18 显式声明「Every exposed tool is read-only or research-only」)、agent 不能直接 commit mandate(必须用户 UX 端写入)、没有「立即下单」作为 goal objective 的录入(正则直接拒绝)、不依赖 LLM 合作的安全切断(filesystem sentinel)、归因不用 LLM(纯算术可审计)。
这五个「不做」反而比五个「做」更有信息量——它们定义了 vibe-trading 的可信度边界。
vibe-trading 在 HKUDS 战略里承担「金融垂类套件」角色,与 AI-Trader(full-auto)形成研究-执行分工;同时它通过 wiki + 5 语 README + ClawHub 一键安装 + Discord/飞书/微信三社群构建「国际曝光」路径——已经在 Trendshift 冲上 Python Day #3,是同组织项目里「短期声量最大」的一次。商业化路径上目前没有公开 SaaS/付费层级(没有像 QuantDinger 那样卖控制台),更像是「先扩大开源生态影响力、再考虑变现」的实验室标准路径。
实验室博客(research-lab/posts/alpha-191-in-2026.html)有 GTJA 191 alpha 2026 还剩多少有效性的论文级实证,证明团队对量化本身的学术深度——不是蹭 LLM 风口。
check_mandate();kill switch 用 filesystem sentinel(<runtime_root>/live/HALT 的存在性就是 halt,malformed 也算 tripped,atomic write 避免半写状态);audit 同一份 redact 后的记录扇出到 compliance ledger / per-run trace / SSE bus 三处。 - 价值:把「我让 agent 帮我下单」从「信 prompt」变成「审代码」——这套可以平移到医疗、机器人、基础设施等所有「LLM 控制 actuator」的高风险场景。 - 引用:src/live/enforcement.py:379、src/live/halt.py:46、src/live/audit.py。
_fix_tool_pairs 修复压缩产生的孤儿 tool_call/result。 - 价值:5 个能力递增、代价递增的层让 40k+ token 长会话仍能跑完,迁移到任何长上下文 Agent 都适用。
ProviderCapabilities 冻结 dataclass 切 5 维布尔(capture_reasoning / send_reasoning_content / gemini_thought_signatures / normalize_assistant_content / openrouter_reasoning_body);子类化 ChatOpenAI 重写 _convert_input / _convert_dict_to_message / _convert_message_to_dict 三个私有方法,把 LangChain 0.3.x 丢弃的 reasoning_content 双向保住。 - 价值:OpenAI / Moonshot / DeepSeek / Gemini / OpenRouter 切换时 reasoning 跨 turn 不断链——这是 strict-mode Agent 的关键能力。
_NO_NETWORK_FALLBACK_SOURCES(novelty 4/5,utility 4/5) - 每个 market 维护有序 fallback 列表(「未鉴权/低 ban 风险优先,key-gated 后置」),如 a_share = [tencent, mootdx, eastmoney, baostock, akshare, tushare, local];local 显式列入「绝对不静默降级到网络源」黑名单——避免用户配错时数据问题被网络源悄悄掩盖。 - 价值:18 个 loader 提供 graceful degradation 但承诺「显式失败而非隐藏」。
policy.reject_live_execution_objective 用三组正则(中英文)直接拒绝「立即下单/市价单/马上买」作为 goal objective;RiskTier 四档(RESEARCH_GENERAL / MARKET_SPECIFIC_SHORT_TERM / PERSONALIZED_ADVICE_OR_POSITION_SIZING / LIVE_TRADING_OR_EXECUTION)。 - 价值:让 agent 不能用「目标」做「指令」,结构性切断 chat→order 直连的最常见路径。
__alpha_meta__ dict literal 注册,AST 提取不 import(启动零开销);Pydantic extra="forbid", frozen=True;正则约束 id、decay_horizon (0-60)、min_warmup_bars;operator 层 lookahead 强制 delta(d>=1);拒绝 +/- inf 和 >95% NaN。
模式 | 文件位置 | 适用场景 |
|---|---|---|
AgentLoop 5 层 context compression | src/agent/loop.py:185-291, 362-431 | 任何长上下文 Agent |
流式 cancel via cooperative checkpoints | loop.py:510-518, 731, 1119, 1318-1357 | 需要可中断 long-running LLM + tool 的应用 |
Reasoning delta 节流避免 SSE buffer 挤爆 | loop.py:660-678 | 所有 streaming UI agent |
Provider capability 矩阵 + 子类化 LangChain 私有方法 | src/providers/llm.py:30-110 + capabilities.py | 跨厂商 reasoning/thinking models |
Three-tier live-tool classification | src/live/classification.py:52-89 | 对接不可信 MCP 服务器的安全门 |
Sentinel-based kill switch (filesystem + atomic write) | src/live/halt.py:46-92 | 所有 LLM-controlled actuator 紧急切断 |
Three-sink audit fan-out | src/live/audit.py:40-80 | 高 stakes 操作的合规审计 |
双通道 gate + identical ceremony | live/order_guard.py + live/sdk_order_gate.py | 两种接入路径走同样闸 |
Daily count 增量策略(仅 ALLOW+真 broker 非 error 时 ++) | live/sdk_order_gate.py:122-150 | 所有配额管理(rate-limit / quota / token budget) |
Loader registry + market-keyed fallback chain | backtest/loaders/registry.py:56-172 | 所有数据源 fan-out(DB driver / LLM provider / vector DB) |
Alpha AST-scan registry | src/factors/registry.py:67-180 | 不想引入 yaml/json 配置漂移的 plugin registry |
Goal policy reject_live_execution_objective | src/goal/policy.py:7-49 | 对话式系统的「用户意图 vs agent 可执行操作」分层 |
PersistentMemory 用 markdown + frontmatter + CJK 字符级 tokenize | src/memory/persistent.py | local-first / privacy-first Agent 记忆层 |
DAG runtime + Kahn's algorithm + cycle detect + stale-run reaper | src/swarm/runtime.py:107-115 | 任务编排 |
Goal continuation guard (GOAL_MAX_CONTINUATIONS=3) | loop.py:823-890 | 「模型在终点线附近反复小步前进」的预算管理 |
Tool batching:readonly 并行 + write 串行 + repeat-call 去重 | loop.py:1014-1135 | 所有需要并行/串行混合调度的 Agent |
Prompt-injection scanner:只标注不删改 | src/security/scanner.py:26-77 | 注入检测 + 不破坏原文 |
loop.py 集中持有 streaming cancel / iterative compact / tool batching / 5 层 context 压缩的控制逻辑;LangChain 仅作 LLM adapter。Trade-off:放弃可视化、可恢复 checkpoint;换来对完整执行流的完全控制。
mcp_server.py:13-18 显式声明不暴露 write 工具,把「下单」严格留在本地。Trade-off:双协议双 bug surface;工具语义集中。
TradingProfile frozen dataclass 抽象;classification.py 把 place_order → WRITE 等映射集中维护。
_SYSTEM_PROMPT 结构化 Section(Tools / Skills / State / Task Routing)明文写「Backtest 用 X 流程」、「Swarm ONLY when user 显式请求」;Shadow Account 用 hard 约束「MUST load_skill("shadow-account") AS THE FIRST TOOL CALL」。Trade-off:依赖 LLM 服从 prompt;未做代码层 enforce(除 goal policy 正则拒绝 live execution)。
langchain>=1.0.0,<2,同时通过子类化 _convert_input / _convert_dict_to_message / _convert_message_to_dict 修 3 个洞,让 reasoning_content 跨厂商不丢。
维度 | vibe-trading | QuantDinger (9K★) | AI-Trader (HKUDS 兄弟) | backtrader (22K★) | hummingbot (19K★) | vectorbt (8K★) | Qlib (Microsoft) |
|---|---|---|---|---|---|---|---|
LLM Agent 层 | ✅ 自研 ReAct + Swarm | ✅ | ✅ 100% auto | ❌ | ❌ | ❌ | ❌(仅 ML pipeline) |
自然语言入口 | ✅ NL backtest & 策略生成 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
多 Agent Swarm | ✅ DAG + reaper | 部分 | ❓ | ❌ | ❌ | ❌ | ❌ |
跨市场数据源 | 18 loader + fallback chain | 较多 | ❓ | 单源 | crypto | 间接 | 间接 |
Multi-transport broker | local_tws / remote_mcp / sdk | 部分 | ❓ | 无 | 部分 | 无 | 无 |
纵深防御(mandate+sentinel+audit) | ✅ 三层 + sentinel | 弱 | 全 auto 路线 | 无 | 弱 | 无 | 无 |
Shadow Account | ✅ 反推 codegen | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
MCP 协议入口 | ✅ 但不暴露下单 | ❌ | ❓ | ❌ | ❌ | ❌ | ❌ |
Alpha zoo | alpha101 + qlib158 + academic | 部分 | ❓ | 无 | 无 | 无 | alpha158 |
学术品牌 / 论文 | HKUDS + EMNLP 2025 邻项目 | 无 | HKUDS | 无 | 无 | 无 | 工业 |
中文社区生态 | 强(18 loader 含 A 股全覆盖) | 强 | 强 | 弱 | 弱 | 弱 | 弱 |
商业化控制台 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | 部分 |
通用框架可复用 | 低(垂类金融) | 低 | 低 | 中 | 低 | 中 | 低 |
enforcement.py:379 check_mandate、halt.py:46 halt_path、audit.py 三扇出这套组合拳可以平移到任何 high-stakes agent。local 显式不静默降级)让用户能在不同网络环境下都跑得通。loop.py:1541 + worker.py:959 + order_guard.py:817 + runtime.py:747 核心文件过胖;coverage.run fail_under=0 意味着 CI 不卡质量;fix 占比 45% 是「bug 期」信号;enforcement.py 的 TODO(L6) 留 Robinhood positions envelope 兼容性债。填补了「LLM Agent + 个人 quant 研究 + 受控实盘」这一垂直空白。在 backtrader / vectorbt 等纯回测库的稳重与 AI-Trader / TradingAgents 等全自动派的激进之间,开辟了一条「研究层让 LLM 全面参与、实盘层用代码做结构性约束」的中间路线。这是 HKUDS 「Lab-as-Factory」 战略的最新代表作,把 nanobot 同款骨架加金融领域约束完成交付。
coverage.run fail_under=0 意味着 CI 不卡质量;fix 占比 45% / refactor 占比 0.5% 是「堆功能+修 bug 的 MVP 抢攻期」特征;enforcement.py:309 还留 TODO(L6) Robinhood 兼容性债;loop.py 1541 行核心文件过胖,新人贡献门槛高。VIBE_TRADING_RUN_LIVE_E2E env 守门,需真实 LLM 联调),coverage threshold 为 0;commit 类型中 test 仅 2%——意味着重大重构时回归风险高。agent/src/agent/loop.py(5 层 context compression + tool batching + cancel checkpoints)、agent/src/live/enforcement.py(纵深防御 8 项检查的 fail-closed 设计)、agent/src/shadow_account/extractor.py + codegen.py(FIFO pairing → KMeans → 决策树 → Jinja2 codegen)。然后看 agent/backtest/loaders/registry.py(fallback chain)和 agent/src/providers/capabilities.py(5 维能力矩阵)。资源 | 链接 |
|---|---|
官方 Wiki | https://vibetrading.wiki/ |
Docs | https://vibetrading.wiki/docs/ |
Research Lab(GTJA 191 alpha 2026 实证) | https://vibetrading.wiki/research-lab/posts/alpha-191-in-2026.html |
Alpha Library | https://vibetrading.wiki/alpha-library/ |
Zread.ai | https://zread.ai/hkuds/vibe-trading |
DeepWiki | 未索引(Loading……) |
ClawHub(npx 一键安装) | https://clawhub.ai/skills/vibe-trading |
OpenSpace(自演化技能) | https://open-space.cloud |
Discord | https://discord.gg/6TdQnRe5xcF |
关联论文 | 引用 Kakushadze (2015) arXiv:1601.00991「101 Formulaic Alphas」(alpha101 zoo 来源);同实验室 LightRAG (EMNLP 2025) |
Trendshift | https://trendshift.io/(Python Day #3 / 全语言 Day #6 / Week #15) |
在线 Demo | https://vibetrading.wiki/docs/ 内含 Web UI 启动指南 + GitHub user-attachments 演示视频 2 支 |