← 返回日报
🌐 机器翻译 · DeepSeek · GitHub

shiyu-coder Kronos


好的,这是您要求的英文文章的中文翻译,已按照规范处理为 Markdown 格式。

shiyu-coder Kronos

Kronos:面向金融市场语言的基石模型 Deutsch | Español | Français | 日本語 | 한국어 | Português | Русский | 中文

Kronos 是首个面向金融 K 线(K-lines)的开源基石模型,基于来自全球超过 45 家交易所的数据进行训练。

📰 新闻 🚩 [2025.11.10] Kronos 已被 AAAI 2026 接收。 🚩 [2025.08.17] 我们已发布微调脚本!欢迎查看,将 Kronos 适配到您自己的任务中。 🚩 [2025.08.02] 我们的论文现已在 arXiv 上发布!

📜 简介 Kronos 是一个仅解码器(decoder-only)的基石模型家族,专门针对金融市场的“语言”——K 线序列进行了预训练。与通用时间序列基石模型(TSFMs)不同,Kronos 旨在处理金融数据独特的高噪声特性。它采用了一种新颖的两阶段框架:首先,一个专门的 tokenizer 将连续的、多维度的 K 线数据(OHLCV)量化为分层的离散 token。然后,一个大型自回归 Transformer 在这些 token 上进行预训练,使其能够作为统一模型服务于多种量化任务。

✨ 在线演示 我们已搭建一个在线演示,用于可视化 Kronos 的预测结果。该网页展示了 BTC/USDT 交易对未来 24 小时的预测。 👉 访问在线演示

📦 模型库 我们发布了一系列具有不同容量的预训练模型,以满足不同的计算和应用需求。所有模型均可从 Hugging Face Hub 直接获取。

| 模型 | Tokenizer | 上下文长度 | 参数量 | 开源 | | :--- | :--- | :--- | :--- | :--- | | Kronos-mini | Kronos-Tokenizer-2k | 2048 | 4.1M | ✅ NeoQuasar/Kronos-mini | | Kronos-small | Kronos-Tokenizer-base | 512 | 24.7M | ✅ NeoQuasar/Kronos-small | | Kronos-base | Kronos-Tokenizer-base | 512 | 102.3M | ✅ NeoQuasar/Kronos-base | | Kronos-large | Kronos-Tokenizer-base | 512 | 499.2M | ❌ |

🚀 快速开始

安装

安装 Python 3.10+,然后安装依赖项:

pip install -r requirements.txt

进行预测

使用 KronosPredictor 类可以轻松地用 Kronos 进行预测。它负责处理数据预处理、归一化、预测和逆归一化,让您只需几行代码就能从原始数据得到预测结果。

重要提示Kronos-smallKronos-basemax_context512。这是模型能处理的最大序列长度。为获得最佳性能,建议您的输入数据长度(即 lookback)不超过此限制。KronosPredictor 会自动处理更长上下文的截断。

以下是进行首次预测的分步指南。

1. 加载 Tokenizer 和模型

首先,从 Hugging Face Hub 加载预训练的 Kronos 模型及其对应的 tokenizer。

from model import Kronos, KronosTokenizer, KronosPredictor

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

2. 实例化预测器

创建一个 KronosPredictor 实例,传入模型、tokenizer 和目标设备。

# 初始化预测器
predictor = KronosPredictor(model, tokenizer, max_context=512)

3. 准备输入数据

predict 方法需要三个主要输入:

调用 predict 方法生成预测。您可以通过 Ttop_psample_count 等参数控制采样过程,以实现概率预测。

# 生成预测
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 # 生成并平均的预测路径数量
)

print("预测数据头部:")
print(pred_df.head())

predict 方法返回一个 pandas DataFrame,其中包含 openhighlowclosevolumeamount 的预测值,并以您提供的 y_timestamp 作为索引。

为了高效处理多个时间序列,Kronos 提供了 predict_batch 方法,可以同时对多个数据集进行并行预测。当您需要同时预测多个资产或时间段时,这尤其有用。

# 准备多个数据集进行批量预测
df_list = [df1, df2, df3]                     # DataFrame 列表
x_timestamp_list = [x_ts1, x_ts2, x_ts3]      # 历史时间戳列表
y_timestamp_list = [y_ts1, y_ts2, y_ts3]      # 未来时间戳列表

# 生成批量预测
pred_df_list = predictor.predict_batch(
    df_list=df_list,
    x_timestamp_list=x_timestamp_list,
    y_timestamp_list=y_timestamp_list,
    pred_len=pred_len,
    T=1.0,
    top_p=0.9,
    sample_count=1,
    verbose=True
)

# pred_df_list 包含与输入顺序相同的预测结果
for i, pred_df in enumerate(pred_df_list):
    print(f"序列 {i} 的预测结果:")
    print(pred_df.head())

批量预测的重要要求:

📖 阅读原文 →