Backtest menghasilkan imbal hasil tahunan 20%. Backtest itu menggunakan data selama 8 tahun, 1.640 transaksi, dan pemisahan walk-forward yang bersih. Lalu kami mengganti riwayat terkini dari vendor dengan nilai yang tercatat pada saat itu, dan keunggulannya turun menjadi 3%.
Angka yang mengejutkan bukanlah imbal hasil awalnya. Melainkan 17 poin persentase yang bergantung pada data hasil revisi. Informasi masa depan semacam ini bisa tersembunyi dalam rilis ekonomi, fundamental perusahaan, keanggotaan indeks, bahkan kolom pasar yang tampaknya sederhana. Data historis memberi tahu Anda apa yang dikatakan sumber saat ini. Dataset point-in-time memberi tahu apa yang bisa diketahui strategi Anda saat itu.
Mengapa data historis bisa berubah setelah suatu peristiwa?
Sebagian nilai awalnya berupa estimasi, lalu dikoreksi. Statistik ekonomi yang dirilis pada hari Jumat mungkin direvisi bulan berikutnya. Perusahaan dapat menyajikan ulang angka laba. Vendor data dapat memperbaiki cetakan harga yang keliru, mengisi interval yang hilang, atau mengganti nilai sementara dengan nilai final. Basis data yang hanya menyimpan nilai terbaru membuat semua perubahan itu tampak seolah-olah selalu benar sejak awal.
Hal ini penting ketika strategi mengurutkan perusahaan berdasarkan pendapatan yang dilaporkan atau memperdagangkan pasar setelah rilis data terjadwal. Jika strategi melihat angka yang sudah dikoreksi berbulan-bulan lebih awal, backtest telah memberinya informasi yang belum tersedia di pasar saat keputusan dibuat. Perhitungan sinyalnya bisa sempurna; inputnya tetap berasal dari versi riwayat yang keliru.
Ada jebakan yang mudah luput: kolom bernama date sering kali menjelaskan periode yang dicakup suatu nilai, bukan kapan nilai itu tersedia. Baris pendapatan kuartalan bertanggal 31 Maret mungkin baru dipublikasikan pada Mei. Labelnya merujuk pada periode bisnis, bukan kumpulan informasi yang tersedia bagi strategi.
Timestamp mana yang sebaiknya digunakan backtest?
Catat periode efektif nilai tersebut dan waktu ketersediaannya secara terpisah. Jika memungkinkan, simpan juga waktu publikasi dan waktu ingest. Strategi baru dapat menggunakan suatu nilai setelah nilai itu dipublikasikan dan diterima oleh sistem; jika waktunya berbeda, gunakan waktu yang lebih akhir untuk replay yang konservatif.
| Timestamp | Yang dijelaskan | Manfaat |
|---|---|---|
| Waktu efektif | Periode atau peristiwa yang dirujuk nilai tersebut | Mengelompokkan observasi berdasarkan hal yang diukur |
| Waktu publikasi | Saat sumber merilis versi ini | Mencegah rilis muncul sebelum benar-benar ada |
| Waktu ingest | Saat sistem Anda menerima versi tersebut | Mencatat keterlambatan pengiriman dan pengisian data historis yang terlambat |
Sebagai contoh, anggap penjualan kuartalan sebuah perusahaan mencakup Januari hingga Maret, dilaporkan pada 8 Mei pukul 16:15 waktu Eastern, dan tiba di penyimpanan riset Anda pada pukul 16:17. Strategi yang mengambil keputusan saat penutupan pasar pada 8 Mei tidak dapat menggunakan laporan itu jika keputusan penutupan dibuat pukul 16:00. Strategi yang mengambil keputusan keesokan paginya bisa menggunakannya. Tanggal akhir kuartal saja tidak bisa menjawab kedua pertanyaan tersebut.
Bagaimana cara menguji apakah revisi memengaruhi hasil?
Jalankan strategi yang sama dua kali: sekali dengan versi data yang tersedia pada setiap waktu keputusan historis, dan sekali dengan riwayat terbaru setelah revisi. Pertahankan asumsi eksekusi, universe, dan kode tetap sama. Selisihnya adalah hasil sensitivitas terhadap revisi, bukan perbandingan strategi baru.
Lalu telusuri sumber selisihnya. Apakah kinerja berubah pada hari rilis? Apakah perbedaan terbesar terkonsentrasi pada beberapa perusahaan yang menyajikan ulang laporan atau observasi yang dikoreksi? Apakah strategi bertransaksi sebelum waktu publikasi terkait? Audit pada tingkat peristiwa sering kali menjelaskan lebih banyak daripada satu lagi grafik imbal hasil kumulatif.
Angka-angka ini hanya ilustrasi, bukan penalti yang berlaku universal. Hasil yang berguna adalah perbandingan berpasangan untuk strategi Anda sendiri, dengan transaksi dan biaya yang sama sejauh memungkinkan. Jika versi yang sudah direvisi unggul jauh, cari tahu kolom dan tanggal mana yang menjelaskan selisih itu sebelum memercayai angka utama backtest.
Apa saja yang perlu dicatat dalam audit data point-in-time?
Mulailah dari kolom yang benar-benar digunakan strategi Anda. Untuk setiap kolom, identifikasi sumber, arti timestamp, kebijakan revisi, dan apakah versi sebelumnya dapat diambil kembali. Tanyakan kepada vendor bagaimana koreksi direpresentasikan: baris yang ditimpa, baris versi baru, atau log audit terpisah. Label “historis” di halaman produk belum menjawab hal ini.
- Simpan setiap versi beserta timestamp publikasi atau pertama kali tersedia.
- Gabungkan fitur dengan keputusan menggunakan waktu ketersediaan, bukan label periode.
- Simpan snapshot beku atau versi sumber agar proses dapat direproduksi.
- Tandai nilai yang datang terlambat, direvisi, atau tidak memiliki riwayat yang dapat diandalkan.
Jaga cakupannya tetap praktis. Jika strategi Anda hanya menggunakan transaksi dan bar dari bursa, revisi data ekonomi mungkin tidak relevan. Namun, koreksi bar dan pengisian data historis oleh vendor tetap bisa berpengaruh, terutama ketika sinyal bergantung pada pasar yang likuiditasnya tipis atau jendela peristiwa yang presisi.
Saat riwayat point-in-time tidak tersedia
Jangan diam-diam menganggap nilai hari ini sebagai nilai kemarin. Tandai kolom tersebut sebagai keterbatasan, keluarkan dari klaim yang bergantung pada ketersediaan historis, atau terapkan jeda konservatif dan tunjukkan seberapa besar hasilnya berubah. Proksi dengan jeda dapat berguna untuk riset, selama jedanya dinyatakan secara jelas dan keterbatasannya selalu disertakan bersama hasil.
Tugas backtest adalah merekonstruksi keputusan menggunakan kumpulan informasi yang tersedia saat itu. Jika data Anda hanya dapat menunjukkan versi terbaru, hasil yang jujur memiliki batas: hasil itu dapat menguji strategi terhadap riwayat yang direkonstruksi saat ini, tetapi tidak dapat memastikan persis apa yang bisa dilihat agen historis.
← Semua artikel

