31 Ağustos 2026 · tahmin piyasaları

Tahmin piyasalarını backtest ederken neler bozulur: sekiz günlük bir günlük

Tahmin piyasalarını backtest ederken neler bozulur: sekiz günlük bir günlük

Tahmin piyasaları backtest edilmesi dünyadaki en kolay şeymiş gibi görünür. Fiyat [0, 1] aralığındadır. Getiri ya 1 dolardır ya da sıfır. Kaldıraç, fonlama, baz farkı, 00:00 UTC’de ortaya çıkan sürekli vadeli işlem gariplikleri yoktur. Ücretleri, fonlamayı ve piyasa etkisini zaten hesaba katan bir kripto sürekli vadeli işlem backtester’ımız vardı; planımız bunu uyarlamak için iki gün harcayıp ardından stratejiler üretmeye başlamaktı.

Sekiz gün sürdü. İşte kabaca sırayla tuttuğumuz günlük; özsermaye eğrisinin müthiş göründüğü ve gerçekten müthiş olduğu gün de dahil.

1. gün: basit olması gereken adaptör

İlk eşleştirme bire bir yapıldı ve temiz görünüyordu. Bir piyasa bir enstrümandır. YES fiyatı, fiyattır. YES almak uzun, NO almak kısa pozisyondur. Uzlaşma, 1.00 veya 0.00’dan zorunlu kapanıştır. Saatlik fiyat serisini aynı olay döngüsüne ver, tamamdır.

Bu eşleştirme gerçek verilerle yaklaşık doksan dakika temas edebildi. İlk bozulan, getiri serisiydi. Tüm risk katmanımız — pozisyon büyüklüğü, volatilite hedefleme, Sharpe raporlaması — sürekliliği olan bir enstrümanın log getirilerini varsayıyordu. 0.04’ten 0.00’a inen bir piyasanın log getirisi tanımsızdır ama toplam kaybı gayet tanımlıdır. Ayrıca uzlaşmadan üç gün önce 0.04’te olan bir piyasa ile dört dakika önce 0.04’te olan piyasa, her iki satırda da 0.04 yazmasına rağmen, kategorik olarak farklı nesnelerdir.

Sonunda tüm seriyi duvar saatine göre değil, uzlaşmaya kalan süreye göre yeniden parametreleştirdik ve PnL’yi anlık değerleme yerine vade sonu getirisi olarak ele aldık. Bu doğru karardı ve onun ardından gelen tüm raporlama kodlarını geçersiz kıldı.

2. gün: stratejinin kendisi ücret formülü

Kalshi’de işlem ücreti baz puan cinsinden bir kesinti değildir. Fiyatın karesiyle değişir: yaklaşık 0.07 × contracts × P × (1−P); emir düzeyinde en yakın sente yukarı yuvarlanır. Yani ücret, yazı tura olasılığına yakın piyasalarda en yüksek, uç değerlerdeyse neredeyse bedavadır.

FiyatKontrat başına ücretGerekli avantaj (olasılık puanı)Ücretin bahis tutarına oranı
5¢0.33¢0.336.7%
10¢0.63¢0.636.3%
25¢1.31¢1.315.3%
50¢1.75¢1.753.5%
75¢1.31¢1.311.8%
90¢0.63¢0.630.7%
95¢0.33¢0.330.35%

Üçüncü sütunu asıl önemli olan olarak okuyun: 50¢’den alıp uzlaşmaya kadar tutarak başa baş gelmek için olasılık tahmininizin piyasa tahminini 1.75 puan aşması gerekir. Göreli olarak %1.75 değil. Mutlak fark. Uzlaşmaya kadar tutmak yerine pozisyondan erken çıkarsanız, spread’e ek olarak ücreti iki kez ödersiniz.

3.5%50¢’de, bahis tutarının oranı olarak tek yönlü ücret
1.75ppburada başa baş gelmek için gereken olasılık avantajı
1enstrüman başına ömür boyu uzlaşma sayısı

