如何15分钟跑通一个金融K线预测模型:Kronos完整上手指南
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
想跑金融时序预测模型,却总被“模型太大、没显卡”劝退?Kronos 可能是个解法——它是首个开源的K线(K-line)基础模型,用全球 45+ 交易所的数据训练,2GB 显存就够,约15分钟能出第一次K线预测结果。
📦 Kronos:一个为K线设计的基础模型
Kronos 是一族 decoder-only 时序基础模型,专攻金融市场的数据形态——K线序列。它不是通用时序模型,而是针对行情数据高噪声的特点做了两阶段框架:
- 第一阶段·K线Token化:专用 Tokenizer 用 BSQ 块量化,把连续 OHLCV 数据压成分层离散 token
- 第二阶段·自回归预测:Transformer 解码器在这些 token 上预训练,上下文窗口最大 512 步
开源模型共 3 个尺寸,按显存选:
| 模型 | 参数量 | 上下文长度 |
|---|---|---|
| Kronos-mini | 4.1M | 2048 |
| Kronos-small | 24.7M | 512 |
| Kronos-base | 102.3M | 512 |
配套工具链齐全:预测 API、Web 可视化界面、两条微调流水线(Qlib 与 CSV)、回测脚本。
🚀 跑通:从克隆到首次Kronos预测
环境要求
- Python 3.10+
- PyTorch 2.0+(GPU 建议 CUDA 11.7+,CPU 也能跑)
- GPU 推理 2GB 显存起步
- 依赖仅 numpy、pandas、torch 等十来个包,一条命令装完
安装与加载
git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txtfrom 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)此时你应该看到:控制台无任何报错,tokenizer 与模型加载完成(首次运行会下载预训练权重,之后走本地缓存)。
📈 核心能力演示:10行代码预测未来120根K线
预测是 Kronos 的主功能:喂入历史 OHLCV,调用一次predict()就返回未来 N 步的开盘、最高、最低、收盘和成交量。输入 DataFrame 至少要有open、high、low、close四列,volume、amount可选;仓库自带一份可直接用的样本K线文件:tests/data/regression_input.csv。
import pandas as pd df = pd.read_csv("tests/data/regression_input.csv") df['timestamps'] = pd.to_datetime(df['timestamps']) pred_df = predictor.predict( df=df.iloc[:400][['open', 'high', 'low', 'close', 'volume']], x_timestamp=df.iloc[:400]['timestamps'], y_timestamp=df.iloc[400:520]['timestamps'], pred_len=120, T=1.0, top_p=0.9, sample_count=1, ) print(pred_df.head())注意:small/base 的最大上下文是 512,lookback不要超过它,超了会被自动截断。
带加载、预测、画图的完整脚本见 examples/prediction_example.py,运行后效果如下:
读图要点:
- 上方面板:蓝线是历史收盘价,红线是 Kronos 预测的未来收盘价
- 下方面板:成交量预测同步跟随市场活跃度的波动
- 返回值:pandas DataFrame,索引为你传入的
y_timestamp,含 open/high/low/close/volume/amount 六列
进阶用法:一行命令启动可视化预测界面
场景:不想写代码,直接在浏览器拖时间窗口看预测效果。
cd webui python run.py浏览器打开http://localhost:7070(若端口被占,先释放该端口)。界面提供:
- CSV/Feather 数据加载,400+120 固定数据点窗口滑块
- K线图展示,并自动做预测值 vs 实际值的对比误差分析
- 模型尺寸三选(mini/small/base),CPU/CUDA/MPS 设备可切
- 采样参数可调:温度 T(0.1–2.0,官方推荐 1.2–1.5)、top_p(推荐 0.95–1.0)、采样条数(推荐 2–3)
各参数含义和排错清单在 webui/README.md。
进阶用法:多资产并行与自定义数据微调
批量预测
要同时预测多只资产,用predict_batch():传入df_list、x_timestamp_list、y_timestamp_list三个列表,GPU 并行执行、每条序列独立归一化。唯一硬性要求:所有序列的历史长度和预测长度必须一致。
用CSV数据微调
轻量路线是 CSV 微调:把你的数据整理成含timestamps/open/high/low/close/volume/amount七列的 CSV(volume、amount 没有就填 0),配置里指向该文件后:
cd finetune_csv python train_sequential.py --config configs/config_ali09988_candle-5min.yaml脚本会按“先训 tokenizer、再训 predictor”的顺序自动跑完,最佳检查点存到配置指定的输出目录。仓库自带阿里(09988.HK)5分钟K线的完整示例数据和配置,细节见 finetune_csv/README_CN.md。
如果你做的是 A股日线,则走 Qlib 路线:数据预处理 → 微调 tokenizer → 微调 predictor → 回测四步,最终会输出策略累计收益 vs 基准的曲线图,类似这样:
⚠️ 避坑与调优
显存不足(CUDA out of memory)——输入序列太长或模型选大了:
- 调小
lookback - 换 Kronos-mini(4.1M 参数)
- 开 FP16 推理:
model = model.half(),显存占用直接减半
预测曲线不稳定、波动大——采样随机性导致:
- 温度按官方推荐设 T=1.2–1.5(想要更平滑就调低)
top_p收到 0.9–0.95sample_count设为 2–3,生成多条路径自动取平均
首次运行特别慢——在下载预训练权重,属正常现象;重跑走缓存,秒级加载。
WebUI 打不开——先看控制台是否提示端口占用,释放 7070 端口后重启。
性能技巧:同显存下,predict_batch一次喂多只资产,比循环单跑更快。
延伸与资源
- 想读模型实现:tokenizer 的 BSQ 量化与解码器结构都在 model/kronos.py
- 跑完整示例:examples/prediction_example.py 覆盖加载、预测、画图全流程
- 批量预测实战:examples/prediction_batch_example.py 演示多资产并行
- 自定义数据微调:finetune_csv/ 内有现成配置与样例数据
更多架构细节、模型家族和引用方式见根目录 README.md;遇到问题先看控制台报错,仍无解可到项目社区提 Issue 求助。
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考