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
Safetensors
Model size
24.7M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for zubziretta/Kronos-small-BIST

Finetuned
(2)
this model

Dataset used to train zubziretta/Kronos-small-BIST