我微调了爆火的 Kronos 预测股市:结果反而更差
Kronos 把 K 线当语言学习。一次 BTC 与 SPY 实验发现:微调让模型学会更真实的波动幅度,却没有提高涨跌方向,结果反而更差。
编者按:本文根据 Sumit Pandey 于 2026 年 8 月 6 日在 Towards Deep Learning 发表的文章 “I Finetuned a Viral AI Model (Kronos) to Predict the Stock Market” 改编整理,并对照 Kronos 的 AAAI 2026 论文、官方代码库与作者的实验仓库补充链接。本文重点是评估方法与失败经验,不是交易策略。
风险提示:本文仅介绍机器学习实验,不构成投资或交易建议。历史回测、方向准确率和预测区间都不能保证未来收益;数据质量、交易成本、滑点、市场制度变化和过拟合都可能让实盘结果显著恶化。
Kronos 最近在金融 AI 社区迅速走红:它是一个专门理解 K 线的基础模型,官方论文被 AAAI 2026 接收,GitHub 项目获得大量关注,还有一个演示页面会预测比特币未来 24 小时的走势。它把“像语言模型一样预测下一段价格序列”的想法做得非常直观。
Sumit Pandey 决定不只看演示。他下载模型,用它预测比特币和追踪标普 500 的 SPY,然后进一步使用自己的市场数据微调模型。结果并不是“AI 打败市场”,而是一个更值得讨论的失败:微调让 Kronos 更准确地学会了波动幅度,却几乎没有提高涨跌方向判断,于是误差反而变大。

先从一根 K 线说起
一根蜡烛图把一段时间压缩成四个核心价格:开盘、收盘、最高和最低,通常还会配合成交量。收盘高于开盘时常画成绿色,反之画成红色。Sumit 的实验以一小时为一个时间片,因此模型看到的是连续的小时级 OHLCV 序列。

Kronos 把 K 线当作一种语言
Kronos 的设计可以类比大语言模型。ChatGPT 把文字分成 token,再根据上下文预测下一个 token;Kronos 则先用专门的 tokenizer 把连续的多维 K 线量化为离散 token,再让自回归 Transformer 学习如何延续这段市场“语言”。
官方论文称,Kronos 使用来自 45 个全球交易所、超过 120 亿条 K 线记录进行预训练。论文在其基准任务中报告:相较领先的通用时序基础模型,价格序列预测 RankIC 提升 93%;波动率预测 MAE 降低 9%;合成 K 线的生成保真度提升 22%。这些是严肃而有价值的结果,但它们回答的是论文定义的基准问题,并不自动等于“能在任意资产上盈利”。

它不是只给一个答案,而是采样许多未来
使用时,研究者向模型提供数百小时的近期价格历史,再要求它生成接下来若干小时的 K 线。因为模型通过采样生成序列,同一输入可以运行多次,得到很多条可能的未来路径。
这些路径的中间位置可以作为点预测,而路径之间的分散程度可以形成预测区间。理论上,路径越集中代表模型越有把握,越分散表示不确定性越高。但前提是这个区间经过校准:如果模型给出很窄的区间,真实结果却频繁落在区间外,它只是“自信地错”。

实验设计:零样本与两种微调
Sumit 依次做了两组实验。
- 开箱即用:让原始 Kronos 对比特币做 24 小时预测,共 100 个独立起点;对 SPY 做一个交易日预测,共 60 个起点。每次只允许使用预测开始前已经存在的数据。
- 本地微调:在同一模型上训练两个版本,一个使用最近两个月的市场数据,另一个使用最近三年的数据,然后与未修改的原始模型在相同起点上比较。
训练集包含 45 只高流动性的美国股票和 ETF,使用小时 K 线,约 22.8 万行,覆盖 2023 年 9 月至 2026 年 8 月;另有来自 Binance 的比特币小时 K 线。实验运行在一台 NVIDIA DGX Spark 上。
最重要的问题:与什么基准比较?
很多“AI 预测市场”的演示只展示模型曲线与真实曲线看起来有多接近,却没有回答一个更基本的问题:它是否优于极其简单的预测?
Sumit 使用的基准是随机游走式的零变化预测:假设下一时刻的价格与当前价格相同。这个基准几乎没有智慧,却很难在高流动性市场上稳定击败。如果复杂模型连“什么都不变”都赢不了,就没有证据说明它学到了可用于预测未来的信号。
因此,评估重点不是“模型是否接近真实价格”,而是“模型是否比保持当前价格更接近”。
微调时,作者修复了两个容易制造假成绩的问题
只训练预测模型,不重训 tokenizer。Tokenizer 是从数十亿样本中学到的 K 线词汇表。用 22.8 万行本地数据重新训练它,很可能破坏原有表示,因此作者冻结 tokenizer,只更新负责预测的后半部分。
不允许窗口跨越不同股票。示例训练代码把所有 ticker 纵向拼成一个长文件再滑动取样。如果不修正,某个训练窗口可能从一家公司结尾跨到另一家公司开头,制造不存在的价格连续性。作者重写取样逻辑,确保每个窗口只属于同一标的。
严格按时间切分。测试期内的数据,甚至与第一个测试点同一小时的数据,都不能进入训练集。金融模型很容易因时间泄漏得到惊人的回测成绩,而这种成绩在真实未来中不会存在。
结果一:原始模型没有击败“什么都不做”
作者把 Kronos 相对零变化基准的误差优势画成柱状图:零表示两者相当,低于零表示 Kronos 更差。结果中的柱子全部朝下。
在比特币 24 小时预测上,Kronos 的误差超过简单基准的两倍;在最终涨跌方向上,100 次预测命中 50 次,与抛硬币相当。

