news 2026/9/1 14:40:03

Kronos上手指南:从K线预测到批量回测的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kronos上手指南:从K线预测到批量回测的完整流程

Kronos上手指南:从K线预测到批量回测的完整流程

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

要盯的票一多,"今天该重点看哪几只"就成了件烦事。人工翻几十条分时图累不说,还经常顾此失彼。Kronos 是一个开源的金融市场K线基础模型(foundation model),在超过45个全球交易所的数据上预训练,输入历史K线、输出未来一段时间的价格与成交量预测,把这种重复劳动压缩成一次脚本运行。如果你正想在开盘前批量过一遍候选股,下面这套流程可以直接用。

Kronos 是什么:K线的"语言模型"

Kronos 做的事,可以类比为"把大语言模型搬进K线世界"。输入是一段历史K线 DataFrame,必须包含 open、high、low、close 四列,volume 和 amount 可选,外加对应的历史时间戳和你想预测的未来时间戳;输出是一个同样结构化的 DataFrame,给出未来每根K线的开高低收、成交量和成交额。

图:Kronos 的两阶段架构,左侧 Tokenizer 负责把K线量化为离散token,右侧 Transformer 做自回归预测

实现分两步。第一步是一个专门的 Tokenizer,把连续的 OHLCV 数值量化成分层的离散 token;第二步是一个 decoder-only 的 Transformer,在这些 token 上做自回归预训练,逐位"读出"下一根K线,最后再解码回价格序列。这套设计正是针对金融序列高噪声、非平稳的特点做的,而不是通用时间序列模型的简单套用。

模型按规模分了几档:Kronos-mini(约410万参数,2048上下文)、Kronos-small(约2470万参数)、Kronos-base(约1.02亿参数),都开放在 Hugging Face 上,跑通示例时用 small 就够了。

跑通第一个示例

分三步,全程不需要改模型代码。

第一步,装环境。克隆仓库并安装依赖:

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

第二步,准备输入数据。示例脚本读的是./data/XSHG_5min_600977.csv,这个文件在仓库里并不附带,需要你自己准备一份同结构的CSV(列格式可参考仓库里现成的 finetune_csv/data/ 或 tests/data/regression_input.csv),放进 examples 目录下即可。

第三步,执行预测:

python examples/prediction_example.py

脚本会先加载 Tokenizer 和 Kronos-small 模型(首次运行自动从 Hugging Face 下载权重),取最近400根K线作为上下文,预测未来120根。跑完之后控制台会打印预测表的前几行,同时弹出一个窗口,上方面板是收盘价、下方面板是成交量,蓝色实线是真实数据,红色实线是模型预测。看到两条线在同一坐标系里延续,就说明环境通了。

图:示例脚本的输出,红色预测线与蓝色真实线在价格、成交量两个面板上对比

能力一:单序列预测与采样控制

上面那张图里能看到预测线跟住了真实价格的转折和波动区间,成交量面板里真实放量对应的预测位置也同步抬高。预测并不是一次性的:通过T(温度)、top_p(核采样)和sample_count(生成多条路径取平均)三个参数,你可以控制预测的随机性和稳定性。这意味着同一个模型既能给出确定性的走势外推,也能生成一组概率化的路径供你做情景分析。

图:单只股票的综合预测输出,仓库 examples/yuce/ 下还有同结构的其他标的

能力二:多股票批量预测

预测一只股票用predict,预测一批股票就用predict_batch:把多个 DataFrame、对应的时间戳序列打包成列表传进去,GPU 并行计算,每条序列独立做归一化和反归一化,返回的预测列表与输入顺序一一对应。唯一的要求是所有序列的历史长度和预测长度保持一致。仓库里的 examples/prediction_batch_example.py 演示了从同一份数据切出5个窗口并行预测的完整写法。

项目给出的实测口径是:单张GPU可以同时处理约50只股票的预测,1000只股票量级的批量回测约8分钟跑完。这意味着把"指数成分股全量过一遍"从人肉逐只看图,变成一次后台任务。

(示意引用占位,见下)

能力三:微调与回测验证

如果预训练模型在你的市场上不够用,可以微调。微调完怎么判断有没有用?仓库提供了一条完整链路:微调后的模型在测试集上做推理,生成预测信号(比如预测的收益率变化),跑一个 top-K 选股策略的回测,输出累计收益曲线和超额收益。

图:微调模型 top-K 策略的回测曲线,左为累计收益、右为相对基准的超额收益

图里策略曲线整体走在基准上方。需要泼点冷水:README 明确说这是一条演示用的简化 pipeline,模型输出的是原始信号,生产级使用还要接组合优化、风险因子中性化,回测也要把交易成本、滑点算进去。

完整场景:对阿里巴巴5分钟K线做微调预测

这个场景跟着仓库走一遍。输入数据仓库已经自带:finetune_csv/data/HK_ali_09988_kline_5min_all.csv 是阿里巴巴港股(09988.HK)的全量5分钟K线,约9.4万行,包含 timestamps、OHLC 和 volume 列。

