把金融市场当成一种语言来读——这是 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 值得一试。但请记住:在金融领域,一个模型在历史数据上表现好,和在真实市场上赚到钱之间,隔着一条巨大的鸿沟。
主要来源: