Standart yöntem
Klasik k-katlı çapraz doğrulama şöyle işliyor.
Veriyi rastgele beş parçaya bölüyorsunuz. Dördüyle model kurup beşinciyle test ediyorsunuz. Sonra rolleri değiştirip tekrarlıyorsunuz. Beş sonucun ortalamasını alıyorsunuz.
Fikir güzel: bütün veriyi hem eğitim hem test için kullanıyorsunuz.
Ama bir varsayımı var: gözlemler bağımsız. Sırası önemli değil.
Zaman serisinde bu varsayım geçersiz
Borsada gözlemlerin sırası her şey.
Rastgele bölme yaparsanız, 2020 verisiyle model kurup 2018’i tahmin etmeye çalışıyorsunuz. Yani gelecekle geçmişi tahmin ediyorsunuz.
Bu, veri sızıntısının ders kitabı örneği. Ve sonuçlar sistematik olarak fazla iyimser çıkıyor.
Doğru yöntem: zaman sıralı bölme
Eğitim her zaman testten önce gelmeli.
Bu, walk-forward yazımızda anlattığımız kurulumun ta kendisi. Her adımda sadece geçmişle model kuruyor, bir sonraki dönemi test ediyorsunuz.
İki varyasyonu var.
Genişleyen pencere. Eğitim seti her adımda büyüyor. Bütün geçmişi kullanıyor. Bizim kurulumumuz bu.
Kayan pencere. Eğitim seti sabit uzunlukta, ileri kayıyor. Rejim değişimine daha duyarlı, çünkü çok eski veriyi unutuyor.
Hangisinin daha iyi olduğu, ilişkilerin ne kadar kalıcı olduğuna bağlı. İlişkiler zamanla değişiyorsa kayan pencere, sabitse genişleyen pencere daha uygun.
Boşluk bırakmak
Bir incelik daha var: eğitim ile test arasına boşluk koymak.
Neden? Çünkü komşu dönemler birbirine bağımlı. Eğitim seti Mart’ta bitip test Nisan’da başlıyorsa, Mart sonundaki bilgi Nisan’a taşıyor olabilir.
Özellikle örtüşen pencerelerle hesaplanmış özellikler kullanıyorsanız bu ciddi bir sorun. 250 günlük volatilite hesaplıyorsanız, Nisan’ın volatilitesi Mart verisini içeriyor.
Araya bir boşluk koymak bu bağımlılığı kesiyor. Buna arınma deniyor ve zaman serisi çapraz doğrulamasında standart bir uygulama.
Bizim kurulumumuzda özellikler 250 günlük pencerelerle hesaplandığı için bu risk var. Sinyal ve getiri arasındaki ilişkiyi net tutarak (sinyal T’ye kadar, getiri T’den T+1’e) kısmen kontrol ediyoruz ama tam bir arınma uygulamıyoruz.
Kaç kez test edebilirsiniz
En önemli kural bu ve en çok ihlal edileni.
Test setine bir kez bakabilirsiniz.
İkinci kez baktığınızda, o sonuca göre bir şey değiştirdiğinizde, test seti artık eğitim setine dönüşüyor.
Pratikte bunu tamamen uygulamak zor. Ama en azından kaç kez baktığınızı sayın ve raporlayın. Otuz kez baktıysanız, elde ettiğiniz sonuç otuz denemenin en iyisi demektir.
Bizim çözümümüz
Bu sorunu kaynağında çözmeye çalıştık: ağırlıkları hiç fit etmeyerek.
Optimize edilecek bir parametre olmayınca, test sonucuna bakıp ayar yapma ihtimali de olmuyor.
Test sonucu sadece “bu işe yarıyor mu” sorusunu cevaplıyor, “hangi ayar daha iyi” sorusunu değil.
Bu, tahmin gücünden biraz feragat etmek ama çapraz doğrulama disiplinini uygulanabilir kılıyor.
Pratik kontrol listesi
Eğitim her zaman testten önce mi?
Eğitim ile test arasında yeterli boşluk var mı?
Test setine kaç kez baktınız?
Özellikleriniz örtüşen pencerelerle mi hesaplandı?
Rastgele karıştırılmış hedefle test ettiniz mi?
Beş soru. Ve bir zaman serisi modelinin geçerli olup olmadığını büyük ölçüde belirliyorlar.
Sıradaki
Bir sonraki yazıda düzenlileştirmeyi ele alıyoruz. Modeli basit tutmanın matematiksel yolu ve neden bizim yaklaşımımız bunun en uç hali.
Bu yazı bilgilendirme amaçlıdır, yatırım tavsiyesi değildir.