bistPredictor / backend /config.py
BIST Predictor Dev
Initial commit - Clean HF release
1802f47
"""
BIST Predictor — Konfigürasyon Dosyası
BIST-100 hisse listesi, model ayarları ve zamanlama konfigürasyonu.
"""
import os
from pathlib import Path
# ─── Proje Yolları ──────────────────────────────────────────────────────────────
BASE_DIR = Path(__file__).resolve().parent
DATA_DIR = BASE_DIR / "data"
DATA_DIR.mkdir(exist_ok=True)
DB_PATH = DATA_DIR / "predictions.db"
# ─── TimesFM Model Konfigürasyonu ───────────────────────────────────────────────
MODEL_NAME = "google/timesfm-2.5-200m-pytorch"
MAX_CONTEXT = 512 # Geçmiş gün sayısı (context window)
NORMALIZE_INPUTS = True
USE_QUANTILE_HEAD = True
# Tahmin horizon'ları (iş günü)
HORIZONS = [10, 30, 90]
DEFAULT_HORIZON = 10
# Quantile seviyeleri (P10 ... P90)
QUANTILE_LEVELS = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
# ─── Güven Puanı Ağırlıkları ────────────────────────────────────────────────────
CONFIDENCE_WEIGHTS = {
"direction_accuracy": 0.40,
"mape": 0.30,
"quantile_coverage": 0.20,
"volatility_match": 0.10,
}
# ─── Zamanlama Ayarları ──────────────────────────────────────────────────────────
# Borsa kapanışı sonrası tahmin üretme (Türkiye saati, UTC+3)
PREDICTION_HOUR = 18
PREDICTION_MINUTE = 30
# Sabah gerçek veriyle karşılaştırma
COMPARISON_HOUR = 10
COMPARISON_MINUTE = 0
# ─── yfinance Ayarları ──────────────────────────────────────────────────────────
HISTORY_PERIOD = "2y" # 2 yıllık geçmiş veri (context için yeterli)
# ─── BIST-100 Hisse Listesi (Yahoo Finance formatı: TICKER.IS) ──────────────────
BIST100_SYMBOLS = [
"AEFES.IS", # Anadolu Efes
"AFYON.IS", # Afyon Çimento
"AGESA.IS", # AgeSA Hayat ve Emeklilik
"AHGAZ.IS", # Ahlatcı Doğalgaz
"AKBNK.IS", # Akbank
"AKCNS.IS", # Akçansa Çimento
"AKFGY.IS", # Akfen GYO
"AKFYE.IS", # Akfen Yenilenebilir Enerji
"AKSA.IS", # Aksa Akrilik
"AKSEN.IS", # Aksa Enerji
"ALFAS.IS", # Alfa Solar Enerji
"ALARK.IS", # Alarko Holding
"ARCLK.IS", # Arçelik
"ASELS.IS", # Aselsan
"ASTOR.IS", # Astor Enerji
"AYDEM.IS", # Aydem Yenilenebilir Enerji
"AYGAZ.IS", # Aygaz
"BAGFS.IS", # Bagfaş
"BASGZ.IS", # Başkent Doğalgaz
"BERA.IS", # Bera Holding
"BIMAS.IS", # BİM
"BIOEN.IS", # Biotrend Çevre ve Enerji
"BRISA.IS", # Brisa Bridgestone
"BRYAT.IS", # Borusan Yatırım
"BUCIM.IS", # Bursa Çimento
"CCOLA.IS", # Coca-Cola İçecek
"CIMSA.IS", # Çimsa Çimento
"DEVA.IS", # Deva Holding
"DOHOL.IS", # Doğan Holding
"ECILC.IS", # Eczacıbaşı İlaç
"EGEEN.IS", # Ege Endüstri
"EKGYO.IS", # Emlak Konut GYO
"ENJSA.IS", # Enerjisa Enerji
"ENKAI.IS", # Enka İnşaat
"EREGL.IS", # Ereğli Demir Çelik
"EUPWR.IS", # Europower Enerji
"FROTO.IS", # Ford Otosan
"GARAN.IS", # Garanti BBVA
"GENIL.IS", # Genel İlaç
"GESAN.IS", # Giresun San. ve Tic.
"GLYHO.IS", # Global Yatırım Holding
"GUBRF.IS", # Gübre Fabrikaları
"GWIND.IS", # Galata Wind Enerji
"HALKB.IS", # Halkbank
"HEKTS.IS", # Hektaş
"ISDMR.IS", # İskenderun Demir Çelik
"ISCTR.IS", # İş Bankası
"ISGYO.IS", # İş GYO
"KARSN.IS", # Karsan Otomotiv
"KAYSE.IS", # Kayseri Şeker
"KCHOL.IS", # Koç Holding
"KLRHO.IS", # Kiler Holding
"KMPUR.IS", # Kimberly-Clark
"KONTR.IS", # Kontrolmatik
"KONYA.IS", # Konya Çimento
"KORDS.IS", # Kordsa
"KOZAA.IS", # Koza Anadolu Metal
"KOZAL.IS", # Koza Altın
"KRDMD.IS", # Kardemir
"LOGO.IS", # Logo Yazılım
"MAVI.IS", # Mavi Giyim
"MGROS.IS", # Migros
"MPARK.IS", # MLP Sağlık
"ODAS.IS", # Odaş Elektrik
"OTKAR.IS", # Otokar
"OYAKC.IS", # Oyak Çimento
"PAPIL.IS", # Papilon Savunma
"PETKM.IS", # Petkim
"PGSUS.IS", # Pegasus
"QUAGR.IS", # QUA Granite
"SAHOL.IS", # Sabancı Holding
"SASA.IS", # SASA Polyester
"SELEC.IS", # Selçuk Ecza Deposu
"SISE.IS", # Şişecam
"SKBNK.IS", # Şekerbank
"SMRTG.IS", # Smart Güneş Enerjisi
"SOKM.IS", # Şok Marketler
"TABGD.IS", # Türk Hava Yolları Bahçe
"TATGD.IS", # Tat Gıda
"TAVHL.IS", # TAV Havalimanları
"TCELL.IS", # Turkcell
"THYAO.IS", # Türk Hava Yolları
"TKFEN.IS", # Tekfen Holding
"TOASO.IS", # Tofaş
"TRGYO.IS", # Torunlar GYO
"TTKOM.IS", # Türk Telekom
"TTRAK.IS", # Türk Traktör
"TUPRS.IS", # Tüpraş
"TURSG.IS", # Türkiye Sigorta
"ULKER.IS", # Ülker Bisküvi
"VAKBN.IS", # Vakıfbank
"VESBE.IS", # Vestel Beyaz Eşya
"VESTL.IS", # Vestel Elektronik
"YKBNK.IS", # Yapı Kredi
"ZOREN.IS", # Zorlu Enerji
]
# Hızlı test için küçük liste (geliştirme aşamasında kullanılabilir)
BIST_TEST_SYMBOLS = [
"THYAO.IS",
"GARAN.IS",
"ASELS.IS",
"KCHOL.IS",
"EREGL.IS",
]
# ─── BIST-100 ve Emtialar ────────────────────────────────────────────────────────
COMMODITIES = {
"GC=F": "Altın",
"SI=F": "Gümüş",
"CL=F": "Ham Petrol WTI",
"BZ=F": "Brent Petrol",
"HG=F": "Bakır",
"PA=F": "Paladyum",
"PL=F": "Platin"
}
# Aktif hisse listesi (BIST-100 ve Emtiaların birleşimi)
ACTIVE_SYMBOLS = BIST100_SYMBOLS + list(COMMODITIES.keys())
# ─── Sunucu Ayarları ─────────────────────────────────────────────────────────────
HOST = os.environ.get("HOST", "0.0.0.0")
PORT = int(os.environ.get("PORT", 7860))
FRONTEND_DIR = BASE_DIR.parent / "frontend"