TradingAgents 多智能体LLM金融交易框架调研报告
调研日期: 2026-04-09
调研人: 庞统 (副军师)
调研主题: TauricResearch/TradingAgents 项目技术分析与评估
目录
一、项目概述
TradingAgents 是由 TauricResearch 开源的一个基于大语言模型(LLM)的多智能体金融交易框架。该项目模拟真实世界交易公司的运作方式,通过多个专业化的LLM智能体协作来评估市场状况并做出交易决策。
- GitHub: https://github.com/TauricResearch/TradingAgents
- 论文: https://arxiv.org/abs/2412.20138
- 最新版本: v0.2.3 (2026年3月更新)
- 星标: 8.6k+ (非常受欢迎)
- 已下载到本地知识库:
/Users/chufeng/.openclaw/knowledge_base/TradingAgents/
二、框架架构与分工设计
TradingAgents 将复杂的交易任务分解为多个专业化角色,完全模拟真实投行/对冲基金的分工模式:
分析师团队
| 角色 | 职责 |
|---|---|
| 基本面分析师 | 评估公司财务和业绩指标,识别内在价值和潜在风险 |
| 情绪分析师 | 分析社交媒体和公众情绪,衡量短期市场情绪 |
| 新闻分析师 | 监控全球新闻和宏观经济指标,解读事件对市场的影响 |
| 技术分析师 | 利用技术指标(MACD、RSI等)发现交易模式,预测价格走势 |
研究员团队
| 角色 | 职责 |
|---|---|
| 多头研究员 | 构建看涨案例,强调增长潜力和竞争优势 |
| 空头研究员 | 提出看空论据,识别风险,反驳多头论点 |
| 研究经理 | 仲裁多空辩论,给出投资计划结论 |
交易与风控
| 角色 | 职责 |
|---|---|
| 交易员 | 整合分析结果,制定具体交易提案 |
| 激进风险分析师 | 倾向进攻,支持更大仓位 |
| 保守风险分析师 | 强调风险控制,建议缩小仓位 |
| 中立风险分析师 | 平衡双方观点,寻找中庸方案 |
| 投资组合经理 | 综合风险辩论,给出最终交易决策(五大评级之一) |
完整执行流程
START
│
▼
分析师团队依次独立分析 → 输出各领域报告
│
▼
多头 ↔ 空头 多轮投资辩论
│
▼
研究经理仲裁 → 输出投资计划
│
▼
交易员制定交易提案
│
▼
激进 ↔ 保守 ↔ 中立 多轮风险辩论
│
▼
投资组合经理最终决策 → 输出: Buy/Overweight/Hold/Underweight/Sell
│
▼
END
三、协作机制技术实现
项目基于 LangGraph 状态图 实现多智能体协作。
3.1 顺序执行协作的技术实现
基本原理
每个分析师是图中的一个节点,通过条件边控制流程:
- 分析师节点 → LLM分析判断是否需要调用工具
- 条件判断
should_continue_xxx:- 如果需要调用工具 → 去
tools_xxx节点执行工具获取数据,然后返回分析师继续分析 - 如果不需要调用工具 → 去
Msg Clear节点清空消息(避免上下文爆炸)
- 如果需要调用工具 → 去
- 传递给下一个分析师,直到所有分析师完成,进入辩论阶段
消息清空技巧
这是项目的一个巧妙工程设计:
# 每个分析师完成报告后,结果保存在专门的状态字段:
state["fundamentals_report"] = report
# 然后清空messages列表,避免后续上下文爆炸
return {"messages": []}
优势:每个分析师结果单独存储,不会撑爆上下文窗口。
3.2 多轮辩论机制的技术实现
投资辩论(双人循环:多头 ↔ 空头)
状态定义:
class InvestDebateState(TypedDict):
bull_history: str # 多头发言历史
bear_history: str # 空头发言历史
history: str # 完整辩论历史
current_response: str # 最新发言
count: int # 辩论轮次计数器
条件路由逻辑:
def should_continue_debate(self, state):
# 达到最大轮数 → 结束辩论,交给研究经理裁决
if state["investment_debate_state"]["count"] >= 2 * max_debate_rounds:
return "Research Manager"
# 轮流发言:看谁刚才说了,下一个就是对手
if current_response.startswith("Bull"):
return "Bear Researcher" # 多头说完 → 空头
return "Bull Researcher" # 空头说完 → 多头
每个研究员节点只做一件事:读取当前辩论历史,基于此生成自己的发言,更新状态,然后交给下一个人。
风险辩论(三人循环:激进 → 保守 → 中立)
原理相同,只是三个人轮流:
def should_continue_risk_analysis(self, state):
if count >= 3 * max_risk_discuss_rounds:
return "Portfolio Manager" # 达到轮数,结束
# 按顺序轮流
if latest_speaker.startswith("Aggressive"):
return "Conservative Analyst"
if latest_speaker.startswith("Conservative"):
return "Neutral Analyst"
return "Aggressive Analyst"
辩论机制总结
| 特点 | 实现方式 |
|---|---|
| 轮流发言 | 检查"谁最后发言"决定下一个 |
| 轮数控制 | 计数器 + 最大轮数配置,达到就退出 |
| 历史保存 | 完整辩论历史以纯文本保存在状态中 |
| 可配置 | max_debate_rounds 可调,默认2轮 |
四、优缺点分析
优点 ✅
-
符合人类组织决策习惯,可解释性强
- 每个环节都有明确输出,便于追溯问题
- 相比端到端单LLM,过程更透明
-
专业化分工提升专业度
- 每个agent只关注自己领域,prompt针对性优化
- 结果输出质量更高
-
辩论减少认知偏差
- 多空辩论逼迫考虑对立观点
- 风险辩论平衡风险收益,避免极端决策
-
模块化程度高,易于扩展
- 增减分析师只需要修改图定义
- 支持任意LLM提供商,可自由切换
-
支持记忆学习
- 每个关键角色有独立向量记忆
- 可根据交易结果反思改进,越做越好
-
灵活可配置
- 分析师可选择性开启
- 辩论轮数可配置
- 深浅任务分配给不同大小模型,平衡成本效果
缺点 ❌
-
成本高,多次LLM调用token消耗大
- 一次完整决策通常需要 15-30次 LLM调用
- API调用费用高,串行执行速度慢,一次决策要几分钟
-
错误累积效应
- 流水线结构,如果前面分析师出错,后面基于错误信息继续,结果肯定错
- 对比单LLM,更难发现前面的错误
-
对LLM能力依赖强,不适合小模型
- 需要正确的工具调用、长上下文理解、指令跟随
- 本地小模型(7B/14B)很难稳定运行
-
缺少并发支持
- 分析师顺序执行,实际上四个分析师完全可以并行,能大幅缩短时间
-
辩论质量不稳定
- 容易变成"各说各话",没有真正交锋反驳
- 需要更强的prompt工程优化
-
缺少大规模实盘验证
- 项目很新(2026年初才发布),公开回测结果不多
- 是否真能持续赚钱还需要时间验证
五、对大模型的要求
项目原生支持两级模型分工,平衡成本和效果:
| 层级 | 职责 | 推荐模型规格 |
|---|---|---|
| quick_think_llm | 分析师、研究员辩论、交易员 | 小/中型号,速度快成本低 |
| deep_think_llm | 研究经理仲裁、投资组合经理最终决策 | 大型号,推理能力强 |
各厂商官方推荐配置
| 厂商 | 快速思考 | 深度思考 |
|---|---|---|
| OpenAI | gpt-5.4-mini | gpt-5.4 |
| Anthropic | claude-haiku-4-5 | claude-opus-4-6 |
| gemini-2.5-flash-lite | gemini-3.1-pro | |
| Ollama (本地) | qwen3:latest (8B) | glm-4.7-flash:latest (30B) |
必须具备的能力
- 工具调用能力 (Function Calling) → 分析师获取数据
- 长上下文理解 → 至少128K+,推荐1M+
- 良好的指令跟随 → 每个角色必须严格遵循定位
- 结构化输出 → 最终决策需要固定格式
六、Mac Studio 本地部署推荐配置
按统一内存大小推荐方案
32GB 统一内存(起步推荐)
quick_think_llm:
模型: Qwen3 8B Instruct GGUF
量化: q4_K_M
占用: ~5GB
deep_think_llm:
模型: GLM-4.7-Flash 30B Instruct GGUF
量化: q4_K_M
占用: ~18GB
总占用: ~25-28GB,刚好放下
64GB 统一内存(更佳体验)
quick_think_llm: Qwen3 14B q4_KM → ~9GB
deep_think_llm: GLM-4.7-Flash 30B q6_K → ~25-28GB
总占用: ~40GB,有富余
128GB 统一内存(满血体验)
quick_think_llm: Qwen3 32B q4_K_M → ~18GB
deep_think_llm: GLM-4.7 70B q4_K_M → ~40GB
总占用: ~60-65GB,体验接近API大模型
Ollama 一键部署步骤
# 安装 Ollama
brew install ollama
ollama serve
# 拉取模型(32GB方案示例)
ollama pull qwen3:latest
ollama pull glm-4.7-flash:latest
# TradingAgents 配置
config["llm_provider"] = "ollama"
config["quick_think_llm"] = "qwen3:latest"
config["deep_think_llm"] = "glm-4.7-flash:latest"
中文用户首选就是 Qwen + GLM 组合,都是国产开源,中文支持优秀,Ollama官方已经收录。
七、与传统AI量化对比总结
目前经过实操验证的可行方案对比
| 方案 | 可行度 | 说明 |
|---|---|---|
| 传统因子 + AI辅助挖掘因子 | ⭐⭐⭐⭐⭐ | 机构主流做法,长期验证可行 |
| 纯传统多因子/CTA | ⭐⭐⭐⭐ | 长期验证可行,超额需要持续迭代 |
| AI波动率预测/风险预测 | ⭐⭐⭐⭐ | 比传统方法好,确实有用 |
| LLM舆情情绪分析 | ⭐⭐⭐ | 有增量信息,作为多因子一部分不错 |
| TradingAgents LLM多智能体决策 | ⭐⭐ | 思路新颖,研究价值高,大规模实盘验证还需要时间 |
| 端到端强化学习直接交易 | ⭐ | 回测容易过拟合,实盘稳定方案少 |
核心结论
-
TradingAgents 的创新价值:首次将完整的真实交易机构分工流程,用LLM多智能体状态机优雅实现,思路非常新颖,可解释性远胜于黑箱模型,研究价值很高。
-
适合场景:
- 低频投资决策(周度/月度调仓)
- 研究学习多智能体协作
- 有足够硬件或API配额,尝试新框架
-
不适合场景:
- 高频交易(速度太慢,成本太高)
- 本地小模型(< 30B很难稳定运行)
- 成本敏感的个人投资者(API调用成本不低)
-
给个人投资者建议:
- 从"传统因子框架 + AI辅助挖掘"这条路开始,这是已经验证的康庄大道
- TradingAgents作为前沿研究方向值得学习跟进,但不要一上来就all in
- AI是工具不是银弹,用AI增强传统方法,而不是完全推翻重来
调研结论
TradingAgents 是一个设计优雅、思路创新的项目,它证明了用LLM多智能体模拟真实交易机构决策流程是完全可行的。虽然目前还缺少大规模长期实盘验证,成本也较高,但作为研究方向非常有前景,值得持续关注。
对于有Mac Studio的用户,按照本文推荐的30B深度思考 + 8B快速思考的本地配置,完全可以跑起来进行研究测试。
完