Backtest kami menghitung 91 fill dari 100 order yang dikirimkan. Dalam paper trading, strategi yang sama mendapat 63. Median waktu dari sinyal hingga konfirmasi penerimaan order adalah 84 milidetik, dan 12 fill paper yang terlewat adalah order limit yang diasumsikan backtest terisi begitu harga menyentuhnya.
Kesenjangan 28 poin itu tampak seperti masalah strategi sampai kami memisahkan keputusan order dari keputusan fill. Strategi memilih sisi, ukuran, dan harga yang hampir sama dalam kedua pengujian. Jalur eksekusinya berbeda: beberapa order tiba terlambat, beberapa tetap terbuka, dan beberapa berhadapan dengan pasar yang sudah bergerak.
Apa arti keselarasan order antara backtest dan paper?
Keselarasan berarti backtest dan sistem paper mengambil keputusan yang sebanding berdasarkan informasi tersedia yang sama, lalu memperhitungkan perbedaan model eksekusinya secara eksplisit. Ini bukan berarti setiap fill simulasi harus cocok dengan fill paper. Bar historis tidak dapat merekonstruksi posisi dalam antrean, dan venue paper mungkin menggunakan model pencocokan yang berbeda dari bursa live.
Pertanyaan yang berguna lebih spesifik: untuk setiap order yang hendak ditempatkan strategi, bisakah Anda menjelaskan apa yang terjadi selanjutnya? Jumlah trade dan return akhir menyembunyikan terlalu banyak hal. Simpan catatan terpadu untuk setiap keputusan, dengan ID keputusan strategi yang stabil dan diteruskan melalui peristiwa sinyal, order, konfirmasi penerimaan, pembatalan, dan fill.
| Perbandingan | Hal yang terdeteksi | Contoh |
|---|---|---|
| Waktu dan sisi keputusan | Input atau penjadwalan berbeda | Sinyal paper muncul satu bar lebih lambat |
| Ukuran dan harga yang diminta | Pembulatan, risiko, atau aturan venue | Backtest mengirim 0.013 BTC; paper membulatkannya menjadi 0.01 |
| Transisi status order | Kesenjangan saat pengiriman, penolakan, dan pembatalan | Backtest menganggap permintaan pembatalan sudah selesai |
| Kuantitas dan harga fill | Model fill terlalu optimistis atau pasar bergerak | Limit yang tersentuh mendapat fill penuh di backtest, tetapi tidak mendapat fill di paper |
Mengapa limit yang tersentuh menyebabkan begitu banyak fill terlewat?
Backtest kami menggunakan bar 1 menit. Jika harga limit berada dalam rentang tertinggi-terendah suatu bar, order ditandai terisi. Aturan itu menjawab apakah pasar pernah bertransaksi pada harga tersebut selama menit itu. Aturan itu tidak menjawab apakah order kami sudah aktif saat itu, apakah posisinya paling depan dalam antrean, atau apakah cukup banyak kuantitas diperdagangkan setelah order tiba.
Log paper memperlihatkan masalah waktunya. Strategi menghitung sinyal pada 12:03:00.000, tetapi peristiwa data pasar baru mencapai proses order 31 milidetik kemudian. Pemeriksaan risiko memerlukan 22 milidetik lagi, lalu simulator venue mengonfirmasi penerimaan order 31 milidetik setelahnya. Saat pasar bergerak cepat, bar historis dapat membuat suatu harga tampak bisa dicapai, padahal limit baru tiba setelah pasar melewatinya.
Ada masalah lain: dua belas order paper masih terbuka ketika backtest sudah beralih ke tahap berikutnya. Simulator menerima permintaan pembatalan seolah-olah order langsung lenyap. Dalam sistem paper, konfirmasi pembatalan datang belakangan; tiga order terisi selama jeda itu. Hal tersebut mengubah posisi yang dilihat oleh sinyal berikutnya.
Bagaimana cara mengukur kesenjangan ini tanpa menipu diri sendiri?
Mulailah dengan laporan rekonsiliasi sederhana yang dikelompokkan berdasarkan maksud order. Tampilkan denominatornya. “Fill rate” bisa berarti jumlah fill per order yang dikirimkan, kuantitas terisi dibagi kuantitas yang diminta, atau jumlah order terisi dibagi order yang sampai ke venue. Masing-masing menjawab pertanyaan yang berbeda.
- Gabungkan peristiwa menggunakan ID keputusan atau ID order klien, bukan timestamp yang ditebak belakangan.
- Bandingkan keputusan terlebih dahulu: waktu sinyal, sisi, kuantitas yang diminta, jenis order, dan harga limit.
- Untuk keputusan yang cocok, bandingkan jeda konfirmasi penerimaan, penolakan, waktu terbuka, waktu pembatalan, kuantitas terisi, dan harga fill rata-rata tertimbang volume.
- Laporkan angka berdasarkan jenis order dan kondisi pasar. Fill rate keseluruhan 63% mungkin menyembunyikan angka 90% untuk market order dan 35% untuk limit pasif.
Pastikan kategorinya tidak rancu. Order yang ditolak bukan order yang tidak terisi; order yang terisi sebagian bukan fill penuh; dan order yang dibatalkan setelah terisi sebagian tetap mengubah posisi. Hitung jumlah order dan kuantitas yang diminta agar sekumpulan order kecil tidak membuat hasilnya tampak lebih baik daripada kenyataannya.
Apa yang perlu diubah dalam backtest?
Gunakan aturan fill yang sesuai dengan resolusi data dan perilaku order yang dimaksud. Dengan data bar, limit yang tersentuh adalah bukti kemungkinan fill, bukan kepastian. Anda bisa memodelkan fill sebagian secara konservatif, mensyaratkan harga bergerak menembus limit, atau mengecualikan order pasif yang posisi antreannya tidak dapat diperkirakan. Tiap pilihan menjawab pertanyaan yang berbeda; dokumentasikan pilihannya dan bandingkan hasilnya dengan lebih dari 1 aturan yang masuk akal.
Modelkan juga status order. Order tetap aktif sampai sistem menerima peristiwa terminal, dan permintaan pembatalan tidak menghapus eksposur. Jika strategi dapat mengirim order kedua saat order pertama masih menunggu, backtest harus merepresentasikan kondisi balapan itu atau mencegahnya melalui desain.
Model fill adalah klaim tentang apa yang mungkin terjadi pada order Anda. Tetapkan aturan yang bisa Anda jelaskan, lalu periksa aturan itu terhadap log paper.
Dalam kesenjangan 28 poin kami, hal yang mengejutkan bukanlah backtest berbasis bar 1 menit melebih-lebihkan fill pasif. Yang mengejutkan adalah posisi strategi menyimpang sebelum keputusan berikutnya karena waktu pembatalan tidak diperhitungkan. Setelah memperbaiki model status order dan berhenti menganggap setiap limit yang tersentuh sebagai fill, perbandingan dengan paper menjadi kurang mengesankan, tetapi lebih berguna.
Itulah standar praktis untuk keselarasan: setiap perbedaan bermakna antara perilaku simulasi dan paper memiliki penyebab yang tercatat, dan backtest tidak mengklaim kepastian yang tidak dapat diberikan oleh datanya.
← Semua artikel