Polymarket’in CLOB’u geçmişte işlem başına ücretin sıfıra daha yakın olduğu, çok farklı bir ücret profiline sahipti; bu da maliyetin tamamını spread’e ve derinliğe taşır. Dolayısıyla aynı strateji mantığının işlem yerine bağlı olarak tamamen farklı ekonomileri vardır; tek ücret modeli kullanan her borsalar arası karşılaştırma hayal ürünüdür. Artık tek bir sayısal değer yerine her işlem yeri için ayrı bir ücret fonksiyonu kullanıyoruz.

Tahmin piyasası backtest raporundan tek bir satır okuyacaksanız, bu satır olasılık puanlarıyla ifade edilen ücret satırı olsun. 50¢’lik piyasalarda 1.2 puan tahmin avantajı olduğunu iddia eden bir strateji, başka hiçbir maliyet hesaba katılmadan Kalshi’de zarar eder. Okurun bunu hesaplaması gerekmemeli; bu bilgi ilk sayfada görünmeli.

3. gün: emir defteri basamaklı ve kısa

Etki modelimiz, BTC sürekli vadeli işlem emir defterleri üzerinde kalibre edilmiş karekök fonksiyonuydu. Burada şekli yanlış. 1 dolarlık enstrümanda 1¢ kademe olunca, emir defterinin tamamında yalnızca 99 olası fiyat seviyesi bulunuyor; orta likiditedeki bir piyasada en üst seviyede birkaç yüz kontrat beklerken hemen ardından büyük bir boşluk olabiliyor.

Örneklediğimiz bir ekonomi verisi piyasasının YES tarafına ait, uzlaşmadan yaklaşık 30 saat önce alınmış bir görüntü:

SeviyeMiktar (kontrat)Alımın kümülatif maliyeti
42¢310310 @ ort. 42.0¢
43¢85395 @ ort. 42.2¢
45¢140535 @ ort. 42.9¢
49¢6001,135 @ ort. 46.1¢

1,000 kontratlık bir emir — 500 dolarlık risk, kriptoda yuvarlama hatası sayılır — efektif fiyatı 4¢ oynatıyor. 4¢, ücretin iki katından fazla. Burada uydurulabilecek düzgün bir fonksiyon yok; her seviyede emir defterini tek tek dolaşmanız gerekir. Bu varlık sınıfı için sqrt modelini sildik ve her seviyeyi gerçekten gezen bir emir defteri simülatörü yazdık; daha yavaş ama doğru.

Bir ara bu piyasaların "önemsiz kalacak kadar küçük" olmasına sinirlendiğimi fark ettim. Fiyatlanan şey son tarihi olan, gerçek dünyaya ait tek bir soru olduğu için küçükler; bir çarşamba günü ABD’deki ilk işsizlik başvuruları hakkında görüşü olan insan sayısı da sınırlı. Büyüklük piyasanın kendisi. Bundan şikâyet etmek, poker masasının yalnızca dokuz kişilik olmasından yakınmaya benzer.

4. gün: özsermaye eğrisinin muhteşem göründüğü gün

1,400 piyasada Sharpe 4.1. Düzgün. Her araştırmacının bunu görünce midesi burkulmalı; benimki de sonunda burkuldu — ekran görüntüsünü aldıktan yaklaşık kırk dakika sonra.

Hata yeniden örnekleyicideydi. Likit olmayan piyasaların fiyat geçmişi düzensiz zaman damgalarıyla geldiğinden, serileri düzenli bir saatlik ızgaraya yeniden indeksledik. Arşivlenmiş her serinin son noktası, uzlaşma değeri olan 1.00 veya 0.00’dı. Yeniden indekslemede yön kısıtı olmayan en yakın komşu doldurma kullandık; bu yüzden son işlemi uzlaşmadan saatler önce gerçekleşmiş her piyasada uzlaşma değeri, aradaki boşluk boyunca geriye doğru yayıldı. Model, derinlik sınırlarına takılmadan pozisyon büyüklüğünü artırabildiği tam da likit olmayan piyasalarda, yarının cevabını bugünün satırında okuyordu.

En yakın komşuyla doldurma, sürekli bir enstrümanda sorun değildir. Son gözlemi gerçek yanıt olan bir enstrümanda ise ileriye bakma makinesidir. Artık her doldurmanın yalnızca ileriye doğru yapıldığını ve uzlaşma satırının etiketlenerek özellik hesaplamalarının dışında tutulduğunu doğruluyoruz. Bu doğrulama dokuz satır uzunluğunda ve tüm hafta yazdığımız en değerli kod.

