Bir AI strateji ajanı, işlemlerin gerçekleşmesi gereken anda henüz mevcut olmayan bilgileri kullanarak geçerli bir geriye dönük test üretebilir. Kod çalışır. Hisse eğrisi makul görünür. Sinyal de gayet mantıklı olabilir. Ancak bir zaman damgası, birleştirme işlemi ya da sonradan düzeltilmiş bir veri alanı, fark ettirmeden yarının yanıtını ajana vermiştir.
Çözüm, verinin erişilebilir olduğu zamanı araştırma sözleşmesinin bir parçası hâline getirmektir. Her girdi için şu 2 soruya net yanıt gerekir: Bu değer hangi dönemi anlatıyor ve strateji bu değeri ilk ne zaman bilebilirdi?
AI tarafından üretilen bir stratejide ileriye bakma yanlılığı nasıl görünür?
En bariz örnek, aynı mumun kapanışından sinyal hesaplayıp yine o kapanış fiyatından işlem yapmaktır. Strateji karar vermek için kapanış fiyatına ihtiyaç duyuyorsa aynı fiyattan işlem yapamaz. Ancak ajanlar veri kaynaklarını birleştirirken ya da kullanışlı varsayılanları seçerken daha ince sızıntı biçimleri de oluşturabilir.
Bir modelin her dakikanın kapanışında 20 mumluk hareketli ortalama hesapladığını ve kapanış bu ortalamayı geçtiğinde pozisyon aldığını varsayalım. Geriye dönük test aynı kapanış fiyatından işlem gerçekleştirirse, o işlem stratejiye sunulmadan önce mumun son işlemini kullanmış olur. Emri sonraki mumun açılışına kaydırmak makul bir yaklaşım olabilir; yine de piyasa emri için ücretleri ve fiyat etkisini hesaba katmak gerekir.
Şimdi özelliğin günlük bir hisse senedi temel verisi ya da kripto açık pozisyon özeti olduğunu düşünün. Satırdaki tarih Pazartesi olabilir ama değer Pazartesi kapanışından sonra yayımlanmış ya da daha sonra düzeltilmiş olabilir. Tarih, verinin ne zaman erişilebilir olduğunu gösteren bir zaman damgası değildir.
Bir stratejinin girdilerine nasıl zaman damgası koymalıyım?
Kaynak izin veriyorsa en az 3 zamanı saklayın: değerin anlattığı dönemi, yayımlayıcının değeri yayımladığı zamanı ve sisteminizin değeri aldığı zamanı. Stratejinin karar anındaki bilgi kümesine yalnızca o ana kadar erişilebilir olan değerler girebilir.
| Alan | Yanıtladığı soru | Yaygın tuzak |
|---|---|---|
| Olay zamanı | Piyasa olayı ne zaman gerçekleşti? | Mum tamamlanmadan kapanış fiyatını kullanmak |
| Yayın zamanı | Kaynak bu değeri ne zaman yayımladı? | Gün sonu etiketini seans açılışında yayımlanmış gibi değerlendirmek |
| Sisteme alınma zamanı | Araştırma sistemi bu veriyi ne zaman kullanabilirdi? | Veri sağlayıcısı ya da işlem hattındaki gecikmeyi göz ardı etmek |
| Revizyon zamanı | Bu sürüm ne zaman kaydedildi ya da düzeltildi? | Düzeltilmiş geçmiş verileri özgünmüş gibi geriye dönük eklemek |
1 dakikalık bir stratejide 1 saniyelik gecikme kendiliğinden önemsiz sayılmaz. Etkisi, kararın ne zaman verildiğine ve sinyalin hangi verileri kullandığına bağlıdır. Girdi tamamlanmış saatlik bir istatistikse etkisi çok az olabilir. Emre yakın bir anda örneklenen emir defteri dengesizliğiyse işlemin yönünü tersine çevirebilir.
Zamanın o anındaki verileri tutan bir depo sızıntıyı önleyebilir mi?
“Zamanın o anındaki veri” ifadesi, o zamanki geçerli revizyon da dâhil olmak üzere, geçmişteki bir karar anında bilinen değere erişebildiğiniz anlamına geliyorsa yardımcı olur. Yalnızca geçmiş tarihleri içeren bir tabloda bile o tarihlere ait bugünkü düzeltilmiş değerler bulunabilir.
Her kayıt için geçerlilik aralığını ve verinin erişilebilir olduğu zaman damgasını saklayın; revizyonların üzerine yazmak yerine hepsini tutun. Ardından geçmişe yönelik sorguları açıkça tanımlayın: simüle edilen karar anı itibarıyla erişilebilir olan en son sürümü döndürün. Bu, özellikle temel veriler, endeks bileşenleri, ekonomik açıklamalar ve veri sağlayıcıların temizlediği veri kümeleri için önemlidir.
İşleyişe dair pek parlak olmayan bir ayrıntı var: veri alım işi 20 dakika gecikmeyle çalıştıysa kusursuz bir yayın zaman damgası işe yaramaz. Geçmiş veri deposu sisteme alınma zamanını kaydetmiyorsa temkinli bir gecikme varsayın ve bunu belirtin. Kaynağın hiç kaydetmediği bir kesinlik yalnızca süstür.
Kağıt üzerinde işlemden önce ileriye bakma yanlılığını hangi kontroller yakalar?
Araştırma ajanından geriye dönük testin yanında özellik ve emir zaman çizelgesi de üretmesini isteyin. Her karar için her özelliğin en son kaynak erişilebilirlik zamanını, karar zamanını, emir zamanını ve modellenen gerçekleşme zamanını kaydedin. Girdi karar anından sonra geldiyse o satırı reddedin.
- Sinyalleri 1 mum ileri kaydırıp sonuçları karşılaştırın. Sonuçlardaki büyük bir düşüş, kapanıştan kapanışa zamanlama bağımlılığını ortaya çıkarabilir; ancak bu, sızıntının kanıtı değil, tanısal bir kontroldür.
- Her kaynağı geçmişteki bir kesim tarihinde sona erdirin, işlem hattını yeniden çalıştırın ve elde edilen özellikleri depolanmış geçmiş özelliklerle karşılaştırın.
- Şüphelendiğiniz bir özelliği sabit bir değerle değiştirin. Performans neredeyse aynı kalırsa kodun amaçlanan seriyi gerçekten kullanıp kullanmadığını inceleyin.
- İmkânsız bir gelecek özelliğini işlem hattından geçirin. Bu özelliğin erişilebilirlik zamanı karar zamanını aştığında doğrulama açıkça başarısız olmalıdır.
Bu kontroller bir stratejiyi onaylamaz. Belirli zamanlama varsayımlarını görünür kılar ve bu varsayımların sık karşılaşılan ihlal biçimlerini yakalar.
Kağıt üzerinde işlem, geriye dönük testte sızıntı olmadığını kanıtlar mı?
Hayır. Kağıt üzerinde işlem, canlı veri akışının geçmiştekinden geç geldiğini, eksik olduğunu ya da farklı hizalandığını gösterebilir. Geçmiş eğitim özelliklerinin o dönemde bilinenleri yansıttığını kanıtlayamaz. Model, yanlışlıkla gördüğü gelecek artık şimdi olduğu için sızıntının sağladığı avantajdan yararlanmayı da bırakabilir.
Kağıt üzerinde işlemi tutarlılık kontrolü olarak kullanın: canlı özellik değerlerini, karar zaman damgalarını, emir üretimini ve modellenen gerçekleşmeleri geriye dönük testteki tanımlarla karşılaştırın. Fark gördüğünüzde tam girdinin ve saatin izini sürün. Her karar anındaki bilgi kümesini açıklayabilen bir ajan ekibi yararlı araştırma yapıyordur. Size yalnızca pürüzsüz bir eğri gösterebilen ekip ise en zor denetimi atlamıştır.
← Tüm yazılar


