# TradingAgents
**Repository Path**: MoreBeans/TradingAgents
## Basic Information
- **Project Name**: TradingAgents
- **Description**: TradingAgents:多智能体大语言模型金融交易框架
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-09-27
- **Last Updated**: 2026-09-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
---
# TradingAgents:多智能体 LLM 金融交易框架
## 更新动态
- [2026-09] **TradingAgents v0.5.0** 发布:所有带日期的数据链路均实现"时点一致性(point-in-time integrity)",SEC EDGAR 基本面数据按申报当时的口径提供,支持按标的与日期网格回测、组合感知(portfolio-aware)运行,并同步各提供商当前代际的模型阵容。完整清单见 [CHANGELOG.md](CHANGELOG.md)。
- [2026-08] **TradingAgents v0.4.0** 发布:修复 FRED 宏观、社交情绪、决策日志记忆中的未来函数(look-ahead)/ 时点问题;决策信号更清晰;CLI 断点续跑可用;交易员价格锚定(Trader price grounding);新增 GPT-5.6 与 GLM-5.3 模型。
- [2026-07] **TradingAgents v0.3.1** 发布:正确性与稳定性修复,包括 Alpha Vantage 未来函数过滤、图路由崩溃安全、图结构感知的断点续跑、可用的加密资产情绪源、可配置的 LLM 重试预算、Bedrock API Key 鉴权,以及 Claude Sonnet 5 / Fable 5 支持。
更早的版本
- [2026-06] **TradingAgents v0.3.0** 发布:经过验证的数据访问契约、扩展的提供商注册表(NVIDIA、Kimi、Groq、Mistral、Bedrock 及任意 OpenAI 兼容端点)、FRED 与 Polymarket 数据供应商、当前代际模型目录,以及 CI 门禁。
- [2026-05] **TradingAgents v0.2.5** 发布:带数据锚定的情绪分析师(Sentiment Analyst)、GPT-5.5 等模型覆盖、Qwen/GLM/MiniMax 双区域支持、`TRADINGAGENTS_*` 环境变量可配置化与 API Key 自动探测、远程 Ollama 支持、非美股 alpha 基准,以及标的路径穿越加固。
- [2026-04] **TradingAgents v0.2.4** 发布:结构化输出智能体(研究经理、交易员、组合经理)、LangGraph 断点续跑、持久化决策日志、DeepSeek/Qwen/GLM/Azure 提供商支持、Docker,以及 Windows UTF-8 编码修复。
- [2026-03] **TradingAgents v0.2.3** 发布:多语言支持、GPT-5.4 系列模型、统一模型目录、回测日期保真以及代理(proxy)支持。
- [2026-03] **TradingAgents v0.2.2** 发布:GPT-5.4/Gemini 3.1/Claude 4.6 模型覆盖、五档评级体系、OpenAI Responses API、Anthropic effort 控制以及跨平台稳定性。
- [2026-02] **TradingAgents v0.2.0** 发布:多提供商 LLM 支持(GPT-5.x、Gemini 3.x、Claude 4.x、Grok 4.x)以及系统架构改进。
- [2026-01] **Trading-R1** [技术报告](https://arxiv.org/abs/2509.11420) 发布,[Terminal](https://github.com/TauricResearch/Trading-R1) 预计很快上线。
🚀 [TradingAgents](#tradingagents框架) | ⚡ [安装与 CLI](#安装与-cli) | 🎬 [演示](https://www.youtube.com/watch?v=90gr5lwjIho) | 📦 [包用法](#tradingagents-包用法) | 🤝 [参与贡献](#参与贡献) | 📄 [引用](#引用)
> 🎉 **TradingAgents** 正式发布!我们收到了大量关于这项工作的咨询,在此感谢社区的热情支持。
>
> 因此我们决定将整个框架完全开源。期待与大家一起打造有影响力的项目!
## TradingAgents 框架
TradingAgents 是一个多智能体交易框架,模拟了真实交易公司的运作方式。通过部署由 LLM 驱动的专业化智能体——从基本面分析师、情绪专家、技术分析师,到交易员、风险管理团队——平台协同评估市场状况并形成交易决策。此外,这些智能体还会进行动态讨论,以锁定最优策略。
> TradingAgents 框架面向研究用途。交易表现会受多种因素影响,包括所选的主干语言模型、模型温度(temperature)、交易时段、数据质量以及其他非确定性因素。[本项目不构成任何金融、投资或交易建议。](https://tauric.ai/disclaimer/)
我们的框架把复杂的交易任务拆解为多个专业化角色。
### 分析师团队(Analyst Team)
- 基本面分析师(Fundamentals Analyst):评估公司财务与业绩指标,识别内在价值与潜在预警信号。
- 情绪分析师(Sentiment Analyst):将新闻标题、StockTwits 与 Reddit 讨论聚合为统一的情绪读数,用于衡量短期市场情绪。
- 新闻分析师(News Analyst):监测全球新闻与宏观经济指标,解读事件对市场状况的影响。
- 技术分析师(Technical Analyst):利用技术指标(如 MACD、RSI)识别交易形态并预测价格走势。
### 研究员团队(Researcher Team)
- 由看多与看空两类研究员组成,对分析师团队给出的洞察进行批判性评估。通过结构化辩论,在潜在收益与固有风险之间取得平衡。
### 交易员智能体(Trader Agent)
- 整合分析师与研究员的报告,做出有依据的交易决策,确定交易的时机与规模。
### 风险管理与组合经理(Risk Management and Portfolio Manager)
- 通过评估市场波动率、流动性及其他风险因子,持续评估组合风险。风险管理团队评估并调整交易策略,向组合经理提供评估报告以做最终决策。
- 组合经理批准/拒绝交易提案。若获批准,订单将发送至模拟交易所并执行。
## 安装与 CLI
### 安装
克隆 TradingAgents:
```bash
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
```
使用你习惯的环境管理器创建虚拟环境:
```bash
conda create -n tradingagents python=3.12
conda activate tradingagents
```
或使用 [uv](https://docs.astral.sh/uv/):
```bash
uv venv --python 3.12
source .venv/bin/activate
```
安装本包及其依赖(使用 uv 时为 `uv pip install .`):
```bash
pip install .
```
### Docker
也可以使用 Docker 运行:
```bash
cp .env.example .env # 填入你的 API Key
docker compose run --rm tradingagents
```
更新仓库后,用 `docker compose build` 重新构建镜像。
使用 Ollama 运行本地模型:
```bash
docker compose --profile ollama run --rm tradingagents-ollama
```
### 必需的 API
TradingAgents 支持多个 LLM 提供商。为你选定的提供商设置 API Key:
```bash
export OPENAI_API_KEY=... # OpenAI (GPT)
export GOOGLE_API_KEY=... # Google (Gemini)
export ANTHROPIC_API_KEY=... # Anthropic (Claude)
export XAI_API_KEY=... # xAI (Grok)
export DEEPSEEK_API_KEY=... # DeepSeek
export DASHSCOPE_API_KEY=... # Qwen —— 国际站 (dashscope-intl.aliyuncs.com)
export DASHSCOPE_CN_API_KEY=... # Qwen —— 中国站 (dashscope.aliyuncs.com)
export ZHIPU_API_KEY=... # GLM 通过 Z.AI(国际)
export ZHIPU_CN_API_KEY=... # GLM 通过 BigModel(中国,open.bigmodel.cn)
export MINIMAX_API_KEY=... # MiniMax —— 全球站 (api.minimax.io)
export MINIMAX_CN_API_KEY=... # MiniMax —— 中国站 (api.minimaxi.com)
export OPENROUTER_API_KEY=... # OpenRouter
export MISTRAL_API_KEY=... # Mistral
export MOONSHOT_API_KEY=... # Kimi (Moonshot)
export GROQ_API_KEY=... # Groq
export NVIDIA_API_KEY=... # NVIDIA NIM
export FRED_API_KEY=... # FRED 宏观数据(免费,可选)
export ALPHA_VANTAGE_API_KEY=... # Alpha Vantage
```
若使用 Azure OpenAI,请将 `.env.enterprise.example` 复制为 `.env.enterprise` 并填入你的凭据。
若使用 AWS Bedrock,先用 `pip install ".[bedrock]"` 安装附加依赖,设置 `llm_provider: "bedrock"`,配置 AWS 凭据(环境变量、`~/.aws/credentials` 或 IAM 角色)与 `AWS_DEFAULT_REGION`,并使用 Bedrock 的模型 ID,例如 `us.anthropic.claude-opus-4-8-v1:0`。
若使用本地模型,配置 Ollama 并将 `llm_provider` 设为 `"ollama"`。默认端点为 `http://localhost:11434/v1`;可设置 `OLLAMA_BASE_URL` 指向远程的 `ollama-serve`。用 `ollama pull ` 拉取模型,对于默认未列出的模型,在 CLI 中选择 "Custom model ID"。
对于任何其他 OpenAI 兼容服务器(vLLM、LM Studio、llama.cpp 或自定义中转),使用 `llm_provider: "openai_compatible"`,并通过 `backend_url`(或 `TRADINGAGENTS_LLM_BACKEND_URL`)设置端点,例如 vLLM 用 `http://localhost:8000/v1`,LM Studio 用 `http://localhost:1234/v1`。模型名即你的服务器所服务的模型。本地服务器无需 Key;当端点需要鉴权时设置 `OPENAI_COMPATIBLE_API_KEY`。
或者,将 `.env.example` 复制为 `.env` 并填入你的密钥:
```bash
cp .env.example .env
```
### CLI 用法
启动交互式 CLI:
```bash
tradingagents # 已安装的命令
python -m cli.main # 备选:直接从源码运行
```
你将看到一个界面,可选择标的、分析日期、LLM 提供商、研究深度等。上一次运行的答案会作为默认值回填,直接按回车即可接受。`.env` 中的 `TRADINGAGENTS_*` 变量仍会完全跳过对应步骤。
### 市场与标的
TradingAgents 支持 Yahoo Finance 覆盖的所有市场,使用带交易所后缀的标的代码。公司身份与 alpha 基准会按市场自动解析。
- 美股:`AAPL`、`SPY`
- 香港:`0700.HK` · 东京:`7203.T` · 伦敦:`AZN.L`
- 印度:`RELIANCE.NS`、`.BO` · 加拿大:`.TO` · 澳大利亚:`.AX`
- 中国 A 股:上海 `.SS`,深圳 `.SZ`(例如贵州茅台为 `600519.SS`)
- 加密资产:`BTC-USD`、`ETH-USD`
界面会在结果加载时逐步展示,让你实时跟踪智能体的运行进度。
## TradingAgents 包用法
### 实现细节
我们用 LangGraph 构建了 TradingAgents,以保证灵活性与模块化。框架支持多个 LLM 提供商:OpenAI、Google、Anthropic、xAI、DeepSeek、Qwen(阿里 DashScope,含国际站与中国站)、GLM(智谱)、MiniMax(全球 + 中国)、OpenRouter、用于本地模型的 Ollama,以及面向企业的 Azure OpenAI。
### Python 用法
要在代码中使用 TradingAgents,可导入 `tradingagents` 模块并初始化 `TradingAgentsGraph()` 对象。`.propagate()` 函数会返回一个决策。你可以运行 `main.py`,下面是一个快速示例:
```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-09-01")
print(decision)
```
你也可以调整默认配置,自定义所用的 LLM、辩论轮数等。
```python
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai" # 例如 openai、google、anthropic、deepseek、groq、ollama;openai_compatible 可覆盖任意 OpenAI 兼容端点(vLLM、LM Studio、llama.cpp 等)
config["deep_think_llm"] = "gpt-5.6" # 用于复杂推理的模型
config["quick_think_llm"] = "gpt-5.6-luna" # 用于快速任务的模型
config["max_debate_rounds"] = 2
ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-09-01")
print(decision)
```
所有配置项请参见 `tradingagents/default_config.py`。
### 按申报口径提供的基本面数据(Fundamentals as filed)
美国公司报表可来自 SEC EDGAR,它会记录每个数字的申报日期。因此,一个日期处于过去的运行会严格按"当日"的报表状态来读取:已结束但尚未申报的财年不会被提供,之后被追溯重述的数字仍按首次申报的数值读取。例如苹果 2008 年的总资产首次申报为 396 亿美元,2010 年被重述为 362 亿美元,因此运行日期处于两者之间时读到的是 396 亿美元。
EDGAR 无需账号或 API Key。将该供应商加入链路即可:
```python
config["data_vendors"]["fundamental_data"] = "sec_edgar,yfinance"
```
SEC 要求调用方表明身份,并会拒绝不含联系地址的请求,因此默认会发送一个地址。请设置你自己的地址,以便 SEC 能联系到你而非本项目:
```bash
SEC_EDGAR_USER_AGENT="Your Name your@email.com"
```
它覆盖向 SEC 申报的公司,包括在美国上市的外国公司。其他情况(如香港或 A 股上市)会回退到链路中的下一个供应商。EDGAR 的机器可读申报始于 2009 年;第四季度会报告为不可用而非推导得出,因为申报方仅将其包含在年度数字中。
### 当前持仓(Current holdings)
默认情况下,智能体并不知道你的持仓,因此其建议是面向"自行套用到仓位"的读者。传入一个组合(portfolio),交易员、风险分析师与组合经理就会基于你真实的持仓来工作。
```python
from tradingagents.portfolio import PortfolioContext
portfolio = PortfolioContext.model_validate({
"cash": 25000.0,
"currency": "USD",
"positions": [{"ticker": "NVDA", "quantity": 120, "average_price": 150.0}],
})
_, decision = ta.propagate("NVDA", "2026-09-01", portfolio=portfolio)
```
CLI 接受同样内容的 JSON 文件:`tradingagents --portfolio my_book.json`。
`positions` 为空列表表示空仓(flat book),这与"什么都不传"是不同的。未传组合的运行绝不会被视为空仓。
## 持久化与恢复
TradingAgents 会跨运行持久化两类状态。
### 决策日志(Decision log)
决策日志始终开启。每次运行完成后,会把决策追加到 `~/.tradingagents/memory/trading_memory.md`。下次对同一标的运行时,TradingAgents 会获取已实现收益(原始收益,以及相对该标所在区域基准的 alpha),生成一段反思,并将最近同标的决策以及近期跨标的经验教训注入组合经理提示词中,从而让每次分析都继承"哪些做法有效、哪些无效"。
可用 `TRADINGAGENTS_MEMORY_LOG_PATH` 覆盖该路径。
### 断点续跑(Checkpoint resume)
断点续跑通过 `--checkpoint` 选择性开启。启用后,LangGraph 会在每个节点执行后保存状态,因此崩溃或中断的运行会从最后一个成功步骤继续,而非从头开始。运行视图会提示是"恢复了已保存的运行"还是"全新开始"。成功完成后,检查点会自动清除。
各标的的 SQLite 数据库位于 `~/.tradingagents/cache/checkpoints/.db`(可用 `TRADINGAGENTS_CACHE_DIR` 覆盖根目录)。使用 `--clear-checkpoints` 可在运行前重置全部检查点。
```bash
tradingagents --checkpoint # 为本次运行启用
tradingagents --clear-checkpoints # 运行前重置
```
```python
config = DEFAULT_CONFIG.copy()
config["checkpoint_enabled"] = True
ta = TradingAgentsGraph(config=config)
_, decision = ta.propagate("NVDA", "2026-09-01")
```
## 长期评估决策质量
单次运行只给一个决策,无法判断系统决策能力的好坏。`run_backtest` 会在标的与日期的网格上运行同一套流水线,写入自己的决策日志,并对持有窗口已过、可以结算的决策进行评分。
```python
from tradingagents.backtest import iter_grid, run_backtest, summarize
from tradingagents.agents.utils.memory import TradingMemoryLog
dates = iter_grid("2026-06-01", "2026-08-01", every_n_days=7)
result = run_backtest(["NVDA", "AAPL"], dates, config, selected_analysts=["market", "news"])
print(summarize(TradingMemoryLog({"memory_log_path": str(result.log_path)})).render())
```
从 CLI 运行:
```bash
tradingagents backtest NVDA,AAPL --start 2026-06-01 --end 2026-08-01 --every 7
```
每个网格单元按相对标的区域基准的已实现 alpha 评分,并按评级分组。你自己的决策日志不会被写入;用 `run_id=result.run_id` 重跑同一网格会跳过已运行的单元,因此中断的遍历可以从停下处继续。
## 可复现性(Reproducibility)
TradingAgents 由 LLM 驱动,因此同一标的、同一日期的两次运行可能不同。对于基于语言模型构建的研究工具而言,这是预期行为,而非缺陷。这种差异来自几个不同的来源,区分它们会很有帮助。
语言模型的采样是非确定性的。即便温度固定,提供商也不保证多次调用输出逐字节一致;推理模型(默认的 GPT-5.x 系列,以及任何思考模式模型)差异最大,因为其内部推理本身也是采样得到的。
实时数据会变化。随时间推移,新闻、StockTwits 与 Reddit 会返回不同内容,因此即便对同一历史交易日,今天的运行看到的输入也与上周不同。固定分析日期可以锁定价格与指标窗口,但社交与新闻源仍反映"当前"。
要减少差异,可降低采样温度。在配置中设置 `temperature`(或 `.env` 中的 `TRADINGAGENTS_TEMPERATURE`);较低的值会让"遵守温度"的模型更可复现。当前精选模型以推理优先,基本会忽略温度,因此若追求更严格的可复现性,请在配置中指定一个非推理模型,或在 `TRADINGAGENTS_DEEP_THINK_LLM` 与 `TRADINGAGENTS_QUICK_THINK_LLM` 中指定。你的提供商所服务的任何模型 ID 都被接受,无论选择器是否列出它。
```python
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["temperature"] = 0.0
# 推理模型会忽略温度。若追求更严格的可复现性,请在
# deep_think_llm / quick_think_llm 中指定非推理模型。
```
已经不再变化的部分:所分析的公司身份会在任何智能体运行之前,由标的确定性地解析出来;市场分析师会把精确的价格与指标论断锚定到一份经过验证的数据快照上。此前出现的"不同公司"或跨运行编造价格点位的问题,已由这两个机制解决。
回测结果不保证与任何已公布的数字一致。收益取决于模型、温度、日期范围、数据质量以及上述采样因素。请把本框架视为研究多智能体分析的脚手架,而非一个收益率固定、可完全复刻的策略。
## 参与贡献
欢迎贡献:Bug 修复、文档与功能想法;过往贡献按版本记录在 [`CHANGELOG.md`](CHANGELOG.md) 中。
## 引用
如果你觉得 *TradingAgents* 对你有所帮助,请引用我们的工作 :)
```
@misc{xiao2025tradingagentsmultiagentsllmfinancial,
title={TradingAgents: Multi-Agents LLM Financial Trading Framework},
author={Yijia Xiao and Edward Sun and Di Luo and Wei Wang},
year={2025},
eprint={2412.20138},
archivePrefix={arXiv},
primaryClass={q-fin.TR},
url={https://arxiv.org/abs/2412.20138},
}
```