Dalam artikel pertama tentang backtesting yang sukses kami membahas bias statistik dan perilaku yang mempengaruhi kinerja backtest kami. Kami juga membahas paket perangkat lunak untuk backtesting, termasuk Excel, MATLAB, Python, R dan C ++. Dalam artikel ini kami akan membahas cara memasukkan biaya transaksi, serta keputusan tertentu yang perlu dibuat ketika membuat mesin backtest, seperti jenis pesanan dan frekuensi data.
Salah satu kesalahan pemula yang paling umum ketika menerapkan model perdagangan adalah mengabaikan (atau sangat meremehkan) efek biaya transaksi pada strategi. Meskipun sering diasumsikan bahwa biaya transaksi hanya mencerminkan komisi broker, sebenarnya ada banyak cara lain yang biaya dapat ditumpuk pada model perdagangan. Tiga jenis biaya utama yang harus dipertimbangkan meliputi:
Bentuk biaya transaksi yang paling langsung yang dikeluarkan oleh strategi perdagangan algoritmik adalah komisi dan biaya. Semua strategi memerlukan beberapa bentuk akses ke bursa, baik secara langsung atau melalui perantara pialang (
Broker umumnya menyediakan banyak layanan, meskipun algoritma kuantitatif hanya benar-benar menggunakan infrastruktur bursa. Oleh karena itu komisi broker seringkali kecil per perdagangan. Broker juga mengenakan biaya, yang merupakan biaya yang dikeluarkan untuk membersihkan dan menyelesaikan perdagangan. Selain itu adalah pajak yang dikenakan oleh pemerintah regional atau nasional.
Slippage adalah perbedaan harga yang dicapai antara waktu ketika sistem perdagangan memutuskan untuk bertransaksi dan waktu ketika transaksi sebenarnya dilakukan di bursa. Slippage adalah komponen yang cukup besar dari biaya transaksi dan dapat membuat perbedaan antara strategi yang sangat menguntungkan dan yang berkinerja buruk. Slippage adalah fungsi dari volatilitas aset yang mendasari, latensi antara sistem perdagangan dan bursa dan jenis strategi yang sedang dilakukan.
Instrumen dengan volatilitas yang lebih tinggi lebih cenderung bergerak dan harga antara sinyal dan eksekusi dapat berbeda secara substansial. Latency didefinisikan sebagai perbedaan waktu antara generasi sinyal dan titik eksekusi. Strategi frekuensi yang lebih tinggi lebih sensitif terhadap masalah latensi dan peningkatan milidetik pada latensi ini dapat membuat semua perbedaan terhadap profitabilitas. Jenis strategi juga penting. Sistem momentum menderita lebih banyak dari slippage rata-rata karena mereka mencoba membeli instrumen yang sudah bergerak dalam arah prediksi. Sebaliknya berlaku untuk strategi mean-reversing karena strategi ini bergerak ke arah yang bertentangan dengan perdagangan.
Dampak pasar adalah biaya yang dikeluarkan oleh para pedagang karena dinamika penawaran / permintaan dari bursa (dan aset) yang mereka coba untuk berdagang. Pemesanan besar pada aset yang relatif tidak likuid kemungkinan akan menggerakkan pasar secara substansial karena perdagangan akan perlu mengakses komponen besar dari pasokan saat ini. Untuk mengatasi ini, perdagangan blok besar dipecah menjadi
Aktif yang lebih tidak likuid ditandai dengan spread yang lebih besar, yang merupakan perbedaan antara harga penawaran saat ini dan harga permintaan pada buku pesanan batas. Spread ini adalah biaya transaksi tambahan yang terkait dengan setiap perdagangan. Spread adalah komponen yang sangat penting dari total biaya transaksi - seperti yang dibuktikan oleh segudang perusahaan taruhan spread di Inggris yang kampanye periklanan mereka mengekspresikan
Untuk berhasil memodelkan biaya di atas dalam sistem backtesting, berbagai tingkat model transaksi yang kompleks telah diperkenalkan. Mereka berkisar dari pemodelan datar sederhana hingga pendekatan kuadrat non-linier.
Biaya transaksi rata adalah bentuk paling sederhana dari pemodelan biaya transaksi. Mereka mengasumsikan biaya tetap yang terkait dengan setiap perdagangan. Oleh karena itu mereka terbaik mewakili konsep komisi dan biaya pialang. Mereka tidak sangat akurat untuk pemodelan perilaku yang lebih kompleks seperti slippage atau dampak pasar. Bahkan, mereka tidak mempertimbangkan volatilitas atau likuiditas aset sama sekali. Manfaat utama mereka adalah bahwa mereka secara komputasi mudah diterapkan. Namun mereka cenderung secara signifikan di bawah atau melebihi perkiraan biaya transaksi tergantung pada strategi yang digunakan. Oleh karena itu mereka jarang digunakan dalam praktek.
Model biaya transaksi yang lebih maju dimulai dengan model linier, dilanjutkan dengan model linier berdasarkan potongan dan disimpulkan dengan model kuadrat. Mereka berada pada spektrum yang paling sedikit hingga paling akurat, meskipun dengan upaya implementasi paling sedikit hingga terbesar. Karena slippage dan dampak pasar secara inheren adalah fenomena non-linier, fungsi kuadrat adalah yang paling akurat dalam memodelkan dinamika ini. Model biaya transaksi kuadrat jauh lebih sulit untuk diimplementasikan dan dapat memakan waktu lebih lama untuk dihitung daripada model datar atau linier yang lebih sederhana, tetapi sering digunakan dalam praktek.
Pedagang algoritmik juga mencoba untuk menggunakan biaya transaksi historis yang sebenarnya untuk strategi mereka sebagai masukan ke model transaksi saat ini untuk membuat mereka lebih akurat. Ini adalah bisnis yang rumit dan sering berbatasan dengan bidang-bidang yang rumit dari pemodelan volatilitas, slippage dan dampak pasar. Namun, jika strategi perdagangan bertransaksi volume besar dalam jangka waktu singkat, maka perkiraan akurat biaya transaksi yang dikeluarkan dapat memiliki efek yang signifikan pada garis bawah strategi dan oleh karena itu layak usaha untuk berinvestasi dalam meneliti model ini.
Sementara biaya transaksi adalah aspek yang sangat penting dari implementasi backtesting yang sukses, ada banyak masalah lain yang dapat mempengaruhi kinerja strategi.
Salah satu pilihan yang harus dilakukan trader algoritmik adalah bagaimana dan kapan menggunakan berbagai pesanan pertukaran yang tersedia. Pilihan ini biasanya termasuk dalam ranah sistem eksekusi, tetapi kami akan mempertimbangkannya di sini karena dapat sangat mempengaruhi kinerja backtest strategi. Ada dua jenis order yang dapat dilakukan: pesanan pasar dan pesanan batas.
Perintah pasar mengeksekusi perdagangan segera, terlepas dari harga yang tersedia. Dengan demikian perdagangan besar yang dieksekusi sebagai pesanan pasar sering akan mendapatkan campuran harga karena setiap pesanan batas berikutnya di sisi lawan dipenuhi.
Limit order menyediakan mekanisme bagi strategi untuk menentukan harga terburuk di mana perdagangan akan dieksekusi, dengan peringatan bahwa perdagangan mungkin tidak diisi sebagian atau sepenuhnya.
Ketika melakukan backtesting, sangat penting untuk memodelkan efek dari penggunaan pasar atau limit order dengan benar. Terutama untuk strategi frekuensi tinggi, backtest dapat secara signifikan melampaui perdagangan langsung jika efek dari dampak pasar dan buku order limit tidak dimodelkan dengan akurat.
Ada masalah khusus yang terkait dengan strategi backtesting ketika menggunakan data harian dalam bentuk angka Open-High-Low-Close (OHLC), terutama untuk ekuitas. Perhatikan bahwa ini adalah bentuk data yang diberikan oleh Yahoo Finance, yang merupakan sumber data yang sangat umum untuk pedagang algoritma ritel!
Set data yang murah atau gratis, sementara menderita bias kelangsungan hidup (yang telah kita bahas di Bagian I), juga sering kali merupakan umpan harga komposit dari beberapa bursa. Ini berarti bahwa titik ekstrem (yaitu terbuka, dekat, tinggi dan rendah) dari data sangat rentan terhadap nilai
Ini berarti bahwa jika strategi perdagangan Anda secara khusus menggunakan salah satu titik OHLC secara luas, kinerja backtest dapat berbeda dari kinerja langsung karena pesanan mungkin diarahkan ke bursa yang berbeda tergantung pada broker Anda dan akses Anda yang tersedia ke likuiditas.
Dalam beberapa artikel berikutnya kita akan mempertimbangkan pengukuran kinerja backtest, serta contoh nyata dari algoritma backtesting, dengan banyak efek di atas termasuk.