当AI学会预测股票,为什么它的预测总是"躺平"?

2026-08-25 20:44:01 6123

2026年初,有一个团队在做一件听起来很普通的事:用时间序列基础模型去预测美股的每小时收益率。

这类模型这几年被吹得挺响,号称"大力出奇迹",见过足够多的时间序列数据后,不用针对某个具体任务专门训练,就能直接拿来预测各种东西,从电力负荷到零售销量都能对付。团队想试试它在金融市场里的表现。

结果出来的时候,所有人都愣住了。

模型给出的预测几乎是一条直线,紧贴在零附近微微晃动,1000只股票的预测值之间的排序关系近乎失效,用来衡量"预测排序准不准"的指标(后面会细讲)低得可怜。这不是某个模型偶尔翻车,团队换了好几种主流的时间序列基础模型,结果都差不多。

更诡异的是,同一套流程、同一批股票,只是把预测目标从"收益率"换成"成交量变化",这个躺平现象就基本消失了。

模型没变,数据没变,只是换了个预测对象,表现就天差地别。这背后到底发生了什么?

这就是这篇论文要讲的故事,团队给这个现象起了个名字,叫**预测坍缩**。

预测坍缩*:模型给出的预测值幅度异常小(接近一条平线),同时这些预测对不同资产的相对排序也很差,这两个问题同时出现的现象。

先搞清楚,这件事为什么重要

你可能会说,股票收益率本来就难预测,模型预测不准很正常吧?

这话只说对了一半。

预测不准和预测躺平是两回事。一个模型如果诚实地告诉你"我不确定",那预测值应该带有一定的不确定性表达,但不应该是所有股票预测值都挤在一起、看不出差异。金融决策不光看单个预测准不准,更看重的是这1000只股票里,哪些排在前面、哪些排在后面。这个排序好不好,业内有个专门的指标去衡量。

信息系数(IC)*:衡量某一时刻所有资产的预测值和真实值之间相关性的指标,数值越高,说明模型对资产排序的判断越准。这是量化投资里评估选股能力最常用的标准之一。

如果IC很低,即使单个预测的数值误差看起来不大,这个模型在实际选股决策里也是废的,因为它根本分不清哪只股票会涨得多、哪只会涨得少。

这篇论文的团队发现,几乎所有测试过的时间序列基础模型,在预测股票收益率时都会陷入这种既躺平又排序混乱的状态,但换成预测成交量,问题就淡了很多。同一个模型,同一套代码,为什么会有这么大的差别?

两个原因,缺一不可

团队给出的解释分成两条线,缺一不可,合起来才是完整故事。

第一条线是可预测性的问题。

股票收益率这种东西,本身包含的可预测成分极其稀少。多数波动都是噪声,真正能被历史信息解释的那一部分,占比小得可怜。团队在论文里做了个数学推导,证明了一个很反直觉但逻辑严密的结论:如果目标变量本身能被预测的比例很低,那么一个经过最优校准的预测(也就是把预测值调整到最合适的尺度后),它的波动幅度天然就会很小,这不是模型偷懒,而是数学上的必然。

这里要澄清一个概念。

信噪比(SNR)*:目标变量中"可预测部分"的方差和"不可预测的噪声部分"方差之比,SNR越低,说明目标越难预测。

团队用了一个精确的数学关系式,把"预测值经过最优缩放后的幅度"和"目标的可预测性上限"直接挂钩起来。简单说,如果一只股票的收益率只有1%的方差是可以被历史信息解释的,那么即便你把模型做到极致完美,它给出的、经过最合理缩放后的预测幅度,最多也只能达到目标真实波动幅度的十分之一左右(因为这个关系涉及开平方)。

这就好比你去猜一个几乎全靠运气决定的骰子游戏结果。

如果你诚实地根据仅有的一点点线索去下注,你的下注幅度肯定不敢很大,因为你知道自己的判断大概率是错的。如果这时候有人为了让下注"看起来更自信",硬是把赌注放大十倍,这不是因为他看得更准了,而是他在自欺欺人。第一种做法(收益率的MSE训练)会让预测显得畏手畏脚,第二种做法(后面会讲到的IC训练)会让预测显得虚张声势。两种做法背后对应的正是这篇论文发现的两种失败模式。

