匡醍量化|大富翁量化

390天实盘:AI 量化交易系统拆解

EN 📅 2026-10-25 因子策略开发效率 实战 👁 本月阅读 —

大语言模型(LLM)和 Agent 进入量化交易领域快两年了,到底走到了哪一步?

过去一年里,我们看到了一个挺有意思的两极分化现象。一方面,GitHub 上只要跟“多智能体交易”沾边的开源项目,动辄就能收获极高的关注度,比如大家熟悉的 TradingAgents,Star 数已经超过了 10 万;但另一方面,真正把系统拉到公开市场上去跑实盘或者实时模拟的,结果往往不太好看。

去年底,海外网站 nof1.ai 做了一场颇具轰动效应的实验,把多个 AI Agent 的实盘交易放到全网直播。九个月过去,如今那个网站已经门前冷落鞍马稀。原因很现实:参与交易的 Agent 里,成绩最好的一个夏普比率也只有 0.019,表现甚至不如普通散户。换句话说,在第一阶段的公开测试里,直接让通用大模型下场看盘下单,成绩是不及格的。

不过最近,我们关注到了韩国开发者开源的一个项目:PRISM-INSIGHT。

这是一个可以直接在美股和韩国股市上执行实盘交易的系统。作者还搭了一个网站,让系统每天自动交易,并把持仓和净值结果实时同步到网上“直播”。截至目前,这套系统已经连续运行到了第 390 天。从最近 6 个月的公开账本来看,在韩国综合指数(KOSPI)下跌 10.36% 的背景下,它的模拟盘保持了 12.97% 的正收益,而作者同步运行的一个小资金实盘则取得了 20.23% 的盈利。

