C
ChaoBro

Kronos:用 Transformer 预测股市,24,900 星背后的金融大模型实验

把金融市场当成一种语言来读——这是 Kronos 的核心假设。

这个项目的思路很直接:金融数据(股价、成交量、指标)本质上也是序列数据,和自然语言一样有时间上的前后依赖关系。那为什么不用处理语言成功的 Transformer 架构来处理金融数据?

shiyu-coder/Kronos 在 GitHub 上拿到了 24,946 颗星,4,360 个 fork。在金融 AI 领域,这个热度不低。但数字背后的问题是:把金融数据当「语言」来处理,到底是不是一条靠谱的技术路线?

技术方案:Tokenizer + Transformer

Kronos 的核心流程分为两步:

第一步是离散化。它用一个专门的 tokenizer 把连续的金融时序数据(价格、成交量等)映射成离散的 token 序列。这类似于 NLP 中把文本切分成 subword token 的过程。离散化让模型可以用标准的 Transformer 架构来处理金融数据,而不需要专门设计时间序列模型。

第二步是预测。tokenizer 输出 token 序列后,用一个 Transformer 模型来做下一步预测。这和在 NLP 中做 next-token prediction 在形式上完全一致。

这个方案的好处在于:

  • 可以直接复用 NLP 领域成熟的技术栈(Attention 机制、位置编码、预训练+微调范式)
  • token 级别的表示天然支持多模态(可以同时编码价格、成交量、技术指标等)
  • 预训练后的模型可以 zero-shot 迁移到新的金融品种上

但金融数据和语言有本质区别

这里必须泼一盆冷水。

自然语言的 token 序列有一个关键特性:语义连续性。「今天天气很好」和「今天天气不错」在语义空间中是相邻的。但金融数据不同——价格从 100 跳到 101 和从 100 跳到 105,在 token 空间中的距离可能一样,但背后的市场含义完全不同。

更关键的是,金融市场的统计特性是非平稳的。语言的基本语法结构几百年不会变,但市场的 regime 可以在几个月内彻底切换——从低波动到高波动,从趋势到震荡。预训练模型学到的模式可能在新的市场环境下完全失效。

Kronos 的论文(2025 年 8 月发表)也承认了这个问题。他们的解决方案是通过微调和多品种预训练来提高泛化能力——但这本质上是在和市场的非平稳性赛跑。

项目活跃度

从 GitHub 来看,项目有 76 个 commits,最近一次更新在上个月。issue 区有 157 个 open issues,33 个 PR——说明社区确实在用,但也说明项目还在快速迭代中。

项目结构包括 examples、model、finetune、webui 等模块,提供了完整的训练和推理流程。对于想尝试的人来说,上手门槛不算高。

我的看法

Kronos 的技术思路在学术上是有趣的,但在实际交易中需要极度谨慎。

金融市场不是一个语言生成任务。价格序列中的「语法」是由数百万参与者的博弈决定的,而且这个博弈的规则本身就在不断变化。Transformer 可以学到历史数据中的统计模式,但无法预知市场结构的突变。

适合尝试的场景:

  • 量化研究中的 baseline 模型对比
  • 多因子模型中的特征提取辅助
  • 教学和研究用途

不适合的场景:

  • 直接用于实盘交易决策
  • 替代传统的风险管理框架

24,900 颗星中,大部分可能是出于好奇。真正把它用在交易中的,应该不多——而那些正在用的人,大概率也在同时跑着一堆传统的统计模型做对比。

如果你在做量化研究,Kronos 值得一试。但请记住:在金融领域,一个模型在历史数据上表现好,和在真实市场上赚到钱之间,隔着一条巨大的鸿沟。


主要来源: