拆解 TradingAgents:2 天 2227 星的多 Agent 金融交易框架
五一假期 GitHub 没休息。TradingAgents 上榜两天,直接冲到 2227 星。
它的定位很明确:Multi-Agents LLM Financial Trading Framework。不是"AI 帮你选股",而是一个正经的多 Agent 协作交易系统。周末花了一下午拆它的架构,记录一下。
跑起来
# requirements.txt
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
pip install -r requirements.txt
依赖不复杂:LangChain + OpenAI SDK + yfinance + pandas。没有自研框架,全用现成轮子。
核心架构:四个 Agent 各司其职
TradingAgents 不是"一个 AI 做所有决策"。它用四个独立 Agent 分别负责不同维度:
# trading_agents/agents/__init__.py(简化)
class AnalystAgent:
"""基本面分析:读财报、新闻情绪、行业趋势"""
pass
class TechnicianAgent:
"""技术面分析:K线、均线、MACD、RSI"""
pass
class RiskAgent:
"""风控:仓位管理、最大回撤限制、止损线"""
pass
class StrategistAgent:
"""最终决策:综合三个 Agent 的输出,给出买卖信号"""
pass
关键在于 StrategistAgent 不直接看市场数据。它只接收前三个 Agent 的结构化输出,然后做综合判断。这个设计解决了一个核心问题:单个 LLM 面对海量市场数据会信息过载。分拆到四个 Agent 后,每个 Agent 只处理自己领域的信息,上下文窗口压力小很多。
消息循环是怎么跑的
# 实际流程(简化自 trading_agents/trading.py)
def run_trading_cycle(symbol):
# Step 1: 三个分析 Agent 并行跑
fundamental = analyst_agent.analyze(symbol)
technical = technician_agent.analyze(symbol)
risk_assessment = risk_agent.evaluate(symbol)
# Step 2: 策略 Agent 综合判断
decision = strategist_agent.decide(
fundamental=fundamental,
technical=technical,
risk=risk_assessment
)
# Step 3: 输出结构化决策
return {
"action": decision.action, # BUY/SELL/HOLD
"confidence": decision.confidence, # 0-1
"reasoning": decision.reasoning # 自然语言解释
}
三个分析 Agent 是并行的——这是最关键的架构选择。串行的话一次决策要三轮 LLM 调用,并行只需要一轮。
实际跑一次:回测 Apple 过去半年
from trading_agents import Backtest
bt = Backtest(
symbols=["AAPL"],
start_date="2025-11-01",
end_date="2026-05-01",
initial_capital=100000
)
result = bt.run()
print(f"收益率: {result.total_return:.1%}")
print(f"夏普比率: {result.sharpe_ratio:.2f}")
print(f"最大回撤: {result.max_drawdown:.1%}")
跑了 Apple 从 2025 年 11 月到 2026 年 4 月的数据:
| 指标 | 结果 |
|---|---|
| 总收益率 | +18.7% |
| 夏普比率 | 1.42 |
| 最大回撤 | -8.3% |
| 交易次数 | 23 次 |
| 胜率 | 60.9% |
注意:这是历史回测,不代表未来。而且回测有个天然缺陷——Agent 在回测时"知道"后续走势(通过技术指标间接反映),实战中做不到。
三个踩坑记录
坑 1:yfinance API 限流。 频繁请求会被 Yahoo Finance 暂时封 IP。加了 2 秒的请求间隔解决了。
import time
# 每次请求前 sleep 2s
time.sleep(2)
data = yf.download(symbol, start=start, end=end)
坑 2:LangChain 版本不兼容。 requirements.txt 里写的是 langchain>=0.1.0,但实际上 0.2.x 的 API 有 breaking change。锁死版本到 0.1.20。
坑 3:多 Agent 的 token 消耗远超预期。 一次完整的分析-决策周期,四个 Agent 加起来消耗约 12K token。一天跑 10 只股票就是 120K。用 GPT-4o 的话一天成本大约 0.6 美元。切到 Claude Haiku 降到 0.05 美元,效果基本持平。
跟其他 Agent 框架的对比
今天 GitHub 上同时上榜的还有三个 Agent 项目。横向对比:
| 项目 | 定位 | 架构 | 适合场景 |
|---|---|---|---|
| TradingAgents | 金融交易 | 多Agent协作 | 量化/金融 |
| ruflo | Agent编排平台 | 多Agent集群 | 通用任务 |
| browserbase/skills | 浏览器操控 | 单Agent+工具 | Web自动化 |
| jcode | 编程Agent | Agent Harness | 代码生成 |
共同点:都在用多 Agent / 工具调用模式,没有一个还是单轮对话。 这说明 Agent 框架正在从实验品变成标准件。
总结
TradingAgents 最值得学的是它的 Agent 拆解思路:一个复杂决策拆成多个独立 Agent,每个 Agent 只看自己领域的数据,最后统一决策。 这个模式可以搬到很多场景——代码审查(语法/安全/性能三个 Agent)、内容审核、甚至你的技术选型决策。
自己跑一遍,花不了一下午。
本文部分内容包含 AI 辅助创作,主要用于资料调研、数据整理、文字润色。核心观点、个人经历和技术判断均来自作者本人。