ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于多智能体与大语言模型的虚拟投资机构:架构设计与工程实践

基于多智能体与大语言模型的虚拟投资机构:架构设计与工程实践

1. 从"一个人扛下所有研究"到"虚拟团队分工协作"的转变逻辑

投资研究这件事,做过的人都知道,它本质上是一个"信息密度极高、决策链条极长"的活儿。一个完整的投研流程,从宏观环境扫描、行业景气度跟踪、公司基本面拆解,到估值建模、风险压力测试、组合再平衡,中间涉及的数据源少说几十个,涉及的推理环节更是层层嵌套。传统模式下,这些工作要么靠一个分析师从头跟到尾,要么靠一个团队分工但沟通成本极高。问题在于,人的精力是有限的,一个人不可能同时精通宏观、行业、财务、量化、风控,而团队协作又受制于会议、邮件、版本管理这些"摩擦成本"。

"虚拟投资机构"这个概念,正是冲着这个痛点来的。它不是简单地把ChatGPT接进Excel里做几个公式,而是试图用多智能体系统加大语言模型,把投研流程里的不同角色——宏观分析师、行业研究员、财务建模师、风控官、组合经理——拆成独立的智能体,让它们各自带着自己的"专业视角"和"工具集"去干活,最后通过一个协调机制把结论汇总成可执行的决策建议。你可以把它理解成:以前你需要招一个十人团队才能覆盖的投研链条,现在用一套智能体编排框架就能跑起来,而且每个"虚拟员工"都可以7×24小时在线,不会因为情绪波动影响判断。

这个方向之所以在最近一年突然热起来,跟大语言模型能力的跃迁直接相关。早期的语言模型只能做文本生成,你让它算个DCF它都能给你编出个看起来像模像样但数字全错的表格。但现在的大模型在工具调用、结构化输出、多步推理这几个维度上已经有了质的变化。它可以在需要的时候去调用Python算估值、去查数据库拉财报、去调API获取实时行情,然后把结果整合成一段有逻辑的分析。这就让"虚拟投资机构"从概念演示变成了可以真正跑起来的工程系统。

适合读这篇内容的人,我大致分三类:第一类是对AI在金融领域落地感兴趣的工程师,想知道多智能体到底怎么编排、工具怎么接;第二类是投研从业者,想了解这套东西能不能真的帮自己省时间、补盲区;第三类是学生或者刚入行的朋友,想找一个有足够深度、又能写进简历的项目方向。不管你是哪一类,下面的内容都会从架构设计、角色拆分、工具链搭建、协同机制、实测踩坑这几个角度,把这件事讲透。

2. 多智能体投研系统的角色拆分与协作骨架

2.1 为什么不能用一个"全能大模型"包打天下

很多人第一反应是:既然大模型这么强,那我直接给它一段prompt,让它"扮演一个资深投资分析师,帮我分析这家公司",不就完了?我实测过,这条路在简单场景下能跑通,但一旦进入真实投研流程,问题立刻暴露。

首先是上下文窗口的挤压。一份完整的投研分析需要读年报、读招股书、读行业研报、读新闻舆情,这些材料加起来轻松超过几十万字。你把它们全部塞进一个prompt里,模型要么截断丢失信息,要么在长上下文里"迷失中间",对关键数据的召回率大幅下降。其次是角色冲突。一个模型同时扮演"乐观的行业研究员"和"保守的风控官",它的输出会倾向于折中,既不敢大胆看多,也不敢坚决看空,最后给你一段四平八稳但毫无信息量的废话。第三是工具调用的混乱。当模型既要算财务比率、又要查行情、又要做情感分析时,它很容易在工具选择上出错,比如该用DCF的时候去调了相对估值。

多智能体架构的核心思路,就是把"角色"和"工具"绑定,让每个智能体只关心自己那一亩三分地。宏观智能体只负责利率、通胀、汇率、政策这些变量,它的工具集就是宏观数据库和新闻API;财务智能体只负责三张表和比率计算,它的工具集就是Python计算器和财报解析器;风控智能体只负责识别尾部风险和相关性突变,它的工具集就是压力测试脚本和协方差矩阵计算。这样每个智能体的上下文都保持在可控范围内,推理路径也更清晰。

