Files
knowledge-base/2 - Projects/Trading-Agents/TradingAgents 原始架构分析.md

182 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
created: "2026-03-21"
type: resource
tags: [trading, multi-agent, langgraph, architecture, reference]
source: "https://github.com/TauricResearch/TradingAgents"
---
# TradingAgents 原始架构分析
## 概述
[TradingAgents](https://github.com/TauricResearch/TradingAgents) 是一个基于 LangGraph 的多角色 LLM 交易决策框架,模拟真实交易公司的协作流程:分析师团队 → 多空辩论 → 交易决策 → 风控辩论 → 最终裁决。
---
## 核心文件结构
| 文件 | 职责 |
|------|------|
| `tradingagents/graph/trading_graph.py` | 主入口,编排整个系统 |
| `tradingagents/graph/setup.py` | 构建 LangGraph 状态机 |
| `tradingagents/graph/conditional_logic.py` | 条件路由(工具调用 / 辩论轮次) |
| `tradingagents/agents/analysts/*.py` | 4 个分析师(市场/社媒/新闻/基本面) |
| `tradingagents/agents/researchers/*.py` | Bull/Bear 研究员 + Research Manager |
| `tradingagents/agents/risk_mgmt/*.py` | 激进/保守/中性风控辩论者 |
| `tradingagents/agents/trader/trader.py` | 交易员 |
| `tradingagents/agents/utils/agent_states.py` | TypedDict 状态定义 |
| `tradingagents/agents/utils/memory.py` | BM25 记忆系统 |
| `tradingagents/dataflows/interface.py` | 数据供应商路由 + 降级策略 |
| `tradingagents/dataflows/y_finance.py` | yfinance 数据实现 |
| `tradingagents/graph/reflection.py` | 交易后复盘,更新记忆 |
| `tradingagents/graph/signal_processing.py` | 从冗长输出提取 BUY/SELL/HOLD |
---
## 分析师团队(并行执行)
### Market Analyst
- 技术分析SMA, EMA, MACD, RSI, Bollinger Bands, ATR, VWMA
- 工具:`get_stock_data`, `get_indicators`
- 数据源yfinance + stockstats
### Social Media Analyst
- 公司新闻 + 情感分析
- 工具:`get_news`
### News Analyst
- 宏观经济 + 世界大事
- 工具:`get_news`, `get_global_news`
### Fundamentals Analyst
- 财务报表 + 公司指标
- 工具:`get_fundamentals`, `get_balance_sheet`, `get_cashflow`, `get_income_statement`
---
## 辩论机制
### 投资辩论Bull vs Bear
1. Bull Researcher 阅读所有报告 + 检索历史相似情况 → 提出看多论点
2. Bear Researcher 阅读报告 + 历史 → 反驳
3. 循环 `max_debate_rounds` 轮(默认 1 轮)
4. Research Manager裁判读完整辩论历史 + 过去的裁决记忆 → 输出投资方案
### 风控辩论(三方)
1. Aggressive Analyst高风险高回报
2. Conservative Analyst稳健保守
3. Neutral Analyst平衡两方
4. 循环 `max_risk_discuss_rounds` 轮(默认 1 轮 × 3 人 = 3 turns
5. Risk Manager裁判修正交易方案 → 最终决策
### 辩论路由逻辑
```python
# conditional_logic.py
def should_continue_debate(state):
# 辩论历史长度 >= max_debate_rounds * 2 → 结束
# 否则交替 Bull → Bear → Bull → Bear
def should_continue_risk_analysis(state):
# 长度 >= max_risk_discuss_rounds * 3 → 结束
# 循环 Aggressive → Conservative → Neutral
```
---
## BM25 记忆系统
### 结构
```python
class FinancialSituationMemory:
# 存储: (market_situation_description, recommendation) 元组列表
# 检索: BM25 相似度,取 top-n 最相似历史情况
# 无需 API完全离线
```
### 5 个独立记忆库
1. Bull Researcher Memory
2. Bear Researcher Memory
3. Research Manager Memory
4. Trader Memory
5. Risk Manager Memory
### 复盘机制
```python
# reflection.py
class Reflector:
def reflect_and_remember(self, returns_losses):
# 分析交易结果(盈亏)
# 生成教训总结
# 更新各角色的记忆库
```
---
## LangGraph 状态定义
```python
class AgentState(TypedDict):
company_of_interest: str # 股票代码
trade_date: str # 交易日期
market_report: str # 市场分析报告
sentiment_report: str # 情感分析报告
news_report: str # 新闻分析报告
fundamentals_report: str # 基本面报告
invest_debate_state: dict # 多空辩论状态
risk_debate_state: dict # 风控辩论状态
final_trade_decision: str # 最终决策
```
---
## 数据供应商抽象层
```python
# interface.py - 供应商路由
def route_to_vendor(tool_name, category, params):
vendor = config["data_vendors"].get(category, "yfinance")
try:
return vendors[vendor][tool_name](params)
except RateLimit:
return vendors["yfinance"][tool_name](params) # 降级
```
支持的供应商:
- yfinance默认免费
- Alpha Vantage需 API key
- 按 category 级别配置,支持 tool 级别覆盖
---
## 调用方式
```python
ta = TradingAgentsGraph(config={
"llm_provider": "openai",
"deep_think_llm": "gpt-5.2",
"quick_think_llm": "gpt-5-mini",
"max_debate_rounds": 1,
"max_risk_discuss_rounds": 1,
})
final_state, decision = ta.propagate("NVDA", "2024-05-10")
# decision = "BUY" | "SELL" | "HOLD"
# 复盘
ta.reflect_and_remember(returns_losses=1500)
```
---
## Related
- [[Trading Agents 混合架构方案]]
- [[Trading Agents 使用指南]]
- [[openbb-invest-api]]
- [[OpenClaw 部署配置分析]]