
先说个让我印象很深的场景我把同一只股票的公开资料丢给三个不同的AI让它们各自写一份简短分析。三个模型给出的结论方向几乎一样连理由的措辞都像同一个模子里刻出来的。那一刻我意识到如果AI只是把市场主流叙事复读一遍那不叫辅助决策那叫自我确认。所以我后来动手搞了一个会辩论的AI专门用在A股投研复盘场景里——不是让AI给一个唯一结论而是让AI自己拆成多头和空头围绕同一个标的吵给我看。这篇文章就把这个项目的完整思路、搭建过程、实测结果和踩坑记录都摊开讲。1. 先厘清需求为什么投研场景需要对抗性输出1.1 传统AI分析的死穴投研场景里最不缺的就是观点每个标的都有人看多有人看空。问题在于主流AI大模型的训练目标天然倾向于给出一个确定性结论它会用流畅的逻辑把某一种可能性讲得像事实。你问它某板块有没有机会它大概率会先复述一遍行业空间、需求增量然后给出一个模糊但正向的结论。这种输出有用吗对新手可能有用但对真正要靠决策吃饭的人反而危险。危险在哪在于它把决策的反面藏起来了。市场定价从来不是单一逻辑在推动的任何一个看多逻辑背后都有对应的风险变量任何一个看空理由也都有被证伪的可能性。如果你只看到AI给的单边结论就会不自觉地忽略反面证据这在行为金融学里叫确认偏误。散户亏钱的大部分原因不是不懂基本面而是只看自己想看的那部分信息。让AI打一架本质上就是用对抗性输出来对冲这种认知偏见。1.2 辩论是给结论做压力测试我当时想做的是让AI自己跟自己吵。整套系统里至少有多个Agent一个负责搜集和构建看多逻辑一个负责找漏洞看空还有一个当裁判。它们共享同一批输入资料但被强制要求站在对立立场上分别给出有数据支撑的论证。最终由裁决模块把两边的论据摊平、打分、输出一个带风险提示的综合研判。这个思路在信息安全领域叫红队测试没法保证一次设计百分之百正确那就派一帮人专门想办法攻破它。投研判断也一样与其等着市场来打脸不如让AI先替你把看空逻辑完整地推演一遍。这也是为什么我认为这个项目的核心不是多几个AI跑几个答案而是把一个单点判断变成一个压力测试流程。这里需要强调AI辩论不是抬杠。随便让两个模型互怼最后就是车轱辘话来回转。关键是辩论结构、立场约束、论据校验和裁决标准这些都要在系统层面对齐。后面我会逐个展开。2. 系统架构数据层、辩论层、裁决层三层怎么分工2.1 三层架构的整体链路先说整体链路。整个系统分三层数据层负责从公开渠道采集个股或板块相关的行情快照、公告、新闻、券商研报摘要、资金流向等统一清洗后写入临时知识库。辩论层包含多个大模型Agent在共享知识库基础上做检索增强按角色的立场要求生成观点并允许它们互相质疑、回应。裁决层将两边论点结构化提取做事实校验与逻辑评分结合风险标签输出综合报告和置信度。我用这个链路跑下来的感觉很直观数据层决定辩论素材的真实性辩论层决定表达质量裁决层决定最后落在纸面上的结论有没有参考价值。三层缺一不可。2.2 数据源选择宁可少不可脏A股相关的公开数据源其实很丰富但很多源不能直接喂给模型。行情接口拿到的原始数据是数字表格公告原文又太长新闻标题噪音很大。我的做法是分三类处理。第一类是结构性数据比如近30日涨跌幅、成交量、市盈率、市净率、净利润同比增速等直接按指标名和数值存成结构化字段供Agent引用。第二类是公告和研报摘要先用拆段摘要模型压成每段不超过200字的事实卡片保留时间、主体、数字丢掉形容词。第三类是新闻资讯只提取事件要素比如某公司发布新产品某行业出口数据超预期每条标注事件时间和来源。这里有一个很重要的原则宁可数据少不可数据脏。如果知识库里混进了错误的时间或者未经证实的传闻再好的辩论框架也会被带偏。所以我每天清算一次数据源把重复新闻、水军稿、带明显荐股倾向的软文全部过滤掉。数据量少一点没关系辩论会变短但至少不会凭空跑偏。2.3 模型选型API驱动快速验证本地化部署做正式环境模型选择上第一阶段用市面上主流的开源大模型配合API跑通流程第二阶段因为涉及频繁的上下文检索和角色扮演我用量化后的开源模型在本地部署。这么做有几个好处数据不用离开内网、推理成本可控、prompt调整可以随时测试。具体怎么选我的经验是辩论Agent对长文本理解的要求比写作要求更高所以模型至少要支持8K以上上下文裁决模块要做结构化输出模型需要稳定地输出JSON格式。如果模型经常在长对话中忘记自己的立场那基本不能用。我自己测试下来中文分析场景里开源模型的表现已经足够撑起这套系统关键是上下文窗口和指令遵循能力。关于算力如果只是个人研究用一张消费级显卡就能跑7B到14B参数量模型整个辩论流程控制在分钟级如果是团队正式用再考虑更大的模型或多卡推理服务。这个项目的算力门槛并不高真正的瓶颈反而是提示词设计和数据清洗。3. 提示词设计怎么让AI认真吵架而不是各说各话3.1 多空角色的约束条件提示词是整个项目里最需要反复调的部分。我给每个Agent写了一段角色说明书里面不是简单写你是一个看多的人而是明确约束信息偏好和输出结构。例如多头Agent的约束大致是优先关注需求增长、盈利改善、估值修复、市场情绪回暖等正向信号每一条论点必须引用知识库中的事实和数字不允许用可能或许堆砌当空头提出质疑时必须正面回应并说明反驳的充分条件。空头Agent的约束则相反更关注估值透支、增速放缓、技术迭代不确定性、资金面松动等反向信号同样要求引用事实面对多方反驳时不允许回避必须指出对方论证中最脆弱的一环。这里的关键在于约束理由而不是约束结论。我不告诉AI对某个标的一定要看多而是告诉它你在本轮扮演一名风险偏好较低的策略师你需要优先关注基本面中的隐患。这样即使面对一只基本面确实优秀的标的空方也能找到增速预期是否已过度定价这类真问题而不是为了唱空而编造理由。维度多方Agent空方Agent信息偏好盈利增长、需求增量、估值修复估值透支、增速放缓、替代风险引用要求每条论点必须有数据来源每条论点必须有数据来源面对质疑正面回应说明反驳的充分条件指出对方论证中最脆弱的一环底线不得编造未提供的利好不得编造未提供的利空下面给一个简化版角色提示词供参考你是一名A股策略研究员当前被指派为空方。 你需要围绕给定的标的从估值、盈利、行业竞争、资金面等维度 找出看空或防守的理由。要求 1. 所有理由必须基于提供的知识库内容引用数据时标注来源 2. 至少提出3条独立论据并指出多方论证中最容易被证伪的一个假设 3. 不使用预测性断言不编造未提供的新信息。3.2 用检索增强保证论据时效大模型自身知识截止时间是一个先天短板。A股市场的很多信息是高度时效性的比如某家公司发了最新季报、某行业出口数据突然变化模型不可能知道。如果辩论内容停留在训练数据里那结论基本上就没有参考价值。所以系统里做了检索增强生成RAG每次辩论前先把标的相关的最新结构化数据、公告卡片、新闻事件抽取结果拼装成一个本轮知识包Agent只能基于知识包里的内容回答越界引用会被拦截。同时给每条引用加时间戳确保多方和空方用的是同一版数据。这一步非常关键因为很多AI分析不靠谱的情况不是模型不行而是输入数据本身就是过时的。3.3 裁决器不投票按论证质量打分双方辩完以后裁决模块负责输出最终结论。这个模块我做了两层第一层是做结构化提取把两边的论点拆成论据、数据来源、逻辑链、风险点四个字段第二层是打分重点看三条标准。第一论据是否有可验证的数据支撑而不是空泛表态。第二逻辑链是否闭环有没有偷换概念或跳跃推导。第三是否主动识别出对方观点的风险变量且回应得是否具体。三个分数加权求和后再叠加上一轮共识度判断如果两方在最核心的变量上一致比如都认为短期增速会回落那这个共识会被标记为高置信度信号如果两方在核心变量上分歧极大则输出低置信度警告。裁决器输出的不是多头赢了或空头赢了而是把胜负拆成几个维度。这对投研来说才是真正有用的信息很多时候你看好一个标的但空方提出的某一条论据确实有道理那这条论据就应该变成你的风控指标。4. 复盘一次实际运行某新能源标的的AI辩论全记录4.1 输入样本与知识包说再多架构不如看一次真实的运行记录。这里用一个去偏移后的案例某新能源材料类标的系统抓取了过去60个交易日行情、最近一期财报摘要、三条行业新闻和两条券商研报摘要组成本轮辩论的知识包。基本背景是标的过去一年涨幅不小近期出现回调财报显示营收和净利润仍在增长但同比增速出现下滑行业层面有新技术路线讨论目前尚未规模化。4.2 多空两方的核心论点多头Agent的核心论点有三条第一从盈利数据看公司净利润绝对值和毛利率仍处于高位说明核心业务没有恶化第二行业需求端仍有增量短期回调更多是情绪面扰动第三从估值看经过回调之后市盈率已经从前高明显回落安全边际提高。空方Agent给出的回应则是第一增速下滑是最值得警惕的信号市场买的是边际变化不是绝对值第二知识包里提到的新技术路线虽然尚未规模化但一旦被验证现有产能的价值可能被重新定价第三资金面数据显示近期主力资金净流出说明机构可能正在调仓。随后多空又各有一次追问。空方追问多头如果下一季财报增速进一步下滑到零附近你的估值安全边际假设是否还能成立多头回应称毛利率高位的条件下增速下滑存在周期原因若能确认周期底部当前估值可以消化但也承认如果周期判断错误安全边际假设会失效。4.3 裁决结果与事后验证裁决模块给出的结论是中性偏谨慎置信度中等。逻辑在于空方指出的两个风险变量也就是增速边际变化和新路线替代都有知识包内数据支持且多方在回应时暴露出一处需要额外验证的假设——周期底部的判断。同时裁决器也给了多方一个肯定核心盈利质量数据确实没有恶化因此不应看空至趋势反转级别。这个结论本身不算惊艳惊艳的是它的结构性输出系统把决定最终态度的关键假设单独列了出来。一周后该标的又发了一份月度经营数据增速继续小幅回落股价随之下行。虽然我不建议把单次结果当作系统能力的证明但至少这一次AI通过辩论暴露出来的关键假设和市场的后续反应是一致的。5. 实测中的坑三个最容易翻车的地方5.1 模型会跟着输入情绪倒戈第一个坑非常反直觉明明设定好了角色多头Agent却可能被新闻的负面标题带偏开始自我怀疑。原因是新闻抽取后的文本本身带了浓烈的主观情绪比如某公司陷入前所未有困境这种表述权重太高模型就把情绪当成了事实。解决方案是双重的。一方面对输入文本做情绪剥离处理把带有明确情绪色彩的词替换成中性描述另一方面给多方Agent注入一份独立的长期基本面摘要让它有能力抵抗短期新闻带来的情绪干扰。这个坑提醒我模型的表演能力会受上下文情绪影响不能假设它完全忠于角色设定。5.2 知识时效性导致的用旧信息辩论第二个坑是数据新鲜度。有段时间系统抓取公告的接口出了故障延迟了两天更新结果辩论双方还在用旧季报数据争论场面非常尴尬。A股的信息消化周期很短一条重要信息两天不更新结论基本就报废了。我把这个问题上升到系统层面知识包的生成时间会作为元数据写入辩论开始时校验所有知识包的时间戳如果关键数据超过24小时未更新系统会直接拒绝生成辩论报告并提示需要先刷新数据。强制失败比给出一个看似合理但实际上过期的结论好得多。5.3 幻觉引用是最大隐患第三个坑也是大模型的老毛病幻觉引用。空方Agent一本正经地说据某券商研究所报告指出该技术路线成本下降30%但知识包里根本没有这条报告。这种引用在单条AI回答里不容易被察觉但放在辩论场景里因为它听上去非常具体会给裁决模块和读者带来虚假的确定感。我的处理办法是所有论点进入裁决层之前先做一遍引用回溯校验把论据中提到的数字和来源在知识包里做模糊匹配匹配不到的直接打上未验证引用标签并降低该论据的分数。经过这轮改造之后幻觉引用明显下降但还需要定期抽检因为模型撒谎的方式会变。6. 边界与扩展这个系统到底该怎么用6.1 它能做什么不能做什么先泼一盆冷水这套系统不能预测明天涨跌也不能保证选出牛股。它的定位是投研辅助压力测试工具。适合做三件事对已有持仓的标的做多空复盘、对关注的板块做风险变量梳理、对计划中的投资逻辑找漏洞。它确实不适合做荐股、高频交易信号、对突发事件的第一反应。更重要的是它输出的不是最终答案而是一份需要人继续验证的清单。比如空方提出了某个关键假设你需要去查证那个假设是否成立这个过程本身就是投研的价值。用惯了之后你会发现真正让你改变决定的往往不是结论而是辩论过程中被挖出来的某个反面变量。6.2 把AI辩论嵌入每日复盘的三点建议我目前的使用频率是每个交易日收盘后跑一次重点持仓标的的辩论每次约十分钟。这里分享三个实操建议第一不要每天换标的。持续对同一批标的做多空辩论才能积累出连续的质量评估发现模型遗漏的变量。第二关注裁决层的共识而不是立场。两方在某个风险点上达成一致时那才是真正值得重视的信号。第三保留人工复核环节。AI辩论再严谨也只是对已知信息的重组无法覆盖真正的黑天鹅。至少每周抽检一次系统输出的引用来源确认没有出现新的幻觉。6.3 后续想扩展的方向目前的想法是往两个方向扩展。一是把宏观指标加进来让多空辩论不再局限于单一标的而是结合利率、库存周期、产业政策等宏观变量做自上而下的推演。二是加入社交情绪数据对舆情热度和讨论情绪做量化再让辩论双方围绕情绪数据是否过度反应进行对抗。这两个方向还没有完全跑通但技术路径是清晰的数据越丰富辩论的素材就越充分约束越严格结论就越经得起推敲。最后聊一点个人感受。这套系统我用了几个月最舒服的地方不是它偶尔给出的正确结论而是它逼着我把以前懒得想的反面逻辑想完整。以前我复盘一个标的总是习惯性地去找支持自己判断的证据现在我会先看一眼空方AI列出的那三条风险变量再回头审视自己的仓位和理由。很多次系统没有让我改变观点但让我把原来的判断加了一个除非。这个除非恰恰是市场里最贵也最难得的认知。