跑通Kronos金融K线基础模型:2GB显存的消费级GPU就能用
2026/9/2 10:43:21 网站建设 项目流程

跑通Kronos金融K线基础模型:2GB显存的消费级GPU就能用

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

金融K线预测一直卡在"要自建训练管线"这道门槛上。Kronos是首个开源的金融K线基础模型,在45个全球交易所的数据上预训练完成,2GB显存的消费级显卡就能直接加载推理,十几行Python代码就能输出未来走势。

30秒看懂它是什么

它解决一个问题:给定一段历史K线,输出未来若干根的OHLCV(开高低收加成交量)。核心思路是把K线当成一门"语言"——模型先学会这套语言的词汇表,再按语言模型的方式"续写"行情。打个比方:K线对通用语言模型来说是一串看不懂的数字,Kronos相当于先造了一本K线专属词典,把行情翻译成"单词",模型读得懂,也就学会了续写。

环境搭建与一键启动

项目最低要求推荐配置
Python3.10+3.10
PyTorch2.0+2.0+
显卡CPU可运行2GB显存以上,带CUDA 11.7+
git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txt

装完在仓库根目录敲一句,能打印出版本号就说明环境就绪:

python -c "import torch; print(torch.__version__)"

核心原理:它是怎么工作的

整个过程可以拆成四步:

  1. 把每一根K线的OHLCV数值压成离散token——K线分词,就是给行情造一本词典,让它变成语言模型能读的"文字"。
  2. token再被量化成两层编码索引——块级量化(BSQ),像查码表一样把连续数字换成"编号",省掉大量冗余。
  3. Transformer拿着token序列逐根往下推——自回归生成,跟语言模型续写句子一个套路。
  4. 编码索引经同一本词典反查回OHLCV数值——解码还原,预测值就变回了真实的价格和成交量。

跑通第一个结果

装好模型→喂数据→拿预测。以下代码在仓库根目录执行,数据用一份自己的CSV即可(仓库 examples/ 目录下的脚本演示了多种取数方式):

from model import Kronos, KronosTokenizer, KronosPredictor import pandas as pd tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base") model = Kronos.from_pretrained("NeoQuasar/Kronos-small") predictor = KronosPredictor(model, tokenizer, max_context=512)

前两行从模型库拉取预训练权重,第三行把模型和分词器装进预测器;512是Kronos-small的上限,再长的历史会自动截断(README L99)。

df = pd.read_csv("your_data.csv") # 需含 open/high/low/close 小写列 df["timestamps"] = pd.to_datetime(df["timestamps"]) x = df.iloc[:400] # 400根历史K线 pred_df = predictor.predict(df=x[["open","high","low","close","volume"]], x_timestamp=x["timestamps"], y_timestamp=df.iloc[400:520]["timestamps"], pred_len=120) print(pred_df.head())

predict内部自动完成归一化、采样、反归一化,你只管传数据。跑通后终端会打印前5行预测值——带时间戳的 open/high/low/close/volume 表,这就是模型对未来120根K线的完整"剧本"。

效果怎么看:读懂输出

  • 你看到了什么:蓝线是历史真实收盘,红线是模型外推的120根走势;下面成交量子图同色对应。红线不是精确抄写,而是概率性采样出的路径,每次跑可能略有不同。
  • 它意味着什么:判断标准不是红线逐点贴蓝线——金融数据信噪比低,追求精确反而过拟合。真正要看的是趋势方向和量级是否跟得上,成交量预测是否同步放大或缩小。
  • 好不好用:把pred_df里的预测价差当信号,接入你自己的策略做回测,累计收益曲线和基准的差距(超额收益)才是硬指标,仓库 finetune/qlib_test.py 演示了这条链路。

不止于命令行:WebUI批量跑

不想敲代码的话,仓库自带图形界面:

cd webui python run.py

浏览器打开 http://localhost:7070 即可(接口与参数说明见 webui/README.md):

  • 数据文件管理:上传或选择CSV、Feather格式的行情文件,选好文件就出图。
  • 采样参数调节:温度T(0.1-2.0)、核采样top_p(0.1-1.0)、采样条数(1-5)三组滑杆,官方建议T取1.2-1.5、top_p取0.95-1.0。
  • K线对比视图:滑块选择"400根历史+120根预测"的窗口,一键出预测与实际的K线对比图,支持CPU/CUDA/MPS切换设备。

命令行侧同样支持批量:predictor.predict_batch(df_list, x_timestamp_list, y_timestamp_list, pred_len)可并行预测多个资产,前提是所有序列的历史长度和预测长度一致(README L196-L202)。

资源受限?这几招能救

  • 显存紧张(换小模型):Kronos-mini只有4.1M参数(README L79),上下文反而有2048,适合低显存设备:
model = Kronos.from_pretrained("NeoQuasar/Kronos-mini")
  • 输出曲线抖动大(收敛采样):调低温度、固定核采样,多采样取平均:
pred_df = predictor.predict(df=x_df, x_timestamp=x_ts, y_timestamp=y_ts, pred_len=120, T=0.8, top_p=0.9, sample_count=3)
  • 序列超过512根(缩短窗口):Kronos-small/base的max_context=512,lookback设小一些即可,预测器也会自动截断兜底。

踩坑急救箱

  • FileNotFoundError,找不到数据文件→ 仓库没附示例行情,CSV路径写错或列名不对 → 换成自己的OHLCV文件,列名严格用小写open/high/low/close
  • 时间戳列解析失败或乱序→ 原始CSV里时间是字符串,直接拿去对齐会错位 → 加一行df["timestamps"] = pd.to_datetime(df["timestamps"])
  • WebUI启动报缺依赖→ webui的requirements和主依赖不同,缺了plotly、flask-cors → 到webui目录补一句pip install -r requirements.txt再启动。
  • CUDA out of memory→ 序列太长或模型偏大 → 先降到Kronos-mini,再把lookback从400降到200以内。

下一步去哪

  1. 读源码:model/kronos.py 从分词器到自回归生成器全在这一个文件里,约660行,值得精读一遍。
  2. 调参数:finetune_csv/ 提供基于CSV数据的微调流水线,改configs/下的YAML即可换自己的数据做适配。
  3. 做验证:finetune/qlib_test.py 跑top-K策略回测,把预测信号翻译成收益曲线,再决定要不要接入实盘研究。

Kronos已被AAAI 2026接收(README News区),模型迭代和讨论都在项目社区进行,有问题直接去提Issue。

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

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

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

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

立即咨询