开源精选 Kronos金融基础模型量化交易时间序列K线预测开源

Kronos深度解析:金融K线的开源基础模型正在出现

Kronos深度解析:金融K线的开源基础模型正在出现

大语言模型把文本变成token,然后学习“语言的统计规律”。如果金融市场也有自己的语言,那么K线、成交量、波动率、时间戳和跨资产联动,能不能也被token化,再用类似语言模型的方式预训练?shiyu-coder/Kronos 给出的答案是:可以尝试,而且它已经把金融K线基础模型开源到了Hugging Face。

项目速览

维度详情
GitHubshiyu-coder/Kronos
定位面向金融K线序列的基础模型,号称首个开源金融candlestick foundation model
Stars / Forks约29.9K Stars、5.1K Forks(2026-06-15抓取)
语言Python
许可证MIT License
论文arXiv:2508.02739,AAAI 2026接收信息见README
模型发布Hugging Face: NeoQuasar/Kronos-miniKronos-smallKronos-base
核心依赖PyTorch、pandas、NumPy、einops、huggingface_hub、safetensors、matplotlib

一句话概括:Kronos不是一个普通的股票预测脚本,而是把金融K线当成一门“市场语言”来建模:先用专门tokenizer把连续OHLCV数据离散成层级token,再用decoder-only Transformer做自回归预训练与预测。

这让它站在一个很有意思的交叉点上:金融时间序列、量化研究、时间序列基础模型、tokenizer设计和开源大模型工程。

为什么Kronos值得关注?

金融时间序列预测一直是AI里最危险也最迷人的领域。

危险在于:市场是高噪声、非平稳、强对抗、强反馈的系统。一个模型在历史数据上看起来有效,不代表未来有效;一个预测价格的模型,也不等于能形成可交易、可风控、可持续的alpha。

迷人之处在于:金融市场拥有海量结构化数据,K线是全球通用格式,跨市场、跨资产、跨周期都有相似的数据结构。如果预训练范式能在文本、图像、语音和代码上成立,那么它是否也能在金融K线中学到某种“市场语法”?

Kronos正是沿着这个问题往前走的项目。它的论文摘要披露,Kronos使用超过45个全球交易所、超过120亿条K线记录进行自回归预训练,并在价格序列预测、波动率预测、合成K线生成等任务中做零样本评估。论文声称,在基准数据集上,Kronos相对领先TSFM在价格序列预测RankIC上提升93%,相对最佳非预训练基线提升87%;在波动率预测上MAE降低9%;在合成K线生成保真度上提升22%。

这些数字当然需要读者结合论文设置、数据切分、交易成本和真实回测谨慎理解,但至少说明:金融K线基础模型已经从概念进入了可复现实验和开源模型阶段。

核心方法:把连续K线翻译成离散token

Kronos的核心设计可以拆成两步。

1. 专用Tokenizer:把OHLCV压缩成层级离散token

普通时间序列模型通常直接吃连续数值。Kronos选择先做离散化:用 KronosTokenizer 把多维K线数据,也就是 open、high、low、close、volume、amount 等连续特征,编码成离散token。

代码中 KronosTokenizer 使用Transformer Encoder/Decoder结构,并接入 Binary Spherical Quantization(BSQuantizer)进行量化。它的输出不是一个简单类别,而是分成 s1_bitss2_bits 的层级token结构。可以把它理解为:

连续K线数据:OHLCV + amount + 时间结构

Transformer编码器提取局部市场状态

Binary Spherical Quantization离散化

层级token:s1 token + s2 token

Transformer解码器重建原始K线

为什么要离散化?因为自回归Transformer最擅长处理token序列。只要能把K线变成“市场token”,就可以把金融序列建模转化为类似语言建模的问题:给定过去token,预测未来token。

这也是Kronos最有启发性的地方:它不是简单把Transformer套到价格序列上,而是先设计一套金融数据tokenizer,让“市场语言”更接近LLM擅长的输入形态。

2. Decoder-only Transformer:自回归建模市场token

Kronos主体模型是decoder-only Transformer。它读取 s1_idss2_ids,叠加时间嵌入,经过多层Transformer Block,再通过 DualHead 输出下一步的层级token分布。

代码中还设计了 DependencyAwareLayer:先预测s1,再让s2的预测依赖s1的embedding。这相当于承认层级token内部存在结构依赖,不是两个完全独立的分类任务。

推理阶段则是典型自回归生成:

历史K线 → tokenizer.encode → 历史token

Kronos逐步采样未来token

tokenizer.decode → 还原未来OHLCV预测

反归一化 → 输出DataFrame

KronosPredictor 封装了数据预处理、归一化、时间特征、预测、反归一化和DataFrame输出,用户可以用几行代码完成预测。

模型Zoo:从mini到base,兼顾研究和落地

README列出了四个模型规格:

