Apa itu backtesting (dan apa yang bukan)
Backtesting adalah proses menerapkan aturan trading atau kerangka keputusan yang telah ditentukan sebelumnya ke data pasar historis untuk melihat bagaimana kinerjanya mungkin terjadi. Kata kuncinya adalah predefined: backtest hanya bermakna jika logika, input, dan metode perhitungan ditetapkan sebelum Anda menjalankannya.
Backtest bukan jaminan hasil di masa depan. Hubungan historis bisa berubah, dan hasil Anda hanya seterealistis asumsi Anda tentang eksekusi dan kondisi trading. Jika tujuan Anda adalah belajar, anggap backtesting sebagai latihan pengukuran: Anda menguji hipotesis tertentu di bawah kondisi pemodelan tertentu.
Kesalahan umum dan mengapa itu penting
-
Tidak memisahkan asumsi dari hasil Kesalahpahaman yang sering terjadi adalah menganggap hasil backtest sebagai kebenaran pasar. Dalam praktiknya, hasil bergantung pada asumsi Anda: bagaimana fill dimodelkan, bagaimana spread dan komisi ditangani, serta bagaimana order dieksekusi. Jika Anda tidak menyatakan asumsi-asumsi ini, dua orang bisa menjalankan “ide” yang “sama” dan mendapatkan hasil yang berbeda.
-
Overfitting dan perburuan parameter Overfitting terjadi ketika aturan disetel terlalu ketat pada data masa lalu sehingga menangkap noise, bukan perilaku yang bisa diulang. Salah satu tandanya adalah hasil yang membaik berulang kali pada dataset yang sama tetapi kehilangan performa di tempat lain. Bahkan tanpa “cheating,” penyempurnaan iteratif yang dipandu oleh backtest dapat mengubah proses menjadi curve-fitting.
-
Cherry-picking periode waktu Kesalahan lain adalah menguji hanya pada sejarah yang menguntungkan. Kadang ini tidak sengaja (misalnya, menggunakan periode yang kebetulan cocok dengan rezim tertentu). Konsekuensinya adalah backtest yang mungkin terlihat meyakinkan, tetapi itu mencerminkan efek seleksi, bukan efek yang berlaku secara luas.
-
Menggunakan model eksekusi yang tidak realistis Banyak backtest menyederhanakan fill: mereka mungkin mengasumsikan eksekusi sempurna pada harga ideal, mengabaikan latency, atau memperlakukan slippage sebagai konstan padahal tidak. Ini bisa membuat hasil terlihat lebih kuat daripada yang seharusnya di bawah batasan dunia nyata. Bahkan jika logikanya benar, pengukuran performa bisa meleset.
-
Mengabaikan biaya dan kendala praktis Biaya mencakup komisi, spread, dan biaya trading konsisten lainnya. Kendala mencakup batasan pada penempatan order dan apakah aturan tersebut benar-benar dapat menghasilkan posisi pada waktu yang diasumsikan oleh backtest. Jika hal-hal ini dihilangkan atau diperkirakan secara longgar, return bisa dilebih-lebihkan.
-
Mengacaukan hasil seperti korelasi dengan kualitas keputusan Backtesting dapat menghasilkan hasil yang terlihat menarik karena dataset, bukan karena aturan. Misalnya, aturan yang memicu pada rezim tren mungkin tampil baik di dalam sampel tetapi gagal ketika kondisi berubah. Mode kegagalan yang umum adalah mengira “hasil yang bagus” sebagai “proses keputusan yang stabil.”
Keterbatasan dan risiko yang sebaiknya Anda harapkan
Keterbatasan terbesar adalah backtesting adalah model dari realitas, bukan realitas itu sendiri. Eksekusi, likuiditas, dan market microstructure bisa berbeda di berbagai waktu dan lingkungan. Selain itu, data historis mungkin tidak lengkap atau tidak konsisten (misalnya, ada perilaku intraday tertentu yang hilang), yang dapat mendistorsi pengukuran.
Keterbatasan kedua adalah metrik performa bergantung pada desain pengujian. Mengubah frekuensi data, perhitungan return, urutan operasi, atau cara trade disejajarkan dapat mengubah hasil. Karena itu, meskipun kode backtest Anda benar, kesimpulannya mungkin tidak robust.
Terakhir, hasil bisa bervariasi dengan kondisi pasar yang spesifik dan dengan bagaimana biaya serta eksekusi direpresentasikan. Karena itu, satu backtest sebaiknya jarang diperlakukan sebagai jawaban final.
Cek verifikasi (netral dan mandiri)
Gunakan cek netral untuk memastikan apakah hasil backtest robust atau hanya kebetulan.
- Nyatakan asumsi secara eksplisit: dokumentasikan bagaimana Anda memodelkan spread, slippage, komisi, dan eksekusi order.
- Jaga parameter tetap untuk evaluasi: hanya tune pada fase terpisah, lalu evaluasi tanpa perubahan lebih lanjut.
- Uji di berbagai segmen waktu: bandingkan performa pada rezim historis yang berbeda.
- Jalankan stress test pada biaya dan eksekusi: variasikan asumsi slippage dalam rentang yang masuk akal untuk melihat apakah kesimpulannya berubah.
- Gunakan evaluasi out-of-sample atau holdout: pastikan peningkatan tidak hanya ada pada data yang digunakan untuk menyusun aturan.
Jika cek ini menunjukkan instabilitas yang besar, itu adalah hasil yang berharga: ini mengindikasikan logika strategi mungkin sensitif terhadap pilihan pemodelan atau kondisi pasar. “Kegagalan” tersebut adalah informasi tentang robustness, bukan jalan buntu.
DOCUMENT END