拆解 GitHub 趋势榜 TradingAgents:多 Agent 辩论架构与本地运行实测

大家好,我是不会喷火的小火龙。今天我们来拆解一个最近频繁登上GitHub趋势榜开源的多智能体金融量化交易全流程框架。

在平常让大模型直接分析股票,往往会得到一份四平八稳的研报。但在真实交易里,单向叙事暗藏风险:只要挑选不同的技术指标或新闻切片,无论看多还是看空都能写出逻辑自洽的分析。金融决策要在信息不对称下权衡概率与风险,并不存在现成的标准答案。

一、为什么单一 Prompt 难以胜任金融决策

用大模型做交易策略和财报分析的尝试很多,但单一 Prompt 很容易陷入确认偏误(Confirmation Bias)。当系统接收到偏多的技术指标时,倾向于给出顺势做多的结论;当面对负面宏观数据时,又很容易偏向防守。提示词再长,也很难在同一个上下文内保证对抗立场的客观性。

机构投研流程的设立,初衷就是利用角色分权来暴露漏洞。技术面与基本面关注的周期不同,情绪面与宏观面各有噪音。多空研究员各执一词,风控团队负责收紧止损,最终由投资经理做出权衡。TradingAgents 的核心思路就是将这套博弈逻辑转化为状态图上的确定性流程。

传统量化或对冲基金在做投资决策时,通常会有分工明确的角色:收集数据的分析师、互相挑刺的多空研究员、评估尾部风险的风控部门,以及拍板的投资经理。TradingAgents(论文 arXiv:2412.20138)把这套组织结构搬进了多智能体系统。项目开源后一度登上 GitHub 趋势榜,收获了 7000 多 Star。它的价值不仅在于生成金融研报,也在于为复杂决策型 Agent 系统的分工与对抗机制提供了一个参考实现。

下图是 TradingAgents 的完整协作流水线,从多源数据提取、观点辩论到风控评估,均由专门的 Agent 节点承接:

image.png

二、核心架构:模拟基金投研的 5 阶段流水线

TradingAgents 的设计重点在于各个 Agent 之间的信息流向和制约关系。系统将决策链路划分为五个阶段:

1. 分析团队:四维度并行采集数据

系统启动后,四位分析师 Agent 并行运行,分别处理各自的数据源:

  • Market Analyst(市场分析师):通过 Yahoo Finance 获取价格与常用技术指标(如 OHLC、移动平均线、MACD、RSI、ATR、布林带等),整理技术面研报。
  • Fundamentals Analyst(基本面分析师):梳理财务指标、估值水平与同业对比。
  • News Analyst(新闻分析师):汇总宏观新闻,评估地缘政策、利率环境等宏观因子对标的的影响。
  • Sentiment Analyst(情绪分析师):抓取 StockTwits、Reddit 等平台上的散户讨论,统计情绪比例。

四个分析师彼此独立,各自生成文件。这种隔离避免了单一维度的强结论过早干扰其他维度的信息提取。

image.png

2. 多空辩论:结构化对抗

汇总四份分析报告后,流程进入多空对抗阶段。

系统没有让一个 Agent 同时总结利弊,而是分别设立了 Bull(多头研究员)和 Bear(空头研究员)。多头先列出自己的支撑论据,空头针对这些论点逐一反驳并补充利空因素,多头再就反驳进行二次防守。辩论轮数可以在配置中调整(默认为 1 轮,可设为 2 轮)。

辩论结束后,由 Research Manager(研究主管)进行裁判。研究主管负责梳理双方在关键价位和宏观逻辑上的分歧点,评估论据支撑强度,最终形成一份综合研究总结。

拆分对抗角色能够有效避免大模型常见的调和倾向,迫使模型把两端的论据和风险都完整暴露出来。

3. 交易员:制定具体参数

研究主管的总结交由 Trader Agent。交易员不重复分析基本面或技术面,而是将结论翻译为具体的交易计划:方向(买入 / 卖出 / 持有)、进场区间、止损价位、目标点位和建议仓位。

4. 风控委员会:三方评估

交易计划提交后,由三位风控分析师组成委员会进行审核:

  • Aggressive Analyst(激进派):关注盈亏比与潜在机会,侧重执行可行性。
  • Conservative Analyst(保守派):聚焦极端回撤与黑天鹅事件,倾向于压缩风险敞口。
  • Neutral Analyst(中立派):平衡机会与潜在风险,评估赔率。

三位风控人员同样会针对仓位大小、止损距离是否合理等细节展开讨论。

image.png

5. 投资经理:最终裁决

最后,Portfolio Manager(投资组合经理)统揽所有上游报告,包括分析师数据、多空辩论过程、交易员方案以及风控委员会的审议意见,给出最终结论:评级(Buy / Hold / Sell)、执行摘要、投资逻辑以及观察周期。

五个阶段构成完整的流水线,使每个环节的观点都会在下一环节接受检验。

三、工程机制:反思记忆与断点恢复

TradingAgents 在工程实现上有两点值得注意:长流程容错与跨周期复盘。

断点恢复(Checkpoint Resume)

一次完整的研报生成包含十余次模型调用,耗时通常需要几分钟。如果中间因为网络超时或 API 限流中断,从头重跑会浪费调用成本与时间。

TradingAgents 基于 LangGraph 的 SQLite 检查点功能实现了节点级状态保存。运行时加上 --checkpoint 参数后,每个 Agent 节点执行完毕都会把状态写入数据库。任务中断后重新启动,会自动从断点处继续执行。

决策日志与反思机制(Reflection)

每次做出评级后,系统会把决策摘要记入本地的 trading_memory.md。当后续再次分析同一标的时,系统会自动执行几步复盘:

  1. 调取上一次的决策(包括当时的评级、入场价与设定周期)。
  2. 获取该标的在决策之后的实际走势。
  3. 计算实际收益率以及相对基准指数(如 SPY)的超额表现。
  4. 将偏差反思整理为文本,作为上下文注入到本次投资经理的 Prompt 中。

通过这套闭环,历史判断的偏差能够作为经验输入给下一次决策。

四、本地部署:Docker 环境与模型配置

1. 获取代码与构建镜像

bash
复制代码
git clone https://github.com/TauricResearch/TradingAgents.git cd TradingAgents cp .env.example .env docker compose build

2. 模型接入配置

TradingAgents 原生集成了多家主流 LLM 接口,同时也支持任何遵循 OpenAI 协议的自定义端点。

以火山方舟 Agent Plan 为例,在 .env 中添加对应配置:

bash
复制代码
# 采用兼容协议 TRADINGAGENTS_LLM_PROVIDER=openai_compatible # 火山方舟 Agent Plan 端点 TRADINGAGENTS_LLM_BACKEND_URL=https://ark.cn-beijing.volces.com/api/plan/v3 # 填入申请的 API Key OPENAI_COMPATIBLE_API_KEY=your_api_key_here # 指定模型名称(支持使用 deepseek-v4-flash、kimi-k3 等平台原生名称) TRADINGAGENTS_DEEP_THINK_LLM=deepseek-v4-pro TRADINGAGENTS_QUICK_THINK_LLM=deepseek-v4-flash

使用火山方舟 Agent Plan 的便利之处在于可以直接配置模型名,无需单独创建 Endpoint 接入点。

3. 网络与环境问题处理

TradingAgents 默认通过 Yahoo Finance 获取行情。在部分网络环境下,容器内请求 query2.finance.yahoo.com 可能遇到 SSL 握手断开的报错。

可通过将宿主机代理映射进容器来解决,同时将国内的模型服务地址排除在外:

bash
复制代码
# 容器使用宿主机本地代理访问外部行情 HTTP_PROXY=http://host.docker.internal:7890 HTTPS_PROXY=http://host.docker.internal:7890 # 国内模型端点走直连 NO_PROXY=localhost,127.0.0.1,ark.cn-beijing.volces.com

另外需要注意:在 Mac 上使用 Docker Desktop 时,如果默认的 desktop-linux context 受到网络代理影响导致 docker compose run 无响应,可以切换到原生 socket 连接:

bash
复制代码
docker context create direct \ --docker "host=unix://$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock" docker context use direct

4. 报告文件持久化挂载

容器默认将研报保存在内部路径。可以在 docker-compose.yml 中挂载目录,方便直接在宿主机查看:

yaml
复制代码
services: tradingagents: volumes: - ./reports:/home/appuser/app/reports

5. 启动交互式分析

bash
复制代码
docker compose run --rm tradingagents

启动后会弹出交互提示,输入标的代码(如 NVDABTC-USD)、基准日期、参与的分析师角色、辩论轮次和输出语言即可启动流程。

image.png

五、实测复盘:BTC-USD 完整研报

这里使用火山方舟的 deepseek-v4-flash 模型,以 BTC-USD 为标的做了一次完整运行。

终端输出展示了各模块的执行耗时与归档路径:

image.png

分析全程耗时约 6 分钟,生成了一份 186KB、1244 行的 Markdown 研报。输出文件按执行阶段分层归档:

