Kronos 金融K线基础模型:从 400 根历史 K 线预测未来 120 步价格
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
做量化研究时,一个反复出现的麻烦是:每换一个标的、换一个时间周期,特征工程、训练、评估就得重来一遍。而 K 线数据噪声大、维度多(开盘、最高、最低、收盘、成交量),通用时序模型很难抓住其中的结构。Kronos 是一个开源的金融 K 线基础模型,它在 45 个以上全球交易所的 K 线数据上预训练,你只需给它一段 K 线 DataFrame,它就能自回归地预测未来 N 根 K 线的 OHLCV 走势。
定位:专为 K 线设计的 decoder-only 基础模型
Kronos 是一族面向金融市场"语言"——K 线序列的 decoder-only 基础模型,核心设计是两阶段:tokenizer 先把连续的 OHLCV 量化成分层离散 token,再由自回归 Transformer 在这些 token 上预训练。它带来的实际效果:
- 层级化离散 tokenization:把连续价格序列变成结构化 token,模型对高噪声金融数据的容忍度更高,这是它区别于通用时序模型的关键
- 预测开箱即用:model/kronos.py 里的
KronosPredictor内部完成归一化、上下文截断、推理、反归一化,从原始 DataFrame 到预测曲线只需要约 10 行代码 - 模型分级可选:开源权重从 4.1M(mini)到 102.3M(base)三档,配合两套完整微调流程(Qlib 数据管线和 CSV 数据管线),可以按显存和数据形态自选
最小可运行示例:从安装到第一条预测曲线
先克隆仓库并安装依赖(需要 Python 3.10+,依赖只有 numpy、pandas、torch>=2.0 等几个包):
git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txt第二步,加载预训练 tokenizer 和模型,并构建预测器:
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)第三步,准备历史 K 线数据并发起预测(代码取自 examples/prediction_example.py):
df = pd.read_csv("./data/XSHG_5min_600977.csv") df['timestamps'] = pd.to_datetime(df['timestamps']) lookback, pred_len = 400, 120 x_df = df.loc[:lookback-1, ['open','high','low','close','volume','amount']] pred_df = predictor.predict( df=x_df, x_timestamp=df.loc[:lookback-1, 'timestamps'], y_timestamp=df.loc[lookback:lookback+pred_len-1, 'timestamps'], pred_len=pred_len, T=1.0, top_p=0.9, sample_count=1)返回的pred_df是一个 DataFrame,列为open/high/low/close/volume/amount,索引是你提供的未来时间戳,print(pred_df.head())即可在终端看到前 5 根预测 K 线。注意./data/XSHG_5min_600977.csv不在仓库里,你需要自备一份同格式的 K 线 CSV(必须有timestamps和 OHLC 四列)。直接运行示例脚本则会画出收盘价与成交量的"实际 vs 预测"双面板图:
核心功能速览
批量预测多个标的:predict_batch 用法
场景:你想对几十只股票统一跑未来 N 根的预测做初筛,而不是逐个循环。用法:调用predict_batch,传入df_list、x_timestamp_list、y_timestamp_list三个列表,要求所有序列的历史长度(lookback)和预测长度(pred_len)一致。examples/prediction_batch_example.py 展示了同一份数据切出 5 个窗口一次性跑完的完整写法。结果:按输入顺序返回一个 DataFrame 列表,每条序列独立做归一化/反归一化,GPU 上并行处理。
用自己的 CSV 微调:finetune_csv 流程
场景:预训练权重对某个特定标的或周期(比如 5 分钟 K 线)拟合不够好。用法:CSV 需包含timestamps/open/high/low/close/volume/amount(没有量价数据时 volume 和 amount 可全填 0),在 yaml 里配置data_path、lookback_window、predict_window后一条命令顺序训练 tokenizer 和 predictor:
cd finetune_csv python train_sequential.py --config configs/config_ali09988_candle-5min.yaml结果:checkpoint 分别保存到{exp_name}/tokenizer/best_model/和{exp_name}/basemodel/best_model/。仓库自带港股阿里巴巴(09988)5 分钟 K 线的微调配置和预测图,可参考 finetune_csv/README_CN.md。多卡时可加torchrun --standalone --nproc_per_node=N启用 DDP。
A 股 Qlib 微调与回测闭环
场景:你希望用 Qlib 体系的 A 股日线数据完成"数据准备 → 微调 → 回测"的完整闭环。用法:先pip install pyqlib并按 Qlib 官方指南备好数据,改好 finetune/config.py 里的路径后依次执行:
python finetune/qlib_data_preprocess.py torchrun --standalone --nproc_per_node=2 finetune/train_tokenizer.py torchrun --standalone --nproc_per_node=2 finetune/train_predictor.py python finetune/qlib_test.py --device cuda:0结果:qlib_test.py在测试集上做推理,生成预测信号并跑一个简单的 top-K 策略回测,控制台输出性能分析,同时画出策略相对基准的累积收益曲线:
踩坑指南:常见报错解决
运行示例提示找不到 examples/data/XSHG_5min_600977.csv
原因:示例脚本按相对路径读取./data/XSHG_5min_600977.csv,但这个 CSV 并未随仓库发布。解决:自己导出一份格式一致的 K 线 CSV(timestamps/open/high/low/close必填,volume/amount可选)放到该位置,或修改脚本里的读取路径。
为什么输入了 1000 根 K 线,模型却只用到最后 512 根
Kronos-small 和 Kronos-base 的上下文固定为 512,KronosPredictor对超过max_context的历史会自动截断,建议lookback不超过 512。如果确实需要更长上下文,可换 Kronos-mini(上下文 2048,仅 4.1M 参数)。
数据里没有成交量和成交额列怎么办
predict在缺少volume或amount列时会自动补 0,价格四列仍可正常预测;完全不依赖量价数据时,可以直接运行 examples/prediction_wo_vol_example.py。另外价格列含 NaN 会直接抛ValueError,跑之前先做缺失值检查。
GPU 显存不够 / 想在 CPU 上跑
按参数量选模型:mini 4.1M、small 24.7M、base 102.3M。KronosPredictor不传device时会自动选择 cuda → mps → cpu 中最先可用的设备,所以 CPU 推理可行,但自回归是逐 K 线生成的,pred_len较大时速度会明显变慢。
边界与成本:能做什么、不能做什么
- 能做的:预测未来
pred_len根 K 线的 OHLCV,单序列或批量;微调适配特定标的/周期。 - 不能做的:预测曲线不等于可交易信号。仓库自带的回测是简化 top-K 策略,不含交易成本、滑点和风险因子中性化,README 也明确该管线是演示而非生产系统。
- 资源成本:Python 3.10+、torch≥2.0;推理建议 8GB 以上显存(small 档),CPU 可跑但慢;CSV 微调单卡即可,
finetune/管线默认多卡torchrun。 - 适合:快速搭建 K 线预测基线、在自有标的/周期上微调验证想法的人;不适合:期望拿预测曲线直接下单、或需要毫秒级实时推理的高频场景。
Kronos 把"原始数据 → token → 预测曲线"做成了可直接复用的管线,从 examples/prediction_example.py 和 finetune_csv/README_CN.md 两个入口就能开始上手。
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考