Kronos 金融 K 线预测:从 clone 到 120 根未来 K 线的 5 步实操手册
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
Kronos 是一个专为金融 K 线(K-line)数据设计的开源基础模型:输入一段历史 OHLCV 序列,输出未来多个时间点的开高低收与成交量预测,而不是单点"涨/跌"判断。与通用时间序列模型不同,它先做金融数据专属的 tokenizer 离散化,再让自回归 Transformer 学习"续写 K 线",预训练数据覆盖全球 45 个以上交易所。
模型档位与能力矩阵
Kronos 以from_pretrained方式从 Hugging Face Hub 加载,模型家族按参数量分三档开源。各档差异只影响速度和上下文长度,不影响输入输出接口。
| 模型 | 参数量 | 上下文长度 | 配套 Tokenizer | 适用场景 |
|---|---|---|---|---|
| Kronos-mini | 4.1M | 2048 | Kronos-Tokenizer-2k | 低资源环境、快速验证 |
| Kronos-small | 24.7M | 512 | Kronos-Tokenizer-base | 日常预测主力档位 |
| Kronos-base | 102.3M | 512 | Kronos-Tokenizer-base | 追求更高预测质量 |
| Kronos-large | 499.2M | 512 | 未开源,仅论文参考 | 未开源 |
硬件边界:mini 和 small 在普通 CPU 上也能完成单次预测,base 以及批量推理、微调训练建议直接上 GPU。
最小可运行闭环:从 clone 到第一张预测图
环境要求:Python 3.10+,核心依赖为 torch、pandas、huggingface_hub(完整清单见 requirements.txt)。
git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos && pip install -r requirements.txt仓库自带一份 9.3 万行的 5 分钟 K 线样例(阿里巴巴港股 09988),不用自己准备数据,以下脚本可直接跑出预测图:
import pandas as pd from model import Kronos, KronosTokenizer, KronosPredictor tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base") model = Kronos.from_pretrained("NeoQuasar/Kronos-small") predictor = KronosPredictor(model, tokenizer, max_context=512) df = pd.read_csv("./finetune_csv/data/HK_ali_09988_kline_5min_all.csv") df['timestamps'] = pd.to_datetime(df['timestamps'], format='%Y/%m/%d %H:%M') x_df = df.loc[:399, ['open', 'high', 'low', 'close', 'volume', 'amount']] x_ts = df.loc[:399, 'timestamps'] y_ts = df.loc[400:519, 'timestamps'] pred_df = predictor.predict(df=x_df, x_timestamp=x_ts, y_timestamp=y_ts, pred_len=120, T=1.0, top_p=0.9, sample_count=1) print(pred_df.head())输入约定:
df必须含open/high/low/close四列,缺volume时自动补 0,缺amount时用volume × 均价估算x_timestamp为历史段时序,y_timestamp为待预测时段的时序,返回的pred_df按y_timestamp对齐max_context=512:small/base 的最大上下文,输入更长会被自动截断T(温度)、top_p(核采样)、sample_count(多条采样路径取平均)控制预测随机性,官方建议 T 取 1.2~1.5、top_p 取 0.95~1.0、样本 2~3 条
机制拆解:K 线是怎么被"续写"的
跑通之后再回头看原理,整个系统是两阶段流水线:先把 K 线翻译成离散 token,再让 Transformer 按语言模型方式预测下一个 token。
阶段一 Tokenizer:OHLCV 序列是连续、高噪声的,直接喂给 Transformer 很难学。Tokenizer 先用编码器压缩表示,再通过二值球面量化(BSQ)把每个时间点量化成"粗粒度 + 细粒度"两级子 token,解码器再重建出 K 线,量化保证了对原始数据的逼近,重建能力说明 token 确实保留了价格与成交量的关键信息。
阶段二 自回归 Transformer:拿到 token 序列后,因果 Transformer 按"给定历史、预测下一个 token"的方式预训练。每个 Transformer 块内部由多个 Intra-Block 组成,块之间通过共享参数和交叉注意力传递跨时间尺度信息;预测时按时间步逐点采样生成,解码回价格空间即完成"续写 K 线"。
核心实现分别在 model/module.py(BSQuantizer、Transformer 块)与 model/kronos.py(KronosTokenizer、Kronos、KronosPredictor三个可独立 import 的类)。
输出验证:预测与回测长什么样
第一张图是单资产预测样例:取 400 根 5 分钟 K 线为上下文,预测后续 120 根,蓝色为真实值、红色为模型预测,上方收盘价、下方成交量。
收盘价预测贴合了震荡后上行的趋势形态,成交量预测整体偏保守,捕捉了部分放量区间。需要说明:预测图展示的是短窗口的形态拟合,长周期点位的绝对准确度不能只看单张图下结论。
第二张图是官方 A 股 top-K 策略回测:上方为扣费后累计收益、下方为相对 CSI300 基准的累计超额收益,last/mean/max/min 对应不同采样路径,2024 年 10 月后策略曲线整体位于基准之上。
官方明确标注这条流水线是简化演示(top-K 选券 + 简单回测),并非生产级量化系统,真实使用还需叠加组合优化、风险因子中性化和交易成本建模。
扩展路径:批量推理、微调与模块复用
批量推理与 Web 界面
多资产场景用predict_batch:传入等长的 DataFrame 列表即可 GPU 并行推理,各序列独立归一化/反归一化,要求所有序列历史长度与pred_len一致。零代码体验则走内置 Web 界面(Flask + Plotly):cd webui && python run.py启动后访问http://localhost:7070,操作路径为:选择数据文件 → 选模型与设备(CPU/CUDA/MPS)→ 滑块拖动 400+120 数据点窗口 → 调 T/top_p/样本数 → 点击预测,结果页给出 K 线图、价差统计和误差分析。
微调
自带 CSV 微调管线,面向任意含timestamps/open/high/low/close/volume/amount列的 K 线数据:改一份 YAML 配置后一条命令顺序训练 tokenizer 和 predictor,多卡可加 torchrun 开 DDP。
python finetune_csv/train_sequential.py --config finetune_csv/configs/config_ali09988_candle-5min.yaml # 顺序训练 tokenizer + predictor python finetune_csv/train_sequential.py --config ...yaml --skip-tokenizer # 只训练 predictor python finetune_csv/train_sequential.py --config ...yaml --skip-existing # 跳过已存在检查点A 股场景另有 Qlib 管线(数据切分 → 微调 Tokenizer → 微调 Predictor → 回测),流程见 finetune/ 目录,微调后的 09988 预测效果如下图:
模块复用做二次开发
三个核心类都是标准 PyTorch 模块,支持from_pretrained加载任意档位权重:KronosTokenizer可单独接入你自己的 K 线预处理,Kronos可直接替换进自研 pipeline,KronosPredictor封装了归一化/采样/反归一化,只想换推理后端时保留它即可。权重换档只需改from_pretrained的模型名,其余代码不动。
决策参考:你的场景走哪条路
| 场景描述 | 推荐路径 | 关键配置 | 注意事项 |
|---|---|---|---|
| 拿 1 只票 30 分钟验证预测形态 | KronosPredictor.predict+ Cronos-mini/small | max_context=512,T=1.2~1.5、top_p=0.95 | CPU 可跑,首次运行需联网下载权重 |
| 接入 50 只资产日级信号 | predict_batch+ 自有数据管道 | 各序列等长历史窗口,pred_len一致 | 必须 GPU;各序列独立归一化,注意对齐交易日历 |
| 用自有市场数据做领域适配 | finetune_csv顺序训练管线 | YAML 里设lookback_window/predict_window与数据路径 | 先修好配置里的数据与预训练模型路径再启动 |
| 只复用量化或推理组件 | 单独 importBSQuantizer/KronosTokenizer | 从 model/ 直接引用 | 输入张量格式需与源码约定一致 |
选完路径后先用 1 只资产跑通端到端,再横向扩展到批量与微调,避免一上来就调训练超参。
边界与下一步
- 做完首次
predict调用 → 检查输出pred_df的 index 是否与y_timestamp对齐 → 若对不齐则检查时间戳是否连续、时区是否一致 - 做完单点预测对比 → 检查收盘价趋势方向是否被捕捉 → 若偏差大则把
sample_count提到 2~3、T 提到 1.2~1.5 再对比 - 做完批量推理 → 检查各资产预测量级是否合理 → 若个别序列异常,优先核对该序列自身的缺失值与归一化窗口
- 做完微调 → 用 finetune/qlib_test.py 或 webui 跑回测评估 → 若超额收益不稳定,回到配置检查训练/验证集切分比例
模型输出为统计意义上的预测信号,不构成投资建议;真实使用前请用自己的数据做充分回测验证。
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考