开源 K线预测模型 Kronos:45 个交易所数据背后的股票预测基础模型
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
本文介绍的开源 K线预测项目,Kronos 股票预测模型,在 45 个以上全球交易所的 K线数据上预训练。它把开盘、最高、最低、收盘、成交量(OHLCV)序列量化为离散 token,再用自回归 Transformer 逐点预测未来 K线。流程全部开源,可在本地复现。
它解决什么问题
从选股与量化流程看,直接拿 K线数据做预测有三个难点:
- 维度多,难以统一处理。一根 K线带 open、high、low、close、volume 五个字段,量纲与分布各不相同。传统指标方法一次只看一维,再人工拼接,容易丢掉维度间的联动。Kronos 的 tokenizer 把五维数据作为一组整体做量化,天然保留这种耦合关系。
- 噪音大,模型容易过拟合。金融序列是高噪音数据,通用时间序列基础模型直接套用并不理想。README 中说明 Kronos 是专门为金融 K线的高噪音特性预训练的 decoder-only 基础模型,而非通用 TSFM。
- 人工反应慢,无法批量。逐只画图、看线花费的时间,放到数千只股票上就不可行。Kronos 提供
predict_batch接口,借助 GPU 并行同时预测多条序列,且每条序列独立做归一化与反归一化。
原理速览
Kronos 是两阶段设计,可以理解为"先把 K线翻译成词,再让语言模型续写":
- K线标记化。tokenizer 的编码器对 OHLCV 做 BSQ 量化,把每根 K线拆成"粗粒度 + 细粒度"两层子 token:粗粒度刻画整体形态,细粒度保留价格与成交量细节;解码器能用 token 重构回 K线,保证信息没有丢。
- 自回归预测。token 序列上堆叠因果 Transformer 块,粗、细粒度 token 之间通过交叉注意力交互。由于使用因果掩码,预测下一步时只能依赖更早的 token,训练与推理都看不到未来数据——这与真实交易场景一致:下单时刻永远只有历史可用。
核心实现在 model/kronos.py,Transformer 块结构在 model/module.py。
效果怎么验证
回测收益怎么看
仓库随微调流水线(A股数据,由 finetune/qlib_test.py 生成)给出回测图。上下两个面板,各含 last / mean / max / min 四条采样曲线:
- 上方面板(带成本的累计收益):区间为 2024-07 至 2025-06。四条策略曲线在 2024 年 10 月后整体位于 CSI300 基准虚线之上,2025 年 4 月前后出现一次明显回撤,随后再度拉开差距。
- 下方面板(带成本的累计超额收益):2024 年 10 月后持续上行,四条曲线末端大致分布在 0.05 到 0.15 之间。
需要说明:README 明确写这段流水线只是简化示例,不是生产级量化系统。
单股价格与成交量预测对比
示例脚本用 400 根历史 K线预测未来 120 根,产出对比图:红为预测,蓝为真实值,收盘价与成交量分上下两幅。图中可以看到:
- 预测并非每一段都与真实吻合。尾段收盘价预测曲线抬升到 11.3 附近,而真实值停在 10.9 上下,偏差随预测步长增大而放大。
- 成交量预测与真实值在量级和峰值位置上更接近一些,但单根尖峰仍有偏移。
仓库没有给出固定"准确率"数字,验证方式就是拿同样的历史窗口自己跑一遍,把预测值和真实值画在一起比较。
三步跑起来
Kronos 安装与数据准备
git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txt要求 Python 3.10 及以上。数据准备一份带 timestamps 列和 open / high / low / close 列的 CSV(volume、amount 可选)。注意 small 与 base 模型的最大上下文长度是 512,历史窗口建议不超过 512 根,更长会被自动截断。
执行预测
运行 examples/prediction_example.py 即可完成"加载模型 → 调用KronosPredictor.predict→ 输出对比图"的完整流程;若数据没有量价字段,用 examples/prediction_wo_vol_example.py 即可,采样参数(T、top_p、sample_count)都可在 predict 调用中调节。
进阶玩法
- A股微调:finetune/ 提供四步流水线:改
config.py路径 →qlib_data_preprocess.py切分数据 → 用 torchrun 依次微调 tokenizer 与 predictor →qlib_test.py回测。依赖pyqlib,示例基于 Qlib 的日线数据。 - 自定义 CSV 微调:finetune_csv/ 支持拿单个 CSV 直接训练,仓库示例是阿里巴巴(港股 09988)的 5 分钟 K线,
train_sequential.py一条命令顺序完成两阶段训练,也支持多卡 DDP。 - 高频与批量场景:5 分钟级数据按同样 CSV 格式喂入即可,其他频率只需换数据粒度;整池股票筛选用
predict_batch,前提是所有序列历史长度与预测长度一致。
适合谁 / 使用注意
适合三类人:想动手试 K线序列建模的量化新手、评估时间序列基础模型的研究者,以及要把并行预测接口嵌进选股流程的开发者。模型权重提供 mini / small / base 三档(4.1M / 24.7M / 102.3M 参数),显存有限可从 mini 起步。
使用注意:模型输出是统计意义上的推断,预测结果不构成任何投资建议。仓库自己也写明回测只是简化演示;要变成可用策略,还需组合优化、风险因子中性化,并认真建模交易成本、滑点与市场冲击。
下一步可以这样做:从 examples/prediction_example.py 跑出第一个预测;需要浏览器界面时参考 webui/,启动后访问本地 7070 端口;项目采用 MIT 协议开源,对应论文题为 "Kronos: A Foundation Model for the Language of Financial Markets"。
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考