让大模型直接做交易决策,这条路现在走到哪了
你大概试过这件事:把一段行情、一份财报摘要丢给大语言模型,问它「这个该不该买」。它不会拒绝你。它会给你一段结构完整的分析——先讲基本面,再讲技术面,最后落到一个偏多或偏空的结论上,理由列得清清楚楚。读完你会觉得,这比自己琢磨半天要明白得多。
然后你会卡在一个说不上来的地方:它说得那么顺,可它凭什么?
这个疑问值得认真对待。因为它的答案,恰好把「大模型做投研」和「传统量化」之间那条线划出来了。而这条线在哪,决定了你该怎么用它、以及绝对不该怎么用它。
先说人话:你雇的是个什么样的实习生
先别管技术,想象你雇了一个实习生。
这个实习生有三个很极端的特点。
第一,他读过的东西多到离谱。几乎所有公开出版的财经书、研报、新闻、论坛帖子他都翻过,而且记得住。你随口提一个行业,他能顺着往下讲二十分钟。
第二,他「毕业」于去年某一天,之后发生的事一概不知。但他自己意识不到这件事。你问他今天某个东西多少钱,他会报一个数——那个数来自他毕业前的记忆,而且他报得非常笃定。
第三,也是最要命的一条:他从不说「我不知道」。你问什么他答什么,答不上来的地方,他会用一段听起来很专业的话把缺口补上。补得天衣无缝,你看不出接缝在哪。
传统量化那一套,性质完全不同。它更像一个只会干一件事的计数员:你告诉它「把所有股票按最近二十天的涨幅从高到低排个序」,它就老老实实排。排完你可以回头查——历史上这个排序,和后来真实的涨跌顺序,对得上多少?这个「对得上多少」是能算成一个数的,而且这个数好不好,有明确的判据。
一个是读材料写结论,一个是把判断压成数字再拿历史去验。
这不是同一件事的两种实现方式。这是两种东西。
投资层:统计规律和语言推理,到底差在哪
在量化里,一个可计算的判断依据被叫作因子。因子这条路之所以能被人认真对待了几十年,靠的不是它聪明,而是它可以被拆开检查。具体说有四层性质:
输出是一个数,不是一段话。 数能排序、能算相关、能按大小分组、能和别的数合成。你可以问「这个数和三十天后的涨跌,名次上吻合到什么程度」,然后得到一个具体的答案。一段话没法这么问。
同样的输入,永远同样的输出。 今天跑和明年跑,一模一样。这听起来平淡无奇,但它是一切检验的前提——你没法检验一个每次都变的东西。大模型不是这样,同一段提示词问两遍,措辞、侧重、甚至方向都可能不同。
亏了能归因。 一套多因子的组合亏钱了,你能把亏损拆到具体是哪一块出的问题、是哪一段时间失效的。大模型给你一个判断,事后你只能知道「它当时是这么想的」,没法把「这么想」再往下拆。
能同时看全市场。 因子对几千只标的一起打分,成本几乎为零。大模型一次只能仔细读几个标的的材料,再多就是钱和时间的问题。
但反过来,因子有一整类东西是天然摸不到的:公告里那句措辞的松紧、管理层电话会上回避了哪个问题、一份政策文件里的转折词。这些信息不是数,硬要变成数就得先人为定义规则,而定义规则的那一刻,你已经把大部分语义扔掉了。
大模型的价值,恰恰在这块因子够不着的地方。 它天生处理非结构化的文本。这也是为什么严肃项目里,它更多出现在「读材料、做摘要、提取观点」的位置,而不是「预测明天涨跌」的位置。
系统层 · 样本一:把一个模型拆成一屋子人
Vibe-Trading 这个项目里有一块叫 swarm(直译「集群」),思路是不让单个模型一口气给结论,而是把它拆成一个编队,每个角色只干一件事,角色之间有先后依赖。
编队用配置文件描述,项目内置了一批按职能命名的模板(具体有多少个属于实现细节,会随版本变化)。拿其中的「投资委员会」这个模板来说,它的结构是:一个多头研究员负责把看涨的理由做扎实,一个空头研究员负责反过来,然后交给风控审一遍,最后由组合经理拍板。每个角色配一段长长的岗位说明,规定他该从哪几个维度看、每个维度看什么、最后必须产出什么格式。
这个设计背后的假设很明确:单次生成太容易一边倒。你问模型「这个能不能买」,它顺着你的问法就能写出一篇很有说服力的看涨报告;你换个问法问「有什么风险」,它同样能写出很有说服力的看空报告。两篇都好看。所以干脆强制它先各自站队,再把两边的东西撞在一起。
这是工程上对「说服力不等于正确性」的一种回应。是不是有效是另一回事,但至少设计者意识到了这个问题。
最能说明问题的一处:喂数据这件事
真正值得停下来看的,是这个项目里负责「喂数据」的那个模块。它的文件开头有一段说明为什么要有这个模块,翻译过来大意是:
swarm 里干活的都是大语言模型。不显式地把数据喂给它们,它们会非常乐意地报出训练语料里的价格——对任何在模型截止日之后还在交易的资产来说,那个价格按定义就是错的。补救只能是结构性的:在它开始推理之前,先把真实的近期行情抓好塞进去,并且告诉它这些是它唯一被允许引用的价格。
「按定义就是错的」这个说法很硬,但它是对的。模型不知道自己的知识停在哪一天,也没有任何机制让它意识到这一点。
于是这个模块干的活就是:扫描用户输入里出现的标的代码,去行情源拉最近一段时间的开高低收和成交量,渲染成一小块表格,拼进提示词。这块表格被刻意放在执行规则之前——因为模型规划第一次动作的时候就得看见它。
模块的说明里还老老实实交代了这套做法的残余风险:它只在任务启动的时候抓一次快照,跑得久了数据就旧了;但作者的原话是,这仍然严格好过用一年前训练语料里的价格。还有一层是识别问题——一个全大写的普通英文词有可能正好撞上某个真实上市产品的代码,于是抓来一张不相干的表。作者的判断是这只浪费提示词预算,不影响正确性。
把话说到这个份上,比任何宣传材料都有信息量。 一个模块要专门写一段解释「为什么必须有我」,通常说明它挡的是一个不挡就必然翻车的坑。
第二道闸门:每个数字都得说得出来路
同一个项目里还有一条被标成「硬规则」的约束,无条件加在每个角色的提示词末尾。它的要求是:你输出里的每一个具体数字——价格、百分比、成交量、资金流向、市值排名、行业权重、代码——都必须能追溯到三个来源之一:本次运行中某次工具调用的返回、前面那块行情表、或者上游角色的输出(且上游自己也来自前两者)。
不能引用记忆,不能引用训练数据。原文的措辞是:市场在你的截止日之后已经动过了,你回忆起来的任何具体价格,默认就是错的。
如果一个数字凑不出来源,只有两条路:调工具去取,或者干脆把这个数字删掉,并且在句子里注明「仅方向性判断,未经数据核验」。
这条规则里最有意思的是它的适用范围说明。它专门点名了那些做汇总、综合、编辑的角色——这些角色手里没有数据工具,早先也就没人管它们,结果它们会自己发明数字出来。
这个细节值得琢磨很久:幻觉最容易出现的地方,不是分析岗,是总结岗。 分析岗手里有工具、有原始材料,编的动力反而小;总结岗只拿到几段文字,一旦上游没给具体数,它为了让报告显得完整,会自己补一个。放到人身上也一样——离一手材料越远的人,越容易说出精确但没来源的数字。
第三道闸门:谁有资格按下按钮
还有一处设计,是关于「模型能不能自己给自己授权动真钱」的。
这个项目把「写入授权」这个动作单独拎出来,做成一个刻意不是工具的函数——它不继承工具基类,因此工具注册表根本发现不了它,模型的执行循环里也没有任何地方引用它。唯一能写入授权的代码路径,要求一个由用户界面产生的确认凭证,而这个凭证模型永远造不出来。
代码注释里管这个叫「命门不变式:这是结构性保证,不是提示词层面的保证」。
这句话承认了一件很重要的事:在提示词里写「不许自己下单」是靠不住的。 提示词是可以被绕开的、可以被后续文本影响的、可以在模型状态混乱时失效的。真正的边界必须在代码结构上成立——想犯错都找不到入口。这和量化里对付前视偏差的最高级解法是同一个思路,你可以对照 前视偏差 那篇里讲的「结构约束」看,会发现是一套哲学。
系统层 · 样本二:一群 agent 放在一起会发生什么
另一个范式样本是 AI-Trader。这里只做概念描述,不摘录任何代码。
它的定位和上面那个不一样。它不是给你一个人用的研究工具,而是一个面向 agent 的交易平台:任意一个 AI agent 发一条消息就能注册进来,在模拟环境里下单、交流想法、跟单、上排行榜。它的自我描述里有一句话很点题——人有自己的交易平台,AI agent 也需要一个属于它们的。
但真正暴露这条路走到哪一步的,不是它的功能列表,是它的研究目录。
那个目录做的事情是:把平台上积累的数据整理成可复现的论文数据集,研究数千个 agent 之间的竞争与合作。它产出的统计表是 A/B 检验、双重差分、回归、异质性处理效应、自助法置信区间、多重检验校正——这一整套工具箱来自社会科学和实验统计,不是来自业绩归因。
这个信息很容易被读漏。它的研究问题是「一大群 agent 放在同一个环境里会涌现出什么行为」,而不是「agent 能不能跑赢市场」。
换句话说,这条路目前更接近一个被观察的对象,而不是一个已经验收完毕的方法。把这类平台的存在读成「已经有人用 AI 稳定跑赢市场了」,是把研究现场误当成了业绩证明。这两者的距离,比看上去远得多。
已知边界:六个还没被解决的问题
一、截止日之后的世界,它是瞎的。 而且它不知道自己瞎。所有认真的实现都得在外面套一层喂数据的机制,这层机制的存在本身就是这个问题没被解决的证据。
二、数字会被凭空造出来,而且越靠近「总结」的环节越容易造。 上面那条追溯规则挡住的是一类必然会发生的事,不是一类偶然的意外。
三、说服力和正确性不挂钩。 多空对撞的编队设计能对冲掉一部分,但别忘了:两边的论证是同一个模型写的。它辩赢自己,不代表它辩赢了市场。
四、「独立意见」可能根本不独立。 一个编队里十个角色,共用同一个底座模型、同一批训练语料。它们的错误是高度相关的——同一个盲点,十个人一起看不见。人凑一个委员会,至少这些人的成长经历不一样。这个问题和组合里那些看着分散、实则一起跌的持仓是同一个数学结构,可以顺着 相关性 那篇往下想。
五、现成的评估工具对不上号。 判断一个因子有没有用,靠的是「每个标的每天一个可比的数」,然后统计吻合度——IC 与 IR 讲的就是这套。大模型给你的是一段话加一个方向,样本量小、不可重复、成本高,那套检验根本套不上去。没有便宜的检验手段,就没有便宜的证伪。这才是这条路最实质的困难。
六、一种极难审计的前视偏差。 这一条最隐蔽。模型的训练语料里,本来就包含了那几年的新闻、财报、以及事后写的复盘文章。你拿三年前的材料去问它「接下来会怎样」,你没有任何办法证明它是在推理,而不是在回忆。前面讲过的那些解法——截断数据重跑、时点数据库——在这里一个都用不上,因为泄漏不发生在你的数据里,发生在模型权重里,而权重你打不开。这让它同时具备了 数据窥探 的性质:谁也说不清那些历史被反复咀嚼过多少遍。
「它讲得头头是道」是这条路上最危险的一种证据。 语言模型被优化的目标里,包含了「让人觉得有道理」这一项,但从来不包含「预测准确」。一段读起来无懈可击的分析,和一段准确的分析,在生成机制上没有必然联系。你越看得懂、越觉得有共鸣,越应该警惕——因为它很可能只是把你自己已有的想法,用更好听的话说了一遍。
失效边界与常见误用
把「能写出好分析」当成「能预测」。 这是最普遍的一种误读。写作能力和预测能力是两种能力,人身上就经常分离,模型身上分离得更彻底。
用 agent 数量替代思考质量。 一个编队十个角色,不等于十个专家;共用底座的情况下,更接近同一个人换了十件衣服。角色分工的价值在于强制覆盖不同视角,不在于人多。
把它的语气强弱当成概率。 模型说「大概率」「明显」「几乎可以确定」,这些词的分布来自语料里人类的说话习惯,不来自任何概率计算。别把它的措辞当成置信度读。
拿它当决策者,而不是研究助手。 这两者的差别不在能力,在责任归属。让它读一百份公告帮你挑出五份值得细看的,风险是可控的;让它替你按下按钮,风险是不可控的——而且如前面那道授权闸门所示,认真的实现者自己也是这么划线的。
用它给自己已经有的想法找理由。 这是最舒服也最有害的用法。你想买,问它「这个有什么买入逻辑」,它一定给得出来,而且给得比你想的漂亮。这不是它在帮你判断,是它在帮你合理化。真要用,就把问法反过来——让它论证你会亏在哪里。
小结
- 大模型做投研和传统量化的根本差别是输出形态:一个给的是话,一个给的是数。数能排序、能验证、能归因,话不能。这条差别衍生出后面所有的困难。
- 大模型的真正优势区在非结构化文本——措辞、语气、政策转折,这些是因子模型天然够不着的地方。它更适合待在读材料的位置,不是预测涨跌的位置。
- 认真的开源实现都在做同一件事:在模型外面加结构约束。喂真实数据、要求每个数字可追溯、把授权路径设计成模型碰不到。这些约束的存在,说明相应的问题是必然发生的,不是偶然的。
- 「幻觉最容易出现在总结岗」是个反直觉但普适的观察,人和模型都适用。
- 这条路最实质的困难不是模型不够聪明,是没有便宜的证伪手段:不可重复、样本贵、训练语料里可能已经埋着答案。没法证伪的东西,你没办法知道它有没有用。
- 目前公开的项目更像是研究现场,不是业绩证明。把两者混为一谈,是这个领域里最常见的误读。
一句话记住这篇:它很会说话,这件事和它说得对不对,是两回事。
本文所引源码与文档均来自上述快照版本,是阅读代码与文档得出的机制说明,不是运行结果;其中 AI-Trader 部分仅作概念描述。本文不评价任何工具、平台或方法的盈利能力,也不认为上述任何一种做法能带来收益。回 量化与 AI 投研概念库 看其它概念各自在说什么;本站内容为投资教育,不构成任何投资建议,边界见 免责声明。
本文为投资教育整理,关键数据与结论请结合下列权威来源验证。
- Vibe-Trading 源码快照 3a752d5(2026-08-04):agent/src/swarm/grounding.py、agent/src/swarm/worker.py、agent/src/swarm/presets/investment_committee.yaml、agent/src/live/mandate/commit.py、agent/SKILL.md ↗
- AI-Trader 源码快照 d03ff6c(2026-06-11):README.md、research/README.md(仅作概念描述,未摘录任何代码) ↗
- qlib 源码快照 79633dd(2026-07-23):作为传统量化范式的对照 ↗