597 / 736BT

Backtesting

Pengujian historis strategi

Backtesting menguji aturan perdagangan dengan data masa lalu. Cara ini membantu menemukan kesalahan dan biaya, tetapi laba historis saja tidak membuktikan strategi akan terus berhasil.

Backtesting adalah simulasi hasil aturan perdagangan yang ditetapkan sebelumnya pada data historis, dengan model pelaksanaan transaksi dan biaya tertentu.

Peter melihat bahwa hari kenaikan terkadang disusul kenaikan lagi. Alih-alih membeli berdasarkan firasat, ia menuliskan aturan dan menerapkannya pada harga lama. Itulah Backtesting: menguji gagasan pada masa lalu. Hasilnya menggambarkan model yang dipilih, bukan uang yang benar-benar diperoleh Peter. Bailey et al. menjelaskan mengapa hasil historis yang menarik perlu dibedakan dari validasi strategi yang dapat diandalkan. [1]

Peter hanya boleh memakai informasi yang tersedia sebelum transaksi. Jika aturan memakai harga penutupan hari itu, ia tidak bisa membeli pada pagi harinya berdasarkan harga tersebut. QuantConnect menyebut kesalahan ini Look-ahead Bias: informasi masa depan masuk ke keputusan masa lalu. Untuk data yang dipublikasikan, waktu penerbitanlah yang penting, bukan hanya periode yang dijelaskan; revisi kemudian juga belum diketahui. Karena itu contoh kami memakai penutupan sebelumnya yang telah selesai dan harga pembukaan berikutnya. [2]

Memilih hanya pasar atau perusahaan yang masih bertahan hingga kini menimbulkan distorsi lain. QuantConnect menyebutnya Survivorship Bias dan menjelaskannya melalui penggunaan anggota indeks saat ini untuk menguji masa lalu. Data Bitcoin juga bergantung pada bursa, gangguan layanan, dan cara harga disusun. Harga dari satu layanan belum tentu dapat diperoleh di tempat lain. Catatan salah boleh diperbaiki dengan jejak perubahan; menghapus kejatuhan yang tidak menyenangkan justru mengubah pertanyaan penelitian. [2]

Program harus menentukan kapan pesanan terisi, pada harga berapa, dan sebanyak apa. Model pengisian pesanan yang dijelaskan QuantConnect menjalankan fungsi ini. Grafik menyentuh suatu harga tidak membuktikan seluruh pesanan bisa dipenuhi di sana. Pesanan nyata dapat terisi sebagian; model bawaan platform ini mengasumsikan pengisian penuh dalam backtest. Usia harga dan likuiditas—kemungkinan menemukan pihak lawan transaksi—juga perlu diperiksa. [3]

Slippage adalah selisih antara harga pelaksanaan yang diharapkan dan yang diperoleh; selisih itu bisa menguntungkan atau merugikan. QuantConnect menjelaskan cara memodelkannya. Biaya transaksi, pendanaan jika berlaku, dan biaya strategi lainnya juga harus dihitung. Biaya yang sudah masuk dalam harga jangan dikurangi lagi. Slippage nol merupakan asumsi, bukan temuan tentang pasar nyata. Mengulang tes dengan pelaksanaan lebih buruk dan biaya lebih tinggi membantu menilai apakah kesimpulannya bertahan. [4]

Jika Peter menyesuaikan aturan dengan data yang dipakai untuk menilai keberhasilan, ia menghadapi ujian yang jawabannya sudah diketahui. Ia perlu menentukan dahulu data lebih awal untuk pengembangan dan data sesudahnya untuk validasi. TimeSeriesSplit dari scikit-learn membantu menjaga urutan tersebut. Namun alat ini sendiri tidak mencegah kebocoran informasi saat penyiapan data, periode sasaran yang tumpang tindih, atau penyetelan berulang. Mengubah aturan setelah melihat validasi berarti data itu juga dipakai dalam pengembangan. [5]

