Kronos:金融市场的第一个开源 K 线基础模型

7/24/2026开源AI金融

金融市场的基础模型之争正在升温。Kronos,一个由清华大学研究团队开发的金融 K 线基础模型,刚刚登上 GitHub Trending,以 33,000+ stars 成为量化金融领域最受关注的开源项目之一。它的论文已被 AAAI 2026 接收,在多项基准测试中以零样本(zero-shot)设定击败了通用时间序列基础模型(TSFM)。

Kronos 的核心思路是把 LLM 的预训练范式搬到金融 K 线数据上:先用一个专用 tokenizer 将连续的 OHLCV 数据离散化为分层 token,再用一个自回归 Transformer 在 120 亿条 K 线记录上进行预训练。这套方法在价格预测、波动率预测和合成数据生成三个任务上全面领先。

为什么通用 TSFM 在金融数据上不行

时间序列基础模型(Time Series Foundation Models)已经存在一段时间了。Google 的 TimesFM、Salesforce 的 Moirai、NVIDIA 的 Chronos 等都在通用时间序列上展示了强大的零样本预测能力。但它们在金融数据上的表现,往往还不如不预训练的传统模型。

论文分析了两个原因:

第一,K 线序列有独特的统计特征:极低的信噪比(signal-to-noise ratio)、强非平稳性(non-stationarity)、以及 OHLCV 各维度之间复杂的高阶依赖关系。通用 TSFM 的归纳偏置(inductive biases)与这些特征不匹配。

第二,金融序列在主流 TSFM 的预训练语料中占比极小。模型在训练阶段就没见过足够多的金融数据,自然难以迁移。

Kronos 的解法:既然通用模型学不到金融规律,就专门为金融市场建一个基础模型,从预训练数据到 tokenizer 架构全部围绕 K 线设计。

两阶段架构:Tokenizer + Transformer

Kronos 采用两阶段框架,这是整个系统最核心的设计。

阶段一:K 线 Tokenizer

连续的 OHLCV 数据首先经过一个 instance-based tokenizer,被量化为分层离散 token。这里用的是 Binary Spherical Quantization(BSQ),一种向量量化方法。

分层的含义是每个 token 包含两个粒度的子 token:

  • 粗粒度子 token(coarse-grained,k_c bits):捕捉 K 线的整体趋势,类似于大方向上的价格变动
  • 细粒度子 token(fine-grained,k_f bits):捕捉局部细节和高频波动

这种设计借鉴了多尺度分析的思想。金融市场数据天然具有多尺度结构:一条 K 线既包含趋势信息,也包含微观结构信息。用单一粒度的 token 很难同时表达这两层。

tokenizer 是独立训练的,采用 VQ 自编码的方式:编码 K 线 → BSQ 量化 → 解码重建。训练目标是让重建结果尽可能接近原始 K 线。

阶段二:自回归 Transformer

tokenizer 训练完成后,将所有预训练数据量化为 token 序列,再用标准自回归目标训练一个 Transformer。

模型架构上有一个关键设计:Cross Attention 机制处理粗细 token 的依赖。当 Transformer 预测下一个 token 时,细粒度子 token 会通过 cross attention 去查询(query)粗粒度子 token 提供的 Key/Value。这让模型可以在生成细粒度预测时参考已确定的大方向。

此外,多个 Intra-Block 之间共享参数(Shared Param),在不损失模型容量的前提下减少了参数量。每个 token 分别由两个 Header 模块解码,一个负责粗粒度,一个负责细粒度。

模型家族:从 4M 到 499M

Kronos 发布了一组不同容量的模型,全部在 Hugging Face 上开源(large 版除外):

模型Tokenizer上下文长度参数量开源
Kronos-miniKronos-Tokenizer-2k20484.1M
Kronos-smallKronos-Tokenizer-base51224.7M
Kronos-baseKronos-Tokenizer-base512102.3M
Kronos-largeKronos-Tokenizer-base512499.2M

从 4.1M 参数的 mini 到 499.2M 的 large,覆盖了从轻量部署到高精度预测的全场景需求。small 和 base 版本是最实用的选择,mini 版虽然只有 4M 参数,但可以跑在边缘设备上做实时预测。

预训练数据:45 个全球交易所的 120 亿条 K 线

Kronos 的预训练语料来自全球 45 个交易所的超过 120 亿条 K 线记录。这个数据量级在金融领域相当可观。覆盖范围包括股票、期货、加密货币等多种资产类别。

预训练用标准自回归目标:给定历史 K 线序列的 token,预测后续 token。与语言模型预测下一个词类似,Kronos 预测下一根 K 线的 token。

三大任务的基准测试结果

Kronos 在三项任务上进行了评估:

价格序列预测(Price Series Forecasting):在零样本设定下,Kronos 的 RankIC 比领先的通用 TSFM 高出 93%,比最佳的非预训练基线高 87%。RankIC(Rank Information Coefficient)是量化金融中衡量预测排序能力的标准指标,衡量预测值排名与实际收益排名的 Spearman 相关性。RankIC 提升 93% 意味着 Kronos 对股票相对涨跌的排序能力远超通用模型。

