Kronos-small-BIST
Kronos (NeoQuasar/Kronos-small, 24.7M) K-line
foundation modelinin Borsa İstanbul mumları üzerinde fine-tune edilmiş hâli.
Tokenizer (NeoQuasar/Kronos-Tokenizer-base) donuk bırakılmıştır — bu repo
yalnızca predictor ağırlıklarını içerir.
Eğitildiği yer: zubziretta/kronos-bist-trainer (ZeroGPU).
Veri
zubziretta/bist-klines —
BIST-100 evreninden 193 seri / 1.019.897 mum:
| saatlik | ~97 sembol, son ~2 yıl |
| günlük | ~96 sembol, tam geçmiş (2000'e kadar) |
| özellikler | open, high, low, close, volume, amount (= close × volume) |
| pencere | 90 bar geçmiş + 10 bar hedef |
| normalizasyon | yalnızca geçmiş pencerenin ortalama/std'si, ±5 clip |
| bölme | her serinin son %10'u validation (897k train / 82.6k val penceresi) |
Eğitim
Amaç fonksiyonu resmi finetune/train_predictor.py ile birebir: donuk BSQ tokenizer
s1/s2 token'ları üretir, predictor autoregressive olarak bir sonraki token'ı tahmin
eder, kayıp (CE(s1) + CE(s2)) / 2.
| adım | 60.000 (batch 64 ≈ 4.3 epoch) |
| lr | 4e-5, 500 adım warmup + cosine → %10 |
| optimizer | AdamW (0.9, 0.95), wd 0.1, grad clip 3.0 |
| precision | bf16 autocast (tokenizer fp32) |
| donanım | ZeroGPU, ~95 sn'lik parçalar hâlinde ~36 dk |
| val CE | 2.937 (en iyi) → 2.973 (son) |
Değerlendirme
Periyot başına 192 held-out pencere, 10 bar ileri, 5 örnek yolun ortalaması:
| model · periyot | n | MAPE % ↓ | naive | drift | yön % ↑ | %95 GA | yukarı oranı |
|---|---|---|---|---|---|---|---|
| base · 1h | 192 | 1.79 | 1.69 | 4.79 | 58.9 | 51.8–65.6 | 43.2 |
| fine-tuned · 1h | 192 | 2.01 | 1.69 | 4.79 | 43.2 | 36.4–50.3 | 43.2 |
| base · 1d | 192 | 7.82 | 4.46 | 11.60 | 52.1 | 45.0–59.0 | 50.0 |
| fine-tuned · 1d | 192 | 5.22 | 4.46 | 11.60 | 55.2 | 48.1–62.1 | 50.0 |
Dürüst özet: bu checkpoint'in kullanılabilir bir tahmin üstünlüğü yok.
- Nokta tahmininde hiçbir varyant naive baseline'ı (son fiyatı tekrarla) geçemiyor. Fine-tune günlük seride hatayı belirgin düşürüyor (7.82 → 5.22), saatlik seride ise kötüleştiriyor (1.79 → 2.01).
- Yön isabetinde hiçbir sonuç şanstan istatistiksel olarak ayırt edilemiyor; tüm %95 güven aralıkları %50'yi içeriyor ya da sınıf dengesizliğiyle açıklanıyor (fine-tuned · 1h'in %43.2'si, "hep yukarı de" stratejisinin isabetiyle aynı).
Muhtemel nedenler: saatlik ve günlük serilerin tek modelde karıştırılması (günlük seriler veri setinin yarısı ve farklı oynaklık ölçeğinde), 15k adımdan sonra yükselen validation CE (aşırı öğrenme) ve 10 bar ufkunda fiyat seviyesinin rastgele yürüyüşe çok yakın olması.
Model bir üretici modeldir; asıl değeri tek bir ortalama yol değil, örneklenen yolların dağılımıdır. Nokta tahmini metrikleriyle değerlendirmek onu en zayıf yönünden ölçer.
Kullanım
# pip install einops safetensors pandas torch
# git clone https://github.com/shiyu-coder/Kronos (model/ paketi için)
from model import Kronos, KronosTokenizer, KronosPredictor
tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")
model = Kronos.from_pretrained("zubziretta/Kronos-small-BIST")
predictor = KronosPredictor(model, tokenizer, device="cuda", max_context=512)
# df: open/high/low/close/volume/amount kolonlu son 90 bar
pred_df = predictor.predict(df, x_timestamp, y_timestamp, pred_len=10,
T=1.0, top_p=0.9, sample_count=5)
trainer_state.pt model + optimizer state'i içerir; eğitime devam etmek içindir.
Yatırım tavsiyesi değildir; araştırma amaçlıdır.
- Downloads last month
- 22
Model tree for zubziretta/Kronos-small-BIST
Base model
NeoQuasar/Kronos-small