Kronos:K线预测基础模型,从装好依赖到跑通回测的最短路径
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
Kronos 是一个开源的金融 K 线基础模型,用"先把 K 线翻译成离散 token、再自回归生成"的两段式框架做价格与成交量预测,训练语料覆盖 45 个以上交易所,最小的开源版本只有 4.1M 参数。
它到底在解决什么问题
做量化的人都知道一个尴尬:K 线是典型的高噪声时间序列,传统时序模型要么为每只票单独训练,要么直接吃原始浮点数,对噪声和分布漂移都很敏感。Kronos 换个思路——把 OHLCV(开高低收加量额)先量化成一串离散 token,让一个 decoder-only 的 Transformer 在 token 空间里学"市场语言"。这样同一个基座可以横向复用到不同市场、不同周期,不用每个标的从头训。官方论文已被 AAAI 2026 接收,代码 MIT 协议开源。
官方架构图:K 线分词与自回归预训练两条主线
技术思路拆解
K线怎么被"翻译"成token
白话:先把连续的价格序列压成一串 0/1 比特串,就像把照片压缩成 JPEG。技术细节:KronosTokenizer 里是一个带编解码 Transformer 的量化器,核心用了二进制球形量化(BSQ,把连续向量投影到超球面上再截断成 ±1 比特),每个时间步最终变成一个离散索引。
两档token加依赖解码
白话:每个时间步不是一个 token,而是"先粗后细"两层——先定大致档位,再补精度。技术细节:编码后切成 s1(高位比特)和 s2(低位比特)两路,预测时先自回归解出 s1,再用 DependencyAwareLayer 拿 s1 的嵌入做条件交叉注意力,去约束 s2 的生成。这个设计让精度位依赖骨架位,推理更稳。
生成与时间特征
白话:预测不是抽一个数,而是按"词表"一个 token 一个 token 往后写,同时告诉模型"现在是周几几点"。技术细节:解码是逐位置的自回归采样,支持温度 T、核采样 top_p,还能生成 sample_count 条路径再平均,把随机性抹平;时间戳被拆成分钟、小时、星期、日、月五路嵌入求和后加到隐状态上,所以模型知道自己在"几点几分"上下文中工作。
📊 跑一遍看看效果
拿官方示例 examples/prediction_example.py 看:输入某只 A 股的 5 分钟 K 线,取最近 400 根做上下文,往后预测 120 根,输出是一张带 open/high/low/close/volume/amount 六列的 DataFrame,直接能画对比图。官方给的四档基座里,目前开源三档:
| 版本 | 参数量 | 最大上下文 | 开源 |
|---|---|---|---|
| Kronos-mini | 4.1M | 2048 | 是 |
| Kronos-small | 24.7M | 512 | 是 |
| Kronos-base | 102.3M | 512 | 是 |
| Kronos-large | 499.2M | 512 | 否 |
官方示例输出:收盘价与成交量两条曲线的真实值 vs 预测值
批量场景用predict_batch,要求所有序列的 lookback 和 pred_len 完全一致,走 GPU 并行,逐条独立做归一化/反归一化。微调回测这边,finetune/ 目录给了一条基于 Qlib 的 A 股完整链路:预处理 → 先调 tokenizer 再调 predictor(都支持 torchrun 多卡)→ top-K 策略回测,输出的是策略累计收益对比基准的曲线,官方特意声明这是演示流程,没算交易成本、滑点和市场冲击,别把它当成生产策略。
从零到跑通:最小上手路径
第 1 步,装好环境。Python 3.10+,依赖很轻,torch 2.0 以上即可:
git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos pip install -r requirements.txt第 2 步,拉权重、实例化预测器。Tokenizer 和模型都从 Hugging Face Hub 拉,KronosPredictor会自动选 GPU / MPS / CPU:
tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base") model = Kronos.from_pretrained("NeoQuasar/Kronos-small") predictor = KronosPredictor(model, tokenizer, max_context=512)第 3 步,喂数据、出结果。准备一个带timestamps和 OHLCV 列的 DataFrame(volume/amount 可缺,自动补 0),调predictor.predict(...)。注意 small/base 的max_context是 512,lookback 超过会被截断。想批量预测就把多组序列对齐长度后丢给predict_batch。
适合谁用 / 不适用谁
适合:做 A 股或加密的量化研究者、想验证"K 线基础模型"这条技术路线的团队,以及手里有特定市场数据、想拿预训练权重复用的人——finetune_csv/ 给了 CSV 数据直接微调的路子(含阿里港股 5 分钟 K 线的完整示例配置),比从零训省得多。
不适合:预期"装完就能下注"的交易员——它输出的是预测信号不是下单指令,采样参数不同结果就不同;硬件很弱的纯 CPU 环境,自回归逐位置解码,序列一长就会明显变慢,mini 档能跑但 patience 要够;另外它只处理 K 线,基本面、情绪类信息得你自己想办法融进去。
写在最后
Kronos 把"K 线当语言"这条路走通了一版,两档 token 加依赖解码的设计值得细看。建议先跑通 examples/prediction_example.py 看输出分布,再决定要不要进 finetune/ 或 finetune_csv/ 做定制——顺序别反,先跑通再调参,省得在环境问题上绕圈。
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考