问题来了,如果模型的老实预测是躺平的合理反应,那为什么成交量就不躺平?

论文里给出了具体数字对比:股票收益率的信噪比大约是1.2%,而成交量变化的信噪比要高出20倍左右。信噪比高,意味着这个目标本身就更容易被历史数据解释,模型自然可以给出幅度更大、更有把握的预测,不需要藏着掖着。

这是第一层原因,可预测性天花板限制了预测的"胆量"。但这还不能完全解释排序为什么会乱。

第二条线,是训练目标本身的设计缺陷。

团队观察到一件更微妙的事:几乎所有主流的时间序列基础模型,不管用的是什么训练目标,都有一个共同点,它们在训练时是逐个序列独立打分的。

也就是说,模型在学习"预测第100只股票的收益率准不准"这件事时,压根不知道同一时刻还有另外999只股票存在。它评估自己表现好坏的方式,就是单独看每一条时间序列自己的预测误差,从来不会去比较"我给股票A的预测,相对于股票B的预测,排序对不对"。

团队用一个数学证明给出了一个挺硬核的结论:只要训练目标是这种"逐点打分"的形式(不管是均方误差、分位数损失还是似然函数,几乎所有主流模型都是这个套路),那么这个目标函数根本"看不见"跨资产的排序结构。换句话说,两个风险值完全相同的预测器,可能给出天差地别的资产排序,一个排序质量很高,一个排序质量很差,但从训练目标的角度看,它们是一样好的。

论文里举了个具体的两资产高斯构造例子来验证这一点,通过调整一个跨序列的协方差参数,能让均方误差稳稳停在1.40不变,但IC均值却能从0.371一路跌到0.032,足足差了十几倍,而模型在训练目标上看到的"表现"分毫未变。

这就像一个班级里,老师只批改每个学生自己的作业本,从不比较学生之间谁排第几。

结果就是,两个学生可能作业本上的分数一模一样,但一个学生确实比另一个学生学得扎实,只是老师的评分方式压根没设计出"比较"这个维度。你没法指望这种评分方式能自动产出一份准确的班级排名,因为它从一开始就不是为排名设计的。如果班级从来不需要排名,这个问题不存在,但金融决策恰恰就是需要排名的场景。

这两条线合起来,就是预测坍缩的完整成因:低可预测性限制了预测的幅度,逐点打分的训练方式又让排序信息无从被优化。收益率这个目标恰好同时踩中这两个坑,可预测性低,又特别依赖跨资产排序,这才造成了论文开头那个诡异的现象。

校准和排序,鱼与熊掌不可兼得吗

发现问题之后,团队试着直接对症下药。

既然逐点误差目标(比如均方误差,MSE)学不到排序,那干脆直接把排序相关性当成训练目标去优化,行不行?

团队试了,结果是IC确实上去了,从0.046涨到了0.124,看起来挺不错。但代价是什么呢?

预测的幅度直接爆炸到了目标真实波动的25倍以上。

这就像你本来是个谨慎的投资顾问,一开始你给客户的建议幅度太小,几乎等于没说;后来你为了显得更有信心,把每个建议的力度放大了25倍。你的判断方向(谁涨谁跌)确实变准了,但你给出的具体数字已经完全脱离现实,如果客户真按照这个幅度去下注,输赢的波动会大得吓人,因为这个"自信"是虚的,是被强行放大出来的,不是基于真实信息量的自信。

这就是论文提出的**校准-排序权衡**(calibration-ranking tradeoff)。

只优化误差(追求校准),预测就躺平;只优化排序相关性(追求IC),预测幅度就会失控。这两者似乎天然对立。

有没有办法两头都要?

团队给出的答案叫CalibRank,一个很朴素但有效的思路:把均方误差和跨资产相关性这两项目标直接加权组合在一起,用一个参数λ控制两者的相对重要性。

CalibRank*:一种复合训练目标,同时优化预测误差(保证幅度不失控)和跨资产排序相关性(保证选股能力),通过参数λ权衡两者。

这个思路听起来简单,效果却出乎意料的好。在实测中,CalibRank把IC从原来均方误差训练下的0.046提升到了0.126,几乎追平了纯粹追求排序的模型,但预测幅度只有目标真实幅度的1.8倍左右,相比25倍的失控幅度,收敛了十几倍。squared error也控制得很好,比起纯排序模型的均方误差,CalibRank低了两个数量级还多。

更关键的是,团队没有只在一个模型架构上验证这个思路,而是把它铺到了12种不同的深度学习预测模型架构上,从简单的线性模型DLinear,到各种Transformer变体(PatchTST、Autoformer、Informer等),再到专门做时序混合的TimeMixer。结果是,CalibRank在全部12个架构上都提升了排序能力,平均IC从0.062涨到了0.123,几乎翻了一倍,而均方误差的增幅微乎其微。

这说明什么?说明这不是某个模型架构的偶然表现,而是一个具有普遍性的规律:只要你把跨资产的排序信息显式地塞进训练目标里,模型就能学到这部分原本被忽略的结构,不管底层架构长什么样。

有意思的是,团队还发现,λ这个权重参数的调节曲线有个很清晰的规律。刚从0开始往上调一点点,IC就几乎一次性涨到位了,后面继续加大权重,IC几乎不再涨,但均方误差和预测幅度却持续膨胀。这意味着,你不需要把权重调到极端,只需要一点点排序压力,模型就能把大部分该学到的排序信息学出来,剩下的加码基本都是在拿校准精度换取没有意义的幅度虚增。

这个规律给实际应用提供了一个挺实用的判断依据:与其无脑加大排序权重去榨取那最后一点点IC提升,不如在早期就停下来,用一个不太大的λ拿到大部分收益,同时把校准精度守住。

现有的评测体系,漏掉了什么

论文里还做了一件挺有意思的事,就是回头去审视目前市面上主流的时间序列基础模型,到底是怎么训练的。

团队调研了19个主流的时间序列基础模型(包括TimesFM、Chronos、Moirai、Lag-Llama、Sundial等一系列你可能听过或没听过的名字),逐个去看它们公开披露的训练目标是什么。

结果发现,15个模型披露了具体的训练损失函数,其中只有4个用的是类似均方误差这种"锁定条件均值"的目标,剩下的用的是分位数损失、似然函数、交叉熵或者流匹配等各种更复杂的概率建模方式。

但不管用哪种,一个共同的事实是:这18个被溯源到的训练目标,没有一个是同时对整个"横截面"(也就是同一时刻的所有资产)打分的。

横截面(cross-section)*:在时间序列分析里,指同一个时间点上所有被观察对象(比如1000只股票)组成的一组数据。横截面相关性衡量的就是这组数据里,预测值和真实值排序是否一致。

这个发现挺扎心的。这意味着,目前几乎所有主流的时间序列基础模型,不管它们的架构多先进、参数量多大、见过多少数据,在训练阶段就从来没有"看到"过跨资产的排序结构,它们的评分方式天生就是瞎子摸象,每次只摸一头大象的一条腿,从来没摸过整头象的轮廓。

这也解释了为什么论文开头那个现象会大范围出现,不是某个模型没训练好,而是整个训练范式的设计里,压根就缺了这一块。

团队还进一步去看了公开的GIFT-Eval基准测试集,一个包含97种不同数据配置的时间序列评测基准。

GIFT-Eval*:一个公开的时间序列预测模型评测基准,覆盖97种不同的数据集配置,用于横向比较各类模型的预测表现。

结果发现,即便这97个配置里有43个本身是多变量数据(也就是天然带有跨序列结构),评测时也是被"拍扁"成单变量序列分别打分的,11个评测指标里没有一个去衡量跨序列的排序或依赖关系。