模型TokenizerContext length参数量开源状态
Kronos-miniKronos-Tokenizer-2k20484.1M已开源
Kronos-smallKronos-Tokenizer-base51224.7M已开源
Kronos-baseKronos-Tokenizer-base512102.3M已开源
Kronos-largeKronos-Tokenizer-base512499.2MREADME标注未开源

这个模型谱系说明项目并不是只给一个论文权重,而是考虑了不同算力场景:mini适合快速试验,small适合一般GPU/CPU环境,base更偏研究与质量,large则仍保留。

需要注意的是,README特别提醒 Kronos-smallKronos-basemax_context 是512。也就是说,如果你用它预测分钟级K线,512根K线能覆盖的时间范围取决于频率;如果用日线,则覆盖约两年交易日。不同频率下,模型看到的“市场上下文”完全不同。

使用体验:几行代码完成K线预测

典型使用流程很清晰:

from model import Kronos, KronosTokenizer, KronosPredictor

# 1. 从Hugging Face加载Tokenizer和模型
tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")
model = Kronos.from_pretrained("NeoQuasar/Kronos-small")

# 2. 创建预测器
predictor = KronosPredictor(model, tokenizer, max_context=512)

# 3. 准备历史K线和未来时间戳
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,
)

输入DataFrame至少需要 openhighlowclosevolumeamount 可选。输出则是预测后的 open、high、low、close、volume、amount 序列。

项目还提供 predict_batch,可以对多个资产或多个时间窗口做批量预测,并利用GPU并行。这对量化研究很重要,因为真实研究很少只预测一只股票、一个窗口,而是要跨资产、跨日期批量产生信号。

微调与回测:从模型Demo走向量化研究流程

Kronos不只提供推理脚本,还提供了两套微调路径。

1. Qlib路径:面向A股研究流程

README中给出用 Microsoft Qlib 准备中国A股数据并做简单回测的流程:

  1. 配置路径与超参数;
  2. finetune/qlib_data_preprocess.py 处理并切分数据;
  3. 先微调Tokenizer,再微调Predictor;
  4. finetune/qlib_test.py 进行简单top-K策略回测。

项目也明确写了免责声明:这个pipeline只是展示微调过程,不是生产级量化系统;真实策略需要组合优化、风险因子中性化、交易成本、滑点、市场冲击和更复杂的风控。

这个提醒很重要。金融AI项目最容易被误读成“预测准就能赚钱”。实际上,预测值只是原始信号,离稳定alpha还差很远。

2. CSV路径:更适合普通用户上手

finetune_csv/README_CN.md 提供了面向自定义CSV数据集的中文微调流程。数据格式要求包括:

  • timestamps
  • open
  • high
  • low
  • close
  • volume
  • amount

用户可以用 train_sequential.py 顺序训练tokenizer和predictor,也可以分别运行 finetune_tokenizer.pyfinetune_base_model.py。它还支持DDP多卡训练:

DIST_BACKEND=nccl \
torchrun --standalone --nproc_per_node=8 train_sequential.py --config configs/config_ali09988_candle-5min.yaml

这说明项目的定位不是“只能跑作者数据”,而是鼓励用户迁移到自己的市场、周期、资产或交易品种上。

Web UI:降低非工程用户门槛

仓库中还包含 webui/,基于Flask、HTML/CSS/JavaScript和Plotly.js实现一个图形界面。功能包括:

  • 支持CSV、Feather等金融数据格式;
  • 选择400+120数据点窗口;
  • 加载Kronos-mini、small、base模型;
  • 调整temperature、top_p、sample_count;
  • 支持CPU、CUDA、Apple Silicon MPS;
  • 展示K线图、预测结果和误差分析。

这类Web UI对研究项目很加分。它让用户不必一开始就读完代码,而是可以先把数据拖进去,看模型输出和参数变化,再决定是否深入微调。

工程质量:优点与不足并存

优点

第一,项目结构完整。它包含模型定义、Tokenizer、推理示例、批量预测、Qlib微调、CSV微调、Web UI、回测示例和回归测试。

第二,模型权重可直接从Hugging Face加载,降低复现门槛。许多金融AI项目只给论文不给权重,Kronos至少提供了mini、small、base。

第三,测试里固定了模型和tokenizer revision,做了预测输出回归测试和MSE回归测试。这说明作者意识到模型推理结果需要可重复性,而不是每次升级都悄悄改变行为。

第四,README对“不是生产级交易系统”说得比较清楚,避免把模型包装成稳赚策略。

不足

第一,依赖管理仍偏朴素。根目录是 requirements.txt,没有看到类似 pyproject.toml、锁文件或更系统的包发布结构。对研究项目足够,对严肃生产部署还不够。

第二,代码中有不少AI生成注释,README也提示 finetune/ 目录很多注释由Gemini 2.5 Pro生成,可能不准确。这不一定影响代码逻辑,但读者不能把注释当作权威文档。

