Jebakan overfitting
Jika Anda memberi model machine learning cukup banyak parameter, ia akan menemukan pola dalam noise acak. Hal yang sama terjadi pada pengembangan strategi trading, hanya saja kurang kentara. Strategi dengan 12 parameter yang dapat disesuaikan, ambang masuk, ambang keluar, periode lookback, filter volume, filter waktu hari, dan seterusnya, memiliki cukup derajat kebebasan untuk memuat data historis hampir sempurna. Masalahnya adalah parameter yang dipasangkan tersebut menangkap noise spesifik untuk periode historis, bukan hubungan pasar yang tahan lama.
Anda dapat menguji ini secara langsung. Ambil strategi apa pun yang terlihat hebat di backtest dan geser parameter sebesar 10-20%. Jika kinerjanya runtuh, strategi itu overfit. Strategi yang tangguh seharusnya memburuk secara bertahap dengan perubahan parameter, bukan jatuh dari tebing. Bentuk tebing memberi tahu Anda bahwa strategi menemukan kantong sempit data historis yang kebetulan bekerja, bukan edge struktural yang luas.
Bias survivorship dalam data
Sebagian besar backtesting kripto dilakukan pada aset yang saat ini ada dan diperdagangkan secara aktif. Tetapi sejumlah besar token telah diciptakan, diperdagangkan untuk beberapa periode, dan kemudian secara efektif mati, kehilangan 99%+ nilainya atau di-delisting. Ketika Anda backtest strategi pada "50 token teratas berdasarkan kapitalisasi pasar," Anda memilih token yang selamat. Strategi Anda tidak pernah bertemu dengan yang jatuh ke nol.
Ini penting karena banyak strategi momentum terlihat luar biasa di backtest. Beli yang naik, jual yang turun. Tetapi dalam dataset yang bias survivorship, hal-hal yang naik termasuk para penyintas masa depan, dan hal-hal yang turun dan akhirnya jatuh ke nol dikecualikan dari dataset. Alpha strategi sebagian atau seluruhnya merupakan artefak dari pemilihan data.
Solusinya adalah data bebas bias survivorship, yang mencakup aset yang di-delisting dan token mati. Data ini lebih sulit didapat dan lebih mahal, tetapi memberi Anda hasil backtest yang jauh lebih realistis.
Slippage dan dampak pasar
Backtest biasanya mengasumsikan Anda dapat mengeksekusi pada harga yang terlihat saat sinyal muncul. Dalam praktiknya, tindakan trading menggerakkan harga. Jika strategi Anda menghasilkan sinyal beli pada $100, pada saat order Anda mencapai bursa dan terisi, Anda mungkin membayar $100,15. Pada satu perdagangan, itu sepele. Selama ribuan perdagangan, itulah perbedaan antara strategi yang menguntungkan dan yang merugi.
Masalah slippage lebih buruk untuk strategi yang trading selama periode volatile (kapan Anda ingin trading adalah persis ketika likuiditas menipis) dan untuk strategi yang trading aset kurang likuid. Strategi yang terlihat hebat dalam backtest pada DOGE/USD dengan asumsi slippage nol mungkin secara fisik tidak mungkin dieksekusi pada harga tersebut karena order book tidak dapat menyerap ukuran posisi tanpa menggerakkan harga secara signifikan.
Pemodelan slippage yang realistis memerlukan data order book yang sebenarnya, bukan hanya kandel OHLCV. Jika Anda backtesting dengan data kandel dan mengasumsikan eksekusi pada harga close, Anda terlalu optimistis dengan margin yang sering melebihi seluruh edge strategi.
Perubahan rezim
Pasar berubah. Rezim volatilitas bergeser, korelasi pecah, partisipan baru masuk, regulasi berubah, dan latar makroekonomi berkembang. Strategi yang dikalibrasi untuk pasar bull 2020-2021, dengan suku bunga rendah dan arus masuk ritel masif, akan berperilaku berbeda dalam lingkungan suku bunga lebih tinggi dengan komposisi partisipan yang berbeda.
Yang halus adalah perubahan rezim hanya jelas dalam tinjauan ke belakang. Anda tidak dapat tahu sebelumnya kapan struktur pasar yang strategi Anda andalkan akan bergeser. Yang dapat Anda lakukan adalah menguji strategi Anda di beberapa rezim jika datanya tersedia, dan Anda dapat memantau kinerja real-time strategi terhadap kinerja yang diharapkan untuk mendeteksi ketika ada sesuatu yang berubah.
Bias look-ahead
Ini adalah bug paling jahat dalam kode backtesting. Bias look-ahead terjadi ketika strategi Anda secara tidak sengaja menggunakan informasi yang seharusnya tidak tersedia pada saat perdagangan. Contoh umum: menggunakan harga close harian untuk membuat keputusan saat market open, menggunakan indikator yang direvisi setelah publikasi awal, atau menggunakan data yang tiba dengan keterlambatan (seperti data cadangan bursa yang mungkin memiliki keterlambatan pelaporan 1 jam).
Dalam kode, bias look-ahead sering muncul sebagai kesalahan off-by-one dalam pengindeksan. Jika sinyal Anda pada waktu t menggunakan data dari indeks t alih-alih t-1, Anda melihat ke depan. Ini mudah diperkenalkan dan sulit ditangkap dengan inspeksi. Pertahanan terbaik adalah menjalankan mesin backtest Anda dalam mode event-driven yang ketat, di mana strategi hanya pernah melihat data yang telah "diterbitkan" sesuai dengan timestamp realistis.
Apa yang bertahan dalam transisi ke live
Strategi yang cenderung bekerja dalam trading langsung memiliki sifat-sifat tertentu. Mereka memiliki sedikit parameter. Mereka didasarkan pada rasional ekonomi yang jelas, bukan hanya pola dalam data. Mereka memburuk dengan anggun ketika parameter berubah. Mereka telah diuji di beberapa periode waktu dan kondisi pasar. Dan mereka memperhitungkan biaya eksekusi yang realistis.
Tidak satu pun dari ini menjamin sukses, tetapi menggeser peluang. Hasil default, bahwa strategi yang di-backtest gagal dalam trading langsung, adalah base rate yang Anda coba kalahkan. Memahami secara persis mengapa strategi gagal memberi Anda cara sistematis untuk menguji-stres pekerjaan Anda sebelum Anda menempatkan modal nyata pada risiko.