📌 项目地址:shiyu-coder/Kronos | ⭐ 25,762 颗星 | 🔧 Python | 📜 未标注
2025年11月,一篇关于K线基础模型的论文被AAAI 2026接收,GitHub星数超过2.5万。项目叫Kronos,它的核心主张很直接:通用时间序列模型对付不了金融K线的高噪声和非平稳性,需要专用方案。
我花了一周读论文、跑代码、看Demo,下面写我的判断。
技术拆解:Tokenizer是真正的关键
Kronos不做端到端预测。它把连续OHLCV数据先转成离散token,然后让Transformer预测下一个token。这套流程和训练语言模型几乎一样,只不过“词典”是专门为K线造的。
Tokenizer有两个版本:
- Kronos-Tokenizer-2k(词表大小2048),用于Kronos-mini
- Kronos-Tokenizer-base(词表大小512?README没说具体数字,只给了名称),用于small/base/large
Tokenizer将多维连续数据量化成分层离散token。这一步的意义在于:K线高低开收量的组合形态有大量重复模式,比如“长阳线+放量”是一种高频结构。Tokenizer能把这些结构稳定的抽象成token,让模型只学习模式的时间依赖,而不被原始数值的噪声干扰。
两阶段框架是:Tokenizer → 自回归Transformer。预训练任务是预测下一个token。论文里应该给出了更详细的对比实验,但README只说了框架,没有给训练损失或下游任务数据。这点后面再讲。
模型选择的实质问题:上下文长度 vs 参数量
Kronos发布了四个模型,其中有三个开源:
| 模型 | 参数量 | 上下文长度 | Tokenizer | 是否开源 |
|---|---|---|---|---|
| Kronos-mini | 4.1M | 2048 | Tokenizer-2k | ✅ |
| Kronos-small | 24.7M | 512 | Tokenizer-base | ✅ |
| Kronos-base | 102.3M | 512 | Tokenizer-base | ✅ |
| Kronos-large | 499.2M | 512 | Tokenizer-base | ❌ |
这里有一个反直觉的点:最大的large模型不开源,而最小的mini模型上下文最长(2048)。为什么?
我推测:min参数量只有4.1M,但2048上下文意味着它能用轻量结构捕获更长的历史模式。对金融数据,过去几百根K线内的相对模式比绝对数值更重要。mini可能就是为快速实验或高频策略设计的。而base参数量102.3M但上下文512,更适合对过去较短窗口做精细建模。
实际选择时,如果你硬件有限(单卡10GB以下),推荐从mini起步——参数量小,上下文长,Tokenizer-2k也对应更丰富的离散形态。如果你需要更大模型,选base,但注意它只能用512的历史K线。
三个模型的Tokenizer不同:mini必须用Kronos-Tokenizer-2k,其余用Kronos-Tokenizer-base。不能混用。这一点容易踩坑。
上手流程:加载模型+微调脚本
README给出了直接加载基础模型的代码:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")
model = AutoModelForCausalLM.from_pretrained("NeoQuasar/Kronos-base")
这个例子用的是base,如果换成mini,Tokenizer要改为”NeoQuasar/Kronos-Tokenizer-2k”,模型改为”NeoQuasar/Kronos-mini”。
关键点:Kronos不是开箱即用的预测工具。它训练的是token预测,不是价格回归或分类。要让它在你的任务上生效,必须微调。
2025年8月17日,项目发布了微调脚本。README说:“Check them out to adapt Kronos to your own tasks.” 具体脚本名称和用法README没有展开,需要去GitHub仓库的scripts或fine_tune目录下找。这一点是个缺口:项目文档不够细,光靠README不能直接跑通微调流程,得自己读代码。
另外,预训练数据没有开源。README只提到用了超过45家全球交易所的数据,具体构成、清洗方法、试验划分一概没给。这意味着你只能用自己的数据做微调,无法复现原论文的实验。
Demo:看一眼模型输出长什么样
项目部署了一个在线Demo(https://shiyu-coder.github.io/Kronos-demo/),展示BTC/USDT未来24小时K线预测。我打开看了,页面直接画出了预测的连续K线,形态上确实有价格运动的影子——比如有支撑和阻力位的味道,不是随机游走。
但Demo有一个明显缺陷:没有置信区间或概率输出。一根K线预测出来就是一根,你不知道模型对自己的判断有多确定。对交易决策来说,这几乎没法直接用。但作为展示模型能力的工具,它已经能说明问题。
实际价值与限制
Kronos是目前唯一开源的金融K线专用基础模型,还被AAAI接收,学术价值明确。如果你做量化研究,需要从K线序列中提取embedding或做模式识别,它比通用TSFM更适合。
限制同样明显:
- large不开源,最大模型不可用。
- 预训练数据未公开,无法验证数据质量和训练细节。
- 文档粗糙,微调脚本需要自己研究用法。
- Demo无置信度,无法评估预测可靠性。
- Token级别输出,要对接任务(分类、回归、生成)必须二次开发。
一句话总结:Kronos提供了一个好的起点,但离生产级工具还差工程化和验证。
对于想尝试的人,我建议:先读论文(arXiv:2508.02739),搞清楚评估指标和实验设置;然后跑Demo直观感受;最后用mini模型在自己的数据上微调,从一个小任务开始,比如预测未来K线涨跌类别。别指望加个包就能赚钱。