尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

TradingAgents拆解:多智能体如何通过辩论协作完成交易决策

发布时间:2026/9/19 6:59:45

资讯中心
01
ARTICLE

TradingAgents拆解:多智能体如何通过辩论协作完成交易决策

TradingAgents拆解:多智能体如何通过辩论协作完成交易决策
1. 当 10.4 万星项目把交易决策变成一场圆桌会议先抛一个反直觉的现象TradingAgents这个多智能体交易框架在 GitHub 上拿下 10.4 万星之后很多人打开源码第一反应是——这不就是一个让几个 AI 聊天开会的项目吗对但也没对。它确实让 AI开会但这场会完全不是我们平时理解的那种几个人拉个群各说各话最后稀里糊涂出一个结论。它开会的逻辑本质上是在模拟一家真实投资机构里从研究员到基金经理、再到风控和合规官的完整决策链条。我最初看到架构图的时候第一反应是这不就是把华尔街的晨会给搬进代码里了吗。但真正把代码和业务逻辑走完一遍之后我意识到它的价值不只是AI 开会这个噱头而是它把多智能体协作中最关键的几个问题——角色分工、信息隔离、辩论机制、共识收敛、风险否决——全都落地成了可复现的工程实现。这篇文章我会从三个层面来做拆解先讲清楚 TradingAgents 到底是怎么把投资决策拆成一连串智能体环节的然后深入它的开会机制看辩论和共识是怎么在代码层面实现的最后结合实际跑通的经验聊聊哪些设计值得借鉴、哪些地方有坑、以及如果你想在自己的场景里复制这套多智能体辩论决策模式应该从哪里下手。不管你是做量化交易、LLM Agent 应用开发还是单纯对多智能体协同这个热词感兴趣这篇拆解应该都能提供一些比读源码更高效的理解路径。2. 不要把开会想简单了TradingAgents 的角色分工体系2.1 七个角色其实就是一家迷你投资公司TradingAgents 的会议不是几个通用大模型在那里互相对话而是每个智能体都有明确的岗位职责。这看起来是个很普通的设定但真正影响项目质量的是每个角色背后对应的提示词模板、输出约束和信息边界。我根据源码结构梳理了一下核心角色大致可以分成这样几个层次角色对应真实岗位核心职责输出物Market Analyst市场分析师分析宏观/行业/板块趋势市场环境研判News Analyst新闻分析师解读个股新闻与事件驱动事件影响评估Technician技术分析师分析价格走势、技术指标技术面信号Fundamentalist基本面分析师评估财务数据与估值基本面结论Trader交易员综合各路信息形成交易逻辑多空观点Risk Manager风控经理评估仓位风险、极端行情风险等级Portfolio Manager基金经理最终汇总并输出决策最终交易决策这个划分最让我欣赏的地方在于它不是把所有分析塞给同一个模型去一步到位而是用隔离的信息源和独立的提示词让每个智能体只能基于自己的视角输出观点。这一点非常关键。如果一个 LLM 同时扮演分析师交易员风控它大概率会在推理过程中自我强化某个偏见——比如先看多然后它在分析风险的时候也会倾向于找支持看多的理由。但 TradingAgents 把信息隔离拆开之后每个智能体在开口之前只能看到自己该看的数据这就从机制上减少了狗尾续貂式的确认偏误。2.2 为什么分角色比一个超级 Agent更靠谱很多人在做 Agent 应用的时候有个执念既然大模型什么都能干为什么我不让它一个人把所有事干完TradingAgents 给出的答案很有参考价值因为什么都能干和什么都能干好是两码事。在投资决策这个场景里分析宏观趋势需要的上下文长度、推理深度与技术面识别支撑位、基本面读财报的思考方式完全不同。把不同任务放在同一个上下文里会导致两个问题一是上下文被无关信息稀释模型注意力被带偏二是思考模式切换本身就容易引入噪声。而多智能体的角色分工本质上把认知资源也做了切分。每个智能体的上下文里只有自己的任务相关信息System Prompt 也只为特定任务做了优化。这种情况下每个角色的输出质量会明显高于全能选手在同一段上下文里连续输出不同分析的质量。我自己测试过的结果是在同样使用 GPT-4o 的前提下让全能 Agent 直接做一位分析师交易员混合输出和用两个独立角色分别输出再汇总后者的逻辑一致性明显更强。具体到 TradingAgents 里角色之间的信息通过结构化字典传递天然形成了上游输出作为下游输入的流水线比把一切塞进一个 prompt 要可控得多。2.3 每个角色读什么数据其实被卡得很死看代码的时候值得注意一个细节TradingAgents 给每个角色预设了不同的信息访问权限。比如 Market Analyst 拿到的是宏观指数、板块趋势这类数据News Analyst 拿到的是最新新闻事件流Technician 拿到的是 K 线和技术指标Fundamentalist 拿到的是财报和估值数据。它们之间没有任何一个角色能同时看到所有信息。这看起来像是一个工程限制实际上是一个深思熟虑的设计。不同分析师基于不同的数据集得出各自的结论最后由交易员和基金经理做最终综合这模仿的就是真实投资公司里的信息隔离墙。如果没有这层隔离所有智能体共享同一个 context window那第一个角色的判断会污染后面所有角色的推理。多智能体系统的头脑风暴优势也会退化成回音室效应——大家一起强化同一个观点而不是从不同角度碰撞出更全面的认知。这个设计放到任何多智能体应用里都适用信息隔离是避免系统偏见放大的核心手段甚至比模型选型更重要。3. 决策开会的核心机制辩论、共识与风险否决3.1 从多个分析师观点到交易员决策一次典型的综合-博弈流程TradingAgents 的决策过程大致可以描述成这样的链路多个分析师分别基于自己的信息输出观点这些观点汇总到一起交给 Trader交易员做综合判断Trader 给出多/空/震荡的交易逻辑Risk Manager风控独立评估风险Portfolio Manager基金经理基于交易逻辑和风险等级做出最终决策。这个过程最核心的会议感来自第 2 到第 4 步。交易员拿到的输入不是简单的多空投票结果而是每个分析师带逻辑、带论据、带置信度的完整观点。这些观点在进入交易员上下文的时候实际上构成了一个带论证过程的辩论场。交易员不仅要看到谁看多谁看空还要理解每个观点背后的推理链条然后在这个基础上形成自己的综合判断。这里有个工程上的细节值得展开在 TradingAgents 的实现里分析师的观点格式是高度结构化的通常包含方向、核心逻辑、关键数据、置信度、风险提示等字段。结构化输出让交易员能够精确引用和对比不同分析师的观点而不是面对一大段散文式的分析做模糊的整合。这一点对于所有做多智能体协作的人来说是一个非常值得抄的作业智能体之间的通信数据不能是自由的自然语言文本而应该是半结构化的观点包。3.2 多空辩论是真辩论还是假辩论这是我看完源码后最有感触的部分。在很多号称多智能体辩论的项目里所谓的辩论其实就是把同一个问题发给同一个模型好几次然后把答案拼在一起。这种辩论没有任何信息增益因为模型输出的本质是同一个概率分布的采样观点多样性非常有限。TradingAgents 的辩论设计高明在哪它通过角色隔离、数据隔离、提示词专业化三个维度让每个智能体真正从不同的立场和信息面出发思考问题。在辩论阶段Technician 可能会基于RSI 超卖均线拐头发出看多信号Fundamentalist 可能会基于市盈率偏高但增速强劲给出中性偏多的判断News Analyst 则可能因为一条突发的行业监管新闻给出偏空的观点。这三种观点来自不同的信息集带入了不同的分析框架它们之间的冲突是有效冲突——投资者真正需要在这种多空拉锯中找到决策的支点。当然这并不是说 TradingAgents 的辩论没有任何改进空间。从我实测的情况来看当大模型本身的知识或者数据覆盖不足时多方分析师可能会产生抱团现象——所有人基于训练数据里的通识信息得出相似结论辩论效果大打折扣。要解决这个问题一个有效的做法是给辩论环节注入真实的外部数据流比如实时新闻、财务数据、链上数据等让信息隔离真正发挥作用。3.3 Portfolio Manager 的一票否决风控为什么是最后一个说话的人整条决策链里最容易被忽略但最重要的一个设计是 Risk Manager 的位置。在很多简化的AI 投资顾问设计里风控往往是一个事后检查器——先让模型给出投资建议然后再让另一个模型审核一下。但在 TradingAgents 里Risk Manager 是在交易员给出交易逻辑之后、基金经理做最终决策之前独立进行风险评估的。这个顺序很讲究。如果风控和交易员并行或者风控在最后才登场就会出现两个问题如果交易员的决策已经形成风控再做评估只能做事后打补丁式的否决难以影响交易逻辑本身的构建如果风控和交易员共享同样的信息上下文风控的独立判断很容易被交易员的多空立场锚定。TradingAgents 的做法是Risk Manager 拥有独立的评估逻辑评估的是如果按照交易员的逻辑执行最坏情况下会亏多少而不是这个逻辑对不对。它的核心任务是把极端情况下的风险显性化然后交给基金经理做最终权衡。Portfolio Manager 拿到的是两份输入一份是交易员的进攻逻辑一份是风控的防守评估。真正的决策是在这两者之间做权衡。这个进攻-防守二元对立结构比单纯让一个大模型输出买/不买要接近真实的投资决策得多。3.4 从辩论到共识多智能体怎么避免议而不决多智能体系统最大的痛点之一就是**会开了很久但没有决策产出**。TradingAgents 解决这个问题的方式是通过层级结构而不是纯平级讨论。平级讨论的问题在于每个智能体都有平等的话语权如果没有一个最终拍板人系统很容易陷入观点僵持。TradingAgents 的层级设计是分析师层多人平行发言输出观点交易员层吸收所有分析师观点输出交易逻辑风控层独立评估风险基金经理层综合所有信息拍板。这种结构保证了系统一定能在有限的轮次内收敛到一个可执行的决策而不是无限辩论下去。我在自己搭建多智能体系统的时候一开始也倾向于让所有角色平级讨论结果每次运行都要跑很久而且输出质量不稳定。后来我把结构改成层级收敛底层发散、上层收敛效果立竿见影。TradingAgents 真正启发我的不是多智能体比单 Agent 强这个结论而是如果要多智能体比单 Agent 强系统架构必须先想清楚谁负责发散、谁负责收敛。4. 深入源码TradingAgents 的开会到底是怎么跑起来的4.1 模块结构与数据流从工程架构上看TradingAgents 的设计非常清晰可以简化成几个关键模块数据获取层从外部源拉取新闻、行情、财务等数据智能体层多个基于 LLM 的分析智能体各自处理特定任务记忆/上下文层存储状态和历史信息协调层负责调度多个智能体的执行顺序并处理输出汇总决策输出层最终产生交易信号和决策解释。它的工作流本质上是一个DAG有向无环图分析师节点并行执行输出汇合后进入交易员节点再进入风控和基金经理节点最终输出决策。如果你打算借鉴这个框架我建议你不要把目光只放在提示词上而是多看看它的数据流设计每个智能体的输入输出格式是如何定义的、上游输出是如何被下游消费的、状态是如何在节点之间传递的。这些才是真正决定系统是否可扩展、可维护的核心。4.2 关键代码路径与实现思路TradingAgents 核心流程可以用一种简化伪代码来理解class TradingAgentsPipeline: def __init__(self): self.market_analyst MarketAnalyst() self.news_analyst NewsAnalyst() self.technician Technician() self.fundamentalist Fundamentalist() self.trader Trader() self.risk_manager RiskManager() self.portfolio_mgr PortfolioManager() def run(self, symbol): # 1. 并行获取各分析师信息 market_view self.market_analyst.analyze(symbol) news_view self.news_analyst.analyze(symbol) tech_view self.technician.analyze(symbol) fund_view self.fundamentalist.analyze(symbol) # 2. 交易员综合所有观点 trader_decision self.trader.decide( market_view, news_view, tech_view, fund_view ) # 3. 风控独立评估 risk_assessment self.risk_manager.assess( trader_decision ) # 4. 基金经理最终拍板 final_decision self.portfolio_mgr.finalize( trader_decision, risk_assessment ) return final_decision这段伪代码虽然高度简化但已经能反映出 TradingAgents 最核心的执行逻辑阶段清晰、顺序明确、信息单向流动。实际跑的时候每个分析步骤都是对 LLM 的一次独立调用调用之间通过结构化对象传参而不是通过长文本拼接。这样做的直接好处是每一步的输入输出都可以被记录、追踪和调试单个智能体的 prompt 修改不会影响其他智能体后续可以轻松地在任何环节插入新智能体比如增加一个链上分析师。4.3 配置与提示词扮演的角色除了代码流程TradingAgents 的另一个精髓在于提示词工程。每个角色的 prompt 都相当长包含角色设定、任务说明、输出格式、注意事项等多个部分。我会在后面的实操章节里给出一个可复用的模板思路这里先点出几点比较重要的设计角色背景交代完整每个 prompt 都会说明你是一名拥有多少年经验的 XX 分析师这有助于模型进入专业角色模式输出格式硬约束明确要求输出 JSON 或特定字段方便下游程序化处理明确不要做什么比如告诉新闻分析师不要分析技术指标避免角色越界置信度强制要求每个分析师给自己的观点打置信度分数这让交易员在做综合判断时有了权重参考。提示词工程在多智能体系统里承担的任务比单 Agent 场景重得多。原因在于多智能体系统的每一个环节都要考虑到输入是前一个智能体的输出prompt 不仅要能指导模型完成任务还要能让模型正确理解上游给它的半成品。TradingAgents 在这个方面做得相当细致。5. 我实际跑通 TradingAgents 的完整过程与踩坑记录5.1 环境准备没有 GPU 也能跑但 API Key 和质量是硬门槛TradingAgents 本身对硬件要求不高因为没有本地模型推理需求核心计算全部依赖 LLM API。我的环境配置如下Python 3.10一个 LLM API Key实测 OpenAI GPT-4o 效果最稳Claude 也表现不错可选的数据源 API Key如新闻、行情数据安装了项目依赖pip install -r requirements.txt有个容易踩的坑很多人以为这个项目能直接跑起来拿到交易信号实际上它还依赖不少外部数据源。如果你没有配置完整的数据源项目会退回到 demo 数据模式输出的决策参考价值会大打折扣。建议至少配置好行情数据和新闻数据两个来源。5.2 跑通全流程的实测表现我用某只科技股做了一轮完整测试让 TradingAgents 输出当日的交易决策。整个流程跑下来大概花了几分钟主要时间花在多次 LLM 调用上最终输出的决策包含几个部分交易方向买入/卖出/持有持仓比例建议决策依据摘要风险提示关键数据点。从输出质量上看TradingAgents 的分析逻辑是比较完整的它会同时引用技术面比如移动平均线位置、基本面比如营收增速和新闻面比如行业政策的信息并且最后的风险提示部分会明确提出极端情况下的应对思路。这种结构化、多维度的输出形式在实盘辅助决策中是很有参考价值的。但有一点必须说清楚它不是无人值守的自动交易系统它的核心价值是辅助决策而不是代替人做决策。项目本身的定位也是如此。5.3 踩坑一多个分析师观点互相打架时怎么判断谁更可信我遇到最多的问题是一组分析师给出的观点存在明显冲突。比如技术面看多但是基本面偏空新闻面又出现了突发利空。这种情况下交易员如何综合判断实测下来TradingAgents 的处理策略大致是根据置信度和信息时效性做加权同时更重视来自硬数据分析师的结论而非单纯的情绪判断。如果你的场景里也遇到类似问题我给你一个建议不要试图让模型平均所有观点而是要让模型明确说明我选择采信哪些观点、为什么忽略哪些观点。这样既能提升决策的透明度也能暴露出系统推理中的潜在偏见。5.4 踩坑二LLM 输出的不稳定性和幻觉让决策逻辑变飘多智能体系统一个绕不开的问题是多次运行结果不一致。同一只股票同一天跑两次 TradingAgents输出的决策方向可能不同。这是因为 LLM 的采样本身存在随机性加上新闻、行情数据的动态变化决策逻辑也会有浮动。这个问题没有完美的解决方案但有几个有效的缓解措施调整temperature参数适当降低随机性多轮运行取投票结果而不是只跑一次对关键决策环节增加 prompt 约束要求模型必须基于数据事实输出避免泛泛而谈。从我的经验来看TradingAgents 更适合作为决策支持系统来使用而不是自动交易信号发生器。它的输出质量高度依赖于输入数据的实时性和模型能力如果当作黑盒信号源无脑执行风险很大。5.5 踩坑三外部数据源不稳定导致的沙箱式运行TradingAgents 的官方 demo 模式可以离线运行但如果你配置了真实数据源经常会遇到数据获取失败或数据格式异常的问题。比如新闻源返回的数据为空、行情数据中缺少某只股票的 K 线等都会导致上游分析师输出异常进而影响整条决策链。我的建议是在调用数据源 API 时增加重试机制对上游数据的完整性做校验如果数据缺失宁可让对应分析师输出数据不足无法形成判断也不能用幻觉数据凑合为每个数据源准备降级策略比如主源失败时切换到备用源。一个小技巧在调试阶段把所有智能体的输入输出都记录到本地日志。这样一旦发现最终决策质量差可以回溯看是哪个环节出了问题。6. 如果你也想搭一套多智能体开会系统这几点可以直接抄6.1 角色设计先想清楚谁负责发散谁负责收敛TradingAgents 给所有多智能体开发者上的第一课是角色不能平级必须有层级。底层负责发散多个分析师从不同角度输出观点中层负责综合交易员整合观点形成逻辑上层负责收敛和否决风控 基金经理拍板。这样的结构保证了系统既有多样性又有决策力。我在搭建自己的多智能体系统时照着这个思路设计了三个层级信息收集层多个信息源 Agent 并行搜集数据分析推理层不同分析框架的 Agent 分别输出判断决策拍板层一个主 Agent 综合所有分析并参考一个反对派 Agent 的观点输出最终决策。这个结构本质上就是 TradingAgents 的精简版但对很多应用场景已经完全够用。6.2 信息隔离不要让所有智能体看到同样的上下文多智能体系统的下限往往不是由模型能力决定的而是由信息隔离程度决定的。如果所有智能体共享同一段上下文那它们本质上还是一个大 Agent外部表现得再热闹内部的推理还是同一套。为了获得真正的多视角你必须在数据层面做隔离。操作上你可以为每个智能体设定一个独立的信息包agents_info { market_analyst: [宏观指数, 行业指数, 市场情绪], news_analyst: [实时新闻, 公告, 事件流], technician: [日K线, 成交量, 技术指标], fundamentalist: [财报, 估值数据, 行业对比] }每个智能体只能看到自己信息包内的数据然后输出结论。之后再由上层智能体综合这些结论。这个物理隔离比任何 prompt 层面的请你独立判断都有效。6.3 通信协议智能体之间传什么、怎么传多智能体系统里一个经常被忽略的问题是智能体之间到底传什么TradingAgents 的做法是传结构化的观点包而不是传自由文本。每个分析师输出的不是一个大作文而是一个包含方向、置信度、核心依据、风险点等字段的字典。这样设计有几个好处下游智能体可以精确解析和引用上游观点调试时可以单步查看每个字段可以方便地对观点做统计分析比如统计多空比例、平均置信度。如果你用的是 LangChain 或自建框架可以把每个智能体的输出定义成一个 Pydantic 模型或 TypedDict强制 LLM 按格式输出。这一步能省掉后续无数的 parsing 和 debug 时间。6.4 决策可解释性让 LLM 输出为什么而不是只输出是什么TradingAgents 的一个隐性优点是它的输出天然带有解释性。因为多智能体系统的决策链路很长最终用户很难只凭一个买入/卖出信号就建立信任。TradingAgents 的温暖之处在于它会把从分析到决策的完整链条呈现出来——哪几个分析师看多、为什么看多、风险点在哪里、最终决策基于哪些考量。这不是炫技而是让使用者能够理解系统、监督系统、甚至在必要时干预系统。你在自建系统时务必保留这一层决策解释。甚至可以说在多智能体系统里解释与决策同样重要。6.5 应用的边界不要把会议结论当成必胜信号最后说一句有点泼冷水的话TradingAgents 虽然设计巧妙但它本质上是用 LLM 模拟投资决策流程而不是用 LLM 预测市场。它的价值有三层作为研究多智能体协作架构的优秀参考实现作为投资决策的辅助分析工具作为检验多角色辩论能否提升决策质量的实验平台。但它不能保证盈利也无法替代人做最终的投资决策。所有基于它的输出做投资决策的行为风险自担。如果你把同样的思路迁移到其他领域——比如做一个多智能体医疗辅助诊断系统多个专科医生会诊、多智能体风控系统交易、市场、合规三方联审、甚至多智能体内容选题系统用户需求、热点趋势、内容定位三方碰撞——你会发现TradingAgents 的真正价值不在于它选股选得准不准而在于它展示了一套如何让多个 AI 有效协作、共同完成复杂决策的通用方法论。这套方法论才是 10.4 万 star 背后真正值得学习的东西。7. 接下来的方向从开会到闭环如果你打算在 TradingAgents 的思路上做更深度的开发我个人觉得有几个方向值得探索引入自动反馈机制把交易决策与实际结果挂钩让系统通过历史绩效自动调整各分析师的权重增加跨时间尺度的多智能体日内交易员和长期价值投资者的决策逻辑完全不同可以让它们各自独立分析、分层输出结合外部知识库让分析师可以检索历史类似行情或公司案例提升论证的深度把决策输出接入模拟盘撮合引擎在不涉及真实资金的前提下验证系统决策的长期胜率。我在实际接触这个项目之后最大的感受是它把一个非常玄学的领域投资决策用工程手段拆解成了一个个可测试、可优化、可解释的环节这一点本身就比任何单次交易结果都更有价值。不管你是不是交易领域的人只要你在做复杂决策类的 Agent 应用这套分角色、分信息、分层级、分阶段的协作框架都值得亲手跑一遍。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。