Praktik backtesting dalam istilah sederhana
Praktik backtesting adalah proses mengevaluasi sebuah ide trading (misalnya, aturan berbasis entry dan exit) dengan menjalankannya pada data harga historis. Tujuannya adalah 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 aksi dari data tersebut, dan (3) cara untuk menghitung hasil seperti profit dan loss, drawdown, serta 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 trade (misalnya, komisi, spread, dan apakah order terisi).
Mengapa backtesting bisa kurang berguna daripada yang terlihat
Keterbatasan utama adalah backtest merupakan simulasi masa lalu, bukan pengamatan terhadap masa depan. Bahkan ketika hasil historis terlihat kuat, hubungan yang dipelajari dari sejarah mungkin tidak terulang pada kondisi pasar yang baru. Keterbatasan di bawah ini menjelaskan mode kegagalan yang umum.
1) Kesenjangan data historis dan microstructure pasar
Kebanyakan backtest menggunakan bar harga atau tick yang tercatat, tetapi trading nyata melibatkan detail yang lebih banyak daripada yang ditangkap oleh banyak kumpulan data. Jika data historis Anda tidak lengkap, disesuaikan dengan cara yang mengubah makna harga, atau tidak memiliki informasi yang diperlukan untuk memodelkan pengisian order, backtest bisa menyimpang dari apa yang akan terjadi pada trading langsung.
Selain itu, pemetaan dari harga yang tercatat ke kemungkinan pengisian order bersifat tidak pasti. Misalnya, jika sebuah aturan mengasumsikan pengisian pada level harga tertentu, tetapi pasar sebenarnya bisa telah bergerak melewati level itu sebelum order dapat dieksekusi, maka simulasi menjadi terlalu optimistis.
2) Asumsi biaya, kualitas eksekusi, dan slippage
Meskipun logika strategi sudah benar, hasil sangat bergantung pada asumsi tentang biaya transaksi dan eksekusi. Backtest kadang 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 seiring volatilitas dan waktu dalam sehari.
Karena perbedaan biaya yang kecil dapat berakumulasi selama banyak trade, backtest yang mengabaikan atau meremehkan efek-efek ini dapat melebihkan kinerja.
3) Overfitting dan data-snooping
Backtesting dapat tanpa sengaja “menyesuaikan” noise dari kumpulan data tertentu. Ini terjadi ketika banyak parameter dicoba dan dipilih karena meningkatkan hasil pada 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, bukan sifat umum dari pasar.
Masalah terkait adalah data-snooping: menguji berulang banyak variasi sampai satu variasi terlihat berkinerja baik. Tanpa pemisahan yang cermat antara periode pelatihan dan pengujian, hasil kuat di masa lalu mungkin tidak mencerminkan mekanisme yang dapat diulang.
4) Pasar yang tidak stasioner dan kondisi yang berubah
Pasar bukan sistem yang stabil. Rezim volatilitas berubah, partisipasi bergeser, dan likuiditas dapat berpindah. Sebuah aturan yang bekerja pada satu lingkungan mungkin berperilaku berbeda ketika spread, volatilitas, atau korelasi berubah.
Bahkan tanpa peristiwa regulatori atau struktural, sifat statistik dari deret harga dapat bergeser. Artinya, asumsi yang secara implisit “tertanam” selama periode yang Anda uji mungkin tidak lagi berlaku.
5) Definisi yang ambigu tentang apa yang sebenarnya sedang diuji
Backtest bisa sulit dibandingkan karena input dan aturan berbeda. Untuk setiap contoh, Anda seharusnya 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 entry dan exit diputuskan serta bagaimana pengisian order dimodelkan.
Jika detail-detail ini tidak jelas, backtest mungkin tidak menguji ide yang dimaksud; sebaliknya, backtest bisa menguji artefak dari implementasi yang dipilih.
Verifikasi yang dapat meningkatkan keandalan
Anda tidak bisa membuat backtest “membuktikan” bahwa sebuah strategi akan berhasil, tetapi Anda bisa memeriksa apakah hasilnya kemungkinan besar bersifat robust.
Pendekatan verifikasi yang praktis adalah mendefinisikan asumsi secara eksplisit dan menguji sensitivitas. Misalnya, ubah 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.
DOCUMENT END