Backtest Tuzakları — Geçmiş Performansa Neden Güvenmemeli?
Bir strateji backtest'te harika görünebilir; canlıya alınca berbat çalışabilir. İşte neden, nasıl yanlış yaparız ve nasıl korunuruz.
Neden bu sayfa kritik?
Bu sitedeki tüm strateji sayfaları geçmiş veriyle test edilmiştir. Backtest'in sonuçları gerçek ama bu, stratejinin yarın da aynı şekilde çalışacağı anlamına gelmez. Aksi savunulan her şey dolandırıcılıktır.
Bu sayfada backtest'in tipik tuzaklarını ve hangilerini bizim dikkatle önlediğimizi anlatıyoruz.
Tuzak 1: Lookahead Bias (İleri Bakış)
Hata: Strateji bir günün kararını verirken, o günün kapanış fiyatını (veya sonraki günleri) görmüş gibi davranmak.
Örnek:
"Bugün TÜFE açıklandı, %3 sürpriz. Bunu kullanarak bugünkü hisseyi alıyorum."
Ama TÜFE 10:00'da açıklanır, bizim "günlük kapanış" verimiz 18:00 fiyatı. Yani bilgi gerçekten 10:00'da elde edilmedi, akşam veriyle hesaplama yaptık.
Bizim önlemimiz: Strateji sinyali günde T üretir, pozisyon ertesi gün T+1'de açılır. Backtest engine bu kaydırmayı zorunlu yapar.
Tuzak 2: Survivorship Bias (Hayatta Kalan Yanlılığı)
Hata: Bugünkü endekse bakıp "BIST 30 hisseleriyle test ettim" demek. Ama bugünkü BIST 30, geçmişteki BIST 30 değil — iflas edenler, çıkarılanlar yok.
Etkisi: Yıllık getiriyi yapay olarak %2-4 yüksek gösterir. Çünkü iflas eden hisseleri data setinizde yok.
Bizim önlemimiz: Şu an için BIST 30'un bugünkü kompozisyonunu kullanıyoruz — bu önemli bir kısıt. Profesyonel backtest için CRSP/Bloomberg gibi point-in-time verisi gerekir.
Tuzak 3: Overfitting (Aşırı Uyarlama)
Hata: Bir stratejinin 50 parametresini geçmişe en iyi uydurmak. Mesela:
"50g MA değil 47g MA daha iyi backtest verir, kullanalım."
"5 hisse değil 6 hisse daha iyi."
"6 ay momentum değil 7 ay daha iyi."
Her tweak ile geçmiş daha iyi görünür ama gelecek tahmin gücü azalır. Çünkü gürültüye uyum sağlıyorsunuz, sinyale değil.
Sağlık testi: Akademide kanıtlanmış, basit, yuvarlak parametreler kullan. 50g, 200g, RSI(14) — bunlar literatürde standart. Onları değiştirme.
Bizim önlemimiz: Strateji parametreleri literatürden alındı: - Momentum: 6 ay = 126 işgünü (Jegadeesh-Titman standardı) - RSI: 14 gün (Wilder, 1978 standartı) - 52-hafta yüksek: 252 işgünü (TR'ye uyarlanmış) - Golden Cross: 50/200 gün
Bir tek parametre bile literatür dışı değil.
Tuzak 4: Data-Snooping / Multiple Testing
Hata: 100 strateji test ediyorsun, biri %25 yıllık getiri veriyor. "Buldum!" diyorsun. Aslında 100 stratejinin birinin şans eseri iyi görünmesi bekleniyor.
Sağlık testi: Çok büyük örneklem (>15 yıl) + farklı pazarlarda aynı sonuç veriyor mu?
Bizim önlemimiz: 5 strateji test ediyoruz, hepsi akademide ayrı ayrı kanıtlanmış. Yeni bir kombinasyon icat etmiyoruz.
Tuzak 5: Transaction Cost & Slippage'i İhmal
Hata: Backtest'te işlem maliyeti %0 — gerçekte ise: - BIST komisyon: %0.05-0.10 - BSMV (banka sigorta muamele vergisi): %5 komisyon üstüne - Slipaj (bid-ask, market impact): %0.05-0.30 - Toplam round-trip: %0.15 - %0.50
100 işlem/yıl yapan strateji, sadece maliyet ile yıllık %15-50 kayıp edebilir.
Bizim önlemimiz: Her trade için tek yön 10 bps (%0.10) maliyet hesaplıyoruz. Round-trip ≈ %0.20.
Tuzak 6: Likidite Hatası
Hata: Backtest'te "USD 1M almak istedim, hemen aldım" varsayar. Gerçekte BIST 30'un alt-sıra hisselerinde günde 1M USD almak fiyatı %2-5 yukarı iter.
Sağlık testi: Stratejinin günlük işlem hacmini hisselerin %1-5'i ile sınırla.
Bizim önlemimiz: Backtest pozisyonları küçük (eşit ağırlık), evren büyük likit hisseler. Yine de gerçek getiriyi olduğundan iyimser tahmin ederiz.
Tuzak 7: Yapısal Değişim
Tarihsel veri 2014-2024'ü kapsıyor olabilir. Ama: - 2014-2018: Düşük enflasyon, görece istikrarlı politika - 2018: Kur şoku - 2020: COVID + sıfıra yakın rates - 2022-2024: Yüksek enflasyon, ortodoks olmayan politika
Strateji 2015'te çalıştı, 2024'te de çalışacak diye bir kural yok. Rejim değişikliklerini dikkate al.
Bizim önlemimiz: Stratejilerin equity curve'lerini farklı dönemlere ayırıyoruz. Yıllık performansta hangi yılın iyi/kötü olduğu görünür.
Sağlam Backtest İçin Kurallar
- Out-of-sample test — verisinin son %20-30'unu dokunulmadan ayır, sadece sonunda test et
- Walk-forward analysis — her N ay sonra parametreleri yeniden seç, sonraki M ay test et
- Maliyet dahil — slipaj + komisyon + vergi
- Birden çok pazar/dönem — aynı strateji ABD'de ve TR'de mi çalışıyor?
- Yuvarlak parametreler — 14 gün, 50 gün gibi standart sayılar
- Düşük frekanslı sinyal — aylık > günlük (overfitting riski)
Backtest sonuçlarını okurken
Gördüğün rakamlar:
| Metrik | "İyi" eşik | Dikkat |
|---|---|---|
| Yıllık getiri (CAGR) | >%10 nominal | Buy-and-hold ile karşılaştır |
| Sharpe ratio | >1.0 | >2.0 muhtemelen aşırı uyarlama |
| Max drawdown | <%30 | >%50 = pratikte uygulanamaz |
| Calmar (CAGR/MDD) | >0.5 | >1.0 mükemmel ama nadir |
| Win rate | %50-60 | Önemli değil — kazanç büyüklüğü daha kritik |
Son söz
"All models are wrong, but some are useful." — George Box
Bir backtest modeldir, gerçek değildir. Olası senaryolardan bir tanesini simüle eder. Geçmişte çalışan strateji geleceğin garantisi değil ama:
- Strateji geçmişte tutarsız → gelecekte de muhtemelen tutarsız
- Strateji geçmişte tutarlı → gelecekte tutarlı olma olasılığı daha yüksek ama garanti değil
Backtest bir filtre olarak değerli; bir kehanet değil.
Bu sitede backtest disipliniyle yapılır: - Lookahead engellenir (T+1 pozisyon) - Maliyet dahil (10 bps tek yön) - Literatürden standart parametreler - 5 yıl tarihsel veri (BIST 30 + US 30) - Walk-forward ve out-of-sample testler — gelecek versiyonlarda eklenecek
▸ Not: Bu sayfa eğitim ve araştırma amaçlıdır. Yatırım tavsiyesi içermez. Anlatılan kavram veya stratejilerin geçmiş performansı, gelecek için garanti vermez.