第三,回测示例仍比较基础。它适合展示流程,但距离真实量化研究所需的严谨回测还有差距,例如手续费、滑点、涨跌停、停牌、流动性约束、幸存者偏差、数据泄漏等问题都需要额外处理。

第四,金融时间序列天然存在“发布后失效”问题。模型一旦被广泛使用,信号可能被套利;市场结构也会变化。基础模型不是一劳永逸的alpha机器。

和传统量化模型有什么不同?

传统量化模型通常围绕因子、特征工程和监督学习展开:先定义收益率标签,再训练模型预测未来收益或分类信号。Kronos则更像“金融序列语言模型”:先在海量K线token上做自回归预训练,再迁移到预测、波动率、生成等任务。

两者差异可以概括为:

维度传统量化模型Kronos路线
输入人工因子、价格量特征、财务/另类数据OHLCV K线token与时间特征
训练方式多为监督学习或任务特定训练大规模自回归预训练 + 下游迁移
泛化目标某市场、某频率、某标签跨市场、跨资产、跨任务表示
优势可解释、易接入风控与组合优化预训练表示、零样本/少样本潜力
风险因子拥挤、过拟合黑箱、更难解释、交易可用性需验证

我更倾向于把Kronos看作“信号生成器”和“市场表示学习工具”,而不是完整交易系统。它可以参与量化流水线,但不应直接替代组合构建和风控。

适合哪些人使用?

Kronos适合以下几类用户:

  • 量化研究员:把Kronos作为价格/波动率/合成数据任务的预训练基线;
  • 金融AI研究者:研究金融时间序列tokenizer、TSFM和自回归预训练;
  • 开源模型玩家:体验Hugging Face金融模型如何加载和推理;
  • A股或加密市场研究者:用Qlib或CSV微调自己的市场数据;
  • 教学与实验用户:用Web UI展示模型预测和采样参数变化。

不适合的人也很明确:如果你想找一个“下载即赚钱”的自动交易系统,Kronos不是这个东西。它给的是模型和研究框架,不是可直接上线的交易策略。

投资与产业启示

Kronos背后的方向,比单个项目更值得关注。

1. 金融基础模型会从“新闻/研报LLM”走向“市场数据模型”

过去金融大模型多集中在文本:研报摘要、公告问答、舆情分析、投顾话术。Kronos代表另一条路线:直接建模价格量数据。这条路线更接近交易和风险本身,也更难。

2. K线Token化可能成为重要研究方向

LLM成功的一大关键是tokenizer。金融市场如果要出现基础模型,也需要自己的tokenizer。Kronos的层级离散token设计,提供了一个可研究样本:价格动态和交易活跃度能否被压缩成可泛化的市场token?

3. 开源权重会推动金融AI基准竞争

当mini、small、base都能下载,社区就可以做更多横向比较:不同市场、不同频率、不同资产、不同回测框架。金融AI过去很多结果难复现,开源权重有助于把讨论从“故事”拉回“实验”。

4. 真正商业化仍取决于数据、风控和执行

即使基础模型有效,商业化也不只是模型问题。数据清洗、实时推理、延迟、交易成本、组合约束、风险预算、合规审计、模型监控,都会决定它能否进入真实资管流程。

风险提示:金融预测模型最怕被过度神化

最后必须强调:Kronos很有研究价值,但金融预测模型不能被神化。

  • 预测不等于交易:价格预测误差小,不代表策略收益高。
  • 回测不等于实盘:实盘有冲击成本、滑点、容量、风控和心理因素。
  • 零样本不等于永远泛化:市场状态变化会让历史规律失效。
  • 开源模型不等于免费alpha:公开模型的优势可能被迅速套利或稀释。
  • 生成K线不等于生成真实市场:合成数据可能保留统计形状,却丢失真实交易机制。

因此,Kronos最正确的打开方式,是把它当作金融时间序列基础模型的研究平台,而不是神奇交易按钮。

结论:金融市场也在迎来“token化预训练”时代

Kronos的意义不在于它马上能改变交易行业,而在于它把一个重要问题向前推进了一步:金融K线能不能像自然语言一样被token化、预训练,并迁移到多个下游任务?

从开源模型、论文、微调脚本、Web UI、回归测试和社区热度看,Kronos已经成为金融时间序列基础模型方向中值得重点关注的项目。它让更多研究者可以直接站在预训练权重上做实验,而不是从零搭建模型。

我的判断是:未来金融AI会形成三层栈:

底层:市场数据基础模型,学习价格、成交量、波动率和跨资产结构
中层:任务模型,做预测、风险、生成、异常检测和情景模拟
上层:组合与执行系统,负责约束、风控、交易成本和实盘反馈

Kronos处在底层和中层之间。它还不是完整交易系统,但它可能成为金融AI基础设施的一块拼图。对开源社区来说,这正是它最值得研究的地方。


参考资料