Keterbatasan Praktik Backtesting
Praktik backtesting dalam istilah sederhana
Praktik backtesting adalah proses mengevaluasi sebuah ide trading (misalnya, aturan masuk dan keluar berbasis aturan) dengan menjalankannya pada data harga historis. Tujuannya adalah untuk memperkirakan apa yang mungkin dihasilkan ide tersebut di masa lalu jika aturan yang sama diikuti.
Sebuah backtest biasanya mencakup (1) data historis, (2) aturan atau model yang menghasilkan tindakan dari data tersebut, dan (3) cara untuk menghitung hasil seperti laba rugi, penarikan (drawdown), dan frekuensi menang/kalah. Perhitungan ini bergantung pada asumsi tentang apa yang terjadi di dalam setiap periode waktu (misalnya, bagaimana harga bergerak di antara titik data yang tercatat) dan tentang eksekusi trading (misalnya, komisi, spread, dan apakah order terisi).
Mengapa backtesting bisa kurang berguna daripada yang terlihat
Keterbatasan utamanya adalah bahwa backtest adalah simulasi masa lalu, bukan pengamatan masa depan. Bahkan ketika hasil historis terlihat kuat, hubungan yang dipelajari dari sejarah mungkin tidak terulang di bawah kondisi pasar baru. Keterbatasan di bawah ini menjelaskan mode kegagalan yang umum.
1) Data historis dan kesenjangan struktur mikro pasar
Sebagian besar backtest menggunakan bar harga atau tick yang tercatat, tetapi trading nyata melibatkan lebih banyak detail daripada yang dapat ditangkap oleh banyak kumpulan data. Jika data historis Anda tidak lengkap, disesuaikan dengan cara yang mengubah makna harga, atau kekurangan informasi yang diperlukan untuk memodelkan pengisian order, backtest dapat menyimpang dari apa yang akan terjadi dalam trading langsung.
Selain itu, pemetaan dari harga tercatat ke kemungkinan pengisian order (fill) tidak pasti. Misalnya, jika sebuah aturan mengasumsikan pengisian pada level harga tertentu, tetapi pasar nyata bisa saja bergerak melewati level tersebut sebelum order dapat dieksekusi, simulasi menjadi terlalu optimistis.
2) Biaya, kualitas eksekusi, dan asumsi selip (slippage)
Bahkan jika logika strategi benar, hasil sangat bergantung pada asumsi tentang biaya transaksi dan eksekusi. Backtest terkadang menggunakan model biaya yang disederhanakan (misalnya, spread konstan atau tanpa slippage) atau mengasumsikan pengisian order yang sempurna. Dalam praktiknya, spread melebar, likuiditas berubah, dan slippage dapat bervariasi dengan volatilitas dan waktu dalam sehari.
Karena perbedaan biaya kecil dapat terakumulasi (compound) selama banyak trading, backtest yang mengabaikan atau meremehkan efek-efek ini dapat melebih-lebihkan kinerja.
3) Overfitting dan pengintaian data (data-snooping)
Backtesting secara tidak sengaja dapat “menyesuaikan” noise dari kumpulan data tertentu. Ini terjadi ketika banyak parameter dicoba dan dipilih karena memperbaiki hasil masa lalu. Semakin banyak Anda mencari kombinasi yang terlihat bagus pada data yang sama, semakin besar kemungkinan bahwa keunggulan yang tampak tersebut spesifik untuk periode itu daripada properti umum pasar.
Masalah terkait adalah data-snooping: menguji banyak varian secara berulang sampai satu tampak berkinerja baik. Tanpa pemisahan yang cermat antara periode pelatihan dan pengujian, hasil masa lalu yang kuat mungkin tidak mencerminkan mekanisme yang dapat diulang.
4) Pasar yang tidak stasioner dan kondisi yang berubah
Pasar bukanlah sistem yang stabil. Rezim volatilitas berubah, partisipasi bergeser, dan likuiditas dapat berpindah. Aturan yang berhasil selama satu lingkungan mungkin berperilaku berbeda ketika spread, volatilitas, atau korelasi berubah.
Bahkan tanpa peristiwa regulasi atau struktural, sifat statistik dari deret harga dapat bergeser (drift). Itu berarti asumsi yang secara implisit “tertanam” selama periode yang Anda uji mungkin tidak lagi berlaku.
5) Definisi yang ambigu tentang apa yang sebenarnya diuji
Backtest bisa sulit dibandingkan karena input dan aturannya berbeda. Untuk contoh apa pun, Anda harus dapat menyatakan:
- Frekuensi data apa yang digunakan (misalnya, bar vs. tick).
- Bagaimana indikator atau fitur dihitung dan apakah hanya menggunakan informasi yang tersedia pada saat itu.
- Bagaimana entri dan keluar diputuskan dan bagaimana pengisian order dimodelkan.
Jika salah satu dari detail ini tidak jelas, backtest mungkin tidak menguji ide yang dimaksud; backtest tersebut mungkin malah menguji artefak dari implementasi yang dipilih.
Verifikasi yang dapat meningkatkan keandalan
Anda tidak dapat membuat backtest “membuktikan” bahwa sebuah strategi akan berhasil, tetapi Anda dapat memeriksa apakah hasilnya kemungkinan besar kuat (robust).
Pendekatan verifikasi yang praktis adalah mendefinisikan asumsi secara eksplisit dan menguji sensitivitasnya. Misalnya, variasikan parameter biaya dalam rentang yang wajar, atau gunakan periode historis yang berbeda dengan kondisi pasar yang berbeda. Secara terpisah, gunakan pengujian out-of-sample: evaluasi aturan pada data yang tidak digunakan untuk pemilihan parameter.