基于LLM的多智能体交易框架TradingAgents:架构、流程与实操

发布时间:2026/9/12 5:56:11
基于LLM的多智能体交易框架TradingAgents:架构、流程与实操 聊到TradingAgents先交代一个背景。这个开源项目出来的时候我第一反应是这不就是把一家真实交易公司的办公室搬到LLM agent里面了吗后来细看文档和源码发现远不止“角色扮演”这么简单。TradingAgents是一个基于LLM的多智能体交易决策框架核心思路是用一组扮演分析师、研究员、交易员、风险官、投资组合经理的agent对个股进行“研究驱动型”的多维分析通过多个角色之间的讨论、投票和制衡最终产出一份带决策建议的报告。它能解决什么问题在LLM还没普及之前做量化研究的人往往要自己写代码抓数据、算指标、盯新闻有了这类框架之后信息收集、情绪分析、技术面计算、交易计划生成等环节可以交给多个agent协作完成人只负责配置、审核和最后把关。如果你在做量化策略、NLP应用或者对LLM Agent架构本身感兴趣这篇文章都值得看完。我会把设计思路、核心架构、决策流程、部署实操以及我踩过的坑完整拆一遍。文中的所有结论都基于我实际跑过的例子不是照着README念一遍。1. 为什么会出现TradingAgents从单模型到多智能体的必然转变1.1 单一大模型做交易分析的三个硬伤先说说在TradingAgents出现之前大部分人是怎么用LLM做交易分析的。常见做法是把一堆新闻、财报文本丢给ChatGPT然后让它“根据以上信息给出投资建议”。这种用法不是完全没用但问题非常明显总结下来有三个硬伤。第一个是单一推理路径。模型拿到信息后只走一条推理链。财报数据好一点、新闻情绪乐观一点模型就倾向唱多反过来就唱空。你很难让它在同一套输入里并行产生“看多”和“看空”两套完整逻辑。它不会主动给自己找反对意见除非你在prompt里强行要求。即便强行要求也容易流于形式模型给出来的反驳观点往往比较弱因为底层推理路径还是同一条。第二个硬伤是信息级联。这其实是行为金融学里的概念放到LLM场景也一样成立。当一条新闻权重特别高、或者某个信息在前面被反复强调时模型后面所有的分析都容易顺着那个方向走。举个例子如果你先给了它一条营收超预期的消息再问它技术面怎么看它很可能会用“基本面强劲”来佐证“技术面也会向好”——这个逻辑其实站不住脚但单模型的注意力机制很容易被前面的强信息带偏。真实交易场景里信息权重问题是要靠岗位分工来解决的。第三个硬伤是没法复核。同一个模型既做严谨的财务审计又做带主观博弈色彩的交易计划输出混在一起事后你根本分不清这个结论是依据哪条数据、哪条逻辑推出来的。一旦决策错误你没法复盘也没法改进流程。这三个硬伤叠加在一起决定了“单模型单prompt”这条路走不远。于是多智能体架构就来了。1.2 从真实交易公司学来的组织智慧TradingAgents的设计者没有自己去发明一套分析流程而是从华尔街真实投资机构里做了抽象。你看它那套角色划分几乎就是一家小型交易公司的标准组织架构。分析师层拆成四个方向基本面分析师、技术分析师、情绪分析师、市场分析师。这对应真实投研里的行业研究组、量化技术组、舆情监测组和宏观策略组。再往上研究员负责把分析师的结论综合成一份研究报告对应的是首席经济学家或者研究总监的职责。交易员负责具体的买卖计划风控官负责挑毛病投资组合经理做最终拍板。这套架构最关键的地方在于分析师之间互相看不到对方的报告细节每个人独立搜索数据、独立思考然后统一汇总。这样做能最大程度保留多空两种声音避免谁嗓门大谁说了算。真实交易公司里为什么要把研究和交易分开就是因为人性上很容易屁股决定脑袋——如果研究员自己想拿奖金就倾向于出乐观的报告。TradingAgents把这套制衡逻辑做成了代码里的角色隔离和投票机制。所以TradingAgents与其说是一个交易工具不如说是一套“用软件模拟成熟投研组织方法论”的试验框架。它能解决的问题本质上是组织学问题而不是单纯的预测问题。2. TradingAgents核心架构与角色分工拆解2.1 分析师四人组各吃各的数据各出各的报告分析师层是整个框架的输入端四个角色各自负责一个信息维度我逐个说。基本面分析师盯的是公司的“内在价值”。它拿到的数据主要包括财务报表、营收增速、利润率、估值倍数等。实际操作中它会重点看P/E和PEG这类指标——不是说PEG低就一定值得买而是它需要给出一个“当前价格相对公司盈利能力贵不贵”的判断。这个角色最容易犯的错误是陷入“好公司等于好股票”的陷阱所以框架里另外三个角色会来制衡它。技术分析师做的是量价行为分析。K线形态、移动均线、成交量、历史价格区间、支撑阻力位这些是它的主要输入。它输出的通常是趋势判断和关键价位。我的体会是技术分析师在趋势市里表现不错但在震荡市里容易左右打脸它的结论最好只作为辅助信号。情绪分析师负责抓舆情。它会去扫描新闻标题、Reddit、社交平台上的讨论热度判断市场情绪处于恐慌还是贪婪状态。情绪在真实交易中的权重其实很高——很多短期波动都是由情绪驱动的而不是基本面。这个角色的数据源比较杂噪声也大所以输出的置信度通常会设得比其他分析师低一些。市场分析师你也可以叫它宏观分析师关注的是个股之外的大环境大盘趋势、利率预期、行业周期、政策风向。它回答的问题不是“这家公司好不好”而是“现在这个时间点适不适合在这个行业里下注”。A股和美股市场环境差异很大这个角色对宏观因子的判断会直接影响到最终仓位的建议。四个分析师输出的是四种独立视角的分析报告它们之间没有互相干扰这是刻意的设计。2.2 决策层研究员、交易员、风控官、投资组合经理的权力制衡分析师出完报告真正拍板的过程在后半程而且层层都有制衡。研究员是第一道汇总关卡。它不是简单地把四份报告复制粘贴成一份而是要做交叉验证。比如基本面强烈看多、情绪面强烈看空研究员必须明确指出这个矛盾并且给出自己的权重判断。研报的产出质量取决于这个角色能否有效识别分析师之间的信息冲突——这其实是整个框架里最需要调试prompt的环节我试过几次研究员角色如果prompt写得不够细它就真的只是“粘贴工”。研究员之后是交易员。交易员拿到研报生成的是具体可执行的交易计划买入或者卖出的价位区间、止损位、仓位比例、持仓周期。注意交易员不应该修改分析结论它的职责只是把方向性的判断转化成带数字的计划。这里有个很有意思的设计交易员生成的仓位建议会受到“投资组合现有持仓”的约束所以即使分析结论再乐观交易员也不能给出一个加杠杆式的疯狂仓位。风控官是专门挑刺的角色。它拿到交易计划后会从极端情况做压力测试如果股价先下探止损位再反弹这个计划扛不扛得住如果单只股票仓位超过组合比例风险是不是过度集中风控官发现问题会把计划打回去让交易员重新做这个“打回重做”的循环机制是模拟真实交易中risk部门与trading desk之间的拉扯。最后是投资组合经理。它是最终决策人综合研报、交易计划和风控意见决定接受、修改还是否决整个方案。输出里会包含一个明确的信号买入、持有、卖出还是做空以及对应的置信度。2.3 投票机制为什么要拆成两套TradingAgents在决策阶段引入了投票机制这是我比较认可的设计。它把投票拆成两类全员投票和拆分投票。全员投票就是所有agent都对同一个问题“该做多还是做空”各投一票然后加权统计。这种方式简单直接适合在时间紧迫、需要快速收敛的场景下使用。它的缺点是容易让少数派的声音被淹没——如果7个agent里4个偏多最终结果就是偏多剩下3个偏空的观点在后续流程里基本不会再有发言权。拆分投票是更精细的做法。按分析风格分组——基本面组、技术面组、情绪面组、市场组分别投票再做组间比较。这个设计带来的一个直接好处是你能看出“到底是哪个维度的信号在主导结论”。如果基本面组倾向于做多、技术组中性、情绪组强烈看空你会很清楚地看到当前这个标的多空分歧的根源在哪里而不是得到一个模糊的加权结果。我跑过的例子里拆分投票往往能暴露出比预期更复杂的信息值得花时间去读。3. 从输入到输出一次完整决策的工作流推演3.1 数据层agent吃什么、怎么吃数据层是整个框架的地基。用户输入一个股票代码之后系统会把它分发给各条数据通道并开始采集信息。默认链路里行情和财务数据主要来自yfinance——这是Yahoo Finance的非官方Python接口做量化的人应该很熟了。它能拉到日线行情、财务报表、估值指标足够支撑基本面分析师和技术分析师的核心数据需求。新闻数据这条通道项目默认给了一些聚合方案你可以配置新闻API来输入公司相关的实时资讯情绪分析师会依赖这部分数据。如果你把Reddit抓取开关打开情绪分析师还能看到散户讨论热度的相关数据。这些数据在进入LLM之前并不是直接丢给agent的。框架会做一轮清洗和重组剔除重复新闻、截断过长文本、把数值型指标格式化再按各agent的角色需求分发。这一步很容易被低估但其实特别重要——LLM的输入上下文是有限的原始一坨行情数据直接塞进去既浪费token还会干扰模型对关键信息的注意力。我自己在二次开发的时候把数据清洗和摘要这一步单独拎出来优化过效果提升非常明显。还有个容易被忽略的点token缓存。如果你连续跑同一个标的框架会尝试复用前一轮的数据抓取结果避免重复调用数据接口。这在做批量回测或者策略调参的时候能节省大量时间。3.2 多轮会议推演从独立分析到最终决策的完整链条数据准备好了决策流程开始整个链路是串行推进的。第一步是分析师独立分析。四个分析师各自拿到自己的数据切片分别输出结构化报告每份报告包含目标价预测、方向判断、置信度和关键逻辑。第二步进入研究会议。研究员把几份报告综合成一份统一研报。如果多空分歧比较大比如基本面看多但情绪面强烈看空框架会触发一个近似于“多头/空头辩论”的机制——让持不同意见的分析师分别陈述理由然后重新投票。这个机制在真实投资委员会的讨论里经常出现代码里做成了条件触发不会每次都对跑节省成本的同时保留了关键机制。第三步是交易员会议。交易员根据研报生成交易计划明确入场区间、出场区间、止损和仓位。这里我给个实际数字参考在一次模拟试验中交易员给出的建议是“在85-88美元区间建仓30%仓位止损设在82美元以下目标价96美元”。这些数字不是凭空来的它会参考技术分析师给出的支撑位和目标价所以分析报告的质量会直接传导到交易计划里。第四步是风控会议。对交易计划做风险审查。要让这个环节真的起作用prompt里必须明确给出组合的约束条件——比如单股仓位上限、最大回撤容忍度。否则风控官比较容易划水所有计划都直接通过那就失去了意义。最后是投资组合经理做最终决策。它把前面的整个链条压缩成几条结论信号方向、置信度、风险提示和理由摘要。整个流程走完一个标的大概要耗时三到五分钟左右跑了多个标的之后你会发现时间主要花在LLM的串行调用上。3.3 输出层怎么读报告、怎么用报告最终输出是一份结构化的决策记录不是一句话结论那么简单。它包含信号方向买入/持有/卖出/做空、置信区间、目标价位、止损策略、各角色报告原文、投票分布以及风险官最后的审查意见。这套报告最有价值的点是可以回溯。比如某次决策最终是“买入”你翻报告就能看到到底是基本面分析师带的节奏还是情绪分析师先亮了绿灯。这种可追溯性是传统“让ChatGPT给个建议”完全做不到的。项目自带一个基于React和Plotly的网页Dashboard可以交互式查看所有步骤。我一般会在跑完一个标的之后先在Dashboard上过一遍投票分布和分歧点再下钻读各角色的完整报告最后才看最终信号。这个顺序可以帮助快速定位问题——到底是数据源质量差还是某个角色的prompt写得不到位。4. 多智能体方案值不值横向对比与设计取舍4.1 和单模型、通用Agent框架相比TradingAgents赢在哪先做个直白的对比。你直接调GPT-4o问“AAPL该怎么操作”单次成本不到一毛钱秒回TradingAgents跑一次完整流程要花几分钟消耗的token量是前者的几十倍。那为什么还要用后者答案是置信度和可复盘性。单模型调用就像你问一个全能型员工“这个项目该怎么做”它能给你一个看似合理的答案但你不清楚它考虑了哪些信息、忽略了哪些信息。TradingAgents则像一个项目评审会不同背景的专家从各自角度输出意见有答辩、有投票、有风控把关最后形成一份有据可查的会议纪要和决策文件。和AutoGen、MetaGPT这类通用多智能体框架比TradingAgents的差异在于它是垂直扎根在金融交易场景里的。通用框架给你角色定义能力但你自己要把“研报结构”“投票机制”“仓位管理”“风控约束”这套领域逻辑一层层实现出来。TradingAgents把这套东西直接内置了开箱即用。对于没有金融背景的开发者这种垂直整合的价值很大——你不需要懂完整的投研方法论也能跑通一条合理的决策链路。4.2 成本、延迟与可控性必须冷静看待的三个现实问题多智能体架构不是银弹TradingAgents的代价也很实在。第一是Token成本。一次完整流程的平均消耗我估测在几万到十几万token量级按主流模型的市场价格算单次分析大概几毛钱到几美元之间取决于你选的是哪一档模型。跑一次模拟、调参、再跑来回十几轮一天烧掉几十美元是很容易的事。我的建议是用便宜模型做方案探索用贵模型做最终决策别每一步都用最强档。第二是延迟。整个决策链路是串行的分析师四个角色跑完再跑研究员、交易员、风控、PM每一步都是实打实的LLM接口调用。一个标的跑下来三五分钟很常见做实时盘中决策基本不现实它更适合日线级别的分析或复盘场景。第三是可控性。LLM天然有随机性同一个标的、同样的参数跑两次最终结果可能不同。我在调试过程中就遇到过一次所有前置分析完全一致但最终PM的决策一次是“买入”、一次是“持有”区别只在置信度上差了3个百分点。解决方案有两个方向一是把temperature调低把随机性压下去二是在最终决策环节加一个基于规则的兜底逻辑——比如投票方向必须达到某个比例才允许输出强信号否则一律降级为“持有”。代码层面如何集成后面实操部分会细说。另外回测也是个难点。多智能体决策链路长逐笔回测的算力开销大而且历史时刻的数据快照很难完整重建——当时的新闻、当时的Reddit情绪这些数据事后都拿不到了。所以TradingAgents更适合做“策略逻辑验证”而不是“精确历史回测”。5. 实操部署在自己电脑上跑通TradingAgents5.1 环境准备与依赖安装先说我跑通的硬件和软件条件一台普通8GB内存的MacBook Pro就够用不需要GPU因为主要的计算都在LLM API端完成。第一步是拉代码装依赖。从GitHub把项目clone到本地然后用venv建一个独立的Python环境Python版本建议3.10以上我试过3.9也能跑但有些新依赖会做版本检查没必要给自己找麻烦。装依赖用pip装项目根目录的requirements.txt文件即可。这里有个小坑如果你是Python 3.11或更新的版本个别旧依赖可能会编译报错遇到这种情况优先看官方文档里有没有对应的版本修正说明不要自己去硬撑依赖库。安装完成之后千万别急着直接跑主程序先花两分钟确认yfinance能正常拉数据。在Python里执行一条简单的K线拉取命令能返回数据就说明网络和依赖没问题。这个检查能帮你把“数据源问题”和“框架问题”在第一时间切分开。5.2 配置LLM接口和数据源TradingAgents默认走OpenAI兼容的API接口配置方式是在环境变量里设置API Key然后在配置文件里指定模型名称。我实际测试过GPT-4o和几个开源模型的兼容接口整体都能跑通但效果差异确实存在——特别是研究员聚合汇报和风控审查这两个环节模型推理能力弱了之后输出会明显“变水”。模型名称这里给个实用建议分析师角色可以用性价比高的中档模型研究员和最终决策角色用强模型这样能有效控制整体成本。TradingAgents的架构上是支持每个角色独立配置模型的不要嫌麻烦这个功夫值得下。数据源配置里有两个开关需要留意。第一个是新闻数据源默认方案能跑通但数据质量一般如果你有付费的新闻API key建议接上效果提升明显第二个是Reddit相关的数据抓取开关默认是关闭的主要考虑到Reddit的接口限流比较严格。如果你只是为了跑通Demo保持默认就行。5.3 跑一个示例并读懂输出配置完成之后先跑一个代码示例或项目自带示例验证链路。第一次跑的时候耐心点每一步都会打印日志能看到“分析师开始分析”“研究员生成研报”“风控审查中”这类状态进度。输出结果会有两个入口日志文件和Dashboard界面。日志文件里能看到每次决策的完整细节Dashboard界面则适合直观查看价格图表和投票分布。第一次跑完建议先打开Dashboard看整体结果再回到日志里核对关键数字——不要只看最后的结论。我跑过AAPL和TSLA两个例子发现TSLA的情绪面数据噪声明显更大最终信号的分歧程度也高。这说明数据源质量对结论的影响非常大。如果你跑某个标的得到半信半疑的结果先别急着调策略检查一下该标的数据源抓取是否充分。5.4 二次开发怎么定制自己的交易策略风格跑通默认流程之后大部分人都会想改成自己的策略。这里给出两个成本最低的切入口。第一个是改角色prompt。每个角色的系统提示词是集中维护的你可以非常直接地改成自己偏好风格比如把技术分析师的参数体系改成自己常用的均线组合把风控官的回撤容忍度从10%改到5%。改完之后跑一两次看效果这是最快速的迭代路径。第二个是加规则兜底。由于LLM输出的不稳定性我强烈建议在最终决策输出前加一条硬编码判断逻辑比如“只有投票分布中看多比例超过60%才允许输出买入信号否则一律降级为持有”。这等于给AI决策上了一道人工保险丝。有这道保险丝兜底你就可以放心大胆地去调prompt而不用怕AI抽风给你一个离谱的满仓建议。我自己的经验是先用默认参数跑通再逐个角色去调整prompt风格每次只动一个变量跑三到五次对比结果效果稳定之后再进行下一项调整。切忌一次改多个地方否则你永远不知道是哪个改动带来了好结果。6. 常见问题与避坑指南6.1 问题速查表我在实际操作中遇到过不少问题挑几个典型的整理成速查表供你排查时参考。症状可能原因排查和处理思路运行几分钟后报API限流错误并发请求过多触发限流调低并发数在每次LLM请求之间加延时分析报告内容明显偏题角色的系统prompt与模型能力不匹配更换更强的模型或精简prompt减少干扰信息不同批次的决策结果抖动大temperature设置偏高导致随机性过大把temperature降到0.2以下也可以在提示里要求“输出稳定且确定性强的结果”最终决策频繁输出“持有”兜底规则过于严格或投票比例阈值设置偏高下调阈值或检查是否所有前置步骤逻辑正常数据拉取失败或字段缺失yfinance接口波动或网络问题检查网络换日线数据先测试必要时加缓存和重试逻辑表格里列的这些场景我基本都真实遇到过。特别是API限流在我同时跑多个标的的时候几乎是必现的一定要做请求间隔和并发控制。6.2 新手最容易踩的三个坑第一个坑是跳过数据质量检查直接上策略。很多新手把代码跑通之后立刻就换自己的股票池结果出来的报告质量很差然后开始怀疑框架不行。大概率不是框架的问题而是新闻数据没配置好、财务数据字段缺失。我会花至少半天时间把数据链路摸清楚确认每个角色拿到的数据是合理的再开始分析。第二个坑是过度关注单次结论的准确与否。TradingAgents评估一个标的是不是赚钱不是用单次预测来衡量的而是看整个“研究—决策—复盘”链路是否可复现、可追溯、可优化。单次对了不代表你的配置好单次错了也不代表框架没用。真正要做的是记录下来对比下次调整后的变化。第三个坑是让多个角色共享同一个API Key时遇到预算失控。多角色串行跑token消耗翻倍往往超出心理预期。我的建议是在API后台设置一个每日消费上限跑之前先估算一下这一轮大概要花多少钱。我自己跑十来个标的的探索实验时一天烧掉几十美元是真实发生过的事情别不当回事。6.3 一些实战心得最后说几点没法在文档里找到的体会。第一TradingAgents最核心的价值不是“预测准”而是“过程可复盘”。它把一次模糊的投资决策变成了生产线原料是数据中间品是分析报告、研讨记录和风控意见成品是一个带置信度的决策信号和各环节的存档。这个存档对提升自己的判断力帮助很大比单次输赢值钱得多。第二用中文跑prompt完全可行。我试着把几个角色的系统提示词翻译成中文得到的分析报告在逻辑连贯性上完全不输英文版本对国内用户来说反而更好读、更好调。如果你打算这么做记得数据结构里的字段名不要翻译保留原文否则后续解析会出问题。第三尽量别用它做短线。受延迟和数据源的限制它在日线级别以上的决策场景里表现更可控。我自己会更倾向于把它当“团队研究助理”来用——帮你在几分钟内把一只股票的基本面、技术面、情绪面和宏观环境系统过一遍给出一个结构化的参考框架。真正的买卖决定我会再做人工复核。说到底TradingAgents是把投研方法论固化成代码的框架它不会替你做决定但它能逼着你的每一次决策都摆事实、讲逻辑、留痕迹。考虑用它来做什么之前先想清楚这一点你会用得比大多数人都好。