TradingAgents:多代理LLM金融交易框架
新闻
- [2026-09] TradingAgents v0.5.0 发布,支持每个日期路径的时点完整性,SEC EDGAR 基础数据按原提交提供,在股票代码和日期网格上进行回测,支持投资组合感知运行,以及每个提供商的最新模型阵容。完整列表请参见 CHANGELOG.md。
- [2026-08] TradingAgents v0.4.0 发布,针对 FRED 宏观数据、社交情绪和决策日志记忆进行了前瞻/时点修复;决策信号更清晰;CLI 检查点恢复功能可用;Trader 价格定位;支持 GPT-5.6 和 GLM-5.3 模型。
- [2026-07] TradingAgents v0.3.1 发布,进行了正确性和稳定性修复:Alpha Vantage 前瞻过滤,图路由器崩溃安全,图形形状感知的检查点恢复,工作中的加密货币情绪来源,可配置的 LLM 重试预算,Bedrock API 密钥认证,支持 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 密钥自动检测,远程支持 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 家族模型、统一模型目录、回测日期忠实度和代理支持。
- [2026-03] TradingAgents v0.2.2发布,支持GPT-5.4/Gemini 3.1/Claude 4.6模型覆盖、五级评级量表、OpenAI响应API、人为化工作量控制和跨平台稳定性。
- [2026-02] TradingAgents v0.2.0发布,支持多提供者LLM(GPT-5.x、Gemini 3.x、Claude 4.x、Grok 4.x)并改进系统架构。
- [2026-01] Trading-R1 技术报告 发布,终端 预计很快上线。
🚀 TradingAgents | ⚡ 安装 & 命令行工具 | 🎬 演示 | 📦 软件包使用 | 🤝 贡献 | 📄 引用
🎉 TradingAgents 正式发布!我们收到了关于这一工作的众多咨询,感谢大家对我们社区的热情支持。
所以我们决定将该框架完全开源。期待与您一起构建有影响力的项目!
TradingAgents 框架
TradingAgents 是一个多代理交易框架,模仿真实交易公司的动态。通过部署专门的由大型语言模型驱动的代理:从基本面分析师、情绪专家和技术分析师,到交易员和风险管理团队,该平台协作评估市场状况并指导交易决策。此外,这些代理会进行动态讨论,以确定最佳策略。
TradingAgents 框架是为研究目的而设计的。交易表现可能会因多种因素而有所不同,包括所选择的基础语言模型、模型温度、交易周期、数据质量以及其他非确定性因素。它不作为金融、投资或交易建议。
我们的框架将复杂的交易任务分解为专业角色。
分析师团队
- 基本面分析师:评估公司财务状况和业绩指标,识别内在价值和潜在风险信号。
- 情绪分析师:将新闻标题、StockTwits 和 Reddit 讨论汇总为单一情绪读取,以评估短期市场情绪。
- 新闻分析师:监控全球新闻和宏观经济指标,解读事件对市场状况的影响。
- 技术分析师:利用技术指标(如 MACD 和 RSI)来识别交易模式并预测价格走势。
研究团队
- 由多头和空头研究人员组成,他们对分析师团队提供的见解进行批判性评估。通过结构化的辩论,他们在潜在收益和固有风险之间进行平衡。
交易代理
- 根据分析师和研究员的报告撰写报告,以做出明智的交易决策,确定交易的时机和规模。
风险管理与投资组合经理
- 通过评估市场波动性、流动性及其他风险因素,持续评估投资组合风险。风险管理团队评估并调整交易策略,并向投资组合经理提供评估报告以供最终决策。
- 投资组合经理批准或拒绝交易提案。如果获批,订单将被发送到模拟交易所并执行。
安装与命令行界面
安装
克隆交易代理:
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
在您喜欢的任意环境管理器中创建虚拟环境:
conda create -n tradingagents python=3.12
conda activate tradingagents
或者使用 uv:
uv venv --python 3.12
source .venv/bin/activate
安装该软件包及其依赖项(uv pip install . 与 uv):
pip install .
Docker
或者,使用 Docker 运行:
cp .env.example .env # add your API keys
docker compose run --rm tradingagents
在更新仓库后,使用 docker compose build 重新构建镜像。
对于使用 Ollama 的本地模型:
docker compose --profile ollama run --rm tradingagents-ollama
所需的 API
TradingAgents 支持多个 LLM 提供商。为您选择的提供商设置 API 密钥:
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 — International (dashscope-intl.aliyuncs.com)
export DASHSCOPE_CN_API_KEY=... # Qwen — China (dashscope.aliyuncs.com)
export ZHIPU_API_KEY=... # GLM via Z.AI (international)
export ZHIPU_CN_API_KEY=... # GLM via BigModel (China, open.bigmodel.cn)
export MINIMAX_API_KEY=... # MiniMax — Global (api.minimax.io)
export MINIMAX_CN_API_KEY=... # MiniMax — China (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 macro data (free, optional)
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。
对于本地模型,使用 llm_provider: "ollama" 配置 Ollama。默认端点是 http://localhost:11434/v1;将 OLLAMA_BASE_URL 设置为指向远程 ollama-serve。使用 ollama pull <name> 拉取模型,并在 CLI 中为任何默认未列出的模型选择“自定义模型 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。模型为您的服务器提供的任何模型。本地服务器不需要密钥;当端点需要密钥时,设置 OPENAI_COMPATIBLE_API_KEY。
或者,将 .env.example 复制到 .env 并填写您的密钥:
cp .env.example .env
CLI 使用方法
启动交互式 CLI:
tradingagents # installed command
python -m cli.main # alternative: run directly from source
您将看到一个屏幕,可以选择所需的股票代码、分析日期、LLM提供商、研究深度等。您上一次运行的答案会作为默认值,因此按回车键即可接受它们。TRADINGAGENTS_* 变量在 .env 中仍会完全跳过它们的步骤。
市场和股票代码
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,以确保灵活性和模块化。该框架支持多个大语言模型供应商:OpenAI、Google、Anthropic、xAI、DeepSeek、Qwen(阿里巴巴 DashScope,国际和中国节点)、GLM(智谱)、MiniMax(全球及中国)、OpenRouter、Ollama 用于本地模型,以及 Azure OpenAI 用于企业。
Python 使用
要在代码中使用 TradingAgents,可以导入 tradingagents 模块并初始化一个 TradingAgentsGraph() 对象。.propagate() 函数将返回一个决策。你可以运行 main.py,这里也有一个快速示例:
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
ta = TradingAgentsGraph(debug=True, config=DEFAULT_CONFIG.copy())
# forward propagate
_, decision = ta.propagate("NVDA", "2026-09-01")
print(decision)
你还可以调整默认配置来设置你自己的LLM选择、辩论轮次等。
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai" # e.g. openai, google, anthropic, deepseek, groq, ollama; openai_compatible covers any OpenAI-compatible endpoint (vLLM, LM Studio, llama.cpp, ...)
config["deep_think_llm"] = "gpt-5.6" # Model for complex reasoning
config["quick_think_llm"] = "gpt-5.6-luna" # Model for quick tasks
config["max_debate_rounds"] = 2
ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-09-01")
print(decision)
有关所有配置选项,请参见 tradingagents/default_config.py。
按提交时的基本面数据
美国公司的报表可以来自 SEC EDGAR,该系统记录每个数据提交的日期。设定过去的运行日期时,会精确读取当日的报表:还未提交的已结束财政年度不会显示,而之后重新申报的数据仍显示首次报告的数据。苹果公司 2008 年的总资产提交时为 396 亿美元,2010 年重新申报为 362 亿美元,因此在两次之间的运行日期会显示为 396 亿美元。
EDGAR 不需要账户或 API 密钥。将供应商添加到链中:
config["data_vendors"]["fundamental_data"] = "sec_edgar,yfinance"
美国证券交易委员会要求来电者表明身份,并拒绝没有联系方式的请求,因此会发送一个默认的联系方式。请设置您自己的联系方式,以便美国证券交易委员会可以联系您,而不是项目方:
SEC_EDGAR_USER_AGENT="Your Name your@email.com"
它涵盖向美国证券交易委员会(SEC)备案的公司,包括在美上市的外国公司。其他任何情况,例如香港或A股上市,则由链条中的下一个供应商处理。EDGAR的机器可读备案从2009年开始,第四季度报告以“不可用”表示,而不是推导,因为备案人只在年度数据中发布它。
当前持仓
默认情况下,代理人不知道你持有什么,因此他们的指导是为读者撰写的,读者将其应用于自己的仓位。将投资组合传递出去,让交易员、风险分析师和投资组合经理根据你的实际账目进行操作。
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 列表表示一本平坦的书,这与不传递任何内容是不同的。没有投资组合的运行从不被视为平坦。
持久性与恢复
TradingAgents 在多次运行之间会保留两种状态。
决策日志
决策日志始终开启。每次完成的运行都会将其决策附加到 ~/.tradingagents/memory/trading_memory.md。在下一次针对相同股票代码的运行中,TradingAgents 会获取实现的收益(原始收益以及相对于该工具区域基准的 alpha),生成一段反思,并将最近的相同股票代码决策以及最近的跨股票代码经验教训注入到投资组合管理器提示中,因此每次分析都会继承有效和无效的经验。
使用 TRADINGAGENTS_MEMORY_LOG_PATH 覆盖路径。
检查点恢复
检查点恢复可通过 --checkpoint 选择启用。启用后,LangGraph 会在每个节点之后保存状态,因此在运行崩溃或中断时,可以从上一次成功的步骤恢复,而不是从头开始。运行视图会显示是恢复了保存的运行还是重新开始。成功完成后,检查点会自动清除。
每个股票代码的 SQLite 数据库存放在 ~/.tradingagents/cache/checkpoints/<TICKER>.db(可通过 TRADINGAGENTS_CACHE_DIR 覆盖基路径)。使用 --clear-checkpoints 可在运行前重置所有数据库。
tradingagents --checkpoint # enable for this run
tradingagents --clear-checkpoints # reset before running
config = DEFAULT_CONFIG.copy()
config["checkpoint_enabled"] = True
ta = TradingAgentsGraph(config=config)
_, decision = ta.propagate("NVDA", "2026-09-01")
随时间评估决策
一次运行只会产生一个决策,这不能告诉你系统是否决策得好。run_backtest 在一组股票代码和日期上运行相同的流程,将结果写入自己的决策日志,并对其持有窗口已经交易的决策进行评分。
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):
tradingagents backtest NVDA,AAPL --start 2026-06-01 --end 2026-08-01 --every 7
每个单元格都会根据该工具的区域基准对实现的阿尔法进行评分,并按评级分组。您自己的决策日志从不被写入,并且使用 run_id=result.run_id 重新运行相同的网格会跳过已经运行的单元格,因此中断的扫描会从中断的地方继续。
可重复性
TradingAgents是基于LLM驱动的,因此同一个股票代码和日期的两次运行可能会有所不同。这是基于语言模型的研究工具所预期的,而非缺陷。这种差异来自几个不同的来源,有助于区分它们。
语言模型采样是非确定性的。即使在固定温度下,提供者也不保证调用间的字节输出相同,推理模型(默认的GPT-5.x家族及任何思维模式模型)差异最大,因为它们的内部推理本身被采样。
实时数据会变化。新闻、StockTwit和Reddit会随着时间推移返回不同的内容,因此即使同一历史交易日,今天的走势与上周的走行数据也不同。将分析日期固定以固定价格和指标窗口,但社交和新闻来源仍显示“现在”。
要减少变化,你可以降低采样温度。在你的配置中设置 temperature(或在 .env 中设置 TRADINGAGENTS_TEMPERATURE);较低的数值会使遵循它的模型更具可重复性。目前精选的模型以推理为先,并在很大程度上忽略温度,因此如果希望更严格的可复现性,可以在配置中指定一个非推理模型,或者在 TRADINGAGENTS_DEEP_THINK_LLM 和 TRADINGAGENTS_QUICK_THINK_LLM 中指定。你的提供者提供的任何模型 ID 都被接受,无论选择器是否列出它。
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["temperature"] = 0.0
# Reasoning models ignore temperature. For tighter reproducibility, name a
# non-reasoning model in deep_think_llm / quick_think_llm.
不再变化的内容:分析的公司身份在任何代理运行之前就会从股票代码确定性地解析出来,市场分析师将准确的价格和指标声明基于经过验证的数据快照。以前关于“不同公司”或在多次运行中捏造价格水平的报告,都通过这两个机制得到解决。
回测结果不能保证与任何已发布的数据一致。收益取决于模型、温度、日期范围、数据质量以及上述抽样。请将该框架视为研究多代理分析的研究支架,而不是具有固定、可复制收益的策略。
贡献
欢迎贡献:修复错误、文档和功能创意;过去的贡献会在每次发布中在 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},
}