考察了市面上六七个主流的 AI 投研与交易项目后,我们认为 PRISM-INSIGHT 是目前最值得拿出来仔细拆解的样本。原因主要有四点:

  1. 有连续公开的样本外检验:跑了超过 390 天,经历了不同市场环境的毒打,账本还算稳健;
  2. 跑通了端到端闭环:很多同类项目还停留在“辅助人类写报告”的阶段,而它真正接上了券商接口,走完了从信息收集到自动下单、再到盘后复盘的全流程;
  3. 站在了成熟交易体系的肩膀上:它没有让 AI 凭空发明投资哲学,而是对威廉·欧奈尔(William O'Neil)经典的 CAN SLIM 成长股动量体系做了现代化改造;
  4. 工程边界清晰:它并不是纯粹靠感觉走的“Vibe Trading”,而是恪守了一条很务实的原则——把适合定性推理的地方交给 LLM,把需要严格遵守纪律的地方留给 Python 代码。

对于任何想用 AI 辅助投资或做量化开发的人来说,看看它是怎么设计架构、怎么掉进坑里、又是怎么对着亏损账单修改规则的,能省去不少自己闭门造车的试错成本。


/01 架构拆解:Python 硬规则 + 多 Agent 的四段流水线

从系统工程的角度看,PRISM-INSIGHT 是一个“Python 单体程序 + 多个 LLM Agent”组成的四段式闭环流水线:筛选 > 分析 > 交易 > 反馈。

第一步:用最朴素的量价规则做粗筛

在第一阶段(筛选),系统压根没有调用大模型,而是通过 yfinance 和券商接口获取行情数据,用纯 Python 代码设置了 6 条硬性的触发条件:

  1. 早盘量增榜:要求成交量相比均值放大超过 30%;
  2. 早盘跳空动量:跳空幅度大于 1%,且 K 线形态收阳;
  3. 市值资金集中度:一个综合打分指标,按股票排序进行截取;
  4. 盘中趋势强度:要求盘中涨幅在 3% 到 15% 之间,并且收阳线;
  5. 尾盘强度:要求收盘位置高于设定阈值、伴随放量,且全天涨幅在 0% 到 15% 之间;
  6. 放量横盘特征:量增率大于 50%,涨跌幅绝对值小于 5%,同时股价站上 20 日均线。

熟悉 A 股短线交易的朋友看到这六条,可能会会心一笑——这不就是淘股吧里各路高手常挂在嘴边的那些盘口特征吗?可见在初筛阶段,国内外动量交易的底层逻辑是相通的,高端的 AI 流水线往往也只需要最朴素的量价因子来打头阵。在欧奈尔的 CAN SLIM 体系里,这一步大致对应了字母 S(Supply and Demand,供求关系)和部分的 L(Leader,领涨动量)。

第二步:6 个独立 Agent 的专职分析

股票池经过粗筛收敛后,才正式进入由 6 个 LLM Agent 组成的分析层:

  • 技术趋势分析(Technical Analyst):需要说明的是,PRISM 并没有把原始 K 线数字直接扔给大模型去“看图算命”,而是先由程序算出 5 日、20 日、110 日、200 日均线,以及 RSI、MACD 和布林带等经典指标,再让 Agent 基于这些预计算好的结构化结果,去评估支撑阻力位和均线突破的有效性。
  • 投资者资金流分析(Investor Analyst,对应字母 I):调用韩国投资证券(KIS)的席位数据,追踪机构、外资和个人三类资金的逐日买卖动向,判断当前到底是谁在买、资金流向与价格走势是共振还是背离。我们在之前的博客文章(如《快速傅里叶变换与股价预测研究》)中曾探讨过,市场走势本质上是不同周期资金博弈的合成波:机构体量大、转身慢,持仓周期往往按季度算;散户资金则快进快出。识别出背后的主导资金性质,对判断行情的持续性至关重要。
  • 基本面与事件分析(包含 company_status、company_overview、news_analysis 三个 Agent):前两个负责拆解近期季度营收与盈利增长、年度增长趋势以及同业估值对比(对应字母 C 和 A);news_analysis 则专门利用搜索与爬虫工具,挖掘公司是否有新产品、新业务、新管理层变动或当日事件催化剂(对应字母 N)。
  • 宏观与指数检索(Market Analyst,对应字母 M):评估当前大盘的整体方向与市场风格,决定系统应该进攻还是防守。

第三步与第四步:汇总裁决与盘后反馈

在项目早期,作者曾设计过多达 13 个 Agent,但在随后的迭代中做了精简。目前涉及核心交易链路的主要是 8 个 Agent(6 个分析师 + 1 个汇总 + 1 个买卖决策),外加几个盘后辅助模块:

  • 策略汇总与交易执行:在第三步,策略汇总 Agent 会把前面 6 份维度各异的分析报告整合成一份投资策略草案。进入第四步交易环节后,买入决策 Agent 根据成文的评分表打出 1 到 10 分,并明确写出建仓后的加仓触发剧本;卖出决策 Agent 则在持仓期间负责监控止损与止盈。
  • 盘后辅助模块:一个是沟通模块,利用评估-优化循环(Evaluator-Optimizer Loop)把冗长的分析报告浓缩成 400 字以内的 Telegram 消息,并翻译成多国语言推送给订阅者;另一个是极其关键的日志与记忆模块,在每笔交易平仓后自动做复盘总结,提炼经验教训供下一次买入时参考。

为什么要拆成多个 Agent?

看到这里,你可能会问一个很实际的工程问题:为什么非要大费周章拆成这么多 Agent?把所有数据塞进一个上下文窗口,让一个全能 Agent 一次性看完做决定,不是更省事吗?

在工程实践里,拆分多 Agent 最核心的价值在于**「视角隔离」与「工具数据的专有化绑定」**。

大语言模型天生带有强烈的“连贯性偏见”(Coherence Bias),它非常擅长把杂乱的信息编成一个逻辑自洽的故事。不妨做一个思想实验:如果只用一个全能 Agent,把一张刚刚放量突破新高的漂亮 K 线图、几篇热火朝天的题材吹捧新闻,外加一份资产负债率极高的财务报表同时塞给它,会发生什么?当模型看到股价在暴涨、舆论在狂欢时,它很容易在同一个上下文里完成“自我说服”,顺手把高企的负债合理化为“公司为了迎接行业爆发而进行的战略性投入”,从而对近在咫尺的财务风险视而不见。

而拆成 6 个独立的 Agent 后:

首先,角色设定(System Prompt)和立场是物理隔离的。财务 Agent 的提示词要求它只盯估值、盈利质量和资产负债表,它根本看不到盘面有多狂热,因此能维持冷酷的审计员视角;新闻 Agent 绑定的是 Perplexity 搜索和 Firecrawl 网页抓取工具,专职核查催化剂的真实性;资金流 Agent 则只看席位买卖数据。

其次,每个 Agent 先在各自的专业维度内形成独立的证据切片,最后再交由汇总和决策 Agent 去碰撞、权衡。再加上不同环节可以按需配置不同档位的模型——基础信息整理用中等规模模型,最终买卖裁决用推理能力最强的旗舰模型,日常摘要和翻译用轻量级模型——这样既保住了分析视角的客观性,又把每个月的 Token 账单控制在了合理范围内。


/02 横向对比:AI 投研与交易系统的四个流派

如果把视野放宽,把 PRISM-INSIGHT 和目前 GitHub 上另外三个热门项目——TradingAgents、easy-stock 和 Vibe-Research 放在一起对比,我们会发现它们恰好代表了将 LLM 引入投资领域的四种不同设计哲学:

项目名称 核心定位 架构亮点与设计重心 是否含实盘闭环
TradingAgents 多智能体研究与实验框架 观点对抗与辩论机制:在基本面、情绪、新闻、技术 4 个分析师之后,专门设立看多(Bullish)和看空(Bearish)研究员进行多轮结构化辩论(Debate),逼出单边思维隐藏的风险点。 否(偏重单点实验,无内置实盘与连续账本)
easy-stock 本地优先(Local-First)的 A 股短线工作台 先结构化计算、后 AI 解读:针对 A 股特有的连板与题材结构,先用 Go 语言后端算出连板梯队、晋级率、题材强度和情绪周期,再交由 Agent 解读;定时抓取雪球、淘股吧复盘贴提炼市场共识与分歧;按逻辑、结构、风险、策略匹配度对持仓做同次调仓对比打分。 否(决策权留给人,打板与短线选手的提效利器)
Vibe-Research 偏重基本面与多维数据的投研工作台 严苛的「数字出处审计」:接入 A 股、港股、美股 168 个数据端点。在六阶段个股研究中,程序会强制核对 AI 输出的每一个数字——必须在原始输入、接口返回、研报原文或显式算式中找到依据,从工程上掐断“数据幻觉”。 否(专注深度投研与证据核验)
PRISM-INSIGHT 端到端全自动实盘投研交易系统 规则初筛 + 多 Agent 研判 + 语言空间强化学习:打通从选股、分析、实盘下单到盘后平仓复盘的完整闭环,用真实盈亏持续迭代系统的经验库。 是(支持韩股与美股实盘,已连续公开运行 390 天)

在这四个项目里,PRISM-INSIGHT 最独特的地方,不仅在于它敢直接连上实盘下单,更在于它在盘后复盘环节实现了一套相当精巧的自我进化机制。

不改模型权重,如何让 Agent 越做越聪明?

很多尝试用 AI 做交易的朋友都会遇到同一个瓶颈:我们手里积累了一批实盘或回测的交易记录,很想把这些一手经验反馈给 Agent 以提升它的判断力,但个人和小团队显然没有算力和条件去重新微调(Fine-tune)千亿参数的大模型。那么,在不改变模型权重的前提下,仅靠平仓后的复盘循环,真能提升系统的预测与交易能力吗?

答案是肯定的。这正是目前学术界和工业界非常关注的方向,通常被称为上下文强化学习(In-Context Reinforcement Learning),或者更形象地说——「自然语言空间强化学习」。

传统的强化学习,是在每一局游戏或每一笔交易结束后,根据盈亏奖励,通过反向传播去修改神经网络的浮点数权重;而在大模型应用里,虽然我们改不动底层权重,但可以利用大模型强大的上下文学习能力。如果我们把每一笔历史交易的“买入依据、当时市场状态、最终盈亏结果、事后复盘原因”结构化地保存下来,归纳压缩成一套持续更新的“经验规则库(Intuitions)”。当下一次遇到形态相似的候选股时,系统自动检索出最相关的正反例经验,塞进买入决策的提示词里。从数学上看,虽然模型的参数没变,但给定新增的上下文条件后,模型输出决策的条件概率分布已经改变了——我们不是在参数空间里做梯度下降,而是在自然语言提示词空间里做策略迭代。

翻看 PRISM 仓库最近一周的提交记录,作者刚刚做了一次非常有意思的升级(Commit 标题为 rebuild BUY intuitions from big movers vs lookalikes)。

早期版本里,它的记忆系统只是简单地让模型对亏损交易写“检讨书”;但作者很快发现,光写检讨书只会让模型变得越来越胆小。于是他改成了一种正反例对照提取法:系统把历史上真正走出大行情的牛股(Big Movers,正样本),和那些买入时各项指标、突破形态看起来一模一样、结果却止损出局的“假突破股票”(Lookalikes,即机器学习中的困难负样本 Hard Negatives)放在一起,让大模型专门去对比这两组样本在基本面成色、催化剂质量或量价细节上到底有什么微妙差异,从而提炼出分辨真假突破的“直觉(Intuitions)”。

更严谨的是,作者在代码里专门写了一个统计校验函数,持续追踪对比“参考了历史直觉并调整了打分的交易”与“未参考历史直觉的交易”,看前者的实际胜率和平均收益率到底有没有跑赢后者。如果某条提炼出来的直觉在后续实盘验证中胜率低于 30%,或者超过 90 天没有被触发验证,清理脚本就会自动将其停用(Deactivate)。

这套“正反例对照提炼 + 实盘胜率检验 + 劣质经验淘汰”的闭环,在原理上已经非常接近一套完整的非参数化强化学习系统了。


/03 审视欧奈尔体系:60 年代的方法今天还管用吗?

聊完技术架构,我们不妨探讨一个更本质的投资问题:PRISM 所依托的威廉·欧奈尔 CAN SLIM 体系,诞生于上世纪 60 年代。在 60 年代,信息传播靠报纸和邮寄财报,市场消化一条基本面信息可能要花上好几个星期;而到了今天,借助互联网和高频算力,信息定价的速度早已压缩到了日内甚至秒级。

这就引出了一个很多量化人都会怀疑的“周期错配”问题:公司财报是按季度更新的,而量价数据每秒都在跳动。既然现在任何一条基本面消息发布后,往往一两个交易日就充分反映在股价上了,剩下的几十个交易日里基本面根本没有新变化,那这套把慢变量(基本面)和快变量(量价)混在一起的体系,今天还有多大用处?每天跳动的量价信息,难道不能完全反映基本面吗?

为什么一两个交易日消化不完基本面?

我们的看法是:信息传播的速度确实变成了秒级,但大资金改变持仓的物理过程,依然是以“周”和“月”为单位的。基本面在今天的作用,已经不是用来做“日内抢跑”,而是用来给量价异动做“真伪证伪”和“持仓周期定性”。

这可以从两个层面来理解:

第一,大机构的建仓受到物理流动性的硬约束。这就解释了为什么 CAN SLIM 里非要做投资者结构分析(字母 I)。像公募基金、养老金、长线外资这样的大型机构,受限于严苛的风控合规与市场深度,哪怕今晚某家公司财报大超预期,它们也不可能在第二天集合竞价把几百亿的仓位一口气买满——真这么干,直接就把股价买崩了。财报后第一、二个交易日的跳空大涨,往往是游资、量化事件驱动资金和先知先觉的活跃买方打出来的“点火信号”;而在随后的两三个月里,随着产业逻辑被上下游订单不断验证,大型机构在回调中分批建仓,才构成了完整的主升浪。

第二,纯量价信号极易出现“同形异质(Lookalikes)”。在某一个交易日的早盘,一只纯靠小作文炒作、主营业务连年亏损的概念股,和一只刚刚拿下海外大单、行业迎来产能紧缺的绩优成长股,它们在分时图和日 K 线上表现出来的“放量突破、资金净流入”可以长得一模一样。如果只看量价,系统根本分不清这是主升浪的起点,还是游资拉高出货的诱多。

在没有财报发布的平时那几十个交易日里,基本面扮演的是**“慢变量过滤器”和“持仓信心锚”**。只有确认了基本面的底色是真的,当股价在突破后第 5 天遭遇大盘回调、缩量下跌 4% 时,系统才敢判断这是正常洗盘并继续持有,而不是惊慌失措地割肉。简言之:量价是快变量,负责提供扣扳机的时机;基本面是慢变量,负责过滤假信号,并决定这笔交易你能拿多久。

为什么值得用 Agent 把 CAN SLIM 重做一遍?

既然这套体系没有过时,那为什么值得用大模型再写一遍?过去几十年,传统量化宽客不是早就写过无数个版本的 CAN SLIM 策略了吗?

如果我们回到欧奈尔的原著《笑傲股市》和《投资者商业日报》(IBD)的官方定义,把 CAN SLIM 这七个字母逐一拆开,就会发现传统量化当年留下的巨大遗憾:

  • C(Current Quarterly Earnings,当季每股收益与营收)与 A(Annual Earnings Growth,年度盈利持续增长):这两个字母在过去几十年里最容易被传统量化实现,写几行 SQL 查一下财务数据库就能筛出来。今天大模型在 C 和 A 上能做的增量相对有限,主要是去读财报附注,帮我们剔除那些靠卖地、卖子公司或汇兑损益凑出来的“假增长”,以及对比业绩是否超越买方预期。
  • N(New Products, New Management, New Highs off Properly Formed Bases):请注意欧奈尔的原始定义——他把**“新产品、新服务、新管理层、行业新变局”(基本面之新)和“股价从良好的整理形态中走出并创出新高”**(价格之新)浓缩在了同一个字母 N 里。欧奈尔统计过,95% 的超级牛股在启动时,背后都有某种重大的“新变化”作为引擎。这就像做 A 股的朋友常说的:股票还是那些股票,但每年都有新题材。 然而在过去几十年的传统量化里,宽客们是怎么写 N 这个因子的?因为代码读不懂什么叫“颠覆性新产品”,所以几乎所有量化策略都把 N 简化成了单一的价格指标——“当前收盘价接近或创出 52 周新高”。结果就是把 N 最核心的灵魂(因为基本面出现新变局而推动股价创新高)给生生阉割掉了。 这正是大语言模型发挥价值的第一个核心突破口。 在 PRISM 里,当量价脚本发现某只股票异动突破后,News Analyst 和 Company Overview 会立刻调用搜索和爬虫工具,去读公司最新的公告、新闻稿和行业报道,用自然语言理解能力去核实:这次突破背后,到底有没有实质性的新产品发布、大额新订单落地或行业政策催化?如果没有,仅仅是股价莫名其妙拉升,Buy Agent 在打分时就会直接压低分数。
  • S(Supply and Demand,供求关系):流通股本适中、有股票回购,且关键突破日成交量放大 50% 以上。这部分传统量价代码很容易算清楚。
  • L(Leader or Laggard,领涨股还是落后股):这是传统量化撞上的第二个天花板。欧奈尔强调要在行业里买真正的领头羊(Leader),绝不买因为便宜而跟风补涨的落后股(Laggard)。为了量化这件事,他当年发明了著名的 RS 指标(相对价格强度,1 到 99 打分)。 但问题在于,“价格涨得快”就等于“产业真龙头”吗? 在概念炒作初期,一只边缘蹭概念的小票可能连拉几个涨停,RS 分数冲到 99,但它在产业链里毫无议价权,潮水一退就原形毕露。这是大模型带来的第二个核心突破口:通过阅读研报和公司主营构成,大模型可以直接梳理出“在 HBM 内存或光模块产业链里,谁掌握核心产能、谁的毛利率最高、谁在给核心大厂供货”。把**“定性的产业竞争地位(Business Leader)”和“定量的相对价格强度(Price Leader)”**结合起来,L 这个字母才算真正完整了。
  • I(Institutional Sponsorship,机构认同度)与 M(Market Direction,大盘方向):这两块基本仍是传统量化指标的用武之地。

顺着这个思路其实可以举一反三:过去几十年投资界沉淀了许多经典框架——不管是欧奈尔的 CAN SLIM、彼得·林奇的成长股分类,还是巴菲特的护城河理论——以前我们做量化时,只能挑里面有现成结构化数据的部分写代码,那些真正决定成败的定性维度全都被迫丢掉了。大语言模型的出现,本质上是让我们第一次有工具,把那些被传统量化遗弃的“定性拼图”重新捡回来,装进自动化流水线里。

反教条:当 60 年代的“8 周持有规则”撞上现代市场

当然欧奈尔体系也确实有过时的地方。当 PRISM 的作者真正把这套体系装进系统、在韩股和美股实盘跑了一年多之后,他发现:即便选股端靠 AI 补齐了 N 和 L,如果卖出端照搬欧奈尔 60 年代写的机械持有规则,在今天的市场里照样会吃大亏。

首先是“卖飞大牛股”的痛点。作者统计了系统历史台账后发现:在入场后 60 个交易日内涨幅超过 30% 的韩国牛股里,这些股票最高涨幅的中位数达到了 +60%,但系统实际平仓拿到的利润中位数居然只有可怜的 +2%!绝大多数大牛股,刚涨了一点就被移动止损或卖出 Agent 提前洗出去了。

为了解决拿不住牛股的问题,作者决定测试欧奈尔体系里最著名的**「8 周持有规则(8-Week Hold Rule)」**——欧奈尔原著规定,如果一只股票从突破点算起,在 1 到 3 周内快速上涨满 20%,就具备成为大牛股的潜质,应该至少持有 8 周,或者一直拿到跌破 50 日均线。

但作者没有直接拍脑袋上线这条规则,而是用项目积累的真实历史回放台账做了一次严谨的回测对比。结果让人大跌眼镜:如果原封不动地照搬“涨满 20% 就死拿到 50 日均线”,韩股的单笔累加收益反而倒退了 43 个百分点,美股也倒退了约 40 个百分点!

为什么大师当年的黄金法则,放到今天的市场上会失效得这么厉害?

因为今天市场的短线微观结构跟 60 年代完全不同了。作者拆分数据后发现:在今天的市场里,凡是在买入后 1 到 3 个交易日内就急涨 20% 的股票,绝大多数是受短期消息刺激的情绪脉冲,而不是真正的机构趋势股。 这种股票在两三天内暴涨 20% 后,股价离下方的 50 日均线非常遥远;如果你机械地执行“不破 50 日均线不卖”,接下来几天短线资金一撤退,股价快速回落,等你真正碰到 50 日均线时,20% 的浮盈早就回吐干净甚至变成亏损了。

相反,回放数据表明,真正能走出长线的领涨股,是在买入后 4 到 15 个交易日内,经过充分换手消化、稳步推升达到 +20%,并且当时股价没有过度偏离 50 日均线的股票。

基于这份实证数据,PRISM 在今年 10 月初上线的新规则里,对欧奈尔的经验法则做了三项明确的修正:

  1. 改良领涨股持有(Leader Hold):1 到 3 天急涨 20% 的股票不享受豁免,依然按常规的利润保护止损及时落袋;只有在 4 到 15 个交易日内涨满 20%、且未过度偏离 50 日线的股票,才进入“领涨股持有模式”——在最长 40 个交易日内,只要收盘不破 50 日均线且不破首次买入成本价,就一直持有。
  2. 用 AI 情景加仓替代固定阶梯加仓:放弃死板的“涨 2%、涨 4% 机械加仓”,改为首仓按波动率买一个槽位的 30% 到 80%,由 AI 在买入时写出 2 到 4 个加仓触发剧本(例如突破某关键位或缩量回调企稳),由代码在价格高于成本且满足条件时执行金字塔加仓。
  3. 证伪并废止无效规则:比如欧奈尔门徒后来常提的“口袋支点(Pocket Pivot)”放量触发器、以及按 ATR 波动率设止损,在 PRISM 自己的历史数据回放里都被证明没有正收益甚至更差,于是被作者明确写进废止台账里果断弃用。

这个迭代过程非常有说服力。它提醒我们,哪怕是把经典大师的体系交给 AI 自动化,也不能搞教条主义:既要用大模型去补齐定性分析的短板,又必须用真实交易台账去修正半个世纪前的老参数。


/04 看懂 AI 交易的底层原理

聊到这里,很多朋友可能会问:既然大模型这么能干,它未来会完全取代传统的量化模型吗?在使用大模型做交易时,到底有哪些底层禁忌?

大模型不能凭量价数据来预测涨跌

在今年 9 月中旬发表的《LLM 能做交易吗?三个实验讲透原理》一文中,我们曾基于 Quantpedia 的思路做过一组递进实验。

实验的起点很有意思:研究者并没有让大模型直接预测明天的股价涨跌,而是把 20 日涨跌幅、20 日年化波动率以及价格相对月均线的乖离率,先翻译成诸如趋势上行|波动偏低|价格偏强这样的离散化自然语言状态,再让大模型输出“满仓、半仓、低仓”三个档位来做仓位风控。

当时我们就好奇:为什么不直接把历史动量特征和远期收益喂给大模型,让它自己去学动量因子与未来收益之间的映射关系呢?于是我们动手做了拓展实验。结果在中证 1000 上的回测表明,这种方案虽然夏普比率略高于买入并持有(Buy & Hold),但年化绝对收益依然跑输买入并持有,更远远落后于传统的机器学习模型(如树模型或神经网络)。

为什么号称通晓人类知识的千亿参数大模型,在直接处理数字和预测价格时连简单的传统机器学习都打不过?背后有三个容易被忽视的底层原理:

  1. 分词器是“数字色盲”(价格表征不连续):大语言模型接收的所有输入本质上都是文本字符串。在预处理分词(Tokenization)阶段,人类眼里连续的小数(比如 9.11),会被分词器切碎成 9、.、11(或者 9、.1、1)这样几个毫不相干的 Token 组合。连续的价格序列在第一步就被切碎了。
  2. 高维向量空间的距离失真:在数学上,数字 7、8、9 之间,7 到 8 的距离与 8 到 9 的距离相等,7 到 9 的距离则是 7 到 8 的两倍。但在大语言模型内部,文本 7、8、9 对应的是三个高维嵌入向量(Embeddings),这三个向量在高维空间里的几何距离,并不天然满足算术上的等距关系。距离是算术与回归的核心,距离一旦失真,模型就很难算准定量关系。
  3. Transformer 缺乏原生时序先验:文本 Transformer 的先后顺序仅靠位置编码和因果掩码(Causal Mask)给出,它并不像专门的时间序列模型那样自带局部性、周期性与状态转移的归纳偏置,一切时序规律都只能靠海量数据硬学。

看懂了这三个底层限制,你就明白为什么 nof1.ai 里直接看盘下单的通用大模型会亏得一塌糊涂,也明白为什么 PRISM-INSIGHT 绝不让大模型直接算指标,而是老老实实用 Python 把量价换算成“突破均线”、“放量 30%”等离散化的文本语义信号,再交给大模型去做定性推理。

大模型真正擅长的事:生成显性化的“市场预期基准”

既然不能直接用来算价格,大模型在金融交易里最核心的增量价值在哪?除了前面提到的补齐 CAN SLIM 的 N 和 L,芝加哥大学布斯商学院联合全球顶尖做市商 Optiver 举办的 Explaining Markets 全球竞赛(详见《利好为何不涨?AI预测财报竞赛揭秘》),还揭示了另一个极其重要的用法:生成显性化的市场预期。

平时看盘时,我们常听到“某公司财报发布后,因业绩不及预期而大跌;或者业绩明明大涨,却因为利好出尽而高开低走”。这里最让人头疼的问题是:市场的“真实预期”到底是多少?从哪里来?

在金融市场上,预期通常有三个来源:一是卖方分析师一致预期(比如国内的万得、东财 Choice、朝阳永续汇总的数据);二是公司管理层指引(比如上一季电话会或业绩预告给出的区间);三是期权市场隐含波动率倒推的预期。更麻烦的是,当这几个来源口径不一,或者市场上还流传着要求更高的买方“耳语预期(Whisper Number)”时,只看财报公布后的绝对数字,AI 根本无从判断这到底是惊喜还是惊吓。

在这场竞赛的 Q3 赛季中,主办方验证了一个非常管用的核心技巧:在公司财报发布之前,先派一个具备全网搜索能力的 Agent,收集各方口径、行业动态与市场情绪,提前写出一份标准化的《财报前瞻研报》,把牛/基/熊三种情景下的预期门槛显性化地固定下来。 等到财报真正发布的那一刻,再让模型拿着实际业绩去跟这份事先生成的预期基准做比对。实验证明,仅靠这一步“事前生成显性预期”,模型对财报后股价反应的解释力($R^2$)就获得了显著跃升。


/05 实战落地指南:个人部署与 A 股改造思路

最后,聊聊大家最关心的实操问题:如果看完觉得心痒痒,想把 PRISM-INSIGHT 部署起来自己跑,甚至改造到 A 股市场使用,可行吗?成本有多高?

运行成本估算

PRISM-INSIGHT 本身是完全开源的(非商业使用免费)。主要的日常开销在于大模型的 Token 消耗和搜索工具调用。根据韩国开发者自己的实测账单,如果全流程直接调用 OpenAI 系列的官方 API,每个月大约会花掉 300 多美元。

当然,如果你使用的是包月订阅制渠道,或者将其中的信息整理、日常摘要等环节替换为如今性价比和能力都很不错的国产大模型,每月的运行成本还可以大幅压缩。

A 股本土化改造的三步走

原版 PRISM-INSIGHT 默认只接入了韩国股市(通过 KIS 接口)和美股数据。如果要把它迁移到 A 股市场,这其实是一个非常不错的极客改造工程,核心工作主要有三块:

  1. 对接 Agent 友好的数据源(Skills / MCP): 需要注意,PRISM 架构里相当一部分数据是由 Agent 在推理过程中自主调用的,因此我们需要用 MCP(Model Context Protocol)或 Agent Skills 技术,把传统的 A 股数据接口包装成大模型能直接调用的工具。 好消息是,现在已经有不少现成的轮子可用。例如东方财富此前就推出了供 Agent 直接调用行情和基本面数据的 Skill(我们在《做能调教AI的赛博老技师,量化人也该开始装Skills了》中有过介绍);此外,大家熟悉的通达信近期也推出了面向个人量化的 SDK,其中同样包含了支持 Agent 调用的方式(注:部分托管调用方式会消耗额外的 Token 额度,部署时可留意其计费规则)。
  2. 写入 A 股特有的交易制度约束: 美股和韩股都是 T+0 交易且美股无涨跌停限制,而 A 股有严格的 T+1 交割制度以及 10% / 20% / 30% 的涨跌停板限制。这意味着原版代码里的盘中当日止损、早盘突破追高逻辑,必须加上 T+1 持仓锁定期和涨停无法买入、跌停无法卖出的硬约束。
  3. 市场微观结构的参数适配: 借助现在的 AI Coding 工具,前两步的数据接口替换和制度规则修改,工作量其实不算大,几天时间就能跑通代码。真正最隐蔽、也最考验耐心的改造,是参数对 A 股微观结构的适配。 正如前文所见,连欧奈尔经典的“8 周持有规则”搬到今天的韩股和美股都要经历一番大刀阔斧的修正;A 股的散户资金占比、题材轮动速度和连板生态与海外市场差异更大。比如初筛阶段的“放量 30%”、“跳空 1%”,或者领涨股持有的“4 到 15 天涨满 20%”,直接搬来 A 股大概率会出现水土不服。

因此,最稳妥的做法是:先复用它的多 Agent 视角隔离架构与盘后复盘框架,接上 A 股数据跑一段时间的模拟盘(Paper Trading)或历史回放,让系统在 A 股的真实正反例样本(Big Movers vs. Lookalikes)中自己跑出统计规律,再逐步微调触发与止盈参数。

毕竟,连 AI 都学会对着亏损交割单踏踏实实改规则了,我们做量化的,又哪有理由再迷信什么一劳永逸的“圣杯”呢?