Backtest ve Canlı İşlem: Gerçek Sonuçlar Neden Farklıdır
Canlı işlem sonuçları neden backtestten farklıdır: dolum, slipaj, komisyon, gecikme, veri kalitesi, ileriye bakma yanlılığı, rejim değişimi ve doğru test yöntemi.
Strateji geliştirmiş neredeyse her trader bu anı yaşamıştır: Backtest harika görünür, birkaç haftalık canlı işlemden sonra ise tablo bambaşkadır. Bu, stratejinin mutlaka kötü olduğu anlamına gelmez. Backtestin gerçekliğin bir modeli olduğu ve her modelin varsayımları olduğu anlamına gelir. Bu yazıda farkın ana kaynaklarını ve onu nasıl küçültebileceğinizi ele alıyoruz.
Bir backtest aslında neyi ölçer
Bir backtest, stratejinin kurallarını geçmiş fiyat verileri üzerinde çalıştırır ve bu kurallarla işlem yapmış olsaydınız ne olacağını hesaplar. Örneğin TradingView'da Strategy Tester, Pine Script ile yazılmış stratejiler için bunu yapar. Sonuç bir tahmindir, geçmişin bir kaydı değil.
Sorun şu ki backtest yalnızca verisinde olanı "bilir". Veri beş dakikalık barlardan oluşuyorsa, barın içinde ne olduğunu bilmez. Komisyon girmediyseniz, işlem yapmanın ücretsiz olduğunu varsayar. Slipaj girmediyseniz, her emrin tam istediğiniz fiyattan gerçekleştiğini varsayar. Bu varsayımların her biri sonucu yukarı doğru çarpıtır.
Dolumlar ve slipaj
Çoğu trader için farkın en büyük tek kaynağı budur.
- Piyasa emirleri karar anında grafikteki fiyattan değil, bir sonraki mevcut fiyattan gerçekleşir. İstihdam raporu açıklaması gibi volatil anlarda fark birkaç tick olabilir.
- Limit emirler fiyatı garanti eder ama dolumu garanti etmez. Birçok backtest, fiyat seviyeye dokunduysa emrin dolduğunu varsayar. Gerçekte sıranın sonunda kalmış ve hiç dolmamış olabilirsiniz; çoğu zaman da tam en iyi işlemlerde.
- Stop emirler tetiklendiğinde piyasa emrine dönüşür, bu yüzden seviyeden epey uzakta gerçekleşebilir.
Varsayımsal bir örnek: Bir strateji MNQ'da yılda 400 işlem yapıyor. Her işlem girişte ortalama bir tick, çıkışta bir tick slipaj yaşarsa, bu yılda backtestte hiç görünmeyen 800 tick eder. Küçük bir avantajı olan bir strateji için bu, farkın tamamı olabilir. Daha fazlası için: slipaj ve işlem maliyetleri.
Komisyonlar, borsa ücretleri ve veri maliyetleri
Her vadeli işlemin maliyeti vardır: aracı kurum komisyonu, borsa ve düzenleyici ücretleri, bazen de platform ücretleri. Görece yüksek frekanslı stratejiler özellikle hassastır. Basit bir pratik kural: Backtestte muhafazakâr maliyetler girin, ödemeyi beklediğinizden biraz daha yüksek.
Gecikme
Bir koşulun gerçekleştiği an ile emrin borsaya ulaştığı an arasında zaman geçer: Barın kapanması, alarmın gönderilmesi, webhook'un alınıp işlenmesi ve emrin aracı kuruma gitmesi gerekir. Genellikle bu birkaç saniye veya daha azdır, ama hızlı bir piyasada bu bile önemlidir. Tam bar kapanışında girmeye dayalı bir strateji pratikte her zaman biraz farklı bir fiyat alacaktır.
Veri kalitesi ve yanlılıklar
- İleriye bakma yanlılığı (look-ahead bias): Kod, karar anında mevcut olmayan bilgiyi kullanır. Klasik örnek: Bir barın kapanışına göre karar verip aynı barın açılışında girmek. Üst zaman dilimi verilerinin özensiz kullanımı da buna yol açabilir.
- Repainting: Geçmiş değerlerini sonradan değiştiren indikatörler. Grafikte sinyal kusursuz görünür; gerçek zamanda ise belirip kaybolmuştur.
- Hayatta kalma yanlılığı (survivorship bias): Esas olarak hisselerle ilgilidir; yalnızca bugüne kadar ayakta kalan varlıklarla test yapmak. Vadeli işlemlerde buna paralel sorun, farklı kontratları birbirine ekleyen ve vade dönüşü günlerinde yapay sıçramalar yaratabilen sürekli grafiklerdir (NQ1! gibi).
- Eksik veya hatalı veri: Eksik barlar, yanlış seans saatleri ya da hatalı saat dilimi.
Piyasa rejimi değişiklikleri
Teknik olarak kusursuz bir backtest bile geçmişi anlatır. Piyasalar yüksek ve düşük volatilite, trend ve yatay seyir dönemlerinden geçer. Çoğunlukla belirli karakterdeki tek bir yıl üzerinde test edilmiş bir strateji, sonraki dönemde çok farklı davranabilir. Test dönemi ne kadar uzun ve çeşitliyse, tablo o kadar güvenilirdir; ama hiçbir zaman garanti değildir. Yakından ilişkili bir sorun da aşırı uyumdur; bunu işlem stratejilerinde aşırı uyum yazısında ele alıyoruz.
İleriye dönük test ve simülasyon
Farkı kapatmanın en iyi yolu bir ara aşamadır: Stratejiyi, canlıda kullanacağınız uygulama yolunun aynısıyla, bir simülasyon hesabında gerçek zamanlı çalıştırmak. Buna forward test ya da paper trading denir.
Bu aşamada neleri kontrol etmelisiniz:
- Alarmlar zamanında ve doğru formatta ulaşıyor mu?
- Sinyal fiyatı ile dolum fiyatı arasındaki ortalama mesafe nedir?
- İşlem sayısı backtestin beklediğine benziyor mu?
- Mükerrer veya eksik işlemler ya da "sahipsiz" pozisyonlar var mı?
- Açılış, kapanış ve veri açıklamaları civarındaki davranış makul mü?
Her işlemi bir günlüğe kaydedin ve aynı dönemdeki backtestle karşılaştırın. Ölçtüğünüz fark değerlidir: Onu gerçekçi bir slipaj varsayımı olarak backteste geri besleyebilirsiniz.
Makul beklentiler
- Canlı sonuçların backtestten daha zayıf olacağını varsayın ve buna göre plan yapın.
- Bir strateji yalnızca komisyon ve slipaj olmadan kârlıysa, gerçek bir avantajı yoktur.
- Kısa bir simülasyon dönemi iki yönde de hiçbir şey kanıtlamaz; çoğunlukla altyapıyı test eder.
- Canlı işlemin başında pozisyon büyüklüğü küçük olmalı, ancak uygulama beklendiği gibi işledikten sonra artmalıdır.
Önemli çıkarımlar
- Backtest varsayımları olan bir modeldir ve bu varsayımların neredeyse hepsi sonuçları yukarı çarpıtır.
- Slipaj, limit emir dolumları ve komisyonlar farkın en büyük kaynaklarıdır.
- İleriye bakma yanlılığı ve repainting, gerçek zamanda asla ulaşılamayacak sonuçlar üretebilir.
- Aynı uygulama yoluyla simülasyonda ileriye dönük test zorunlu bir adımdır.
- Gerçek farkı ölçün ve testlerinize geri besleyin.
TradingView alarmları kullanıyorsanız, WeCore bunları kendi hesabınıza bağlamanıza ve önce simülasyon modunda çalıştırmanıza olanak tanır; böylece canlı hesaba geçmeden önce dolumları, zamanlamayı ve risk kurallarını kontrol edebilirsiniz. Temel kavramlar için bkz. algoritmik trading nedir.