2.2 一个可落地的角色划分方案

基于我自己的实践和公开的一些框架设计,下面这套角色划分是比较稳妥的起点:

智能体角色核心职责关键工具输出物
宏观分析师跟踪利率、通胀、汇率、政策信号宏观数据API、新闻摘要器宏观环境评分与情景假设
行业研究员分析行业景气度、竞争格局、产业链行业数据库、研报解析器行业评级与关键驱动因子
财务建模师拆解三张表、计算比率、做估值Python计算器、财报解析器财务健康度评分与估值区间
舆情分析师抓取新闻、社交讨论、公告情感情感分析模型、爬虫工具舆情热度与情感倾向
风控官识别尾部风险、相关性突变、集中度压力测试脚本、协方差计算风险等级与预警信号
组合经理汇总各方输入、做仓位建议优化器、约束求解器最终配置建议与理由

这套划分的好处是,每个角色的输出都是结构化的,比如宏观分析师输出的是一个包含"增长、通胀、流动性、风险偏好"四个维度的评分卡,而不是一段散文。结构化输出让下游的组合经理智能体可以稳定地解析和加权,不会因为某个智能体"今天心情不好"就给出格式错乱的结果。

2.3 协作骨架:从"串行流水线"到"带反馈的并行网络"

最简单的协作方式是串行:宏观→行业→财务→风控→组合,一条线走到底。这种方式实现简单,但有个致命缺陷:前面的错误会一路传导到后面。如果宏观智能体把利率方向判断反了,后面所有基于这个假设的估值都会错得离谱。

更稳的做法是带反馈的并行网络。具体来说,宏观、行业、财务、舆情四个智能体并行工作,各自独立产出结论;然后风控官拿到这四份结论后,不是简单接受,而是做一次"交叉验证"——比如它会检查行业研究员的乐观假设是否与宏观分析师的流动性判断矛盾,如果矛盾就触发一次"再讨论"回合,让相关智能体重新审视自己的假设。这个再讨论回合可以设置最大轮次(通常2-3轮就够了),避免无限循环。

组合经理智能体则在风控官确认"各方假设基本自洽"之后才启动,它拿到的是经过交叉验证的结论集,再结合预设的约束条件(比如单一行业不超过30%、单一标的不超过10%)做优化。这样整个系统的鲁棒性会明显高于纯串行架构。

提示:再讨论回合的触发条件要设计得保守一些。我的经验是,只有当两个智能体的结论在"方向性"上矛盾时才触发,比如一个说"看多"一个说"看空"。如果只是程度差异,比如一个说"强烈看多"一个说"温和看多",就不必触发,否则系统会陷入无休止的争论。

3. 大语言模型在投研场景里的能力边界与调用策略

3.1 哪些活儿适合交给大模型,哪些必须用传统工具

这是整个系统设计里最关键的一个判断。我见过不少项目失败,就是因为把不该交给大模型的活儿硬塞给它。下面这张表是我踩坑之后总结出来的分工原则:

任务类型推荐方案理由
文本摘要与信息抽取大语言模型这是它的强项,能从非结构化文本里稳定提取结构化字段
财务比率计算Python脚本大模型算数不可靠,必须用确定性计算
估值建模(DCF等)Python脚本+大模型解释计算交给脚本,假设合理性讨论交给模型
情感分析微调后的小模型或大模型大模型零样本效果已经不错,但领域微调后更稳
多步推理与情景分析大语言模型这是它的核心价值,能处理"如果...那么..."的链条
实时行情获取API调用大模型没有实时数据,必须外接
风险因子相关性计算统计脚本纯数学计算,不需要模型介入

核心原则就一条:确定性计算交给代码,模糊推理交给模型。你让大模型去算一个加权平均,它可能给你算出个看起来差不多但就是不对的数字;你让Python去判断"这段新闻对股价是利好还是利空",它又做不了。各司其职,系统才稳。

