









分析日期:2026-07-28
Kronos 是全球首个面向金融 K 线(蜡烛图)数据的开源基础模型(Foundation Model)。它基于超过 45 个全球交易所的 120 亿条 K 线记录进行预训练,旨在将金融市场的"语言"——K 线序列——进行建模。Kronos 已被 AAAI 2026 顶会收录,论文发表于 arXiv:2508.02739 $TRAE_REF。
现有时间序列基础模型(TSFMs)在金融 K 线数据上表现不佳,且常忽略波动率预测和合成数据生成等关键任务。Kronos 针对金融数据的高噪声特性,通过专有的两阶段框架解决这些痛点:先用专用 Tokenizer 将连续多维 OHLCV 数据量化为分层离散 Token,再用大规模自回归 Transformer 在这些 Token 上预训练 $TRAE_REF。
| 项目 | 详情 |
|---|---|
| 项目名称 | Kronos |
| 项目地址 | https://github.com/shiyu-coder/Kronos |
| 项目官网/演示 | https://shiyu-coder.github.io/Kronos-demo/ |
| 论文 | arXiv:2508.02739 |
| HuggingFace | https://huggingface.co/NeoQuasar |
| 作者/组织 | shiyu-coder / NeoQuasar |
| Stars | 33,500+(截至 2026 年 7 月) |
| Forks | 5,600+ |
| 当前版本 | 暂无正式 Release(最新提交 2026-04-13) |
| 开源协议 | MIT License |
| 主要语言 | Python (81.9%)、HTML (17.7%)、Shell (0.4%) |
| 仓库创建 | 2025 年 7 月 1 日 |
| 提交数 | 76 commits |
| 贡献者 | 18 人 |
| 学术收录 | AAAI 2026 |
| 模型月下载量 | 75 万+(HuggingFace) |
README 和论文中提供了以下可视化资源:
Kronos 填补了 K 线领域基础模型的空白。不同于通用时间序列模型(如 TimesFM、PatchTST),Kronos 专为金融 K 线数据设计,在零样本 RankIC 上比领先 TSFM 提升 93%,波动率预测 MAE 比最佳基线降低 9%,合成数据生成保真度提升 22% $TRAE_REF。
| 阶段 | 说明 |
|---|---|
| Stage 1 — Tokenizer | 将连续多维 OHLCV 数据量化为分层离散 Token,类似 NLP 中 BPE tokenizer 将文本转为 token 序列 |
| Stage 2 — Transformer | Decoder-only 自回归 Transformer 在离散 Token 序列上预训练,形成统一的金融市场"语言模型" |
这一设计将金融时间序列预测转化为类似语言建模的任务,使得大规模预训练成为可能。
| 模型 | 参数量 | 最大上下文 | 适用场景 |
|---|---|---|---|
| Kronos-mini | 4.1M | 512 steps | 极低资源部署 |
| Kronos-small | 32.5M | 512 steps | 快速推理、边缘设备 |
| Kronos-base | 102.1M | 512 steps | 通用预测(推荐) |
| Kronos-large | 499.2M | 未公开 | 最高精度(未开源) |
无需微调即可在多个金融任务上超越专用模型,包括:
predict_batch 方法支持 GPU 并行处理多个时间序列,提升效率学术质量得到顶级会议认可,论文可查,方法可复现,增强了项目可信度。
| 维度 | Kronos | TimesFM (Google) | Lag-Llama | PatchTST |
|---|---|---|---|---|
| 专为金融 K 线设计 | ✅ | ❌ 通用时间序列 | ❌ 通用时间序列 | ❌ 通用时间序列 |
| K 线 Tokenization | ✅ 分层离散 Tokenizer | ❌ | ❌ | ❌ |
| 零样本价格预测 | ✅ 领先 TSFM 93% | 基准 | 基准 | 基准 |
| 波动率预测 | ✅ 原生支持 | ❌ | ❌ | ❌ |
| 合成数据生成 | ✅ 生成保真度提升 22% | ❌ | ❌ | ❌ |
| 多资产预训练 | ✅ 45+ 交易所 | 部分 | 部分 | 部分 |
| 模型规模选择 | 4 种(4.1M~499.2M) | 3 种 | 3 种 | 多种 |
| 微调管线 | ✅ 集成 Qlib 回测 | 有限 | 有限 | 有限 |
| Web UI | ✅ 内置 | ❌ | ❌ | ❌ |
| 学术收录 | AAAI 2026 | ICML 2024 | 未收录 | ICLR 2023 |
| 依赖 | 版本要求 |
|---|---|
| Python | >= 3.10 |
| PyTorch | >= 2.0.0 |
| numpy | 最新版 |
| pandas | 2.2.2 |
| einops | 0.8.1 |
| huggingface_hub | 0.33.1 |
| matplotlib | 3.9.3 |
| tqdm | 4.67.1 |
| safetensors | 0.6.2 |
| 依赖 | 说明 |
|---|---|
| pyqlib | 微软 Qlib 量化框架,用于回测评估 |
| 平台 | 支持状态 |
|---|---|
| Windows | 支持 |
| Linux | 支持 |
| macOS | 支持(含 Apple Silicon MPS 加速) |
| GPU 加速 | CUDA(NVIDIA)、MPS(Apple Silicon)、CPU(通用) |
# 克隆仓库
git clone https://github.com/shiyu-coder/Kronos
cd Kronos
# 安装依赖
pip install -r requirements.txt
# 模型从 HuggingFace Hub 自动下载,首次加载需联网
from model import KronosPredictor
# 加载模型
predictor = KronosPredictor.from_pretrained("NeoQuasar/Kronos-base")
# 准备数据(DataFrame 格式,需包含 OHLC 列)
import pandas as pd
df = pd.read_csv("your_kline_data.csv")
# 预测未来 24 个时间步
predictions = predictor.predict(df, horizon=24)
print(predictions)
cd webui
python run.py
# 浏览器打开 http://localhost:7070
Kronos/
├── model/ # ⭐ 核心模型代码
│ ├── kronos_tokenizer.py # K 线 Tokenizer(连续 OHLCV → 离散 Token)
│ ├── kronos_model.py # Kronos Transformer 模型定义
│ ├── kronos_predictor.py # 高级封装类(预处理→预测→反归一化)
│ └── __init__.py
│
├── examples/ # 预测示例脚本
│ ├── prediction_example.py # 完整预测示例(含波动率)
│ └── prediction_wo_vol_example.py # 无波动率预测示例
│
├── finetune/ # ⭐ 微调管线(A 股市场示例)
│ ├── config.py # 配置文件(路径、超参数)
│ ├── dataset.py # 数据集类定义
│ ├── qlib_data_preprocess.py # Qlib 数据预处理
│ ├── train_tokenizer.py # Tokenizer 微调训练
│ ├── train_predictor.py # Predictor 微调训练
│ ├── qlib_test.py # 回测评估
│ └── utils/ # 工具函数
│
├── finetune_csv/ # 基于 CSV 的简化微调
│
├── webui/ # ⭐ Flask Web 前端(端口 7070)
│ ├── app.py # Flask 应用主文件
│ ├── run.py # 启动脚本
│ ├── start.sh # Shell 启动脚本
│ ├── templates/ # HTML 模板
│ └── static/ # 静态资源(Plotly.js 等)
│
├── tests/ # 单元测试
├── figures/ # 图片资源
├── requirements.txt # Python 依赖
├── LICENSE # MIT 协议
└── README.md # 项目文档
┌──────────────────────────────────────────────────────────┐
│ 用户交互层 │
│ Python API │ Web UI (Flask + Plotly.js) │ CLI 脚本 │
└──────────────────────┬───────────────────────────────────┘
│
┌──────────────────────┴───────────────────────────────────┐
│ 高级封装层 │
│ KronosPredictor │
│ 数据预处理 → 归一化 → 预测 → 反归一化 → 结果输出 │
└──────────────────────┬───────────────────────────────────┘
│
┌──────────────────────┴───────────────────────────────────┐
│ 核心模型层 │
│ ┌────────────────────┐ ┌──────────────────────┐ │
│ │ KronosTokenizer │ │ Kronos (Transformer) │ │
│ │ OHLCV → 离散 Token │ │ 自回归预测 → OHLCV │ │
│ └────────────────────┘ └──────────────────────┘ │
└──────────────────────┬───────────────────────────────────┘
│
┌──────────────────────┴───────────────────────────────────┐
│ 模型分发层 │
│ HuggingFace Hub │ safetensors 格式 │ 自动下载/缓存 │
└──────────────────────────────────────────────────────────┘
│
┌──────────────────────┴───────────────────────────────────┐
│ 微调与回测层 │
│ finetune/ │ Qlib 数据预处理 │ 回测评估 │ CSV 微调 │
└──────────────────────────────────────────────────────────┘
| 模块 | 路径 | 功能 |
|---|---|---|
| KronosTokenizer | model/kronos_tokenizer.py |
将连续多维 OHLCV 数据量化为分层离散 Token,将金融时间序列转为"语言"序列 |
| Kronos | model/kronos_model.py |
Decoder-only 自回归 Transformer 模型,在离散 Token 序列上进行预训练和推理 |
| KronosPredictor | model/kronos_predictor.py |
高级封装类,自动处理数据预处理、归一化、预测、反归一化全流程 |
| 微调管线 | finetune/ |
基于 Qlib 的 A 股市场微调示例,包含数据预处理、Tokenizer/Predictor 训练、回测评估 |
| Web UI | webui/ |
Flask 前端界面,支持多数据格式上传、K 线图表展示、预测结果对比分析 |
| CSV 微调 | finetune_csv/ |
简化版微调方式,基于 CSV 文件格式,适合快速实验 |
KronosPredictor 是整个项目的核心入口类,封装了从数据加载到预测输出的完整管线:
# model/kronos_predictor.py
# KronosPredictor 是用户使用 Kronos 的主要接口
# 核心流程:
# 1. 加载预训练模型权重(从 HuggingFace Hub 或本地)
# 2. 接收 Pandas DataFrame 格式的 K 线数据
# 3. 自动进行数据预处理和归一化
# 4. 调用 Kronos Tokenizer 将连续数据转为离散 Token
# 5. 通过自回归 Transformer 逐步生成未来 Token
# 6. 将预测 Token 解码回 OHLCV 值
# 7. 反归一化得到原始尺度的预测结果
from model import KronosPredictor
# 从 HuggingFace Hub 加载预训练模型
predictor = KronosPredictor.from_pretrained("NeoQuasar/Kronos-base")
# 预测未来 24 个时间步
# df 需包含 OHLC 列(Volume/Amount 可选)
predictions = predictor.predict(df, horizon=24)
# 批量预测多个时间序列(GPU 并行)
batch_predictions = predictor.predict_batch(list_of_dfs, horizon=24)
原始 K 线数据(OHLCV 连续值)
│
▼
┌──────────────────────────────┐
│ Stage 1: KronosTokenizer │
│ ┌────────────────────────┐ │
│ │ 1. 价格缩放/归一化 │ │
│ │ 2. 分层量化(多级离散化)│ │
│ │ 3. Token ID 映射 │ │
│ └────────────────────────┘ │
│ 输出:离散 Token 序列 │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ Stage 2: Kronos Transformer │
│ ┌────────────────────────┐ │
│ │ 1. Token Embedding │ │
│ │ 2. Positional Encoding │ │
│ │ 3. Decoder-only Layers │ │
│ │ 4. 自回归 Token 生成 │ │
│ └────────────────────────┘ │
│ 输出:预测 Token 序列 │
└──────────────┬───────────────┘
│
▼
Token 解码 → 预测 OHLCV 值
# finetune/train_predictor.py
# 微调流程(以 A 股市场为例):
#
# 1. 数据预处理(qlib_data_preprocess.py):
# - 将 Qlib 格式数据转为 Kronos 所需格式
# - 数据清洗、缺失值处理、时间对齐
#
# 2. Tokenizer 微调(train_tokenizer.py):
# - 在目标市场数据上微调 Tokenizer 的分层量化参数
# - 使 Tokenizer 适配目标市场的价格分布特征
#
# 3. Predictor 微调(train_predictor.py):
# - 基于微调后的 Tokenizer 在目标数据上训练 Transformer
# - 支持自定义训练超参数(学习率、批次大小、训练轮数等)
#
# 4. 回测评估(qlib_test.py):
# - 基于 Qlib 框架执行回测
# - 输出收益曲线、夏普比率、最大回撤等指标
# webui/app.py
# 基于 Flask 的 Web 前端,端口 7070
#
# 核心功能:
# 1. 文件上传:支持 CSV、JSON 等多种格式的 K 线数据
# 2. 参数配置:选择模型规模、预测步长、采样参数(Temperature/Top-p)
# 3. K 线图表:基于 Plotly.js 的交互式 K 线图展示
# 4. 预测结果:展示预测价格曲线,支持多条预测路径对比
# 5. 导出功能:预测结果可下载为 CSV
# 支持 4 种模型规模,通过 HuggingFace Hub 模型 ID 区分:
# - "NeoQuasar/Kronos-mini" → 4.1M 参数
# - "NeoQuasar/Kronos-small" → 32.5M 参数
# - "NeoQuasar/Kronos-base" → 102.1M 参数(推荐)
# - "NeoQuasar/Kronos-large" → 499.2M 参数(未开源)
# 模型使用 safetensors 格式存储,加载速度快且安全
# 首次加载时自动从 HuggingFace Hub 下载并缓存到本地
| 场景 | 说明 |
|---|---|
| 量化交易策略开发 | 基于 Kronos 预测信号构建选股/择时策略,零样本即可获得有竞争力的预测效果 |
| 风险管理 | 波动率预测用于 VaR 计算、风险度量、仓位管理和止损设置 |
| 合成数据生成 | 为回测系统生成逼真的历史数据,解决数据稀缺问题,增强训练集 |
| 多资产研究 | 跨市场、跨品种的价格模式发现,支持股票、加密货币、外汇、期货等 |
| 金融教育与研究 | 作为学术研究基线、教学演示工具,论文已被 AAAI 2026 收录 |
| 因子挖掘 | 基于 Kronos 的预测信号作为 Alpha 因子,结合传统因子进行多因子建模 |
| 高频/日内交易辅助 | 利用概率预测生成多条路径,辅助交易决策 |
predict_batch 方法支持 GPU 并行处理多个时间序列。finetune/ 目录中大量注释由 Gemini 2.5 Pro 生成,可能存在不准确之处。此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。