Backtesting adalah tempat yang paling berbeda antara perdagangan kuantitatif dan perdagangan tradisional. Menurut data pasar nyata yang telah terjadi dalam sejarah, sinyal strategi simulasi memicu dan mencocokkan transaksi dengan cepat, dan laporan kinerja dan data lainnya diperoleh untuk jangka waktu tertentu.
Dalam bab-bab sebelumnya, kami mempelajari dasar-dasar bahasa pemrograman arus utama, dan mengajarkan Anda bagaimana menggunakan dasar-dasar pemrograman ini untuk menulis beberapa strategi perdagangan sederhana. Bisa dikatakan bahwa jalan telah berjalan lebih dari setengah. Namun, setelah strategi ditulis, yang masih memiliki jarak yang jauh dari lingkungan pasar nyata. Ini juga membutuhkan backtesting
Dari perspektif logika perdagangan kuantitatif, strategi perdagangan sebenarnya didasarkan pada serangkaian kognisi dan asumsi pasar. Backtesting dapat menentukan apakah asumsi ini stabil atau tidak.
Selain itu, dari perspektif operasi perdagangan kuantitatif, back testing dapat membantu mendeteksi bug dalam logika strategi, seperti fungsi masa depan, slipping price, multi-degree fitting, dan sebagainya.
Memverifikasi keakuratan sinyal perdagangan.
Memverifikasi bahwa logika perdagangan dan ide-ide Anda layak.
Menemukan kekurangan dalam sistem perdagangan dan meningkatkan strategi asli.
Jadi, arti dari backtesting adalah melakukan proses trading yang sejujur mungkin, memverifikasi validitas data historis, menghindari kesalahan mahal untuk strategi yang salah, membantu kita menyaring, meningkatkan dan mengoptimalkan strategi trading.
Strategi perdagangan didasarkan pada data historis statis selama backtesting, tetapi data perdagangan nyata adalah dinamis. Misalnya: Jika harga tertinggi lebih besar dari harga penutupan kemarin, buka posisi panjang. Kondisi posisi terbuka ini di pasar nyata, jika garis K belum selesai, maka harga tertinggi adalah dinamis, sinyal perdagangan cenderung berkedip bolak-balik. Selama backtesting, mesin backtesting didasarkan pada data historis statis yang dapat disimulasikan dan disintesis.
Fungsi masa depan menggunakan harga masa depan, yang berarti bahwa kondisi saat ini dapat dimodifikasi di masa depan, dan fungsi masa depan yang sama juga dapat menyebabkan sinyal perdagangan tidak stabil, seperti indikator
Seperti yang ditunjukkan di bawah ini: Fungsi indikator zigzag menunjukkan titik balik puncak dan terowongan. Ini dapat menyesuaikan nilainya sendiri sesuai dengan harga real-time terbaru, tetapi jika harga saat ini berubah, hasil dari fungsi giliran zigzag juga akan berubah. Jika Anda menggunakan indikator ini dengan fungsi masa depan seperti itu, sinyal pesanan saat ini dapat diatur dan ditempatkan, tetapi sinyal ini mungkin tidak dapat diukur nanti.
Perilaku yang disebut
Ada juga kasus lain di mana jika kesenjangan harga melompat di atas harga tetap yang ditetapkan oleh strategi, dalam lingkungan backtesting, sinyal perdagangan akan terjadi dan dapat dilaksanakan; tetapi di pasar nyata, jelas tidak dapat dilaksanakan.
Jenis pertama: Di pasar nyata, beberapa bursa memiliki batas harian kenaikan harga maksimum dan pembatasan penurunan.
Kedua: mekanisme pencocokan order bursa, yaitu prioritas harga dan prioritas waktu. Beberapa varietas kedalaman order pasar seringkali akan memiliki sejumlah besar order yang menunggu eksekusi. Di pasar nyata, Anda harus menunggu order yang sebelum Anda menempatkan untuk dieksekusi, kadang-kadang order Anda tidak akan pernah dieksekusi. Tetapi di lingkungan backtesting, order yang sedang menunggu akan dieksekusi dengan harga apa pun tanpa menunggu.
Ketiga: Untuk strategi arbitrage, keuntungan backtesting biasanya sangat tinggi, karena setiap kali operasi backtesting telah diasumsikan telah meraih semua harga spread tersebut. Dalam keadaan nyata, sebagian besar harga tidak mungkin untuk dieksekusi, atau kadang-kadang hanya satu arah atau satu target perdagangan dari tindakan trading yang dieksekusi, secara umum, hampir pasti arah atau target trading yang kondusif akan dieksekusi terlebih dahulu, maka Anda harus segera mencoba untuk mengeksekusi arah atau variasi yang berlawanan dari pesanan strategi arbitrage. bahkan dengan periode penundaan yang singkat, spread dari peluang trading ini mungkin telah dikenakan biaya lebih dari 1 atau 2 poin harga, sementara seluruh strategi spread arbitrage hanya mendapat sangat sedikit poin harga keuntungan. situasi semacam ini sangat sulit untuk backtest di lingkungan simulasi. keuntungan nyata jauh dari hasil backtesting.
Empat: peristiwa
Setiap kali saya melihat gambar berikut, baik hati dan pikiran saya terhibur. gambar ini menunjukkan kepada kita makna yang benar, model konyol, cukup kompleks, sangat disesuaikan dengan data apa pun.
Untuk perdagangan kuantitatif, backtesting didasarkan pada data historis, tetapi sampel data historis terbatas. Jika ada terlalu banyak parameter strategi perdagangan, atau logika perdagangan terlalu rumit, strategi perdagangan akan terlalu beradaptasi dengan data historis.
Proses pemodelan strategi kuantitatif pada dasarnya adalah proses menemukan data non-acak lokal dari sejumlah besar data yang tampaknya acak.
Jadi jangan menipu diri sendiri. Jika Anda menemukan data kinerja yang buruk di luar sampel, jangan merasa kasihan atau tidak mau mengakui bahwa model tidak bekerja, dan terus mengoptimalkan sampai data sampel di luar juga berkinerja baik seperti di dalam. itu akhirnya akan melukai uang sungguhan Anda.
Wall Street memiliki lelucon populer: Misalkan ada 1.000 monyet di pasar yang berpartisipasi dalam investasi. Pada tahun pertama, 500 monyet hilang ke pasar. Setengah tahun kedua, ada 250 monyet yang tersisa. Pada akhir tahun ketiga, ada 125 monyet yang tersisa.
…
Pada tahun kesembilan, monyet terakhir yang tersisa. kemudian Anda melihatnya, semakin Anda melihatnya, semakin Anda merasa wajahnya akrab. akhirnya, Anda melihat sampul majalah keuangan dan berteriak "Hei, apakah itu Warren Buffett?
meskipun ini hanya lelucon, Anda masih bisa memetakan ke situasi dunia nyata. misalnya, jika ada 1000 manajer dana, setelah 10 tahun, sekitar 10 manajer dana akan lebih baik dari pasar selama 10 tahun berturut-turut. ini mungkin disebabkan oleh keberuntungan acak dan keputusan, keterampilan manajer dana ini tidak ada hubungannya dengan itu.
Seperti laporan backtest di bawah ini, kebanyakan investor akan memilih angka di sebelah kiri. yang memiliki kinerja yang sangat solid tanpa retracement yang signifikan.
tapi tolong tunggu, seperti yang ditunjukkan di sebelah kanan, yang merupakan situasi nyata. kurva di sebelah kiri hanya yang terbaik di antara banyak backtest ini. yaitu, ada banyak kinerja jauh lebih buruk daripada situasi kiri.
Dalam lingkungan perdagangan yang nyata, harga selalu berfluktuasi. ketika Anda optimis tentang peluang perdagangan, harga mungkin telah berubah pada saat menempatkan pesanan. jadi masalah slippage, baik dalam perdagangan subjektif atau dalam perdagangan kuantitatif, tidak dapat dihindari.
Tetapi backtesting didasarkan pada data statis, sulit untuk mensimulasikan lingkungan perdagangan nyata. Misalnya: harga order adalah 1050 untuk membeli, tetapi harga perdagangan aktual mungkin 1051. Ada banyak situasi untuk fenomena ini, seperti: vakum likuiditas dalam pergerakan harga ekstrim, keterlambatan jaringan, keterlambatan sistem perangkat keras dan perangkat lunak, keterlambatan respons server, dll.
Uji balik tanpa geser
Seperti yang ditunjukkan di atas, adalah laporan backtest tanpa slippage, kurva keuntungan terlihat baik, tetapi ada perbedaan antara backtest dan perdagangan yang sebenarnya di pasar nyata. oleh karena itu, untuk mengurangi kesalahan ini selama backtest, kami menambahkan dua titik slippage, untuk meningkatkan atau mengurangi harga beli dan jual.
Tes balik dengan slippage
Seperti yang ditunjukkan di atas, strategi yang sama, jika ditambahkan dengan 2 poin slippage, hasil backtesting dengan dan tanpa slippage sangat berbeda, yang berarti bahwa strategi ini perlu ditingkatkan atau ditinggalkan.
Beberapa orang mungkin bertanya, karena mungkin ada begitu banyak masalah dalam perdagangan kuantitatif, bagaimana saya bisa membuktikan bahwa strategi saya ok? jawabannya sederhana, kita harus pertama simulasi trading dengan strategi ini beberapa waktu sebelum menggunakan uang sungguhan, jika harga trading dan situasi simulasi trading hampir sama dengan logika strategi, maka setidaknya membuktikan logika strategi tidak ada masalah.
Dalam hal apapun, untuk pengembang sistem perdagangan yang berpengalaman, backtesting adalah hal yang harus dikurangi. Karena dapat memberi tahu Anda apakah ide strategi dapat divalidasi dalam data historis. Tapi banyak kali backtesting tidak berarti bahwa masa depan akan menguntungkan. Karena ada terlalu banyak lubang dalam backtesting, setelah Anda membayar
Apa itu terlalu cocok dan bagaimana kita menghindarinya?
Apa contoh-contoh