Kronos K线预测快速上手指南:一个用45个全球交易所数据训练出的金融K线基础模型
2026/9/12 15:45:15 网站建设 项目流程

Kronos K线预测快速上手指南:一个用45个全球交易所数据训练出的金融K线基础模型

【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos

把一张K线图交给通用AI,它多半连那根竖线都认不全。Kronos专治这个短板:它是一个开源的金融K线预测基础模型,把K线数据压缩成机器能读懂的离散token,再用自回归Transformer去推演未来的K线,预训练数据覆盖45个以上的全球交易所。

它是什么、适合谁用

Kronos 是一组专为 K 线序列设计的 decoder-only 模型,整体分两段:tokenizer 负责“数据变 token”,预训练 Transformer 负责“token 变未来K线”。官方模型库给出四档规格:Kronos-mini(410万参数,上下文 2048 根)、Kronos-small(2470万)、Kronos-base(1.02亿),后两者上下文均为 512 根;4.99亿参数的 Kronos-large 未开源。它的典型用户有三类:想在半小时内先看到预测效果的普通投资者和学生;需要在统一信号层上叠加自己策略的量化研究者;以及有多卡 GPU、想把模型往特定市场数据上微调的团队。常见用法是单只标的预测、批量行情筛选、回测信号生成,以及 5 分钟级别的高频K线。项目采用 MIT 协议,代码与示例脚本都在仓库里,可以直接对照着读。

角色说清楚了,接下来的问题是:它凭什么“读得懂”K线,而不是在曲线之间做插值?

它凭什么能做到

第一级:把K线翻译成“条形码”

模型吃进的不是原始数字,而是符号。KronosTokenizer 先把开、高、低、收、量五个维度的连续数据,通过 BSQ(Binary Spherical Quantization)二值球面量化编码成离散 token。这很像超市商品上的条形码:收银员不需要认识商品长什么样,扫一下码就行;Kronos 的“收银员”(Transformer)学的也是这套编码规则。并且这条码是分两级的——第一级 s1 是粗粒度码,相当于先告诉你商品来自哪个大区;第二级 s2 是细粒度子 token,补上这个格子里更精细的价格与成交量信息。粗、细两级并存,模型才能一边看大势,一边盯局部波动。

第二级:只允许向前看的自回归 Transformer

token 序列随后送入堆叠的因果 Transformer:预测第 t 根K线时只能看到第 t 根之前的历史,不能偷看任何未来信息。这像极了侦探办案——只能使用已经发生的线索去推下一步,不能翻到卷宗的结尾。模型还给每个时间步配了时间嵌入,并有一个依赖感知层,让细粒度 token s2 以粗粒度 s1 为条件进行解码,两级编码相互咬合而不是各用各的。容量上,small/base 的上下文上限是 512 根(mini 可达 2048 根),超过上限的输入会由预测器自动截断。

效果到底如何

先看单标的预测。下图是官方示例脚本 prediction_example.py 的输出:用 400 根历史K线预测接下来 120 根,上半部分是收盘价对比,下半部分是成交量对比,红线为预测、蓝线为真实值,走势拐点基本踩在节奏上。

再看策略层面。按仓库里的 A 股流程,用 Qlib 数据微调 tokenizer 和 predictor,再跑一个简单的 top-K 策略回测,下图展示策略与基准指数的累积收益曲线对比。官方 README 特意注明:这条流水线只是简化演示,不是可直接上生产的量化系统——敢把话说到这个份上,反而可信。

如果你关心的是可复现性,tests/ 目录锁定了固定的模型版本与随机种子,对 30 根预测输出做回归校验,MSE 在 0.0090(512 上下文)和 0.0037(256 上下文)这个量级。换句话说:同样的输入,跑一百次也是一样的输出。

模型的能力边界看到了,接下来更实际的问题是:在自己的机器上把它跑起来要多少力气?

最短路径跑起来

第一步,环境:装好 Python 3.10+ 之后,执行——

git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos && pip install -r requirements.txt

第二步,数据:准备一份含 open、high、low、close 四列的 CSV,volume 和 amount 可缺省,另加一列时间戳。示例脚本 examples/prediction_example.py 读取的是 data/XSHG_5min_600977.csv(上交所 5 分钟K线),把这份 CSV 换成你自己的行情数据即可。

第三步,调用:从模型库加载预训练 tokenizer 和模型(例如 NeoQuasar/Kronos-Tokenizer-base 配 NeoQuasar/Kronos-small),交给 KronosPredictor 并设 max_context 为 512,再传入 400 根历史数据和 120 个未来时间戳调用 predict。随机性由温度 T、top_p 和采样条数三个参数控制,返回的是包含 open、high、low、close、volume、amount 六列的预测表。实在不想写代码也有旁门:运行 webui/ 目录里的 run.py,在浏览器打开本地 7070 端口,拖动滑条选时间窗、点预测,页面会自动给出预测值与真实值的对比分析。

跑完第一只标的之后你可能会发现:预训练权重未必贴合你关注的那个市场的风格——这正是下一节的起点。

还能怎么用

一是“预测 + 行情语境”的组合分析。examples/yuce/ 目录里为 000021(深科技)等个股备好了完整案例:模型不只输出K线预测,还会把大盘趋势强度、板块动量、美国利率周期等市场因素汇总成综合评分,随附的 market_analysis_report.json 里能看到逐项打分。下图就是 000021 的综合预测输出。

二是在自有数据上微调。finetune_csv/ 提供了一条完整的自定义 CSV 微调线:把时间戳加 OHLCV 的七列 CSV 备好,在 YAML 配置里写好数据路径与训练参数,跑 train_sequential.py 就会先微调 tokenizer、再微调 predictor,多卡环境可用 torchrun 分布式训练。官方演示用的是阿里巴巴 09988 的 5 分钟K线,窗口设为 512 根历史预测后续 48 根,下图是微调后的实际预测效果,能明显看出对单只标的局部节奏的贴合。

另外还有 predict_batch 批量接口,一次并行预测多条序列,适合整市场扫描;唯一约束是各条序列的历史窗口和预测长度必须一致。

常见疑问与误解澄清

K线预测信号能直接拿来交易吗?不建议。官方微调流程在 README 里写明只是简化演示,产出的是原始预测值;要上生产,还需要组合优化、风险因子中性化,以及交易成本、滑点的精细建模,文档对此逐条列出了“从演示到生产”的差距。

为什么只能用 512 根历史数据?这是 small/base 的上下文上限,mini 可以到 2048 根。超过上限时预测器会自动截断,但更稳妥的做法是自己在取数阶段控制窗口。

成交量数据是必须的吗?不是。volume 和 amount 都是可选项,缺失时按零填充,examples/prediction_wo_vol_example.py 里就是无量版完整示例。

为什么两次运行结果不完全一样?预测本身是概率采样过程,不是确定性函数。WebUI 文档给出的建议是 T 取 1.2 到 1.5、top_p 取 0.95 到 1.0、采样 2 到 3 条取平均,可以显著稳定输出。

先跑一遍 examples/prediction_example.py,看看 Kronos 为你预测的第一批K线长什么样;论文已入选 AAAI 2026,微调流程 2025 年 8 月开源后持续在更新,后续大概率往更多市场、更多时间粒度方向演进。

【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询