BALİNA AVCISI

Backtest ve ileri test: bir strateji gerçekten çalışıyor mu?

Bir stratejiyi geçmiş veride sınamak: kuralları önceden ve net yazmak, yeterli örneklem, görülmemiş dönemde ileri test, kâğıt işlem ve testnet, sonuçları R ile ölçmek, ücret ve kayma eklemek.

Bölüm 12 · Ders 57/70 · ~7 dk okuma · ~10 dk dinleme

Bir strateji kulağa ne kadar mantıklı gelirse gelsin, onu çalıştığına inandıran tek şey kanıttır. Backtest (geriye dönük test), kurallarını geçmiş fiyat verisine uygulayıp “bu kurallarla işlem yapsaydım ne olurdu?” sorusunu cevaplamaktır. İleri test ise aynı kuralları, ayarlarken hiç görmediğin bir dönemde ya da gerçek zamanda sınamaktır. Bu derste ikisini de adım adım kuracağız. Sonunda bir stratejiye “çalışıyor” demek için neyin yeterli, neyin yetersiz olduğunu ayırt edebileceksin.

Backtest nedir, ne değildir?

Backtest bir geleceği tahmin aracı değildir. Yaptığı şey, kuralının geçmişte nasıl davrandığını ölçmektir: ne sıklıkla kazandı, ne kadar kazandı, en kötü döneminde ne kadar kaybettirdi. Geçmişte işe yaramayan bir kural büyük olasılıkla gelecekte de işe yaramaz; bu yüzden backtest en çok eleme aracı olarak değerlidir. Geçmişte işe yarayan bir kuralın gelecekte de işe yarayacağı ise kesin değildir. Bu boşluğu ileri test kapatmaya çalışır.

İki yolu vardır. Elle backtest, grafiği geçmişe kaydırıp mum mum ileri sararak her sinyali ve sonucunu kaydetmektir. Yavaştır ama kuralları gerçekten anlamanı sağlar. Kodla backtest, kuralları bir programa yazıp binlerce mumda saniyeler içinde test etmektir. Hızlıdır ama kodun hatalarına ve aşağıda göreceğimiz tuzaklara açıktır.

İşlem 1 +2Rİşlem 2 −1Rİşlem 3 +2R
Elle backtest: grafiği mum mum ileri sarar, kuralın sinyal verdiği her yeri ve sonucunu R olarak kaydedersin. Sağ tarafı görmeden karar vermek şarttır.

Kurallar önceden ve net yazılır

Test edilebilecek bir kural, iki farklı kişinin aynı grafikte aynı işlemleri bulacağı kadar net olmalıdır. “Trend yukarıyken geri çekilmede al” test edilemez; “güzel bir dönüş mumu” da öyle. Karşılaştır:

BelirsizNet
Trend yukarıGünlük kapanış 50 EMA'nın üstünde ve 20 EMA 50 EMA'nın üstünde
Geri çekilmeFiyat 4 saatlikte son itkinin 0.5 ile 0.786 arasına iniyor
Dönüş onayı15 dakikalıkta son alçalan tepenin üstünde kapanış
Mantıklı stop15 dakikalık dönüş dibinin 0,2 ATR altı
Kâr alYarısı 2R'de, kalanı stop girişe çekilerek 4 saatlik tepenin altında

Kuralları testten önce yazmak da aynı derecede önemlidir. Sonuçlara bakıp kuralı değiştirmek, kuralı geçmişe uydurmaktır. Her değişikliği ve her denemeyi not et; neden önemli olduğunu istatistik tuzakları dersinde göreceksin.

Veri ve dönem seçimi

  • Farklı piyasa rejimleri: Test dönemi yükseliş, düşüş ve yatay dönemleri birlikte içermeli. Yalnız boğa piyasasında test edilen bir long stratejisi, stratejiyi değil boğa piyasasını ölçer.
  • Birden fazla sembol: Kural tek coinde değil, benzer birkaç coinde de işe yarıyor mu?
  • Ölü coinler de: Yalnız bugün hâlâ listede olan coinleri test etmek sonucu olduğundan iyi gösterir. Bu, hayatta kalan yanlılığıdır.

Örneklem büyüklüğü

Yirmi işlemlik bir test neredeyse hiçbir şey söylemez. Nedenini basit bir hesapla görelim. Gerçek kazanma oranı yüzde 50 olan bir stratejide, ölçtüğün kazanma oranının tipik sapması kabaca karekök(0,5 × 0,5 / işlem sayısı) kadardır:

  • 30 işlemde yaklaşık 9 puan. Yani ölçtüğün oran yüzde 32 ile 68 arasında rahatça çıkabilir.
  • 100 işlemde yaklaşık 5 puan: aşağı yukarı yüzde 40 ile 60 arası.
  • 400 işlemde yaklaşık 2,5 puan: aşağı yukarı yüzde 45 ile 55 arası.

Buradaki aralıklar, sapmanın iki katı alınarak bulunan kaba sınırlardır. Pratik bir alt sınır olarak en az 100 işlem hedefle ve sonuçları her zaman bu belirsizlikle birlikte oku. Swing gibi az işlem üreten stratejilerde bu, yıllarca veri gerektirebilir.

Sonuçları R ile ölçmek

Sonuçları dolar ya da yüzde yerine R ile ölç: her işlemin sonucu bölü o işlemde riske edilen tutar. Böylece pozisyon büyüklüğü sonuçları çarpıtmaz. Bakılacak ölçüler:

  • İşlem sayısı. Her şeyden önce.
  • Kazanma oranı ve ortalama kazanç ile ortalama kayıp (R olarak).
  • Beklenen değer: İşlem başına ortalama R. Stratejinin asıl ölçüsü budur; ayrıntısı beklenen değer dersinde.
  • En büyük düşüş: Toplam R eğrisinin tepeden dibe en derin inişi. Hesabın psikolojik ve finansal olarak buna dayanabilir mi?
  • En uzun kayıp serisi: Gerçek hayatta bu seriyi yaşarken kurala sadık kalabilir misin?

Ücret ve kayma eklemek

Ücretsiz backtest, var olmayan bir piyasanın testidir. Her işleme giriş ve çıkış ücretini ve gerçekçi bir kaymayı ekle. Bunu R olarak düşünmek kolaydır: işlem başına maliyet R = toplam maliyet yüzdesi / stop mesafesi yüzdesi. Stop ne kadar dar ise aynı maliyet o kadar çok R eder. Scalping dersindeki hesap bunun en uç örneğidir. Vadeli piyasada günlerce tutulan pozisyonlar için fonlama da eklenmelidir.

Bir backtest sonucunu okumak (örnek): 120 işlem. 48 kazanç, ortalama +2,1R; 72 kayıp, her biri −1R.

Brüt: 48 × 2,1 = 100,8R; eksi 72R = +28,8R. İşlem başına 28,8 / 120 = +0,24R.

Maliyet: Gidiş-dönüş ücret ve kayma yüzde 0,12, ortalama stop mesafesi yüzde 1,2. İşlem başına maliyet 0,12 / 1,2 = 0,1R. 120 işlemde 12R.

Net: 28,8 eksi 12 = 16,8R; işlem başına 0,14R. Maliyet beklenen değerin yaklaşık yüzde 42'sini yedi.

Belirsizlik: Kazanma oranı 48 / 120 = yüzde 40. 120 işlemde tipik sapma karekök(0,4 × 0,6 / 120) = yaklaşık 4,5 puan. Gerçek oran yüzde 31 olsaydı brüt beklenen değer 0,31 × 2,1 eksi 0,69 × 1 = 0,651 eksi 0,69 = −0,04R olurdu. Yani bu sonuç umut vericidir ama kesin bir avantaj kanıtı değildir. Daha fazla veri ve ileri test gerekir.

İleri test: görülmemiş dönemde sınamak

Kuralları ve ayarları seçerken kullandığın veri, sonuçları kaçınılmaz olarak iyi gösterir; çünkü o veriye bakarak seçtin. Dürüst bir ölçüm için veriyi ikiye böl:

  1. Geliştirme dönemi (in-sample): Örneğin verinin ilk yüzde 70'i. Kuralları ve ayarları yalnız burada dene.
  2. Test dönemi (out-of-sample): Son yüzde 30. Ayarları dondur ve bu döneme yalnız bir kez uygula. Sonuç kötüyse geri dönüp ayar değiştirmek, test dönemini de geliştirme dönemine çevirir.

Daha sağlam bir sürümü kayan pencere (walk-forward) testidir: örneğin iki yıllık veride ayar seç, sonraki üç ayda test et; pencereyi üç ay kaydır ve tekrarla. Sonuçta stratejinin her dönemde, o döneme ait olmayan verideki performansını birleştirmiş olursun. İleri testte sonuçların geliştirme dönemine göre biraz zayıf olması normaldir. Çökmesi ise aşırı uyumun en net işaretidir.

Görülmemiş dönemGeliştirme dönemiİleri test
Aşırı uyumlu bir stratejinin tipik görüntüsü (örnek, toplam R): kuralların ayarlandığı dönemde eğri pürüzsüz yükseliyor, görülmemiş dönemde düzleşip geriliyor.
Görülmemiş dönemGeliştirme dönemiİleri test
Sağlam bir stratejide ileri test sonucu genelde geçmişten biraz zayıftır ama aynı yönde ilerler. Aranan şey mükemmellik değil, tutarlılıktır.

