Backtest bisa mencatat timestamp setiap candle dengan benar, tetapi tetap menggunakan informasi dari masa depan. Ini terjadi ketika strategi menguji aset yang masih bertahan hari ini pada riwayat selama bertahun-tahun, seolah-olah strategi sudah tahu pasar mana yang akan tetap likuid, terdaftar, dan layak dipertahankan.
Penyusunan universe adalah bagian dari strategi. Jika sistem live hanya dapat memilih dari aset yang tersedia pada setiap waktu pengambilan keputusan, backtest harus mematuhi batasan yang sama. Tiga jalan pintas kerap menghapus batasan itu.
Kesalahan pertama: menguji daftar hari ini pada seluruh riwayat
Misalkan hari ini Anda menyaring 50 pasar perpetual kripto terbesar, lalu menguji strategi pada data sejak 2021. Daftar itu tidak mencakup kontrak yang sudah hilang, kehilangan likuiditas, atau delisting. Daftar itu juga memberi tanggal-tanggal lama akses ke pasar yang mungkin belum ada saat itu.
Dampaknya mudah luput: strategi tampak lebih stabil karena aset yang gagal sudah lenyap dari sampelnya. Misalnya, aturan momentum mungkin tampak sangat baik pada 50 pasar hari ini, padahal versi historisnya berulang kali akan mengalokasikan dana ke aset yang kemudian anjlok atau kehilangan pencatatan di bursa. Anda telah menguji portofolio yang dipilih dengan mengetahui hasil akhirnya.
Catat keanggotaan universe beserta tanggalnya. Untuk setiap aset, lacak kapan aset mulai memenuhi syarat, kapan tidak lagi memenuhi syarat, dan alasannya. Pada setiap rebalance, terapkan aturan hanya dengan informasi yang tersedia saat itu. Pasar baru boleh masuk setelah pencatatan yang sebenarnya dan periode pemanasan yang diwajibkan. Jika pasar delisting, posisi terakhirnya perlu memiliki aturan keluar atau penyelesaian yang jelas; menghapus baris datanya bukan aturan keluar.
Kesalahan kedua: mengurutkan berdasarkan statistik yang diukur setelah keputusan
Bahkan universe historis bisa mengalami kebocoran jika aturan keanggotaannya menggunakan jendela data yang baru lengkap di masa depan. “Perdagangkan 20 saham paling likuid setiap bulan” terdengar masuk akal, sampai likuiditas diurutkan menggunakan keseluruhan bulan yang seharusnya menjadi periode perdagangan strategi.
Bayangkan rebalance dilakukan pada hari perdagangan pertama. Mengurutkan berdasarkan rata-rata volume dolar bulan itu secara diam-diam menggunakan tiga minggu berikutnya untuk menentukan aset mana yang memenuhi syarat pada hari pertama. Dampaknya sering terlihat sebagai kapasitas yang luar biasa baik: strategi menghindari aset yang menjadi tidak likuid belakangan di bulan itu, padahal strategi tidak mungkin mengetahuinya saat masuk.
Tetapkan batas akhir pengukuran sebelum waktu pemilihan. Untuk rebalance bulanan pada sesi pertama, misalnya, Anda dapat mengurutkan berdasarkan 20 sesi lengkap sebelumnya, yang berakhir pada sesi sebelumnya. Lalu, nyatakan jeda eksekusinya secara eksplisit: jika pengurutan menggunakan harga penutupan kemarin, apakah pesanan dapat diajukan saat pembukaan hari ini sesuai alur kerja yang Anda asumsikan?
| Aturan pemilihan | Versi point-in-time | Kebocoran umum |
|---|---|---|
| 20 teratas berdasarkan volume dolar | Urutkan sesi lengkap yang berakhir sebelum rebalance | Memasukkan hari atau bulan rebalance |
| Terdaftar di bursa | Gunakan waktu efektif pencatatan dan delisting | Menggunakan endpoint simbol terkini untuk tanggal lampau |
| Riwayat minimum | Hitung observasi yang tersedia pada waktu pemilihan | Mensyaratkan aset bertahan di masa depan agar lolos filter |
Kesalahan ketiga: menganggap riwayat yang hilang membuktikan aset tidak memenuhi syarat
Arsip vendor data belum tentu merupakan catatan lengkap tentang pasar historis. Simbol yang hilang bisa berarti aset itu belum pernah ada, bursa mengubah konvensi penamaannya, vendor tidak menyimpan instrumen yang delisting, atau feed datanya sekadar terputus. Masing-masing kemungkinan ini memiliki implikasi berbeda.
Dampaknya berupa universe yang tampak rapi, tetapi memiliki celah tanpa penjelasan. Peneliti sering mensyaratkan jendela lookback penuh, lalu diam-diam mengecualikan semua aset yang tidak memilikinya. Aturan pemanasan seperti itu bisa masuk akal, tetapi juga sengaja membuang aset yang baru tercatat. Lebih buruk lagi, jika riwayat yang hilang terkonsentrasi pada pasar yang gagal, aturan “hanya data lengkap” menjadi filter survivorship lainnya.
Pisahkan kelayakan, ketersediaan data, dan pemanasan strategi sebagai fakta yang berbeda. Catat alasan aset dikecualikan pada setiap tanggal. Pertahankan catatan data yang hilang dalam ledger riset alih-alih mengubahnya menjadi penghapusan diam-diam. Jika sumber data tidak dapat memastikan apakah suatu pasar pernah tercatat atau dapat diperdagangkan, nyatakan hal itu dan ukur seberapa besar hasil bergantung pada ketidakpastian tersebut.
Buat universe yang dapat direproduksi
Audit yang berguna dimulai dengan satu rebalance historis. Susun kembali daftar kandidat dari catatan pencatatan bertanggal dan data yang tersedia pada batas waktu tersebut. Hitung ulang masukan pengurutan hanya dari observasi yang sudah lengkap. Lalu bandingkan keanggotaan yang dihasilkan dengan daftar yang benar-benar digunakan backtest Anda.
Simpan aturan, batas waktunya, keputusan keanggotaan, dan versi sumber data bersama hasil run. Jika Anda tidak dapat menjelaskan mengapa satu aset masuk dan aset lain tidak pada tanggal tertentu, Anda belum bisa memastikan apakah strategi menemukan keunggulan atau mewarisi sampel yang dibentuk oleh masa depan.
Kesalahan dalam menyusun universe jarang terlihat dari harga yang mustahil. Biasanya terlihat dari strategi yang kebetulan menghindari pasar yang kemudian tidak lagi menguntungkan untuk diperdagangkan.
← Semua artikel