3.2 提示词工程在投研智能体里的特殊要求

投研场景的提示词和普通聊天机器人的提示词有本质区别。普通场景你只要模型"说人话"就行,投研场景你要求模型输出可被下游程序解析的结构化结果,同时还要保留推理链条以便审计。

我的做法是采用"三段式"提示词结构:

第一段是角色定义与约束,明确告诉模型它是谁、它的知识边界在哪、它不能做什么。比如宏观分析师的提示词里会写:"你只负责分析宏观经济变量,不要对具体公司发表意见。如果你的结论需要用到公司层面数据,请明确标注'需要财务智能体补充'。"

第二段是输出格式规范,用JSON Schema或者明确的字段列表告诉模型输出应该长什么样。比如要求它输出一个包含growth_score、inflation_score、liquidity_score、risk_appetite_score四个字段的JSON,每个字段是0-100的整数,外加一个reasoning字段写推理过程。

第三段是少样本示例,给两到三个"输入-输出"对,让模型模仿格式。这一步对稳定性提升非常明显,尤其是当你的字段定义比较抽象时,示例比文字描述管用得多。

注意:不要指望一次提示词就能稳定。我的经验是,任何投研智能体的提示词都要经过至少20-30次真实数据的迭代,才能把输出格式的出错率压到5%以下。前期一定要加一个"格式校验层",发现输出不符合Schema就自动重试,重试两次还不行就降级到人工处理。

3.3 本地部署还是API调用:算力约束下的现实选择

热词里出现了"本地部署大语言模型"和"算力约束下提升大语言模型能力的资源配置建模",这说明很多人关心一个问题:我到底该用API还是自己部署?

这个问题没有标准答案,取决于你的数据敏感度和预算。如果投研数据涉及未公开信息,那本地部署是硬要求;如果只是用公开数据做研究,API调用在成本和效果上通常更优。但本地部署有个容易被忽略的坑:量化后的模型在结构化输出任务上性能下降明显。我实测过,一个70B的模型量化到4bit之后,在财务字段抽取任务上的准确率会从92%掉到78%左右,这个损失在投研场景里是不可接受的。

折中方案是混合部署:把最关键的推理任务(比如组合经理解析各方结论)放在API或高精度本地实例上,把相对边缘的任务(比如新闻摘要)放在量化后的本地模型上。这样既控制了成本,又保住了核心环节的可靠性。

4. 工具链搭建:从数据接入到结果落地的完整链路

4.1 数据层:投研智能体的"粮草"怎么备

多智能体系统再聪明,没有数据也是空转。投研场景的数据源大致分四类:行情数据(价格、成交量、波动率)、基本面数据(财报、公告、股东变动)、文本数据(新闻、研报、社交讨论)、另类数据(卫星图像、信用卡流水、招聘信息等)。

我的建议是,初期不要贪多,先把前三类跑通。行情数据可以用公开的金融数据接口,基本面数据可以从交易所公告和财报PDF里解析,文本数据用新闻API加爬虫。关键是统一数据格式,让所有智能体都从同一个"数据总线"里取数,而不是各自去调不同的接口。我见过一个项目,宏观智能体从A源拿利率,财务智能体从B源拿利率,结果两个利率对不上,整个分析就乱了。

数据层的另一个重点是时间对齐。投研分析最怕"未来函数",就是你在分析2023年Q2的时候不小心用到了2023年Q3才发布的数据。多智能体系统里每个智能体都要带一个"时间戳感知"的取数逻辑,确保它拿到的数据在决策时点是可得的。这个细节在回测环节尤其致命,很多看起来很好的策略,一上真实回测就崩,就是因为时间对齐没做好。

4.2 编排层:让智能体"有序吵架"而不是"无序混乱"

编排层是整个系统的大脑,它决定哪个智能体什么时候启动、拿到什么输入、输出给谁。目前主流的编排方式有两种:基于图的编排和基于对话的编排。

