Spaces:
Running
Running
| """ | |
| 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" | |