更令人担心的是预测区间。模型生成的区间原本应大约 80% 的时间覆盖真实结果,但在部分实验中实际覆盖率低至 21%。许多采样路径彼此同意,却共同偏离真实走势。

结果二:微调之后,表现反而更差
两个微调版本与原始模型在完全相同的 21 个交易日、相同预测起点上进行比较。实际价格用黑线表示,零变化基准是灰色虚线,模型预测则是彩色线。多数时候,三种模型都贴近灰色基准,而不是跟随真实变化。
例如 SPY 在 7 月 29 日单日下跌约 1.5%,原始与微调模型都没有提前反映这一变化。

汇总误差后,未经微调的模型最好;两个月版本略差,三年版本明显更差。这并不意味着模型什么都没学到,恰恰相反,它学到了一件真实但不够有用的事。

它学会了“涨跌多大”,却没学会“往哪边走”
SPY 在测试期内一天通常波动约 0.8%。原始模型预测的典型波动只有约 0.27%,过于保守。经过三年数据微调后,预测幅度上升到约 0.76%,几乎贴近真实尺度。这说明微调确实成功学习了市场的波动大小。
但方向准确率几乎没有变化。把两者合起来看,模型学会了下注更大,却没有学会下注更准。方向错误时,更接近真实幅度的预测反而制造更大的绝对误差,因此微调模型总体落后。

这也揭示了原始模型分数较好的另一面:它很少做出大幅预测,因此在高度不可预测的市场里表现得接近零变化基准。保守和模糊可以减少误差,但不等于发现了可交易信号。
作者为什么没有宣布“Kronos 无效”
最诚实的部分,是作者主动反驳自己的结论。最终微调对比只有 21 个交易日。当他计算统计不确定性时,所有置信区间都跨过零。这意味着“模型比基准好”“模型比基准差”和“没有差异”在当前样本下都仍可能成立。

他还对同一个未经修改的模型使用不同测试天数与输入历史长度,得到相差 48 个百分点的分数。测试配置稍微改变,结果就大幅波动,说明任何单次小规模回测都不值得过度解读。


哪些结论可以说,哪些不能说
可以说:在作者这套数据、切分和配置下,使用两个月或三年近期市场数据微调没有改善预测,三年版本表现更差;模型学到了波动幅度,却没有学到方向信号。这个解释与多种误差指标一致。
不能说:Kronos 已被证明无用。测试样本太小,而且多个选择可能对模型不利:输入历史短于官方设计,采样参数没有系统调优,使用的是中等规模而不是最大模型,测试期也相对平静。
论文的基准结果与个人复现实验并不互相否定。论文说明 Kronos 在一组定义明确的任务和指标上学到了有价值的金融表示;个人实验说明,把这种表示直接变成 BTC 或 SPY 的短期方向预测并不容易,而且微调可能强化错误维度。
真正值得带走的四个实验原则
第一,永远与简单基准比较。复杂模型必须击败零变化、移动平均或其他朴素基准,而不是只生成一张看起来漂亮的曲线。
第二,方向、幅度和校准是不同能力。模型可能准确估计波动率,却无法预测方向;也可能平均误差不大,但预测区间严重失准。每项能力都需要独立指标。
第三,时间序列切分必须防泄漏。不能随机打乱未来与过去,也不能让窗口跨越不同资产。任何同一时点的信息污染都可能让回测失真。
第四,小样本结果必须带置信区间和敏感性测试。更换历史长度、预测窗口、采样参数和市场阶段后,结论是否仍成立,往往比单一最高分更重要。
微调基础模型并不保证提升。它确实可能教会模型一个真实规律,但那个规律未必是任务真正需要的。对于市场预测,“波动多大”与“往哪边走”都是事实,只有后者与正确的时机结合,才可能产生方向性收益。
原文作者:Sumit Pandey;原文发表于 Towards Deep Learning。本文为中文改编与评论。实验数据截至 2026 年 8 月,且不包含真实交易成本。版权归原作者所有。