text
复制代码
reports/BTC-USD_20260910_130329/ ├── 1_analysts/ # 各分析师独立数据报告 │ ├── market.md # 8 项技术指标核算 │ ├── sentiment.md # 社区情绪量化 │ └── news.md # 宏观新闻梳理 ├── 2_research/ # 多空对抗记录 │ ├── bull.md # 看多观点 │ ├── bear.md # 看空反驳 │ └── manager.md # 研究主管综合 ├── 3_trading/ │ └── trader.md # 交易执行计划 ├── 4_risk/ # 风控三方讨论 │ ├── aggressive.md # 激进派 │ ├── conservative.md # 保守派 │ └── neutral.md # 中立派 ├── 5_portfolio/ │ └── decision.md # 投资经理裁定 └── complete_report.md # 完整报告合集

技术指标校验

Market Analyst 抓取并计算了当时 BTC-USD 的多项指标:

指标数值研报解读
收盘价77,133.63基准价格
10 EMA78,428.41现价低于该线,短期动能衰退
50 SMA70,414.24现价高于该线约 9.5%,中期趋势尚存
200 SMA69,965.2250/200 均线金叉,长期均线呈修复状态
RSI54.89从高位超买(>80)回落至中性区
MACD 柱-641.58死叉已现,动能转弱
ATR2,142.89日均波动约 2.8%,止损需预留安全空间

在报告细节中,分析师还比对了 get_stock_dataget_verified_market_snapshot 接口返回的收盘价(差异约 54 美元,占比 0.07%),并在报告中明确说明统一以验证快照为准。

多空辩论要点

多空双方在核心逻辑上的交锋较为具体:

多头论点:

价格保持在 50 日均线上方 9.5%、200 日均线上方 10.2%,且 200 日线刚掉头向上,整体属于均线多头修复。且回调阶段成交量较 8 月突破时期缩减超过一半,缺乏主力集中派发的特征。

空头反驳:

均线系统具有滞后性,难以直接预测短期二元风险。当前面临美国关键宏观数据公布、欧洲央行加息以及美债收益率走高的多重宏观压力,短期内指标均线无法对冲宏观利空冲击。

风控人员的讨论则聚焦在操作节奏上:

激进派的短线试多方案将止损设在 75,400,距离现价仅 2.2%,但当前日均 ATR 达到 2,143 美元(波动率 2.8%)。这意味着在数据发布前夕,普通盘中插针就会轻易扫掉止损。

终审结论

投资经理最终给出的评级为 Hold(观望):

中期结构偏多,短线动能偏空,且宏观上存在待公布的重大经济数据。在这种信号冲突的节点,维持现有持仓、不盲目开新仓是较优选择。等待宏观事件落地后,若价格在 76,000–77,100 区间企稳,或放量收复 10 EMA(78,428),再右侧轻仓介入。

系统没有机械地在多空结论中二选一,而是在多项指标冲突时选择等待右侧确认条件,并给出了明确的观察窗口。

六、现状与实盘距离

TradingAgents 验证了多角色对抗在提升复杂分析质量上的有效性,但在走向实际自动化交易前,依然存在几处现实门槛:

  1. 时效与延迟:端到端完整分析涉及十余次推理,单次运行约 3 到 6 分钟。这种耗时决定了它更适合日线级别的波段分析与复盘,无法应对秒级的日内撮合与高频风控。
  2. 数据生态接入:原版基于国外数据源构建。若用于 A 股或其他本土市场,需要适配本土行情接口与研报来源。
  3. 执行层的衔接:系统当前输出的是逻辑分析和参数建议,并不包含与券商交易接口的直接连通,订单管理、滑点控制和仓位风控等工程模块需要单独开发。
  4. 策略回测工具链:框架主要侧重于单次决策的推理过程,目前缺少开箱即用的批量历史回测流水线,较难大规模统计在不同市场周期下的胜率与收益分布。

作为辅助工具,TradingAgents 能够帮助投资者在做决策前快速梳理多空逻辑、罗列潜在风险并量化波动指标。作为多 Agent 系统项目,它在角色拆分、辩论裁决和状态机容错上的处理方式,为探索复杂任务下的 Agent 协作提供了一个清晰的工程参考。


项目地址:https://github.com/TauricResearch/TradingAgents
论文引用:arXiv:2412.20138
免责声明:TradingAgents 属于研究类开源项目,本文仅作技术与架构拆解,文中所涉及标的与实测数据均不构成任何投资建议。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
不会喷火的小火龙
下载 APP