diff --git a/pangtong-value/research/task-20260409-TradingAgents调研/README.md b/pangtong-value/research/task-20260409-TradingAgents调研/README.md new file mode 100644 index 000000000..8361efe12 --- /dev/null +++ b/pangtong-value/research/task-20260409-TradingAgents调研/README.md @@ -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快速思考的本地配置,完全可以跑起来进行研究测试。 + +--- + +**完**