Hasil backtest opsi dapat berubah tanpa satu baris kode strategi pun bergeser. Vendor mengoreksi kuotasi yang keliru, menambahkan transaksi yang terlambat masuk, merevisi metadata kontrak, atau mengubah filter untuk pasar silang. Anda menjalankan ulang tanggal yang sama dan mendapat eksekusi berbeda, posisi berbeda, mungkin Sharpe berbeda. Itu belum tentu berarti ada bug dalam strategi. Bisa jadi bukti yang digunakan untuk menguji strategi tersebut telah berubah.
Agar backtest opsi dapat direproduksi, perlakukan data pasar sebagai input berversi. Catat snapshot yang digunakan, simpan observasi mentah yang mendasari setiap keputusan, lalu bandingkan hasil yang berubah pada tingkat kontrak dan timestamp sebelum memercayai hasil agregat yang baru.
Mengapa backtest opsi saya berubah padahal kodenya tetap sama?
Catatan opsi sangat sensitif terhadap koreksi karena kelayakan suatu kontrak untuk diperdagangkan bergantung pada beberapa kolom yang berubah bersama: bid, ask, ukuran, harga aset dasar, tanggal kedaluwarsa, strike, serta multiplier atau aset yang diserahkan untuk kontrak tersebut. Kuotasi yang dikoreksi dapat mengubah peluang yang tampak menarik menjadi pasar silang. Perbaikan metadata dapat mengubah arti multiplier suatu posisi.
Bayangkan sebuah strategi yang membeli call ketika ask di bawah $2.00. Pada pemuatan data pertama, kuotasi pukul 10:14 menunjukkan ask $1.95, bid $1.90, dengan ukuran 5. Revisi vendor yang datang kemudian mengubah ask menjadi $2.05 setelah merekonsiliasi pesan bursa yang terlambat. Satu observasi membalik sinyal. Jika kontrak itu merupakan satu-satunya transaksi strategi pada hari tersebut, koreksi data yang kecil dapat mendominasi imbal hasil hari itu.
Filter kuotasi juga berpengaruh. Vendor mungkin membuang kuotasi kedaluwarsa, menghapus pasar silang, atau menormalkan timestamp dengan cara berbeda. Kebijakan tersebut bisa masuk akal, tetapi menjadi bagian dari identitas dataset. “Opsi SPY, Januari hingga Maret” belum cukup untuk menentukan riwayat yang dapat direproduksi.
Apa itu vintage data opsi?
Vintage data adalah versi persis dari observasi historis yang tersedia untuk suatu proses riset. Simpan nama vendor dan dataset, waktu pengambilan, rentang tanggal, versi skema, serta aturan pembersihan atau pemfilteran. Jika vendor menyediakan ID snapshot atau timestamp revisi, simpan juga.
Untuk setiap keputusan simulasi, simpan informasi asal-usul yang cukup untuk menjawab: kontrak mana yang dipertimbangkan, kuotasi mana yang dipilih, kapan kuotasi itu dipublikasikan atau diterima, dan aturan apa yang membuatnya memenuhi syarat? Catatan mentah dan catatan hasil olahan sama-sama penting. NBBO yang sudah dibersihkan tanpa timestamp sumbernya dapat menyamarkan apakah kuotasi sudah kedaluwarsa atau baru tiba setelah keputusan simulasi dibuat.
| Catatan yang perlu disimpan | Alasan pentingnya | Contoh |
|---|---|---|
| Snapshot sumber | Menunjukkan riwayat yang digunakan dalam proses tersebut | ID revisi vendor dan timestamp pengambilan |
| Asal-usul kuotasi | Menjelaskan pasar yang dipilih | Bursa, waktu kejadian, waktu penerimaan, bid/ask, dan ukuran |
| Ketentuan kontrak | Menentukan apa yang diwakili oleh opsi tersebut | Strike, tanggal kedaluwarsa, multiplier, dan aset yang diserahkan |
| Kebijakan pembersihan | Menunjukkan observasi yang dikecualikan | Ambang batas kedaluwarsa dan penanganan kuotasi silang |
Bagaimana cara memeriksa apakah revisi vendor mengubah hasil saya?
Jalankan strategi dan konfigurasi yang sama pada kedua snapshot. Pertama, bandingkan jumlah observasi dan kontrak yang memenuhi syarat untuk setiap tanggal. Lalu bandingkan keputusan dan eksekusi: sinyal mana yang muncul atau hilang, kuotasi mana yang berubah, dan apakah catatan baru mengubah harga eksekusi yang dimodelkan.
Jangan berhenti pada total imbal hasil. Pantau perubahan jumlah transaksi, harga masuk dan keluar, sinyal yang ditolak, serta proporsi P&L yang berasal dari transaksi yang hanya ada di satu vintage. Sharpe dapat tetap serupa meski transaksi individual digantikan; statistik utama itu tidak akan menunjukkan bahwa riwayat di baliknya telah bergeser.
Untuk audit yang bermanfaat, pertahankan strategi, biaya, dan asumsi eksekusi tetap sama. Jika beberapa hal berubah sekaligus, Anda tidak akan tahu apakah perbedaan hasil berasal dari koreksi vendor atau eksperimen Anda sendiri.
Haruskah saya selalu memakai riwayat opsi terbaru?
Gunakan riwayat terbaru jika tujuannya adalah memakai rekonstruksi terbaik vendor saat ini. Simpan snapshot lama jika Anda perlu mereproduksi hasil sebelumnya atau memahami informasi yang tersedia bagi sistem riset Anda saat itu. Keduanya menjawab pertanyaan yang berbeda.
Untuk riset point-in-time, catatan yang telah dikoreksi bisa lebih akurat sekarang, tetapi tetap belum tersedia bagi strategi pada waktu itu. Jika memungkinkan, simpan waktu publikasi dan penerimaan; jika tidak, jelaskan keterbatasannya dengan gamblang. Rekonstruksi modern tidak otomatis mencerminkan himpunan informasi historis.
Saat backtest opsi berubah, pertanyaan pertama sebaiknya “Observasi mana yang berubah?” Pertanyaan “Proses mana yang benar?” baru menyusul setelah Anda dapat menjawabnya.
Apa yang harus saya simpan untuk setiap backtest?
Simpan manifest ringkas bersama hasilnya: penyedia data dan snapshot, waktu pengambilan, versi skema dan pembersihan, sumber metadata kontrak, commit strategi, asumsi eksekusi, serta konfigurasi proses. Tautkan setiap transaksi ke catatan kuotasi yang menjadi dasar keputusan tersebut.
Catatan ringkas itu mengubah proses ulang yang misterius menjadi perbedaan yang dapat diperiksa. Riwayat opsi akan terus dikoreksi. Proses riset Anda sebaiknya menampilkan setiap koreksi, sehingga arsip yang lebih baik memperkuat bukti tanpa diam-diam menulis ulang eksperimen.
← Semua artikel


