Sızıntı nedir
Karar anında sahip olmadığınız bir bilginin, dolaylı yoldan modelinize girmesi.
Doğrudan hali kolay yakalanıyor: yarının fiyatını bugünkü modele koymak.
Dolaylı hali zor: model, geleceği bilen bir kararın sonucundan besleniyor.
En yaygın sızıntı yolları
Tüm veriyle standartlaştırma. Ortalamayı ve standart sapmayı bütün dönem üzerinden hesaplayıp geçmişe uygulamak. O ortalama, gelecekteki veriyi de içeriyor.
Çözüm: standartlaştırmayı her ay kendi içinde yapmak. Bizim kesitsel z-skor yaklaşımımız bunu doğal olarak sağlıyor.
Tüm veriyle eksik değer doldurma. Eksik bir veriyi, tüm dönemin ortalamasıyla doldurmak. Aynı sorun.
Aykırı değer eşiğini tüm veriden belirlemek. Kırpma eşiğinizi tüm veriye bakarak seçerseniz, gelecekteki uç değerler o eşiği belirlemiş oluyor.
Evren seçimi. Bugün işlem gören hisselerin listesini geçmişe uygulamak. Hayatta kalma yanlılığı yazımızın konusu ama aynı zamanda bir sızıntı: bugünkü bilgiyi geçmişe taşıyorsunuz.
Yeniden düzenlenmiş veri. Şirketler bazen geçmiş finansallarını yeniden açıklıyor. Elinizdeki düzeltilmiş rakam, o tarihte mevcut değildi.
Model seçiminin kendisi. Bu en sinsisi. Onlarca model deneyip test setindeki performansına göre birini seçtiyseniz, test seti artık temiz değil. Geleceği model seçim kararınıza sızdırdınız.
Nasıl fark edilir
Sızıntının belirtileri var.
Sonuç çok iyi. Beklenmedik derecede yüksek isabet oranı ya da Sharpe. Sinyal gürültü oranı yazımızda anlattığımız gerçekle tutarlı değilse, şüphelenin.
Örnek dışı performans, örnek içiyle neredeyse aynı. Normalde örnek dışında bir düşüş beklenir. Yoksa test gerçekten örnek dışı olmayabilir.
Sonuç, gerçek uygulamada tekrarlanmıyor. En acı ama en kesin teşhis.
Model, mantıklı olmayan bir şeyi çok iyi tahmin ediyor. Fiyatı öngörmesi zor bir olayı model neredeyse mükemmel biliyorsa, bilgi bir yerden sızıyor.
En etkili test
Şunu yapın: modelinizi kurun, sonra rastgele karıştırılmış bir hedef değişkenle tekrar çalıştırın.
Yani getiri sütununu rastgele karıştırın, böylece hiçbir gerçek ilişki kalmasın.
Model hâlâ iyi sonuç veriyorsa, sızıntı var demektir. Çünkü öğrenilecek gerçek bir şey kalmadığı halde bir şey öğreniyor.
Bu test basit ve çok etkili. Yeni bir kurulum yaptığınızda ilk yapılacak şey olmalı.
Bizim kurulumumuzdaki önlemler
Somut olarak neler yaptığımızı yazalım.
Standartlaştırma her ay kendi içinde. Geçmiş ya da gelecek dönemlerin istatistikleri karışmıyor.
Walk-forward haritası sadece o ana kadarki veriyle kuruluyor, minimum 24 aylık eğitim penceresiyle.
Sinyal T anına kadarki veriyle, getiri T’den T+1’e. Bu ilişki her yerde sabit.
Ağırlıklar hiç fit edilmiyor. Yani model seçimi üzerinden sızıntı olmuyor, çünkü seçilecek bir şey yok.
Bu sonuncusu, sızıntıya karşı en güçlü savunmamız. Optimize edilecek bir parametre olmayınca, test setine bakıp ayar yapma imkanı da olmuyor.
Kalan sorunlar
Dürüst olalım, tamamen temiz değiliz.
Veri setimizde hayatta kalma yanlılığı var, bu bir tür sızıntı.
Bilanço verisi kullandığımız yerlerde gerçek yayın tarihi her zaman elimizde olmuyor.
Ve bu seriyi yazarken bile bir sızıntı riski var: hangi konuları anlatacağımızı seçerken geçmiş sonuçlarımızı biliyoruz.
Bunları yazmak, çözmek kadar değerli değil ama okuyucunun sonuçları doğru tartmasını sağlıyor.
Sıradaki
Bir sonraki yazıda çapraz doğrulamayı ele alıyoruz. Standart yöntem zaman serisinde neden çalışmıyor ve yerine ne kullanılıyor.
Bu yazı bilgilendirme amaçlıdır, yatırım tavsiyesi değildir.