Ezberlemek ile öğrenmek
Farkı bir öğrenci benzetmesiyle anlatalım.
Bir öğrenci geçmiş sınav sorularının cevaplarını ezberleyebilir. O sorularda yüzde yüz yapar. Ama yeni bir soru geldiğinde çuvallar, çünkü konuyu öğrenmemiştir.
Bir model de aynısını yapabiliyor. Geçmiş verideki her dalgayı, her gürültüyü açıklayacak kadar esnekse, geçmişi neredeyse kusursuz “tahmin” ediyor. Ama öğrendiği şey, tekrarlanmayacak tesadüfler.
Sağdaki model geçmiş veride en iyisi. Her noktadan geçiyor, hatası sıfır. Ve gelecekte en kötüsü olacak.
Nasıl anlaşılır
Tek bir güvenilir test var: modeli, kurulumunda hiç kullanılmamış bir veride denemek. Buna örnek dışı test deniyor.
Model eğitim döneminde harika, test döneminde vasatsa, aşırı uyum var demektir.
Bizim random forest denememizde tam bu oldu. Eğitim döneminde model muhteşemdi. Örnek dışı 2021 sonrası dönemde Sharpe oranı 1,79’dan 1,23’e düştü. Yani yerine geçtiği basit yaklaşımdan daha kötü performans verdi.
Ağaç sayısını değiştirdik, derinliği kısıtladık, özellik sayısını azalttık. Sonuç hep aynı bölgede kaldı. Fikri rafa kaldırdık.
Neden oluyor
Üç sebep bir araya geliyor.
Model çok esnek. Parametre sayısı arttıkça model her şeye uyabilir hale geliyor. Yeterince esnek bir model, tamamen rastgele veriye bile uyar.
Veri az. Gerçek bağımsız gözlem sayısı azsa, gürültü sinyalden ayırt edilemiyor. Bizim durumumuzda bağımsız birim sayısı birkaç yüzdü ve bu esnek bir model için çok az.
Sinyal zayıf. Hisse getirilerinde açıklanabilen varyans oranı düşük. Bu ortamda model, açıklayacak gerçek bir şey bulamayınca gürültüyü açıklamaya başlıyor.
Üçü birden olduğunda aşırı uyum kaçınılmaz hale geliyor.
Korunma yolları
Basit tutun. Az parametreli modeller aşırı uyuma daha dirençli. Ve az veriyle çalışıyorsanız basitlik bir zorunluluk.
Veriyi ayırın. Bir kısmında geliştirin, diğerinde test edin. Test verisine sadece bir kez bakın. Birden fazla bakarsanız, o da eğitim verisine dönüşüyor.
Walk-forward kullanın. Her karar anında, sadece o ana kadarki veriyle model kurun. Bir sonraki yazıda bunu ayrıntılı anlatacağız.
Parametre denemesini kısıtlayın. Ne kadar çok denerseniz, bulduğunuz sonucun tesadüf olma ihtimali o kadar artıyor.
Mekanizma arayın. Modelin bulduğu ilişkinin bir açıklaması var mı? “Neden çalışıyor” sorusuna cevabınız yoksa, muhtemelen çalışmıyor.
Bizim çözümümüz: fit etmemek
Random forest’tan sonra vardığımız yer şu oldu.
Her ay, her özelliği kesitsel olarak standartlaştırıyoruz. Sonra teorinin söylediği işaretle topluyoruz. Volatilite eksi işaretle, zirveye yakınlık artı işaretle giriyor.
Kritik nokta: ağırlıklar veriden öğrenilmiyor. Hepsi eşit, işaretler teoriden geliyor. Optimize edilecek tek bir parametre yok.
Bu ilkel görünüyor. Neden elinizdeki veriyi kullanıp en iyi ağırlıkları bulmayasınız?
Cevap şu: fit edilmiş her parametre, örnek dışında bozulabilecek bir noktadır. Fit edilmemiş modelin bozulacak bir parametresi yoktur.
Sonuçlar bunu destekledi. Kesitsel tahmin gücümüz 0,023’ten 0,072’ye çıktı ve Sharpe oranı her test döneminde iyileşti.
Basitliğin gücü
Bu fikir yeni değil. Uzun süredir savunuluyor: basit, eşit ağırlıklı kompozitler, optimize edilmiş modellerden daha dayanıklı.
Sebebi sezgisel. Optimizasyon, geçmişin tam olarak tekrarlanacağını varsayıyor. Tekrarlanmıyor.
Basit model, geçmişin sadece genel yönünü alıyor ve detaylarını görmezden geliyor. O detaylar zaten tekrarlanmayacaktı.
Aşırı uyumun daha az bilinen bir hali
Model kurmadan da aşırı uyum yapabilirsiniz.
Bir grafiğe uzun süre bakıp “burada şöyle bir örüntü var” demek, zihinsel aşırı uyumdur.
Bir kuralın hangi tarihte başlatılacağını sonucuna göre seçmek de öyle.
Bir stratejinin hangi hisselerde uygulanacağını, geçmişte iyi çalıştığı hisselere göre belirlemek de.
Hepsi aynı hata: geçmişin özelliklerine, geleceğe taşınamayacak kadar sıkı uymak.
Sıradaki
Bir sonraki yazıda modelin ne olduğunu tanımlıyoruz. Girdi, hedef, ağırlık, çıktı. Bir tahmin modelinin parçaları ve nasıl bir araya geldiği.
Bu yazı bilgilendirme amaçlıdır, yatırım tavsiyesi değildir.