LangGraph 多智能体交易框架 TradingAgents:状态恢复、记忆注入与可复现边界
Tauric Research 开源的 TradingAgents 是一个基于 LangGraph 的多智能体 LLM 金融交易框架,Apache-2.0 协议,GitHub 约 10 万星。项目定位是研究用途而非投资建议。官方实现的角色分工如下:
- Analyst Team:基本面、情绪、新闻、技术四类分析师并行分析
- Researcher Team:多空研究员对抗辩论
- Trader:综合决策
- Risk & Portfolio Manager:风控与最终批准
官方公布的实验结果显示年化收益率最高约 30.5%,Sharpe 与最大回撤优于基准;但 README 明确说明回测结果不保证复现任何数字。
安装与快速使用
git clone https://github.com/TauricResearch/TradingAgents.git
conda create -n tradingagents python=3.12
pip install .
也支持 Docker:
cp .env.example .env
docker compose run --rm tradingagents
# 本地 Ollama
docker compose run --rm --profile ollama tradingagents
Python 调用方式:
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
ta = TradingAgentsGraph(debug=True, config=DEFAULT_CONFIG.copy())
_, decision = ta.propagate("NVDA", "2026-01-15")
CLI 用 tradingagents 或 python -m cli.main。ticker 采用 Yahoo Finance 格式,A 股如 600519.SS,港股如 0700.HK。
Provider 与关键配置
LLM provider 支持 OpenAI、Google、Anthropic、xAI、DeepSeek、Qwen(DashScope 国际 + 国内)、GLM、MiniMax、OpenRouter、Azure OpenAI、Ollama 本地,以及任意 OpenAI 兼容端点(vLLM、LM Studio、llama.cpp,走 llm_provider=openai_compatible)。
可覆盖的 config 字段:
llm_providerdeep_think_llm:复杂推理链,如gpt-5.6quick_think_llm:轻量快速响应max_debate_rounds:多空辩论轮次上限
决策记忆:跨交易注入历史教训
每次分析完成后,决策记录会追加写入 ~/.tradingagents/memory/trading_memory.md。下次运行同 ticker 分析时,框架先取出已实现收益并生成反思,将近期同 ticker 决策与跨 ticker 教训一并注入 Portfolio Manager 的 prompt。
记忆日志路径可通过环境变量 TRADINGAGENTS_MEMORY_LOG_PATH 覆盖。
Checkpoint 续跑:从最后成功节点恢复
Checkpoint 是 opt-in 机制,启用方式:
tradingagents analyze --checkpoint
# 清除该 ticker 的 checkpoint
tradingagents analyze --clear-checkpoints
也可以在 config 中设置 config["checkpoint_enabled"] = True。
LangGraph 在每个节点执行后保存状态,崩溃后可从最后成功步骤继续运行。日志中会明确区分 Resuming from step N 与 Starting fresh,成功后 checkpoint 自动清理。每个 ticker 对应一个独立的 SQLite 库:
~/.tradingagents/cache/checkpoints/.db
基路径可用 TRADINGAGENTS_CACHE_DIR 修改。
可复现性的三类来源与两处加固
LLM 两次运行结果不同是预期行为,框架对此有明确分类:
- 采样不确定:固定 temperature 也不保证字节级一致,推理模型(reasoning models)波动最大。
- 数据在动:新闻、StockTwits、Reddit 内容随时间变化。pin 历史日期只固定了价格指标窗口,社交与新闻数据仍反映当下状态。
- 可控项:降低 temperature 有一定帮助,但主流推理模型基本无视 temperature 参数。需要更高可复现性时,应显式选择非推理模型(Custom model ID)。
针对前两类来源,框架做了两处确定性加固:
- 公司身份解析:运行前从 ticker 确定性解析公司实体,避免两次运行解析出不同公司。
- 价格指标 grounding:市场分析师将价格指标绑定到经过校验的数据快照,堵住模型编造价格的可能。
回测结果不与任何收益数字承诺一致性。
相关项目
Tauric Research 另有一个强化学习金融推理项目 Trading-R1,技术报告见 arXiv:2509.11420,Terminal 版待发布。TradingAgents 论文见 arXiv:2412.20138,仓库地址:github.com/TauricResearch/TradingAgents。