Kronos 研究筆記¶
資料來源¶
| 項目 | 連結 |
|---|---|
| 論文 (AAAI 2026) | arXiv 2508.02739 |
| GitHub Repo | shiyu-coder/Kronos |
| Hugging Face 模型 | NeoQuasar |
| Live Demo | Kronos Demo |
| 技術評論文章 | Jonathan Kinlay 分析 |
作者: Yu Shi†, Zongliang Fu†, Shuo Chen, Bohan Zhao, Wei Xu, Changshui Zhang, Jian Li († 共同第一作者)
專案狀態: ⭐ 14.6K+ stars · MIT License · Python · AAAI 2026 Accepted
專案概述¶
Kronos 是首個專為金融 K 線(candlestick)設計的開源基礎模型。核心洞察是:通用時間序列基礎模型(TSFM)在金融數據上表現差勁,因為金融序列有低訊噪比、強非平穩性、OHLCV 多維度高階依賴等獨特特性——且既有 TSFM 的預訓練語料中金融數據佔比不到 1%。
Kronos 提出兩階段框架:先用專用 tokenizer 將連續的 K 線數據離散化為階層式 Token,再用 decoder-only Transformer 進行自回歸建模。模型在 45 個全球交易所、超過 120 億筆 K 線紀錄上預訓練,覆蓋股票、期貨等多種資產類別。
核心技術架構¶
兩階段框架總覽¶
Stage 1: K-line Tokenizer Stage 2: Autoregressive Modeling
┌─────────────────────────┐ ┌──────────────────────────────┐
│ OHLCVA (6維連續向量) │ │ Decoder-only Transformer │
│ ↓ │ │ ↓ │
│ Transformer Encoder │ │ Temporal Embeddings (5種) │
│ (3層, 256d, 4 heads) │ │ + Coarse/Fine 融合投影 │
│ ↓ │ │ ↓ │
│ BSQ 量化 → k-bit 二元碼│ │ Sequential Prediction: │
│ 分解為 Coarse + Fine │ │ 1. p(coarse | past) │
│ ↓ │ │ 2. p(fine | past, coarse) │
│ Transformer Decoder │ │ ↓ │
│ (3層, 重建 OHLCVA) │ │ Token → Decoder → 連續預測 │
└─────────────────────────┘ └──────────────────────────────┘
Stage 1:K-line Tokenizer¶
| 組件 | 技術細節 |
|---|---|
| 輸入 | OHLCVA 6 維向量,z-score 正規化後 clip 至 [-5, 5] |
| Encoder | 3 層 Transformer,256 維,4 heads |
| 量化方法 | Binary Spherical Quantization (BSQ) |
| 階層分解 | k=20 bit → 分為 coarse (10 bit) + fine (10 bit) |
| 有效詞彙量 | 每步預測 2×2^10 = 2×1024,而非 2^20 ≈ 100 萬 |
| 損失函數 | L = L_coarse + L_fine + λL_quant(λ=1) |
| Decoder | 3 層 Transformer,從 Token 重建原始 OHLCVA |
BSQ 的關鍵優勢: 超球面幾何提供「尾部敏感性」(tail sensitivity),增強對極端行情的偵測能力——這對風險管理至關重要。離散量化同時起到去噪效果,過濾金融數據中的高頻雜訊。
Stage 2:Hierarchical Autoregressive Modeling¶
| 配置 | Kronos-small | Kronos-base | Kronos-large |
|---|---|---|---|
| Layers | 8 | 12 | 18 |
| d_model | 512 | 832 | 1664 |
| d_ff | 1024 | 2048 | 3072 |
| Heads | 8 | 16 | 32 |
| 參數量 | 24.7M | 102.3M | 499.2M |
| Context | 512 | 512 | 512 |
關鍵設計:
- 位置編碼: RoPE(旋轉位置嵌入)
- 時間嵌入: 5 種可學習嵌入(分鐘、小時、星期幾、日期、月份),捕捉市場週期性
- 序列預測: 先預測 coarse subtoken,再以預測結果(非 ground truth)通過 cross-attention 條件生成 fine subtoken——降低 exposure bias
- Test-time Scaling: 生成多條隨機軌跡取平均,N=10 可提升 IC/RankIC 約 5-8%
預訓練數據¶
| 項目 | 數據 |
|---|---|
| 總記錄數 | 120+ 億筆 K 線 |
| 交易所 | 45 個,橫跨 30+ 國家 |
| 資產類型 | 股票、期貨等 |
| 時間頻率 | 1分/5分/10分/15分/20分/30分/60分/2小時/4小時/日/週 |
數據清洗管線: 結構性斷裂偵測 → 流動性不足過濾 → 價格停滯去除 → 最小長度驗證,每個閾值按頻率自適應調整。
實驗結果¶
核心性能(vs 25 個 baseline)¶
| 任務 | 指標 | 提升幅度 |
|---|---|---|
| 價格預測 | RankIC | +93% vs 最佳 TSFM,+87% vs 最佳非預訓練模型 |
| 波動率預測 | MAE | -9% vs 競爭基線 |
| 合成 K 線生成 | Generative Fidelity | +22% vs 先前生成模型 |
| 投資模擬 | AER & IR | 所有基線中最高 |
Ablation:為何離散化有效?¶
| 模型變體 | 預測空間 | Price RankIC | Vol MAE |
|---|---|---|---|
| Direct-AR | 連續 | 0.0149 | 0.0565 |
| Prob-AR (Student-t) | 連續 | 0.0102 | 0.0464 |
| Kronos-Parallel | 離散(並行) | 0.0226 | 0.0461 |
| Kronos (序列) | 離散(階層) | 0.0254 | 0.0384 |
結論:離散空間大幅優於連續空間;階層式序列預測優於並行預測。
快速開始¶
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)
# 預測
pred_df = predictor.predict(
df=x_df, # OHLCV DataFrame
x_timestamp=x_timestamp, # 歷史時間戳
y_timestamp=y_timestamp, # 預測時間戳
pred_len=120,
T=0.6, top_p=0.9, sample_count=10
)
Fine-tuning 流程(以 A 股為例):
- 設定
finetune/config.py路徑與超參數 python finetune/qlib_data_preprocess.py準備 Qlib 數據torchrun --nproc_per_node=N finetune/train_tokenizer.py微調 tokenizertorchrun --nproc_per_node=N finetune/train_predictor.py微調預測器python finetune/qlib_test.py --device cuda:0回測驗證
目前限制 / 注意事項¶
- Context window 僅 512 tokens — 對長期趨勢分析可能不足(Kronos-mini 為 2048)
- Kronos-large (499M) 未開源 — 論文中最強結果無法完全復現
- 僅支援 K 線數據 — 不包含訂單簿、新聞、基本面等替代數據
- 回測 ≠ 實盤 — 論文的投資模擬是簡化的 top-K 策略,未考慮滑點、手續費、流動性限制
- BSQ tokenizer 的域遷移成本 — 轉移到新市場時需要重新微調 tokenizer
研究價值與啟示¶
關鍵洞察¶
-
離散化是金融時序的正確歸納偏置。 Kronos 證明將連續 K 線量化為離散 token 後再建模,效果遠超直接在連續空間預測——因為離散化同時實現了去噪和狀態空間壓縮。這挑戰了「金融數據應該用連續模型」的直覺。
-
NLP 範式遷移到金融時序的可行路徑。 Kronos 的技術棧(BSQ tokenizer → autoregressive Transformer → nucleus sampling)本質上是把 K 線當成一種「語言」來處理。這為 LLM 技術遷移到非文本序列提供了成功範例。
-
階層式 Token 設計的巧妙性。 Coarse/Fine 分解不僅降低了詞彙空間(從 2^20 到 2×2^10),更強制模型先捕捉主要結構再學習殘差——類似於訊號處理中的多解析度分析。序列預測(非並行)在 ablation 中的優勢證實了這種因果依賴的重要性。
-
Test-time Scaling 在金融場景的實用性。 生成多條軌跡取平均的策略,本質上是蒙特卡羅模擬的現代版本——用 GPU 並行推理取代傳統的統計模擬,且效果單調遞增。這為實務中的「計算換精度」提供了明確的調節旋鈕。
-
數據不平衡是 TSFM 在金融領域失敗的主因。 論文揭露既有 TSFM 金融數據佔比不到 1%(有些 < 0.01%),這解釋了為何通用模型在金融任務上表現差——不是架構問題,而是數據分佈問題。
與其他專案的關聯¶
- vs AI Hedge Fund / TradingAgents: Kronos 定位在更底層——提供價格預測基礎能力,可作為上層交易 Agent 的 signal source。兩者是互補而非競爭關係。
- vs NOFX / OpenStock / StockStats: 這些工具聚焦於傳統量化因子或統計分析,Kronos 則代表「基礎模型直接預測」的新範式。可以想像將 Kronos 的預測信號作為新的 alpha factor 整合進傳統框架。
- 技術借鑑: BSQ tokenizer 的設計思路可能對其他非文本序列(音訊、感測器數據、醫療時序)的 foundation model 有參考價值。