28 Ekim 2026 · opsiyonlar

Sinyal Doğruydu. Opsiyon Backtestimiz Yanlış Vade Tarihini Satın Aldı.

Sinyal Doğruydu. Opsiyon Backtestimiz Yanlış Vade Tarihini Satın Aldı.

Bir salı günü saat 10:07'de araştırma ajanımız, bir endeks ETF'sinde kısa vadeli yükseliş yönlü bir düzen belirledi. Dayanak varlığa ilişkin sinyal sıradandı: fiyat 20 barlık ortalamanın üzerine çıkmış, gerçekleşen volatilite azalmaya başlamış ve sonraki seans için planlanmış bir makroekonomik açıklama vardı. Önerilen işlem, vadesine yaklaşık iki hafta kalan bir alım spreadiydi.

Backtest işlemi beğendi. Kağıt üzerindeki strateji ise emri göndermedi. Emirleri karşılaştırdığımızda sinyal zaman damgalarının eşleştiğini, dayanak varlık fiyatlarının da birkaç sent içinde kaldığını gördük. Sözleşmeler farklıydı: backtest, geçmiş zincirde en iyi görünen cuma vadesini almıştı; kağıt üzerindeki süreç ise bir hafta sonraki, listelenmiş bir sonraki vadeyi seçmişti.

Bu fark bir takvim birleştirmesinden kaynaklanıyordu. “Vadeye kalan gün”ü bir tarihin özelliği gibi ele almış, sonra vadesi hedef tarihe en yakın sözleşmeyi seçmiştik. Geçmiş verilerdeki vade takviminde, test ettiğimiz tarihten sonra eklenmiş haftalık bir listeleme de vardı. Backtest, gelecekteki bir sözleşmeyi zararsız bir kolaylık gibi görünen bir yöntemle kullanmıştı.

Önce bir saat dilimi hatasından şüphelendik. Opsiyon vadeleri bu tür hatalara özellikle elverişlidir: piyasa seansı New York'ta sona erer, borsa zaman damgaları UTC'de saklanabilir ve bir veri hattı dikkatsizce tür dönüşümü yaptığında gece yarısı tarihi kayabilir. Kontrol ettik. Zaman damgaları doğruydu. Sözleşme o salı günü geçmiş evrende mevcut değildi.

İlk ders şuydu: geçmişe dönük bir opsiyon zinciri, ilgili andaki listeleme evrenini içermelidir. Bir sözleşmenin vade tarihi, ne zaman sona ereceğini söyler. Ne zaman listelendiğini, ne zaman işlem görebilir hale geldiğini ya da sisteminizin o sırada onu seçip seçemeyeceğini söylemez.

Seçim adımını, karar zaman damgasında mevcut olan bilgilere göre yeniden kurduk. Her aday sözleşmenin listeleme zaman damgasının karar anından geç olmamasını, geçerliliğini koruyan ve belirlediğimiz tazelik eşiğini aşmayan bir kotasyona sahip olmasını ve stratejinin emir gönderebileceği bir piyasa seansında bulunmasını şart koştuk. Ayrıca sıralamadan önce aday kümesini kaydettik. Bu son adım önemliydi; eski backtest yalnızca kazananı saklıyordu. Böylece beş uygun sözleşmeyi mi karşılaştırdığını, yoksa henüz oluşmamış bir takvimden sessizce seçim mi yaptığını anlayamıyorduk.

10:07sinyal karar zamanı
1 haftavade uyumsuzluğu
0seçilen sözleşme için uygun geçmiş listeleme sayısı

Sonra spreadi fiyatlamak için kullanılan kotasyonu inceledik. Backtest, her bacağın en güncel kotasyonunu birbirinden bağımsız olarak örneklemişti. Alım opsiyonunun satış fiyatı 10:06:58'den, kısa alım opsiyonunun alış fiyatı ise 10:04:11'den alınmıştı. Geniş veri politikamıza göre ikisi de teknik olarak günceldi, ancak aralarında piyasa hareket etmişti. Eşzamanlı olmayan bacaklardan hesaplanan bir spread orta fiyatı, gerçekte hiç var olmamış bir piyasayı gösterebilir.

Kotasyon kuralını, iki bacağın zaman damgalarının en fazla 2 saniye arayla olmasını şart koşacak ve alış-satış fiyatları kesişen ya da sıfır büyüklüklü piyasaları reddedecek şekilde değiştirdik. Böylece kullanılabilir geçmiş gözlemlerin sayısı azaldı. Geriye kalan fiyatlamalar ise daha inandırıcı hale geldi. Eşzamanlı bir kotasyon yoksa aradaki boşluğu eski bir fiyatla doldurmak yerine adayı kullanılamaz olarak işaretledik.

Ardından sıralama kuralına geçtik. Ajan, kotasyondaki spread maliyeti en düşük olan vadeyi seçmişti. Spread yalnızca 1 sözleşme derinliğindeyse ve kotasyon eskiyse bu yaklaşım kulağa mantıklı gelmez. Amacı açıkça tanımladık: asgari kotasyon büyüklüğü, tazelik ve listeleme kontrollerini geçen sözleşmeler arasında, tanımlı risk birimi başına beklenen getiriyi en üst düzeye çıkarmak. Bu örnekte en yakın uygun vadenin iki bacak genelindeki kotasyon aralığı 0,42 $ iken, daha ileri vadede bu aralık 0,31 $'dı. Daha ucuz görünen seçeneğin kısa bacağında yalnızca 1 sözleşme gösteriliyordu.

AdayO sırada vadesi mevcut muydu?Kotasyon yaşıGösterilen kısa bacak büyüklüğüKarar
Haftalık cuma vadesiHayırUygulanamazUygulanamazHariç tut
Sonraki cumaEvet1,4 saniye18 sözleşmeUygun
Ayın üçüncü cumasıEvet9,8 saniye1 sözleşmeEski ve sığ olduğu için hariç tut

Olayı bu kurallarla yeniden oynattık. Backtest artık kağıt üzerindeki süreçle aynı vadeyi seçiyor ve diğer sözleşmelerin neden reddedildiğini kaydediyordu. Ortaya çıkan spread giriş fiyatı, ilk geçmiş dolumdan 0,11 $ daha kötüydü. Bu, stratejinin değersiz olduğu anlamına gelmiyordu; eski performans rakamının canlı sürecin tekrarlayamayacağı bir işlem seçimini içerdiği anlamına geliyordu.

Küçük bir can sıkıcı ayrıntı: borsa sembol biçimleri, vade hatalarını veri kalitesi sorunları gibi gösterebilir. Bir veri sağlayıcının haftalık kodunun aylık koddan tek bir karakterle ayrıldığını bulduk. Denetim günlüklerinde ham sembolü normalize edilmiş sözleşme anahtarının yanında tutuyorum. Çok zarif bir çözüm değil, ama düzenli görünen bir birleştirmeye hemen güvenmememizi sağladı.

Bir opsiyon backtesti kuruyorsanız her karardaki tam aday kümesini; her sözleşmenin listeleme durumu, kotasyon zaman damgaları, büyüklükleri ve ret nedeni ile birlikte saklayın. Ardından sözleşme seçimini bu anlık görüntüden deterministik olarak üretilen bir işlev haline getirin. Vade seçimi stratejinin bir parçasıdır. Backtest, kağıt üzerindeki sürecin göremediği bir sözleşmeyi görebiliyorsa sinyalleri karşılaştırmaya başladığınızda sonuç zaten değişmiş demektir.

opsiyon backtestingvade seçimizamanın o anındaki verileryürütme modellemesi
← Tüm yazılar