Di antara banyak pengaturan, salah satunya bisa terlihat sangat bagus secara kebetulan. Menampilkan pemenang saja menyembunyikan jumlah percobaan. Bailey et al. membahas Backtest Overfitting: menyesuaikan strategi dengan kekhasan suatu riwayat data. Catat parameter, periode, dan pasar yang dicoba, bukan hanya kurva terbaik. Para penulis mengusulkan prosedur khusus untuk memperkirakan kemungkinan masalah tersebut; pembagian data sederhana bukan penggantinya. Contoh kami tidak menghitung perkiraan itu. [1]

Laporan yang jujur memungkinkan penelusuran data, versi aturan, transaksi, biaya, dan periode rugi. Strategi pembanding perlu dinilai dengan asumsi sebanding. NFA di AS juga menyoroti keuntungan mengetahui masa lalu dan ketiadaan pengalaman kehilangan uang nyata dalam hasil hipotetis; aturan promosinya berlaku bagi anggota tertentu. Backtest membantu menolak atau meneliti gagasan lebih lanjut. Bahkan hitungan benar tidak membuktikan gagasan akan bekerja di pasar berbeda atau perdagangan nyata. [6]

ContohCONTOH · BT

Aturan yang dapat diperiksa dengan tangan

Gunakan contoh rekaan kami dengan periode A, B, C, dan D yang sama panjang. Modal awal berupa kas 1000 USD, tanpa posisi terbuka, utang, setoran, atau penarikan. Dua harga penutupan sebelum A adalah [100, 100] USD/BTC. Harga pembukaan A hingga D adalah [101, 103, 102, 105] USD/BTC dan penutupannya [102, 101, 104, 103] USD/BTC. Aturan membeli 1 BTC pada awal periode hanya jika penutupan terakhir yang sudah selesai lebih tinggi daripada penutupan sebelumnya, lalu menjual seluruh posisi pada akhir periode yang sama. Sinyalnya adalah [0, 1, 0, 1]: 1 berarti bertransaksi dan 0 berarti tidak. Kami mengasumsikan pengisian penuh tepat pada harga itu, tanpa spread maupun Slippage, dan hanya satu biaya: 0.1 USD untuk setiap pembelian dan penjualan. Di B kami membeli seharga 103 USD dan menjual seharga 101 USD; di D membeli seharga 105 USD dan menjual seharga 103 USD. Hasil kotor setiap periode adalah [0, -2, 0, -2] USD. Empat pembelian dan penjualan yang terlaksana memerlukan total biaya 0.4 USD, sehingga hasil bersihnya [0, -2.2, 0, -2.2] USD. Total hasil kotor adalah -4 USD, hasil bersih -4.4 USD, dan kas akhir 995.6 USD. Grafik memperlihatkan kontribusi bersih setiap periode, bukan saldo rekening atau peluang memperoleh laba. Contoh ini memeriksa urutan informasi dan pembukuan; tidak memakai data pasar nyata, tidak mengoptimalkan pengaturan, dan tidak meramalkan apa pun.

Untuk gambaran yang lebih utuh, baca entri ini bersama Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. Entri ini juga dirujuk dari Technical analysis, OHLCV, Timeframe, Candlestick chart.

01Apakah backtest yang untung berarti saya bisa memperoleh laba dengan strategi itu?

Ia menunjukkan laba hanya pada data historis terpilih dengan asumsi tertentu. Periksa ketersediaan informasi, pelaksanaan, biaya, dan banyaknya variasi sebelum hasil tersebut. Bahkan validasi historis independen tidak menjamin hasil masa depan.

02Bisakah semua biaya dikurangi pada akhir saja?

Hanya jika sesuai dengan model dan biaya selama proses tidak akan mengubah dana tersedia atau keputusan. Biasanya biaya dicatat pada transaksi terkait. Pelaksanaan dan biaya harus dihitung tanpa ada yang terlewat atau dihitung dua kali.

DOC · 001Bailey et al. — The Probability of Backtest OverfittingSumber primer DOC · 002QuantConnect — Research GuideDokumentasi DOC · 003QuantConnect — Trade Fills: Key ConceptsDokumentasi DOC · 004QuantConnect — Slippage: Key ConceptsDokumentasi DOC · 005scikit-learn — TimeSeriesSplitDokumentasi DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance ResultsDokumentasi
Direvisi: Utamakan sumber · Bukan nasihat investasi