基于图的编排(比如用LangGraph这类框架)适合流程相对固定的场景,你把每个智能体当成一个节点,用边定义数据流向,控制力强、可审计性好。基于对话的编排(比如让智能体之间互相发消息)适合探索性强的场景,灵活但容易失控,智能体可能聊着聊着就跑题了。

投研场景我推荐图编排为主、对话编排为辅。主流程用图固定下来,保证每次分析都走同样的路径;在"再讨论"环节引入对话机制,让相关智能体可以自由交换意见,但设置轮次上限和话题约束。

编排层还要负责状态管理。每个智能体的输出、每次再讨论的记录、最终决策的依据,都要持久化存储。这不仅是审计需要,也是系统迭代的基础——你可以回看哪些环节经常出错,然后针对性优化。

4.3 输出层:从"一堆分析"到"一个可执行建议"

很多多智能体项目最后败在输出层:前面分析得头头是道,最后给用户的是一段三千字的散文,用户看完还是不知道该怎么办。投研系统的输出必须是可执行的,具体来说要包含:明确的配置建议(买什么、卖什么、仓位多少)、建议的理由(基于哪些智能体的哪些结论)、风险提示(哪些假设如果不成立建议会失效)、以及后续跟踪指标(哪些数据变化时需要重新评估)。

我习惯让组合经理智能体输出一个"决策卡片",格式大概是:一句话结论、三到五条核心逻辑、两到三条主要风险、一个"如果...则..."的触发条件列表。这样用户扫一眼就能抓住重点,需要细节时再展开看各智能体的原始分析。

5. 实测中暴露的问题与我的应对方案

5.1 智能体"过度自信"与"幻觉传染"

这是我在实测中遇到的最棘手的问题。大语言模型有个通病:它对自己不确定的事情也会用很确定的语气说出来。在单模型场景下,这最多导致一段错误分析;但在多智能体场景下,一个智能体的错误结论会被下游智能体当成"事实"接受,然后在此基础上继续推理,错误就被放大了。我称之为"幻觉传染"。

应对方案有三层。第一层是强制标注置信度,要求每个智能体在输出结论时附带一个0-1的置信度分数,并且明确写出"这个结论依赖哪些假设"。第二层是交叉验证机制,风控官智能体在汇总时,会检查各智能体的结论是否互相矛盾,如果矛盾就触发再讨论。第三层是外部事实核查,对于关键数字(比如某公司的营收),系统会自动去数据源核对,而不是直接采信智能体的输出。

实测下来,这三层机制能把"幻觉传染"导致的严重错误率降低大约70%。但要注意,交叉验证本身也会消耗算力和时间,所以只对关键结论做,不要每个细节都验。

5.2 再讨论回合的"无限循环"陷阱

前面提到再讨论回合要设轮次上限,这个教训是我用真金白银换来的。早期版本里,两个智能体因为对某个假设的看法不同,来回讨论了十几轮,每轮都消耗大量token,最后还没达成一致。更糟的是,它们讨论的内容开始重复,只是换了个说法。

后来我加了三个约束:轮次上限设为3轮、每轮必须引入新证据(不能只是重复之前的论点)、如果3轮后仍不一致,就把分歧点明确记录下来,交给组合经理做"分歧下的决策"。最后这条很关键——投研本来就是在不确定性下做决策,有分歧是正常的,不需要强行统一。组合经理可以基于"如果宏观派对了会怎样、如果行业派对了会怎样"做情景分析,反而比强行统一结论更有价值。

5.3 算力成本与响应时间的平衡

多智能体系统的算力消耗是单模型的数倍甚至数十倍。我实测过一个包含6个智能体、平均每个智能体调用2次工具、再讨论2轮的流程,单次完整分析的token消耗大约在15万到20万之间。如果用高端API,单次成本不低;如果本地部署,响应时间可能超过5分钟。