处理配置在 finetune_csv/configs/config_ali09988_candle-5min.yaml,打开把data_path指到上面那份CSV,预训练模型路径按需修改。窗口参数设的是回看512个点、预测48个点——正好是48根5分钟K线,也就是4小时的预测跨度。

然后一条命令顺序训练:

python finetune_csv/train_sequential.py --config finetune_csv/configs/config_ali09988_candle-5min.yaml

脚本会先微调 Tokenizer,再微调 Predictor,中间检查点和日志都按配置落到输出目录。跑完看 finetune_csv/examples/ 这类输出图:深蓝色是模型实际输入的历史段,浅蓝色是完整历史,红色是微调后的预测结果,预测线在趋势延续和量能变化上都跟得比较贴。

图:阿里港股5分钟K线微调预测实例,深色为输入历史、红色为预测段

多卡环境可以把前面的命令换成torchrun --standalone --nproc_per_node=N启动,开 DDP 加速,细节在 finetune_csv/README_CN.md 里有注释。

环境要求与常见坑

硬件底线

  • 纯CPU能跑 mini(4.1M参数)和 small(24.7M参数),速度慢但可用;批量预测和多卡微调建议用NVIDIA GPU
  • 显存方面,推理用 small/base 对单卡要求不高;用 torchrun 多卡微调时按卡数预留训练显存
  • 批量任务主要吃内存,序列多时留足系统内存

软件依赖

  • Python 3.10+(README 的硬性要求)
  • PyTorch 2.0+,GPU 环境对应装 CUDA 版
  • 核心依赖看根目录 requirements.txt:torch、pandas、einops、huggingface_hub、matplotlib 等

安装三步走:

git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos
cd Kronos && pip install -r requirements.txt
python examples/prediction_example.py

两个容易踩的坑:一是上下文长度,small 和 base 的max_context是512,mini 是2048,输入K线超过上限会被 Predictor 自动截断,回看窗口设得比512长没有意义;二是模型权重不在仓库里,首次运行联网从 Hugging Face 下载,网络受限环境会卡在这一步,提前把权重拉下来放到本地再改from_pretrained的路径。

还能做什么

  • 图形界面:webui/ 下有个 Flask 应用,浏览器打开 localhost:7070 就能上传自己的CSV、拖动时间窗口、调温度和采样参数、直接看K线对比,不用碰代码。
  • A股批量预测:examples/prediction_cn_markets_day.py 和 examples/prediction_akshare_2024-2025.py 演示了用 akshare 拉A股数据后批量预测,examples/run_backtest_kronos.py 则接了回测流程。
  • Qlib 数据源微调:finetune/ 是另一条微调管线,用微软 Qlib 的A股日线数据走"数据预处理→微调→回测"全流程,需要额外安装 pyqlib 并准备 Qlib 数据目录。

写在最后

回到开头那个问题:开盘前把候选股批量过一遍,Kronos 的做法就是把每只票的历史K线喂进同一个预训练模型,几十到上千只并行跑完,再叠加微调适配自己的市场。从400根K线预测出120根的走势和量能,是这套流程的最小闭环。仓库克隆下来,把 examples 目录的数据准备好,先把第一个示例跑起来。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 14:37:29

电动车目标检测实战:基于1600+数据集与YOLOv8从训练到部署

简介:本资源是面向计算机视觉初学者与智能交通算法开发者的目标检测实战数据集,聚焦电动车识别这一典型城市感知任务,可用于YOLO、Faster R-CNN等主流模型的训练与评估。压缩包共2000个文件,含1599张标注清晰的JPG图像及401份对应…

作者头像 李华
网站建设 2026/9/1 14:35:08

计算机毕业设计之基于Java Web的游戏账号估价交易平台的设计与实现

如今,在科学技术飞速发展的情况下,信息化的时代也已因为计算机的出现而来临,信息化也已经影响到了社会上的各个方面。它可以为人们提供许多便利之处,可以大大提高人们的工作效率。随着计算机技术的发展的普及,各个领域…

作者头像 李华
网站建设 2026/9/1 14:29:18

软件测试入门:用类与模块提升pytest自动化脚本的可维护性

软件测试入门课程进行到第四课,很多同学会问:做测试为什么还要学类和模块?答案其实很直接。不管是用 pytest 编写自动化用例、用 Page Object 模式封装页面操作,还是理解被测系统里一个购物车类在什么条件下会产生异常数据&#x…

作者头像 李华
网站建设 2026/9/1 14:28:26

DebuffFilter实战:大幅降低插件开销与敌人技能提示配置指南

DebuffFilter 属于那种名字不起眼、但调好之后会明显改变战斗体验的插件。它解决的问题很具体:当坦克拉着三五只怪,或者 BOSS 开打之后,目标身上的负面图标少则五六个、多则十几个,哪个能驱散、哪个代表敌人马上要放关键技能&…

作者头像 李华