5–6. gün: 1,412 piyasa, yaklaşık 180 bahis

Tahmin piyasalarında örneklem büyüklüğü, dost canlısı bir yüz takmış tuzaktır. 1,412 piyasayı çözüme kavuşturursunuz, 1,412 gözleminiz varmış gibi hisseder ve buna göre t-istatistiği hesaplarsınız. Oysa aynı pazar günündeki on dört NFL maçı hava durumunu, sakatlık raporunun yayımlanmasını ve ortak bahisçi akışını paylaşır. Eyalet düzeyindeki elli bir seçim piyasasının tümü aynı ulusal siyasi dalgayı paylaşır. "X, 31 Mart’a kadar gerçekleşecek mi" ve "X, 30 Haziran’a kadar gerçekleşecek mi" farklı vadelere sahip aynı bahistir ve birlikte çözüme kavuşurlar.

Piyasaları altta yatan olay kaynağına ve uzlaşma tarihine göre kümelendirdik; elde ettiğimiz etkin bağımsız piyasa sayısı 180’e yakındı. Bu, incelediğimiz etki büyüklüklerinde gerçek bir avantajı gürültüden ayırmaya yetmiyor. Piyasa başına bootstrap yapmak da bunu düzeltemez; çünkü yeniden örnekleme satırlar yerine kümeler üzerinden yapılmalı. Bunu yanlış yapmak, anlamlılık düzeyinizi sessizce iki veya üç kat şişirir.

7. gün: uzlaşma da bir olasılık dağılımıdır

Hiç modellemediğimiz ve acı yoldan öğrendiğimiz şeyler:

Simülatöre elde tutma maliyeti terimi ve uzlaşma tarihi için bir oynama aralığı ekledik. İkisi de kesin değil. Ancak uzlaşmanın belirtilen tarihte tam zamanında ve kesinlikle gerçekleştiğini varsaymaktan daha iyiler.

8. gün: neleri atlar, önce neleri yapardık

  1. Getiriye dayalı altyapının tamamını atlayın. Vade sonunda ödeme yapan bir enstrümana volatilite hedefleyen risk katmanını uyarlamaya çalışmayın. Olasılık ve bahis tutarı üzerinden çalışan bir bahis büyüklüğü katmanı yazın. Eski katmanı uydurmaya çalışırken iki gün kaybettik.
  2. Stratejiden önce ücret fonksiyonunu oluşturun. İşlem yapmayı düşündüğünüz her yer için başa baş avantaj eğrisini yazdırıp masanın üzerine asın. Backtest çalıştırma maliyetine yol açmadan önce fikirlerin yaklaşık yarısını eler.
  3. İlk günden itibaren emir defterini adım adım dolaşın. Sürekli bir piyasadan alınan parametrik etki modeli, sizi olduğunuzdan iyi gösterecek şekilde yanlış olacaktır.
  4. Saymadan önce kümeleyin. Etkin örneklem büyüklüğü için kümeleme anahtarını, beğendiğiniz bir Sharpe bulduktan sonra değil, evreni belirlerken seçin.
  5. Doldurma yönünü doğrulayın. Her birleştirme için bir satır. Seri gerçek sonuçla bitiyorsa, geriye doğru doldurmayı incelemede fark etmeyi umacağınız bir şey olarak değil, doğası gereği hata olarak ele alın.

Bu sekiz gün çoğunlukla tahmin piyasalarının, kripto backtestlerinde kendimizi kandırmamızı kolaylaştıran belirsizliği ortadan kaldırması sayesinde değdi. El sallayıp geçebileceğimiz bir fonlama oranı ya da tartışabileceğimiz bir mark fiyatı kuralı yok. Yalnızca bir soru, bir son tarih ve bir yanıt var. Burada backtest yanlış olduğunda, yanlış olduğu şeyi gösterebilirsiniz.

tahmin piyasalarıbacktestücretlerpiyasa mikro yapısıveri mühendisliği
← Tüm yazılar