28 Oktober 2026 · opsyen

Isyarat Itu Betul. Backtest Opsyen Kami Membeli Tarikh Luput yang Salah.

Isyarat Itu Betul. Backtest Opsyen Kami Membeli Tarikh Luput yang Salah.

Pada hari Selasa, jam 10:07, ejen penyelidikan kami mengesan persediaan bullish jangka pendek dalam ETF indeks. Isyarat asasnya biasa sahaja: harga telah kembali melepasi purata 20 bar, volatiliti terealisasi semakin reda, dan sesi berikutnya mempunyai pengumuman makro yang telah dijadualkan. Dagangan yang dicadangkan ialah call spread dengan tempoh kira-kira dua minggu sebelum tarikh luput.

Backtest menyukainya. Strategi paper tidak membuat pesanan. Apabila kami membandingkan pesanan, cap masa isyarat sepadan dan harga aset pendasar berbeza hanya beberapa sen. Kontraknya berbeza: backtest membeli kontrak yang luput pada hari Jumaat dan kelihatan paling baik dalam rantaian sejarah; proses paper memilih tarikh luput tersenarai yang seterusnya, seminggu kemudian.

Jurang itu berpunca daripada cantuman kalendar. Kami menganggap “hari sehingga tarikh luput” sebagai sifat sesuatu tarikh, kemudian memilih kontrak yang tarikh luputnya paling hampir dengan sasaran. Dalam data sejarah, kalendar tarikh luput mengandungi penyenaraian mingguan yang ditambah selepas tarikh yang kami uji. Backtest menggunakan kontrak dari masa depan, seolah-olah itu cuma kemudahan yang tidak berbahaya.

Pada mulanya kami mengesyaki pepijat zon waktu. Tarikh luput opsyen memang mudah menimbulkan pepijat sebegini: sesi pasaran berakhir di New York, cap masa bursa mungkin disimpan dalam UTC, dan tarikh tengah malam boleh berubah apabila saluran data menukarnya secara cuai. Kami sudah periksa. Cap masa itu betul. Kontrak tersebut memang belum wujud dalam set instrumen sejarah pada hari Selasa itu.

Itulah pengajaran pertama: rantaian opsyen sejarah memerlukan set penyenaraian pada titik masa. Tarikh luput kontrak memberitahu anda bila kontrak itu tamat. Tarikh itu tidak memberitahu anda bila kontrak disenaraikan, bila ia mula boleh didagangkan, atau sama ada sistem anda boleh memilihnya pada masa itu.

Kami membina semula langkah pemilihan berdasarkan maklumat yang tersedia pada cap masa keputusan. Bagi setiap kontrak calon, kami mensyaratkan cap masa penyenaraian tidak lewat daripada masa keputusan, sebut harga sah yang tidak lebih lama daripada ambang kesegaran kami, serta sesi pasaran yang membolehkan strategi menghantar pesanan. Kami juga merekodkan set calon sebelum membuat pemeringkatan. Bahagian terakhir itu penting kerana backtest lama hanya menyimpan pilihan pemenang; kami tidak dapat tahu sama ada ia membandingkan lima kontrak yang layak atau diam-diam memilih daripada kalendar yang belum wujud ketika itu.

10:07masa keputusan isyarat
1 mingguketidakpadanan tarikh luput
0penyenaraian sejarah yang layak bagi kontrak terpilih

Seterusnya, kami meneliti sebut harga yang digunakan untuk menetapkan harga spread. Backtest mengambil sebut harga terkini bagi setiap kaki secara berasingan. Ask call itu bertarikh 10:06:58; bid call pendek bertarikh 10:04:11. Kedua-duanya secara teknikal masih baharu mengikut dasar data umum, tetapi pasaran telah bergerak di antara kedua-dua masa itu. Titik tengah spread yang dibina daripada kaki dengan cap masa tidak serentak boleh menggambarkan pasaran yang tidak pernah wujud.

Kami mengubah peraturan sebut harga supaya cap masa kedua-dua kaki mesti dalam lingkungan dua saat antara satu sama lain, dan menolak pasaran yang silang atau bersaiz sifar. Ini mengurangkan bilangan pemerhatian sejarah yang boleh digunakan. Namun, tanda harga yang tinggal lebih munasabah. Jika tiada sebut harga serentak, kami menandakan calon itu sebagai tidak tersedia dan bukannya mengisi jurang dengan harga lapuk.

Kemudian tibalah peraturan pemeringkatan. Ejen memilih tarikh luput dengan kos spread sebut harga paling rendah. Itu kedengaran munasabah sehinggalah spread itu hanya satu kontrak lebar dan sebut harganya lapuk. Kami menjelaskan objektifnya: memaksimumkan jangkaan pulangan bagi setiap unit risiko yang ditakrifkan dalam kalangan kontrak yang melepasi syarat minimum saiz sebut harga, kesegaran dan penyenaraian. Dalam contoh ini, tarikh luput terdekat yang layak mempunyai lebar sebut harga $0.42 merentasi dua kaki, manakala tarikh luput yang lebih lewat mempunyai lebar $0.31. Pilihan yang kelihatan lebih murah itu juga hanya memaparkan satu kontrak pada kaki pendek.

CalonTarikh luput tersedia ketika itu?Usia sebut hargaSaiz kaki pendek yang dipaparkanKeputusan
Jumaat mingguanTidakTidak berkenaanTidak berkenaanKecualikan
Jumaat berikutnyaYa1.4 saat18 kontrakLayak
Jumaat ketigaYa9.8 saat1 kontrakKecualikan kerana lapuk dan nipis

Kami mengulang semula insiden itu dengan peraturan tersebut. Kini backtest memilih tarikh luput yang sama seperti proses paper dan merekodkan sebab kontrak lain ditolak. Harga masuk spread yang terhasil lebih buruk sebanyak $0.11 berbanding isian sejarah asal. Ini tidak bermakna strategi itu tiada nilai; ini bermakna angka prestasi lama merangkumi pemilihan dagangan yang tidak dapat dihasilkan semula oleh proses langsung.

Satu perkara kecil yang menyusahkan: format simbol bursa boleh membuat pepijat tarikh luput nampak seperti masalah kualiti data. Kami menemui kod mingguan daripada vendor yang berbeza satu aksara daripada kod bulanan. Saya masih menyimpan simbol mentah bersama kunci kontrak ternormal dalam log audit. Ia tidak kemas, tetapi telah mengelakkan kami daripada terlalu cepat mempercayai cantuman yang kelihatan rapi.

Jika anda sedang membina backtest opsyen, simpan set calon penuh pada setiap keputusan, bersama status penyenaraian, cap masa sebut harga, saiz dan sebab penolakan bagi setiap kontrak. Kemudian jadikan pemilihan kontrak fungsi deterministik bagi petikan data itu. Pemilihan tarikh luput ialah sebahagian daripada strategi. Jika backtest dapat melihat kontrak yang tidak dapat dilihat oleh proses paper, perbandingan isyarat bermula selepas jawapannya sudah berubah.

backtesting opsyenpemilihan tarikh luputdata pada titik masapemodelan pelaksanaan
← Semua catatan