Kâğıt işlem ve testnet

Geçmiş veriden sonraki adım, gerçek zamanda ama gerçek para olmadan denemektir. Kâğıt işlem (paper trading), sinyalleri canlı piyasada takip edip sanal olarak kaydetmektir. Bazı borsaların testnet denilen deneme ortamları da vardır. Bu aşama üç şeyi sınar: kuralları gerçek zamanda, sağ tarafı görmeden uygulayabiliyor musun; emir mekaniği (dolum, kayma, gecikme) beklediğin gibi mi; sinyal sıklığı backtestle uyumlu mu?

Sınırları da vardır. Testnet'te likidite ve dolum gerçekçi olmayabilir. En önemlisi, sanal parayla psikoloji sınanmaz. Bu yüzden son adım, küçük gerçek parayla, yani normal riskinin bir kesriyle işlem yapmaktır. Sonuçlar backtest ve ileri testle tutarlıysa boyut yavaş yavaş artırılır.

Özetle süreç

  1. Fikri net, test edilebilir kurallara çevir ve yaz.
  2. Veriyi geliştirme ve test dönemlerine ayır.
  3. Geliştirme döneminde ücret ve kayma dahil test et; her denemeyi kaydet.
  4. Ayarları dondur, test döneminde bir kez çalıştır.
  5. Kâğıt işlem ya da testnet ile gerçek zamanda doğrula.
  6. Küçük gerçek parayla başla, günlük tut, sonuçları backtestle karşılaştır.

Balina Avcısı'nda

Kanıt yaklaşımı, bu dersteki fikrin uygulamadaki karşılığıdır: sistem bir kuralı hem geçmiş veride hem de görmediği dönemde, yani ileri testte sınar; kanıt yoksa bunu açıkça “kanıt yok” diye söyler. Otomatik formasyonlarda bir formasyonun geçmişte kaç kez hedefe ulaştığını, sıkışma kartında sahte kırılım oranını ve uyumsuzlukların geçmişte ne kadar işe yaradığını, senaryo kartında seviyelerden dönüş oranını görürsün. Bu oranlara bakarken her zaman kaç örnekten hesaplandığını da sor. Elle backtest yaparken bulduğun işlemleri grafikte çizim araçlarıyla işaretleyebilirsin.

Özet

  • Backtest kuralın geçmişte nasıl davrandığını ölçer; en çok kötü fikirleri elemeye yarar.
  • Kurallar testten önce ve iki kişinin aynı işlemleri bulacağı kadar net yazılır.
  • Az işlemle ölçülen oranların belirsizliği büyüktür; en az yüz civarı işlem hedeflenir.
  • Sonuçlar R ile, ücret, kayma ve gerekirse fonlama eklenerek ölçülür.
  • İleri test, ayarlar dondurulduktan sonra görülmemiş dönemde yapılır; çöküş aşırı uyum işaretidir.
  • Kâğıt işlem ve küçük gerçek para, testin son halkasıdır.

Kendini sına

“Güçlü bir hacimle kırılımda al” kuralı neden test edilemez? Nasıl düzeltilir?

“Güçlü” ve “kırılım” tanımlı değil. Örneğin şöyle düzeltilir: “Mum son 20 mumun en yükseğinin üstünde kapanır ve hacmi son 20 mumun ortalamasının 1,5 katından büyükse al.”

Ortalama stop mesafesi yüzde 0,6, gidiş-dönüş maliyet yüzde 0,12. İşlem başına maliyet kaç R?

0,12 / 0,6 = 0,2R. Brüt beklenen değeri 0,2R'nin altında olan bir strateji bu maliyetle zarar eder.

İleri test sonucunu beğenmeyip ayar değiştirip test dönemini yeniden çalıştırmak neden sorunludur?

Test dönemine bakarak ayar seçtiğin anda o dönem artık “görülmemiş” değildir. Sonuç yine geçmişe uydurulmuş olur.

Kâğıt işlemin sınayamadığı en önemli şey nedir?

Psikoloji. Gerçek para kaybederken kurallara uyup uymadığın ancak gerçek parayla, küçük boyutta başlayarak görülür.

Öğrendiğini canlı grafikte dene.
Balina Avcısı formasyonları, Fibonacci bölgelerini, uyumsuzlukları, açık pozisyonu ve emir akışını tek grafikte gösterir; neyin kanıtlı olduğunu da söyler.
Ücretsiz hesap aç Balina Avcısı nedir?