Tüm yazılar

Günlük5 dk okuma

Backtest motorumuzun içi

Baştan sona okunabilen tek geçişli bir simülatör, her biri ileriye bakmaya karşı test edilen 46 indikatör, gerçekçi işlem ve maliyetler, ve bir sonuca güvenmeden önce onu sınayan stres testleri.

QuantPrompt'un gösterdiği her sayı, kendimiz yazıp test ettiğimiz bir simülatörden çıkıyor. Fiyat barlarının üzerinden sade NumPy ve pandas ile tek geçişte ilerliyor; baştan sona okunacak kadar kısa. Bu yüzden her sonucun neyi varsaydığını tam olarak söyleyebiliyoruz.

Emirler gerçek bir hesaptaki gibi dolar

  • Sinyal bir barın kapanışında belirlenir ve bir sonraki barın açılışında dolar. Karar verdiğin kapanıştan işlem yapmak geleceği görmektir (look-ahead).
  • Komisyon ve kayma her işlemin iki tarafında da ödenir; kayma stop-loss ve kâr alma çıkışlarında da uygulanır. Tam kendi fiyatından dolan bir stop, backtest'e özgü bir hayaldir.
  • Aynı barda hem giriş hem çıkış sinyali gelirse pozisyona uyan kazanır: pozisyon yoksa girilir, varsa çıkılır.
  • Her işlemi mevcut nakdin bir yüzdesiyle boyutlandırabilirsin; kalan nakitte bekler.
  • Sonda hâlâ açık olan pozisyon son kapanışla değerlenir ve sessizce kapatılmaz, açık olarak gösterilir.

Piyasanın takvimine uyan metrikler

Sharpe, Sortino ve yıllık getiri, verideki gerçek bar yoğunluğuyla yıllıklandırılır: günlük hisselerde yılda yaklaşık 252 bar, kriptoda 365, saatlik ABD hisselerinde yaklaşık 1.764. Her şey için 365 gün varsaymak, bir hisse stratejisinin Sharpe'ını yaklaşık %20 şişirirdi.

46 indikatör, her biri ileriye bakmaya karşı test edilmiş

Her indikatör sade NumPy ve pandas ile yazılı. Otomatik bir test her birini önce bir fiyat geçmişi üzerinde, sonra aynı geçmişin kısaltılmış hâli üzerinde hesaplar; sonradan bar eklendiğinde geçmiş bir değer değişirse test başarısız olur. İndikatörün henüz ısındığı barlar hiçbir zaman işlem tetikleyemez.

Bir referansla karşılaştırıldı

Ona güvenmeden önce simülatörü yaygın kullanılan açık kaynak bir backtest kütüphanesinin yanında, rastgele üretilmiş 60 fiyat serisi ve sinyal setiyle çalıştırdık; işlem fiyatlarını, komisyonları ve sermaye eğrilerini bar bar karşılaştırdık. Bilerek daha katı davrandığımız yerler dışında (stop çıkışlarında kayma gibi) aynı sonucu veriyorlar.

Bir sonuca güvenmeden önce stres testleri

  • Her sonuç, aynı varlığı alıp tutmanın yanında gösterilir.
  • Plato analizi stratejiyi yakın ayarlardan oluşan 9×9'luk bir ızgarada, aynı veriyle 81 backtest olarak yeniden çalıştırır; avantajın geniş bir plato mu yoksa tek bir zirve mi olduğunu gösterir.
  • Ayrıca maliyetleri ikiye katlar, dönemin iki yarısını ayrı ayrı test eder ve kârın ne kadarını en iyi üç işlemin getirdiğini ölçer.
  • Koşul analizi her kuralı tek tek çıkarır ve geçmişin son %30'unda, karşılaştırmanın hiç görmediği dönemde değerlendirir.

Defalarca çalıştırılacak kadar hızlı

Fiyat verisi her çalıştırmada bir kez indirilir ve tüm varyantlarda yeniden kullanılır; 81 backtest'lik bir tarama tek bir indirmeye mal olur. Her çalıştırma parse, veri, indikatör ve simülasyonun ne kadar sürdüğünü kaydeder; yavaş adımları böyle bulup düzeltiyoruz.

Motorun bize ait olması, neyi varsaydığını tam olarak söyleyebilmemiz demek. İçini göremediğin bir backtest, inanmak zorunda kaldığın bir sayıdır.

Bu stratejiyi dene

AAPL'ın kapanışı 50 günlük SMA'yı yukarı kestiğinde al, aşağı kestiğinde sat. %5 stop.

Bu açıklama doldurulmuş yeni bir backtest açar.

Kaynaklar

Kendi fikrini test et

Stratejini sade bir dille anlat, maliyetler dahil geçmişte nasıl sonuç vereceğini gör.

Backtest başlat

Günlükten daha fazlası