简介
Kronos 是清华大学信息科学研究院开源的 K 线分析模型,基于全球 45 个交易所的海量数据训练,支持沪深市场复权数据。该模型提供多个版本以适配不同的算力和应用需求。
| 模型名称 | Tokenizer | 上下文长度 | 参数量 | 开源情况 |
|---|---|---|---|---|
| Kronos-mini | Tokenizer-2k | 2048 | 4.1M | NeoQuasar/Kronos-mini |
| Kronos-small | Tokenizer-base | 512 | 24.7M | NeoQuasar/Kronos-small |
| Kronos-base | Tokenizer-base | 512 | 102.3M | NeoQuasar/Kronos-base |
| Kronos-large | Tokenizer-base | 512 | 499.2M | 暂未开放 |
安装与使用
1. 安装依赖
确保已安装 Python 3.10+,并运行:
pip install -r requirements.txt
2. 加载模型与 Tokenizer
from model import Kronos, KronosTokenizer, KronosPredictor
tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")
model = Kronos.from_pretrained("NeoQuasar/Kronos-small")
3. 初始化预测器
predictor = KronosPredictor(model, tokenizer, device="cuda:0", max_context=512)
4. 准备输入数据
输入需要包含历史的 K 线数据:
import pandas as pd
df = pd.read_csv("./data/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']
5. 生成预测结果
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(pred_df.head())
输出将包含未来 open、high、low、close、volume 和 amount 的 DataFrame。
6. 可视化
运行官方示例脚本,即可得到预测效果图表。
微调指南
如需在自有数据上进行微调(Finetuning),可参考以下流程:
- 配置实验参数:设置数据路径、保存路径、训练超参数等。
- 准备数据:使用 Qlib 工具预处理,划分训练/验证/测试集。
- 模型微调:先微调 Tokenizer,再微调预测器。
- 回测评估:检验模型在历史数据上的表现。
核心命令示例
# 数据预处理
python finetune/qlib_data_preprocess.py
# 微调 Tokenizer
torchrun --standalone --nproc_per_node=2 finetune/train_tokenizer.py
# 微调 Predictor
torchrun --standalone --nproc_per_node=2 finetune/train_predictor.py
# 回测
python finetune/qlib_test.py --device cuda:0
运行后可获得回测曲线以评估模型表现。