波动率预测(Volatility Forecasting):MAE(平均绝对误差)比基线低 9%。波动率预测对期权定价和风险管理至关重要,这个改进幅度在金融应用中有实际意义。

合成 K 线生成(Synthetic K-line Generation):生成保真度(generative fidelity)比基线提升 22%。合成金融数据可以用于回测、策略验证、数据增强等场景,同时避免使用真实交易数据的隐私和合规风险。

这三个任务覆盖了量化金融的核心需求链:预测方向、评估风险、生成数据。

实际使用:几行代码做预测

Kronos 提供了 KronosPredictor 类封装了从原始数据到预测结果的全流程,包含预处理、归一化和反归一化:

python
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)

# 准备历史 K 线数据
df = pd.read_csv("XSHG_5min_600977.csv")
df['timestamps'] = pd.to_datetime(df['timestamps'])

lookback = 400
pred_len = 120
x_df = df.loc[:lookback-1, ['open', 'high', 'low', 'close', 'volume', 'amount']]
x_timestamp = df.loc[:lookback-1, 'timestamps']
y_timestamp = df.loc[lookback:lookback+pred_len-1, 'timestamps']

# 生成预测
pred_df = predictor.predict(
    df=x_df,
    x_timestamp=x_timestamp,
    y_timestamp=y_timestamp,
    pred_len=pred_len,
    T=1.0,          # 采样温度
    top_p=0.9,      # 核采样概率
    sample_count=1  # 采样路径数
)

预测支持概率性输出:通过调整温度 T 和 top_p 参数,可以生成多条预测路径并取平均,实现概率性预测(probabilistic forecasting)。这在金融场景中比单点预测更有价值,因为模型可以输出预测区间和置信度。

对于多资产批量预测,predict_batch 方法支持 GPU 并行处理,同时保证每个序列独立进行归一化。

微调实战:用 Qlib 在 A 股上跑回测

Kronos 提供了完整的微调 pipeline,以中国 A 股市场为示例,集成了微软的 Qlib 量化平台。微调分四步:

  1. 数据准备:用 Qlib 下载和预处理市场数据
  2. Tokenizer 微调:调整 tokenizer 到目标市场的数据分布
  3. 预测器微调:在目标任务上微调主模型
  4. 回测评估:生成预测信号,运行 top-K 策略回测

微调训练脚本支持多 GPU,使用 torchrun 启动。Tokenizer 和 Predictor 分两个阶段微调,先调 tokenizer 再调 predictor。

项目明确说明这只是一个演示 pipeline,不是生产级量化交易系统。一个稳健的量化策略还需要组合优化、风险因子中性化等后处理步骤,才能从原始预测信号中提取纯 alpha。

技术局限与开放问题

论文和社区讨论都指出了一些尚未解决的挑战:

样本外鲁棒性:基准测试用的是已有数据集,但在真正的市场制度转换(regime change)下表现如何还是未知数。2020 年新冠暴跌、2022 年英国 LDI 危机、2023 年区域银行压力,这些事件的分布与历史正常时期完全不同。基础模型在面对训练分布之外的数据时可能很脆弱。

缺乏标准化基准:金融时间序列模型领域缺少统一的评估标准。不同论文用不同的数据集、评估窗口和指标,难以公平比较。社区需要金融版的 ImageNet 或 GLUE。

生成数据的市场影响建模:Kronos 的合成 K 线生成能力很强,但合成数据是否能准确反映真实市场中的微观结构效应(microstructure effects),如滑点、市场冲击和流动性变化,还需要进一步验证。

AAAI 2026 接收与学术影响

Kronos 论文于 2025 年 8 月在 arXiv 上发布,2025 年 11 月被 AAAI 2026 接收。作者团队来自清华大学,包括 Yu Shi、Zongliang Fu、Shuo Chen、Bohan Zhao、Wei Xu、张长水教授和李建教授。

这项工作代表了金融 AI 领域的一个重要方向:不再是用通用 LLM 做 sentiment analysis 或新闻分析,而是从数据表示层面重新设计适合金融数据的基础模型。Kronos 的 tokenizer + 自回归 Transformer 框架证明了 LLM 的预训练范式可以被有效迁移到金融 K 线数据上,只要 tokenization 方法设计得当。

对量化开发者的意义

对于量化金融从业者,Kronos 提供了几个实用价值:

零样本迁移:模型在预训练阶段已经学习了 45 个交易所的数据,对新的市场或品种,不需要从头训练就能获得基线预测能力。这大幅降低了冷启动成本。

统一框架:同一个模型可以做价格预测、波动率预测和合成数据生成,不需要为每个任务单独训练模型。这简化了量化流水线。

概率性预测:通过采样温度和 top_p 调节,模型输出预测分布而非点估计,这对于风险管理尤为重要。

开源可微调:mini/small/base 三个版本完全开源,可以下载到本地微调。模型参数量小(最大 102M),消费级 GPU 就能跑推理和微调。

MIT 许可证,模型权重和代码都可以自由用于商业项目。Hugging Face 上提供了 NeoQuasar/Kronos-miniNeoQuasar/Kronos-smallNeoQuasar/Kronos-base 三个版本。

项目地址:https://github.com/shiyu-coder/Kronos

论文:https://arxiv.org/abs/2508.02739

推荐阅读