Kronos金融K线预测完整指南:10分钟跑通第一条未来K线
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
Kronos 是一个开源的金融K线基础模型(MIT 协议),在 45 个以上全球交易所的K线数据上预训练,能把一段历史K线直接续写成未来的K线序列。它不只是单个预测脚本,而是一套"分词器 + 自回归 Transformer"的完整框架,你既可以几行代码出预测结果,也可以拿自己的数据继续微调。
直接预测未来K线,难在哪
做股票预测的人大多试过技术指标:均线、MACD、RSI。它们的本质是人工写死的规则,能描述过去的形态,却很难处理金融序列的三个特点:高噪声、非线性、多时间尺度。价格里混着大量随机波动,趋势还会在不同周期上互相干扰。
另一类思路是用通用时间序列模型(TSFM)直接回归下一根K线的价格。但通用模型是为"预测一条曲线"设计的,而K线是五列联动的数据——开盘、最高、最低、收盘、成交量必须同时预测且互相自洽。直接输出连续数值的模型,很难保证生成的四根"影线"关系合理。
所以真正的问题可以归结为一句:如何让模型像"写文章"一样,一根一根地续写K线?Kronos 就是针对这个问题给出的答案。
Kronos的做法:先把K线拆成"字",再学"写句子"
Kronos 采用两阶段设计,对应源码目录 model/ 下的两个核心组件:
- 分词器(KronosTokenizer):用 Transformer 编码器把连续的 OHLCV 数据压缩,再通过二值球面量化(BSQuantizer)把每一根K线量化成两级离散 token——粗粒度的 pre-token 记录这根K线的整体形态,细粒度的 post-token 补齐细节。
- 自回归 Transformer(Kronos 主干):在这些 token 序列上做语言模型式的预训练,学会"给定前 N 根K线的 token,下一个 token 该是什么"。
这个过程和语言大模型惊人地相似:文本先被切成字词,模型学会"下一句怎么写";Kronos 则先把每根K线拆成两级"字",再让 Transformer 学会"市场接下来怎么写"。正因为预测被转化成了 token 续写,采样参数(温度、top-p、多路径平均)都能像生成文本一样使用,预测天然是概率性的、可多路径的。
模型家族共四档,均托管在 Hugging Face Hub,其中 large 未开源:
| 模型 | 参数量 | 上下文长度 | 配套分词器 | 开源 |
|---|---|---|---|---|
| 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 | Kronos-Tokenizer-base | 否 |
10分钟跑通第一条K线预测:安装、加载与出图
环境要求 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输入数据的约定很宽松:一个 pandas DataFrame,必须包含open、high、low、close四列,volume、amount可选;再配两组时间戳——历史段的x_timestamp和要预测的未来段的y_timestamp。核心调用只有几行:
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) pred_df = predictor.predict(df=x_df, x_timestamp=x_ts, y_timestamp=y_ts, pred_len=120)predict会自动完成预处理、归一化、采样和反归一化,返回的 DataFrame 按y_timestamp索引,包含预测出的 OHLCV 各列。三个参数值得知道:T(采样温度)、top_p(核采样)、sample_count(生成多条预测路径再平均,调大可平滑结果)。注意 small/base 的max_context上限是 512,历史数据超过会被自动截断,mini 则支持 2048。
不想写代码也有两条路:
- 直接运行 examples/prediction_example.py,它是"读数据→预测→画对比图"的完整可运行脚本;只有价格没有成交量的数据用 examples/prediction_wo_vol_example.py。
- 启动 Web 界面:
cd webui && python run.py,浏览器访问localhost:7070。界面上拖一个滑块就能选 400+120 数据点的时间窗口,支持 CSV、Feather 格式,CPU/CUDA/Apple Silicon MPS 都能跑,详见 webui/README.md。
从单只股票到整个市场:批量预测与自己的数据微调
批量预测用predict_batch:把多只股票的 DataFrame 和历史/未来时间戳分别放进三个列表一次性提交,底层利用 GPU 并行,且每条序列独立做归一化。约束是所有序列的历史长度和pred_len必须一致。沪深300级别的批量预测脚本在 examples/yuce/ 下有现成示例和产出图。
想让自己的市场数据上效果更好,项目给了两条微调路线:
- A股日频路线finetune/:基于 Qlib 数据,四步走——先在 finetune/config.py 配置路径与超参,再跑
qlib_data_preprocess.py切分数据集,然后用torchrun多卡依次训练 tokenizer(train_tokenizer.py)和 predictor(train_predictor.py),最后python finetune/qlib_test.py --device cuda:0做 top-K 策略回测。 - 自定义CSV路线finetune_csv/:适合手里只有CSV的朋友。数据需包含
timestamps、open、high、low、close列(volume、amount没有就填 0),配好 YAML 配置后一条命令顺序训练:python train_sequential.py --config configs/config_ali09988_candle-5min.yaml,多卡可加 DDP 加速。官方用阿里巴巴港股 5 分钟K线做示范,配置样例在 finetune_csv/configs/config_ali09988_candle-5min.yaml。
Kronos适合什么?这些边界用前要知道
适合的场景:研究金融时序基础模型、快速搭建K线预测原型、在自有数据(含 5 分钟等高频粒度)上微调、批量生成多资产概率化预测路径。它已被 AAAI 2026 接收,论文发布于 arXiv(2025 年 8 月),MIT 协议意味着商用也没有授权门槛。
必须先认清的边界:
- 官方明确声明:finetune/ 流水线是演示流程,不是生产级量化交易系统。模型输出的是原始预测信号,真实策略通常还要接组合优化、风险因子中性化来提取净 alpha。
- 回测用的是简单 top-K 策略,没有建模交易成本、滑点和市场冲击,收益曲线别直接当实盘预期。
- 预测是采样生成的概率结果,同一输入多次运行会有差异;
amount列不参与预测,只用于展示。 - 如果你只是想做基础技术分析,传统指标可能更透明;Kronos 的价值在于把"预测K线"统一成一个可扩展的基础模型问题,适合愿意做后续工程化的研究者。
代码逻辑以 model/kronos.py 和 model/module.py 为准,微调目录中部分注释由 AI 生成(README 已提示),阅读时以代码本身为准。
【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考