一个在 GitHub 收获 6.9 万星标、由 Tauric Research 团队开源的多智能体金融交易框架。它不是一个简单的"AI 选股工具",而是用 LLM 模拟了一整个真实交易公司的决策流程。
项目地址:github.com/TauricResea… 论文地址:arxiv.org/abs/2412.20…
一、为什么 TradingAgents 值得你认真读?
如果你最近关注 AI Agent,你大概率刷到过这样的项目:让 GPT 分析一只股票、输出一份研报。这类"单智能体 + Prompt 工程"的方案很常见,但它有一个本质问题——真实世界的交易决策从来不是一个人拍脑袋做出来的。
一家真实的对冲基金或券商自营盘里,至少有这么几类角色:
- 基本面分析师盯财报、看现金流;
- 技术分析师画 K 线、算 MACD 和 RSI;
- 舆情分析师扫推特、看 Reddit 讨论热度;
- 宏观/新闻分析师追踪美联储、地缘政治;
- 多空研究员就同一只股票当面互怼;
- 交易员综合所有意见,决定买卖时点和仓位;
- 风控团队在交易员激进时拉一把;
- 投资组合经理拍板批准或否决。
TradingAgents 做的事情,就是用 LLM 把上面这些角色一个一个具象化成独立的 Agent,让它们各司其职、还要相互辩论、最终给出一个带评级的交易决策。它发表在 arXiv 上(论文编号 2412.20138),作者来自 UCLA 等机构,目前已经迭代到 v0.2.4,工程化做得相当扎实——支持十种以上的 LLM 提供商、提供 Docker 部署、有 LangGraph 检查点续跑、有持久化决策日志和反思机制。
对新手来说,这个项目的价值有三层:
第一层是学怎么用——你可以把它当成一个研究工具,输入股票代码和日期,看一群 AI 怎么吵架并最终给出建议。
第二层是学怎么造——它是目前少数真正把"多智能体协作 + LangGraph 编排 + 工具调用 + 长期记忆"完整跑通的开源项目,照着读一遍代码,胜过看十篇 Agent 教程。
第三层是学怎么改——框架是模块化的,你完全可以把它的"研究员辩论"模式抽出来,套用到法律研究、医学诊断、产品评审等任何需要多视角碰撞的场景里。
⚠️ 必须先说的话:项目作者反复强调,这个框架是"为研究目的设计",不构成任何投资建议。LLM 会幻觉、会过拟合历史新闻、会在关键节点给出错误判断。把它当工具研究可以,把它当 ATM 操作只会让你交学费。
二、它的架构到底长什么样?
整个系统的工作流大致可以拆成五个串行阶段,每个阶段内部又有并行或辩论。我用一个图把它讲清楚:
关键设计 1:分析师团队的"工具调用"
每位分析师都不是凭空想象,而是会真实调用数据接口。比如基本面分析师会拉取 Yahoo Finance 的财报数据,技术分析师会通过 stockstats 库计算 MACD、RSI、布林带等指标,新闻分析师会通过 Finnhub、Google News 抓最近的相关报道。这是 LangGraph 的工具节点(ToolNode)模式——LLM 决定调用什么工具、用什么参数,框架负责执行并把结果回传。
关键设计 2:研究员的"对抗式辩论"
这是论文里最有意思的部分。多空研究员被 Prompt 设定为立场对立的两个角色——一个必须找理由唱多,另一个必须找漏洞唱空。它们会进行多轮交锋(默认两轮,可在配置里改成更多),最后由 Research Manager 综合双方观点。这种设计强行避免了单 LLM 容易出现的"过度乐观"或"墙头草"问题。
关键设计 3:双 LLM 配置(Deep Think + Quick Think)
框架把任务分成"需要深度推理的"(如最终决策)和"快速响应的"(如工具调用、信息汇总),分别用两个不同的模型来处理。比如你可以让 GPT-5.4 做深度思考、GPT-5.4-mini 处理快任务——既保证质量又控制成本。这个设计在 v0.2.0 后变得非常灵活,几乎所有主流 LLM 都能混搭。
关键设计 4:持久化决策日志与反思机制(v0.2.4 新增)
每次跑完一支股票,决策结果会被追加写入 ~/.tradingagents/memory/trading_memory.md。下次再分析同一支股票时,框架会自动获取上次决策之后的真实涨跌(包括相对 SPY 的超额收益),让 LLM 写一段反思——"上次我看多 NVDA,但实际跑输大盘 3%,问题出在低估了利率影响"。这段反思会作为上下文注入到新一轮决策里,形成长期学习闭环。
关键设计 5:基于 LangGraph 的状态机
整个流程是用 LangGraph 编排的有向图(DAG),每个 Agent 是一个节点,节点之间通过共享状态对象传递信息。v0.2.4 还支持 checkpoint 续跑——如果某一步失败了,不用从头来过。
三、支持的 LLM 提供商一览
| 提供商 | 典型模型 | 特点 |
|---|---|---|
| OpenAI | GPT-5.4 / GPT-5.4-mini | 默认配置,最稳定 |
| Anthropic | Claude 4.6 / Claude Opus | 推理质量高,支持 effort 控制 |
| Gemini 3.x | 长上下文友好 | |
| xAI | Grok 4.x | 实时数据加成 |
| DeepSeek | DeepSeek-V3 / R1 | 国内可直连,性价比极高 |
| Qwen(阿里 DashScope) | Qwen3 系列 | 国内可用 |
| GLM(智谱) | GLM-4 系列 | 国内可用 |
| OpenRouter | 聚合所有模型 | 一个 Key 用全网模型 |
| Azure OpenAI | 企业版 GPT | 适合公司部署 |
| Ollama | 本地模型(Llama 3、Qwen 等) | 完全免费、不联网 |
对国内新手最友好的两个选择:
- DeepSeek——国内可直接注册,价格极低(百万 token 几块钱),跑一次完整分析大约几毛钱。
- Ollama——本地跑开源模型,零成本,但需要至少 16GB 内存的电脑(推荐 32GB 以上),且决策质量不如付费 API。
四、手把手部署:从零到第一次跑通
下面这一节,我假设你是完全没用过 Python 项目的新手。每一步都是可复制的命令,配上踩坑提醒。
第 0 步:先确认你电脑能跑
最低要求:
- 操作系统:macOS / Linux / Windows 10+ 都行
- Python 版本:3.13(这是项目要求的版本,3.10/3.11 也大概率可以但不保证)
- 网络:能访问 GitHub、PyPI;如果用 OpenAI 还需能访问其 API
- 磁盘:约 2GB(依赖加缓存)
第 1 步:安装 Miniconda(环境管理器)
为什么用 Conda?因为这个项目依赖较多,直接装到系统 Python 里很容易污染环境。Miniconda 让你给每个项目建一个独立的"沙盒"。
- macOS / Linux:访问 docs.conda.io/projects/mi… 下载对应安装包
- Windows:下载
.exe双击安装,安装时勾选"Add to PATH"
安装完成后,打开终端(Windows 用"Anaconda Prompt"),输入:
conda --version
如果输出版本号(如 conda 24.x.x),就说明装好了。
第 2 步:克隆项目
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
如果你没装 Git,去 git-scm.com/downloads 下载安装。或者直接在 GitHub 页面点 "Code → Download ZIP" 下载压缩包再解压。
第 3 步:创建独立的 Python 环境
conda create -n tradingagents python=3.13
conda activate tradingagents
创建后会看到命令行提示符前面多了个 (tradingagents),说明环境激活了。以后每次开新终端都要重新激活。
第 4 步:安装依赖
确保你还在 TradingAgents 项目目录里(用 pwd 或 cd 确认),然后:
pip install .
注意末尾那个点 .,意思是"安装当前目录的项目"。这一步会下载几十个依赖包,包括 LangGraph、LangChain、yfinance、stockstats、Rich(CLI 美化)等等。耐心等几分钟。
常见踩坑:
- 如果报
ModuleNotFoundError,确认你处于激活了tradingagents环境的状态。- 如果某个包下载失败,多半是网络问题,可以换源:
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple- macOS 上如果
pandas编译失败,先xcode-select --install。
第 5 步:配置 API Key
这是最关键的一步。项目根目录里有一个 .env.example 文件,复制为 .env:
cp .env.example .env
# Windows 用:copy .env.example .env
然后用任意文本编辑器打开 .env,填入你拿到的 Key。至少需要填一个 LLM 的 Key:
# 推荐新手用 DeepSeek(便宜)或 OpenAI(默认)
OPENAI_API_KEY=sk-xxxxxxxxxxxx
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxx
# 数据源(可选,但强烈推荐都申请)
FINNHUB_API_KEY=xxx # 免费,提供新闻和财报数据
ALPHA_VANTAGE_API_KEY=xxx # 免费,提供市场数据补充
各个 Key 的申请地址:
- OpenAI:platform.openai.com/api-keys
- DeepSeek:platform.deepseek.com/api_keys
- Anthropic:console.anthropic.com/
- Finnhub(免费):finnhub.io/register
- Alpha Vantage(免费):www.alphavantage.co/support/#ap…
第 6 步:第一次运行(CLI 模式)
最简单的方式是命令行交互界面:
tradingagents
或者:
python -m cli.main
你会看到一个非常漂亮的 Rich 终端界面,依次问你:
- Ticker(股票代码):输入
NVDA、AAPL、TSLA这种美股代码;港股是0700.HK这样;A 股目前支持有限。 - Analysis Date(分析日期):格式
2025-01-15,必须是过去的日期(数据要拉得到)。 - Analysts(分析师选择):用空格切换,回车确认。新手建议四个全选。
- Research Depth(研究深度):1 / 3 / 5 轮辩论。新手建议 1 轮先跑通。
- LLM Provider 和 Model:选你刚才配置好 Key 的那个。
确认之后,框架就开始跑了。屏幕上会实时显示每个 Agent 的输出——你可以亲眼看到看多看空研究员怎么互怼、风控员怎么劝交易员收手。整个过程根据深度从几分钟到二十分钟不等。
跑完后,结果会保存在项目目录的 eval_results/ 下,是一份完整的 Markdown 报告。同时 ~/.tradingagents/memory/trading_memory.md 里也会追加一条决策记录。
第 7 步:用 Python 代码方式调用
如果你想把它集成到自己的脚本里(比如批量跑一组股票),就这样写:
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "deepseek" # 或 openai / anthropic 等
config["deep_think_llm"] = "deepseek-chat" # 深度思考用的模型
config["quick_think_llm"] = "deepseek-chat" # 快速任务用的模型
config["max_debate_rounds"] = 1 # 辩论轮数,越多越贵越慢
config["online_tools"] = True # 是否实时联网拉数据
ta = TradingAgentsGraph(debug=True, config=config)
final_state, decision = ta.propagate("NVDA", "2025-01-15")
print("最终决策:")
print(decision)
final_state 是一个完整的状态字典,里面包含每个 Agent 的中间产物——你可以提取出来做二次分析。decision 是结构化的最终建议(v0.2.4 起是 Pydantic 类型,包含五档评级、建议仓位、关键理由等字段)。
第 8 步(可选):用 Docker 一键起
如果上面的步骤让你头大,项目从 v0.2.4 起提供了 Docker 镜像。前提是装了 Docker Desktop:
cp .env.example .env
# 编辑 .env 填好 Key
docker compose run --rm tradingagents
Docker 会自动处理 Python 环境、依赖安装、跨平台编码(Windows 下 UTF-8 问题)等所有麻烦事。
五、新手最容易踩的几个坑
坑 1:API 额度跑得飞快
默认配置开三个分析师 + 两轮辩论一次跑下来,OpenAI 大概要消耗 5-10 万 tokens。GPT-5.4 一次大概几美元,新手手一抖很容易花掉一杯咖啡钱。先把 max_debate_rounds 改成 1,分析师选 2 个先试水。
坑 2:分析日期选了今天 框架要拉那一天之前的数据,如果你选今天,很多数据源还没刷新会报错。至少选前一个交易日。
坑 3:A 股代码不识别
框架对美股、港股、东京证交所支持较好(如 7203.T 是丰田)。A 股的 600519.SS 这种格式支持有限,主要受限于 yfinance 等数据源。如果要研究 A 股,需要自己改 dataflows/ 里的数据接口,对接 Tushare 或 AKShare。
坑 4:Ollama 模式效果差 本地 7B/13B 模型应付不来这种多轮工具调用 + 结构化输出。如果一定要本地跑,至少用 Qwen2.5-72B 或 Llama 3.3-70B 量化版,还得有 64GB+ 的内存或一张 24GB 显存的卡。
坑 5:把决策当真 再说一次:这是研究工具。LLM 在 2024 年中以前的数据上"看起来"表现不错,部分原因是这些数据已经在它训练集里了,相当于偷看答案。真要做策略回测,请配合 Backtrader、Zipline 等专业框架,并用严格的 walk-forward 验证。
六、进阶玩法:把它改造成你自己的工具
读懂代码之后,你可以做很多有意思的改造:
改造 1:换一组 Agent 角色
把 tradingagents/agents/ 下的 Prompt 拆出来,改成"产品经理 / 设计师 / 工程师 / QA"的辩论流程,瞬间变成产品评审 Agent。
改造 2:接入私有数据源
在 dataflows/ 下加一个新的工具,比如对接你公司的内部研报数据库、或者爬取雪球大 V 的观点,让分析师 Agent 多一个信息源。
改造 3:增加因子分析师 加一个 Agent 专门跑量化因子(动量、价值、低波等),把传统量化和 LLM 推理结合起来。
改造 4:做长期回测 写一个外层循环,每周一调用一次框架对持仓股票重新评估,把决策结果接入模拟交易引擎,几个月跑下来就能看到这套"AI 公司"的真实表现了。
七、写在最后
TradingAgents 在我看来代表了 AI Agent 项目应该有的水准——它不是炫技的 demo,而是把多智能体协作、工具调用、长期记忆、结构化输出、多模型路由这些工程问题都认真解决了一遍。哪怕你完全不关心金融,光是把它的代码读一遍,就能学到很多关于 LangGraph 编排、Pydantic 结构化输出、Prompt 角色对抗的真实工程经验。
但请记住作者反复强调的那句话:"It is not intended as financial, investment, or trading advice." 这个项目的真正价值,是让你看清"用 AI 做交易决策"到底能做到什么程度、又有哪些根本局限。看清之后,你自然知道该怎么用它——是当玩具,是当研究工具,还是作为你下一个 Agent 项目的起点。
祝你玩得开心,也祝你不要真的拿它去 All in。
相关链接
- 项目主页:github.com/TauricResea…
- 论文(arXiv):arxiv.org/abs/2412.20…
- 官方网站:tauricresearch.github.io/TradingAgen…
- Discord 社区:可在 GitHub README 中找到邀请链接
- 后续作品 Trading-R1:github.com/TauricResea…