这意味着,不只是训练目标有盲区,连评测标准本身也有同样的盲区。一个模型即便排序能力很差,在现有的评测体系下也完全可能拿到不错的分数,因为压根没人去检查这件事。

团队进一步做了个交叉验证:拿TimesFM和Chronos这两个模型,在GIFT-Eval的97个配置上跑一遍,同时记录一组基准模型能在同样数据上达到的可解释方差比例(R?),再看这两个基础模型输出的原始预测幅度和这个R?之间的关系。

结果显示,预测幅度和可解释方差的平方根之间,相关系数达到了0.87到0.88,相当高的关联度。在65个R?大于等于0.30(也就是可预测性比较高)的配置里,两个模型都能保留目标真实幅度的四分之三左右;而在6个R?小于0.05(几乎不可预测)的配置里,预测幅度直接掉到了目标真实幅度的6%以下。

这组数据从另一个角度印证了论文最核心的论点:预测幅度是不是躺平,跟着可预测性走,而不是随便哪个模型架构自己的锅。

一个容易被忽视的细节:噪声也会"传染"排名

论文里还有一段推导挺值得单独拿出来说,因为它揭示了一个不太直观但很实际的陷阱。

团队证明了这样一件事:如果不同资产之间的噪声水平(也就是不可预测部分的方差)差异很大,而模型误差本身的差异相对较小,那么用均方误差去给这些资产排名,排出来的结果会越来越像是在按噪声水平排名,而不是按模型预测准不准排名。

这意味着什么?

假设你有两只股票,A股票天生波动剧烈但不容易预测,B股票天生比较稳定。哪怕你的模型对这两只股票的预测精准度其实差不多,A股票因为本身噪声大,均方误差天然就会偏高,B股票因为噪声小,均方误差天然就偏低。用这个误差去给股票排名,排出来的结果更多反映的是"哪只股票天生更平稳",而不是"模型对哪只股票判断得更准"。

这就好比你想评估两个学生的解题能力,一个学生做的是难度系数很高的题目,一个学生做的是难度很低的题目。哪怕两人解题的思路和努力程度完全一样,做难题的学生分数天然会更容易出错。如果你直接用分数去排名,排出来的更多是题目难度的排名,不是学生能力的排名。

论文管这个现象叫"噪声主导排名",并且指出这个偏差消失得特别慢,即使把模型误差的差异性降到很小,噪声差异带来的影响仍然会顽固地存在,需要噪声差异缩小四倍,排名污染才能减半。这提醒我们,在设计任何跨资产比较的评测方式时,都得留意这种"噪声掩盖真实能力"的风险。

数据说话:一张对比表

论文里给出了一个很直观的对照实验,用同一个简单的Transformer编码器,分别用三种不同的训练目标去训练,预测同一批股票的收益率。

| 训练目标 | 预测幅度比 | IC | 均方误差 |

|---|---|---|---|

| 均方误差(MSE) | 0.027 | 0.046 | 4.30×10?? |

| 排序相关性(IC) | 25.260 | 0.124 | 4.22×10?? |

| **CalibRank** | **1.836** | **0.126** | 1.43×10?? |

数字对比一目了然。均方误差训练出来的预测幅度只有目标真实幅度的2.7%,几乎就是一条平线;纯排序训练把幅度炸到了25倍以上,虽然排序能力(IC)确实上去了,但均方误差也跟着炸了将近1000倍;而CalibRank用适中的代价(均方误差只比MSE训练高出3倍多),拿到了几乎一样高的排序能力,同时把幅度控制在目标真实值的1.8倍左右,是三者里唯一一个"既没有躺平,也没有虚张声势"的方案。

同一批数据换成成交量目标后,对比就淡了很多。MSE训练下的预测幅度比是0.391,IC是0.530;CalibRank分别是0.391和0.538,差别很小。这恰恰印证了前面说的逻辑:既然成交量本身可预测性高,MSE训练本来就不会躺平,排序信息也没那么稀缺,CalibRank自然没有太大的提升空间,这是一个很干净的对照实验,反过来证明了收益率场景里那个巨大提升不是偶然。

