拆解TradingAgents:2天2227星的多Agent金融交易框架

10 阅读3分钟

拆解 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协作量化/金融
rufloAgent编排平台多Agent集群通用任务
browserbase/skills浏览器操控单Agent+工具Web自动化
jcode编程AgentAgent Harness代码生成

共同点:都在用多 Agent / 工具调用模式,没有一个还是单轮对话。 这说明 Agent 框架正在从实验品变成标准件。

总结

TradingAgents 最值得学的是它的 Agent 拆解思路:一个复杂决策拆成多个独立 Agent,每个 Agent 只看自己领域的数据,最后统一决策。 这个模式可以搬到很多场景——代码审查(语法/安全/性能三个 Agent)、内容审核、甚至你的技术选型决策。

自己跑一遍,花不了一下午。


本文部分内容包含 AI 辅助创作,主要用于资料调研、数据整理、文字润色。核心观点、个人经历和技术判断均来自作者本人。