news 2026/9/2 10:51:16

Kronos:K线预测基础模型,从装好依赖到跑通回测的最短路径

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kronos:K线预测基础模型,从装好依赖到跑通回测的最短路径

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-mini4.1M2048
Kronos-small24.7M512
Kronos-base102.3M512
Kronos-large499.2M512

官方示例输出:收盘价与成交量两条曲线的真实值 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 10:49:07

用工程师思维维护深度关系:构建流动社会中的抗衰减社交系统

最近一个周末,我清理手机通讯录和微信聊天记录,发现过去五年里见过的人、加过微信的人、合作过项目的人,数量超过一千。但真到深夜想找一个人说点心里话时,能拨出去的号码,不超过五个。 这个画面让我想起在一场辩论赛…

作者头像 李华
网站建设 2026/9/2 10:48:56

Python实现机器人自动走迷宫:从BFS算法到路径规划实战

简介:本资源是一份面向计算机专业本科生与人工智能初学者的课程设计实践项目,聚焦机器人在随机生成迷宫中的自主路径规划问题,融合经典搜索算法与深度强化学习两种主流方法。压缩包共28个文件,含17张算法运行过程截图、6个不同规模…

作者头像 李华
网站建设 2026/9/2 10:47:53

技术选型决策框架:如何识别技术拐点与规避潜在风险

最近市场波动让不少投资者感到困惑,一边是“底部确立”的乐观声音,一边是“还有个问题”的谨慎提醒。这种看似矛盾的观点,恰恰反映了当前市场的复杂心态。对于技术开发者而言,这种市场分析背后的逻辑,其实和我们分析一…

作者头像 李华
网站建设 2026/9/2 10:47:28

从零到一:用Python完成电商数据分析实战项目

1. 数据分析完整项目,到底难在哪里很多同学学数据分析,路径基本一致:先学 Excel,再学 SQL,然后啃 Python 和 Pandas,最后看了一堆可视化图表。学完之后打开招聘网站,发现岗位要求上都写着“有完…

作者头像 李华
网站建设 2026/9/2 10:47:21

鲸鱼优化算法改进策略:从WOA到IWOA的工程实践与性能提升

简介:本资源提供一种改进的鲸鱼优化算法(IWOA)与双向LSTM结合注意力机制的智能优化建模方案,面向人工智能、智能优化及时间序列预测方向的研究生与算法工程师,解决传统WOA易陷局部最优、模型泛化能力弱等问题。压缩包共…

作者头像 李华
网站建设 2026/9/2 10:46:55

CPU电压1.36V安全吗?电迁移、温度与制程工艺的寿命影响全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华