Kafayı takmıştım, sonunda bulmuştum! Backtest sonuçlarına bakıyorum, grafikler mükemmel, Sharpe oranı göz kamaştırıyor. "Bu bot piyasayı halleder" diye düşünüp, heyecanla canlı hesaba bağladım. İlk sinyal geldi, bot emri gönderdi. "İşte başlıyoruz!" dedim içimden.
Alış emri, backtest'te hesapladığım fiyattan 2 pip yukarıdan girdi. Satış emri ise 1.5 pip aşağıdan. Meğerse ben backtest'i, ideal mid-price üzerinden yapmışım. Gerçek dünyada spread denen bir canavar var ve her işlemde komisyon gibi sırtından bir parça et koparıyordu. Bot, kâr beklediği küçük hareketlerde, spread yüzünden direkt zarara giriyordu.
Python:
# Backtest'teki saf dünyam
entry_price = (bid + ask) / 2 # Mid-price
# Gerçek dünya (acı gerçek)
real_buy_price = ask # Daha pahalı!
real_sell_price = bid # Daha ucuz!
Kafayı yiyecektim. Tüm stratejiyi, spread'i ve komisyonu net kâra etki eden değişkenler olarak modelleyecek şekilde yeniden yazdım. Backtest motoruna, tarihsel spread verilerini de eklemek zorunda kaldım. "Spread'e göre işlem açma" filtresi koydum. Meğerse o mükemmel backtest sonuçları, aslında hiç var olmamış bir dünyadaydı.
Bu olay bana şunu öğretti: Backtest, bir simülasyondur. Gerçek piyasa ise sürtünmeli, dağınık ve acımasızdır. Slippage, spread, likidite... Bunları hesaba katmayan her strateji, kağıt üstünde kalır.
Siz de benim gibi "backtest tuzağına" düştünüz mü? Spread ve komisyonu modellemek için hangi yöntemleri kullanıyorsunuz? Yoksa "spread neymiş kardeşim" diyip market maker mı oldunuz?