优化方向有几个:缓存中间结果(宏观数据一天更新一次,没必要每次分析都重新拉)、并行化独立环节(宏观、行业、财务、舆情可以同时跑)、按需触发再讨论(只在关键分歧时触发,而不是每次都跑满3轮)、用小模型做预处理(比如用一个小模型先把新闻过滤一遍,只把相关新闻喂给大模型)。这些优化叠加起来,能把单次分析的成本和时间都压到可接受范围内。

6. 人机协同:虚拟投资机构里"人"应该站在哪个位置

6.1 人不是被替代者,而是"目标设定者"和"最终拍板者"

聊到虚拟投资机构,很多人第一反应是"分析师要失业了"。我的看法恰恰相反:这套系统替代的是信息收集、初步整理、常规计算这些重复劳动,但目标设定、假设判断、最终决策这些环节,人的价值反而更突出了。

具体来说,人在这套系统里承担三个不可替代的角色。第一是目标设定:你让系统分析什么、用什么时间维度、关注哪些风险,这些是人的判断。系统不会自己知道"我现在更关心回撤控制而不是收益弹性"。第二是假设校准:系统给出的宏观假设、行业假设,需要人来判断是否合理,尤其是在市场出现极端变化时,历史数据推出来的假设可能完全失效。第三是最终拍板:系统给的是建议,不是命令。仓位调不调、调多少,最终要人来决定,并且承担后果。

6.2 人机接口的设计:让协作"无摩擦"

人机协同的体验好坏,很大程度上取决于接口设计。我见过一些系统,分析结果输出成一份几十页的PDF,人要看半天才能找到关键结论,这种协作就是"有摩擦"的。

好的接口应该做到:结论前置(第一屏就是核心建议和理由)、可下钻(想看细节可以点开对应智能体的原始分析)、可干预(人可以在任何环节插入自己的判断,比如"我认为这个宏观假设太乐观了,请用保守情景重新跑一遍")、可追溯(每个结论都能追溯到是哪个智能体基于哪些数据得出的)。

我自己的做法是做一个简单的Web界面,左边是决策卡片,右边是各智能体的分析流,底部有一个输入框可以随时给系统"下指令"。这个界面不复杂,但用起来很顺手,因为所有信息都在一屏之内,不需要来回切换。

6.3 信任的建立:从"辅助"到"自主"的渐进路径

人对AI系统的信任不是一蹴而就的。我的建议是分三个阶段推进。第一阶段是辅助模式:系统只做信息整理和初步分析,所有结论都标注"仅供参考",人做全部决策。第二阶段是建议模式:系统给出明确建议,人可以选择采纳或修改,系统记录人的修改并学习。第三阶段是自主模式:在预设的约束范围内,系统可以自主执行一些低风险操作,人只做例外处理。

每个阶段至少跑一个月,积累足够的案例后再进入下一阶段。跳过阶段直接上自主模式,一旦出问题,人对系统的信任会瞬间崩塌,再想重建就难了。

7. 这套系统后续可以怎么扩展

如果你已经把基础版本跑通了,下面几个方向是可以继续深挖的。第一个方向是加入记忆机制,让系统记住历史上每次分析的结论和实际结果,形成一个"经验库",下次遇到类似情景时可以调用。第二个方向是多市场覆盖,现在很多系统只做A股,其实这套架构稍作调整就能覆盖港股、美股甚至商品市场,关键是数据源和交易规则的适配。第三个方向是实时化,现在的系统大多是"按需触发",未来可以做成"事件驱动",比如某公司发布公告后自动触发一次分析。第四个方向是可解释性增强,让系统不仅给出结论,还能用自然语言解释"为什么这个结论是可靠的",这对合规和内部沟通都很重要。

我自己在实际操作中的体会是,这套系统最大的价值不在于它有多"聪明",而在于它强迫你把投研流程结构化。以前很多分析是"凭感觉"的,现在你必须把每个环节的输入、输出、判断标准都明确写下来,这个梳理过程本身就会让你的投资框架变得更清晰。系统跑得好不好,很大程度上取决于你把这个框架定义得清不清楚。所以别急着追求多智能体、多复杂,先把一个角色的流程跑通、跑稳,再逐步扩展,这条路走下来会踏实很多。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进