调研: TradingAgents多智能体LLM金融交易框架调研报告
This commit is contained in:
@@ -0,0 +1,361 @@
|
||||
# TradingAgents 多智能体LLM金融交易框架调研报告
|
||||
|
||||
**调研日期**: 2026-04-09
|
||||
**调研人**: 庞统 (副军师)
|
||||
**调研主题**: TauricResearch/TradingAgents 项目技术分析与评估
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [项目概述](#一项目概述)
|
||||
2. [框架架构与分工设计](#二框架架构与分工设计)
|
||||
3. [协作机制技术实现](#三协作机制技术实现)
|
||||
- 3.1 [顺序执行协作](#31-顺序执行协作的技术实现)
|
||||
- 3.2 [多轮辩论机制](#32-多轮辩论机制的技术实现)
|
||||
4. [优缺点分析](#四优缺点分析)
|
||||
5. [对大模型的要求](#五对大模型的要求)
|
||||
6. [Mac Studio 本地部署推荐配置](#六mac-studio-本地部署推荐配置)
|
||||
7. [与传统AI量化对比总结](#七与传统ai量化对比总结)
|
||||
|
||||
---
|
||||
|
||||
## 一、项目概述
|
||||
|
||||
**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 顺序执行协作的技术实现
|
||||
|
||||
#### 基本原理
|
||||
|
||||
每个分析师是图中的一个节点,通过条件边控制流程:
|
||||
|
||||
1. **分析师节点** → LLM分析判断是否需要调用工具
|
||||
2. **条件判断** `should_continue_xxx`:
|
||||
- 如果需要调用工具 → 去 `tools_xxx` 节点执行工具获取数据,然后返回分析师继续分析
|
||||
- 如果不需要调用工具 → 去 `Msg Clear` 节点清空消息(避免上下文爆炸)
|
||||
3. **传递给下一个分析师**,直到所有分析师完成,进入辩论阶段
|
||||
|
||||
#### 消息清空技巧
|
||||
|
||||
这是项目的一个巧妙工程设计:
|
||||
|
||||
```python
|
||||
# 每个分析师完成报告后,结果保存在专门的状态字段:
|
||||
state["fundamentals_report"] = report
|
||||
|
||||
# 然后清空messages列表,避免后续上下文爆炸
|
||||
return {"messages": []}
|
||||
```
|
||||
|
||||
**优势**:每个分析师结果单独存储,不会撑爆上下文窗口。
|
||||
|
||||
### 3.2 多轮辩论机制的技术实现
|
||||
|
||||
#### 投资辩论(双人循环:多头 ↔ 空头)
|
||||
|
||||
**状态定义**:
|
||||
```python
|
||||
class InvestDebateState(TypedDict):
|
||||
bull_history: str # 多头发言历史
|
||||
bear_history: str # 空头发言历史
|
||||
history: str # 完整辩论历史
|
||||
current_response: str # 最新发言
|
||||
count: int # 辩论轮次计数器
|
||||
```
|
||||
|
||||
**条件路由逻辑**:
|
||||
```python
|
||||
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" # 空头说完 → 多头
|
||||
```
|
||||
|
||||
每个研究员节点只做一件事:读取当前辩论历史,基于此生成自己的发言,更新状态,然后交给下一个人。
|
||||
|
||||
#### 风险辩论(三人循环:激进 → 保守 → 中立)
|
||||
|
||||
原理相同,只是三个人轮流:
|
||||
|
||||
```python
|
||||
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轮 |
|
||||
|
||||
---
|
||||
|
||||
## 四、优缺点分析
|
||||
|
||||
### 优点 ✅
|
||||
|
||||
1. **符合人类组织决策习惯,可解释性强**
|
||||
- 每个环节都有明确输出,便于追溯问题
|
||||
- 相比端到端单LLM,过程更透明
|
||||
|
||||
2. **专业化分工提升专业度**
|
||||
- 每个agent只关注自己领域,prompt针对性优化
|
||||
- 结果输出质量更高
|
||||
|
||||
3. **辩论减少认知偏差**
|
||||
- 多空辩论逼迫考虑对立观点
|
||||
- 风险辩论平衡风险收益,避免极端决策
|
||||
|
||||
4. **模块化程度高,易于扩展**
|
||||
- 增减分析师只需要修改图定义
|
||||
- 支持任意LLM提供商,可自由切换
|
||||
|
||||
5. **支持记忆学习**
|
||||
- 每个关键角色有独立向量记忆
|
||||
- 可根据交易结果反思改进,越做越好
|
||||
|
||||
6. **灵活可配置**
|
||||
- 分析师可选择性开启
|
||||
- 辩论轮数可配置
|
||||
- 深浅任务分配给不同大小模型,平衡成本效果
|
||||
|
||||
### 缺点 ❌
|
||||
|
||||
1. **成本高,多次LLM调用token消耗大**
|
||||
- 一次完整决策通常需要 **15-30次** LLM调用
|
||||
- API调用费用高,串行执行速度慢,一次决策要几分钟
|
||||
|
||||
2. **错误累积效应**
|
||||
- 流水线结构,如果前面分析师出错,后面基于错误信息继续,结果肯定错
|
||||
- 对比单LLM,更难发现前面的错误
|
||||
|
||||
3. **对LLM能力依赖强,不适合小模型**
|
||||
- 需要正确的工具调用、长上下文理解、指令跟随
|
||||
- 本地小模型(7B/14B)很难稳定运行
|
||||
|
||||
4. **缺少并发支持**
|
||||
- 分析师顺序执行,实际上四个分析师完全可以并行,能大幅缩短时间
|
||||
|
||||
5. **辩论质量不稳定**
|
||||
- 容易变成"各说各话",没有真正交锋反驳
|
||||
- 需要更强的prompt工程优化
|
||||
|
||||
6. **缺少大规模实盘验证**
|
||||
- 项目很新(2026年初才发布),公开回测结果不多
|
||||
- 是否真能持续赚钱还需要时间验证
|
||||
|
||||
---
|
||||
|
||||
## 五、对大模型的要求
|
||||
|
||||
项目原生支持两级模型分工,平衡成本和效果:
|
||||
|
||||
| 层级 | 职责 | 推荐模型规格 |
|
||||
|------|------|--------------|
|
||||
| **quick_think_llm** | 分析师、研究员辩论、交易员 | 小/中型号,速度快成本低 |
|
||||
| **deep_think_llm** | 研究经理仲裁、投资组合经理最终决策 | 大型号,推理能力强 |
|
||||
|
||||
### 各厂商官方推荐配置
|
||||
|
||||
| 厂商 | 快速思考 | 深度思考 |
|
||||
|------|----------|----------|
|
||||
| OpenAI | gpt-5.4-mini | gpt-5.4 |
|
||||
| Anthropic | claude-haiku-4-5 | claude-opus-4-6 |
|
||||
| Google | gemini-2.5-flash-lite | gemini-3.1-pro |
|
||||
| Ollama (本地) | qwen3:latest (8B) | glm-4.7-flash:latest (30B) |
|
||||
|
||||
### 必须具备的能力
|
||||
|
||||
1. **工具调用能力 (Function Calling)** → 分析师获取数据
|
||||
2. **长上下文理解** → 至少128K+,推荐1M+
|
||||
3. **良好的指令跟随** → 每个角色必须严格遵循定位
|
||||
4. **结构化输出** → 最终决策需要固定格式
|
||||
|
||||
---
|
||||
|
||||
## 六、Mac Studio 本地部署推荐配置
|
||||
|
||||
### 按统一内存大小推荐方案
|
||||
|
||||
#### 32GB 统一内存(起步推荐)
|
||||
|
||||
```yaml
|
||||
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 统一内存(更佳体验)
|
||||
|
||||
```yaml
|
||||
quick_think_llm: Qwen3 14B q4_KM → ~9GB
|
||||
deep_think_llm: GLM-4.7-Flash 30B q6_K → ~25-28GB
|
||||
总占用: ~40GB,有富余
|
||||
```
|
||||
|
||||
#### 128GB 统一内存(满血体验)
|
||||
|
||||
```yaml
|
||||
quick_think_llm: Qwen3 32B q4_K_M → ~18GB
|
||||
deep_think_llm: GLM-4.7 70B q4_K_M → ~40GB
|
||||
总占用: ~60-65GB,体验接近API大模型
|
||||
```
|
||||
|
||||
### Ollama 一键部署步骤
|
||||
|
||||
```bash
|
||||
# 安装 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多智能体决策** | ⭐⭐ | 思路新颖,研究价值高,大规模实盘验证还需要时间 |
|
||||
| **端到端强化学习直接交易** | ⭐ | 回测容易过拟合,实盘稳定方案少 |
|
||||
|
||||
### 核心结论
|
||||
|
||||
1. **TradingAgents 的创新价值**:首次将完整的真实交易机构分工流程,用LLM多智能体状态机优雅实现,思路非常新颖,可解释性远胜于黑箱模型,研究价值很高。
|
||||
|
||||
2. **适合场景**:
|
||||
- 低频投资决策(周度/月度调仓)
|
||||
- 研究学习多智能体协作
|
||||
- 有足够硬件或API配额,尝试新框架
|
||||
|
||||
3. **不适合场景**:
|
||||
- 高频交易(速度太慢,成本太高)
|
||||
- 本地小模型(< 30B很难稳定运行)
|
||||
- 成本敏感的个人投资者(API调用成本不低)
|
||||
|
||||
4. **给个人投资者建议**:
|
||||
- 从"传统因子框架 + AI辅助挖掘"这条路开始,这是已经验证的康庄大道
|
||||
- TradingAgents作为前沿研究方向值得学习跟进,但不要一上来就all in
|
||||
- AI是工具不是银弹,用AI增强传统方法,而不是完全推翻重来
|
||||
|
||||
---
|
||||
|
||||
## 调研结论
|
||||
|
||||
TradingAgents 是一个设计优雅、思路创新的项目,它证明了用LLM多智能体模拟真实交易机构决策流程是完全可行的。虽然目前还缺少大规模长期实盘验证,成本也较高,但作为研究方向非常有前景,值得持续关注。
|
||||
|
||||
对于有Mac Studio的用户,按照本文推荐的30B深度思考 + 8B快速思考的本地配置,完全可以跑起来进行研究测试。
|
||||
|
||||
---
|
||||
|
||||
**完**
|
||||
Reference in New Issue
Block a user