这件事对普通人意味着什么

看到这里,你可能会问,这些复杂的数学证明和实验数据,跟普通读者有什么关系?

我觉得至少有两层意思值得琢磨。

第一层,是关于我们该怎么看待"AI预测不准"这件事。

一个预测幅度很小的模型,不一定是模型能力差,它可能只是老老实实地反映了这件事本身有多难预测。你在新闻里看到某个AI模型"预测股市失败",背后未必是技术不行,很可能是目标本身信噪比就低到让任何诚实的模型都不敢下重注。反过来,一个看起来"很自信"、给出剧烈波动预测的模型,也未必真的更懂行情,它可能只是被某种训练方式喂养出了虚假的自信。

第二层,是关于评测标准本身的重要性。

这篇论文最锋利的地方,其实不是提出了CalibRank这个具体方法,而是它戳穿了一个被广泛忽视的评测漏洞:当我们用"每个序列单独打分再平均"的方式去评测一个多变量预测系统时,我们可能永远发现不了这个系统在跨变量结构上的失败,因为评测方式本身就没有那个维度。

这个道理其实不止适用于金融。论文里提了几个例子:环境传感器网络里,你可能更关心哪些传感器同时出现异常;临床监护系统里,你可能更关心哪些生命体征指标同时恶化;能源调度系统里,你关心的是不同区域的负荷是否会同时飙升。这些场景的共同点是,决策依赖的不是单个序列自己准不准,而是多个序列之间的关系,如果评测标准只盯着单个序列的误差,这些真正重要的关系可能从来没被检验过。

写在后面

读完这篇论文最让我意外的一点,是那个两资产高斯构造的小实验。均方误差死死钉在1.40不变,IC却能从0.371掉到0.032,靠的仅仅是调整一个跨序列的协方差参数,这个例子比任何大段论述都更有说服力地证明了,逐点误差指标真的可能对排序质量视而不见,这不是理论上的可能性,是可以被精确构造出来的数学事实。

另一个让我反复琢磨的地方是那个"噪声主导排名"的推导。它其实在提醒我们一件更普遍的事:任何时候我们用一个聚合指标去比较一堆异质的对象时,都得警惕这个指标是不是被某个和真实能力无关的因素悄悄绑架了。这个逻辑放在教育评价、绩效考核甚至日常生活里的各种排名场景,都值得多想一层。

论文里也留了一个没细说的口子:CalibRank只优化了皮尔逊相关性这一种排序信号,它没碰分位数、尾部风险或者更复杂的联合分布结构。如果换成需要极端风险管理的场景(比如金融危机中的联动崩盘),这套框架够不够用,还是个开放问题。

那么下一次,当你看到一个AI模型给出的预测异常平淡,或者异常夸张,你会先怀疑模型,还是先怀疑它到底在优化什么?

Q&A

Q1:预测坍缩是什么?

A:预测坍缩指时间序列基础模型在预测股票收益率时出现的一种现象:预测值幅度异常小、接近一条平线,同时不同资产之间的预测排序也很差,两个问题同时发生。论文发现这一现象在预测收益率时普遍存在,但在预测成交量时基本消失。

Q2:为什么均方误差训练会导致预测躺平?

A:因为股票收益率的信噪比很低,只有极小一部分方差能被历史信息预测。论文证明了一个数学关系:经过最优缩放后的预测幅度天然受限于目标的可预测性上限,可预测性越低,即使模型完美拟合,预测幅度也只能很小,这不是模型偷懒,是数学上的必然结果。

Q3:CalibRank是怎么解决校准和排序权衡问题的?

A:CalibRank把均方误差和跨资产排序相关性两个目标加权组合起来训练,用参数λ控制两者比重。实验显示它能让IC从0.046提升到0.126,接近纯排序模型的水平,同时把预测幅度控制在目标真实值的1.8倍左右,远比纯排序模型25倍的失控幅度更合理,在12种模型架构上都验证有效。