Kronos 股票K线预测:从数据准备到批量回测的完整流程
2026/9/21 14:09:30 网站建设 项目流程

Kronos 股票K线预测:从数据准备到批量回测的完整流程

【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos

Kronos 股票K线预测模型是一个面向金融市场的开源基础模型,能对 OHLCV 行情数据做自回归预测。这份指南覆盖环境搭建、单只股票K线预测、批量预测与回测验证四个环节,读完可以跑通第一条预测流水线,并知道如何扩展到多标的场景。

前置准备与项目初始化

依赖项最低版本推荐配置
Python3.103.10+
PyTorch2.0.02.x + CUDA
huggingface_hub / pandas / matplotlib0.33.1 / 2.2.2 / 3.9.3按 requirements.txt 锁定版本
GPU 显存small 档 ≥8GB,base 档 ≥16GB

最小可运行命令如下:

git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txt

与指南相关的目录:model/(模型与 Predictor 实现)、examples/(推理示例脚本)、finetune/(Qlib 微调流水线)、finetune_csv/(CSV 微调流水线)。模型权重首次运行时由from_pretrained自动从 Hugging Face Hub 拉取。

核心机制拆解:Tokenizer 量化与自回归生成

两级框架:先离散化,再生成

Kronos 把K线预测拆成"离散化 + 自回归生成"两级。第一级是 Tokenizer,用两级码本把连续的 OHLCV 数据量化成分层离散 token;第二级是在 45 个以上全球交易所 K 线上预训练的 decoder-only Transformer,推理时逐 step 自回归地生成未来 token。设计意图是让模型先学会市场的"语言",再在这个语言上做下一根K线的生成式预测。

左侧为 Tokenizer 量化模块,右侧为自回归预测模块,共同完成从K线 token 化到预测序列的流程

从 DataFrame 到预测序列的管线

KronosPredictor封装了完整管线:输入归一化 → Tokenizer 离散化 → 自回归采样(温度 T、核采样 top_p、多路径 sample_count)→ 反变换,最终输出与输入同结构的预测 DataFrame。用户侧只需传入一个 DataFrame 和两段时间戳序列。可用的模型档位如下:

模型参数量最大上下文
Kronos-mini4.1M2048
Kronos-small24.7M512
Kronos-base102.3M512

端到端实操:跑通第一条预测流水线

准备 5 分钟K线数据

示例脚本examples/prediction_example.py读取 examples 目录下data/XSHG_5min_600977.csv(该文件不在仓库中,需自行准备同格式 CSV 并放入examples/data/)。必需列为timestamps / open / high / low / closevolume / amount可选。

执行预测并查看输出

python examples/prediction_example.py

脚本的核心调用如下(取 400 根历史K线作为输入,预测未来 120 根):

predictor = KronosPredictor(model, tokenizer, max_context=512) pred_df = predictor.predict( df=x_df, x_timestamp=x_timestamp, y_timestamp=y_timestamp, pred_len=120, T=1.0, top_p=0.9, sample_count=1, )

控制台会打印pred_df的头部,并弹出上下两栏图:上栏收盘价、下栏成交量。

蓝色为真实值,红色为预测值;预测段前半段跟随真实走势,随步数增加偏差逐渐放大,长程预测宜视为趋势参考

微调与回测验证

需要适配特定市场时,跑 finetune/ 的 Qlib 流水线:改config.py路径 → 预处理切分 → 依次微调 Tokenizer 与 Predictor → 回测。若数据是 CSV 格式,可直接用 finetune_csv/,配置关键项如下:

data: data_path: "/path/to/your/data.csv" lookback_window: 512 predict_window: 48 max_context: 512 training: batch_size: 32
python finetune/qlib_data_preprocess.py python finetune/qlib_test.py --device cuda:0

回测脚本会输出绩效指标和累计收益曲线:

左为策略对基准的累计收益,右为超额收益曲线;演示采用简化的 top-K 信号策略,结果不代表实盘表现

在 CSV 数据上微调后,仓库提供了港股阿里巴巴 5 分钟K线的逐窗口预测结果示例:

浅蓝为完整历史,深蓝为模型输入窗口,红色为预测段

批量预测与性能参考

predict_batch接收 DataFrame 列表与对应时间戳列表,内部将其堆叠为 (B, seq_len, feat) 张量后在 GPU 上并行生成。约束条件:所有序列的 lookback 与 pred_len 必须一致;每个 DataFrame 需含 OHLC 四列,缺volume / amount会自动补 0。大批量时建议分批调用以控制显存。

数据规模处理方式耗时参考(Kronos-small,单卡,pred_len=120)
50 只单批一次数分钟
200 只分 2~3 批约 10 分钟
1000 只分批循环40~60 分钟

以上为粗估,实际取决于 GPU 型号、pred_len 与 sample_count。

指数成分股全量扫描

把沪深 300 全部成分股的日频K线导出为 CSV,用predict_batch分批生成未来 N 日收盘价预测。将 300 只股票的预测涨跌幅汇总成排序表,即可得到次日增强策略的候选池或因子筛选输入,无需逐只重跑。

行业板块轮动监测

每个行业取若干代表股,批量预测其短期走势后按行业聚合,得到各板块的"预期动量"。当某板块的整体预测与近端实际走势出现明显分歧时,作为板块轮动观察信号,供人工复核候选名单。

常见问题与延伸阅读

  • 批量预测 OOM:batch 过大或 sample_count 偏高,拆小批次或改用 Kronos-mini
  • 数据列名不匹配:open/high/low/close 缺一即报错,volume/amount 可缺
  • 上下文超过 512:small/base 的 max_context 为 512,lookback 建议不超过
  • 示例数据缺失:data/XSHG_5min_600977.csv 不在仓库内,需自备并放入 examples/data/

值得进一步阅读的文档与代码:

  • model/kronos.py:Tokenizer、Transformer 与采样逻辑实现
  • examples/prediction_batch_example.py:多序列批量预测最小示例
  • finetune_csv/README_CN.md:CSV 微调完整流程说明

【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询