Sumber daya yang dimuat... Pemuatan...

5.1 Makna dan perangkap backtesting

Penulis:Kebaikan, Dibuat: 2019-05-07 15:06:15, Diperbarui:

Ringkasan

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.

Makna dari backtesting

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 debugging backtesting debugging dan sebagainya, sampai strategi dapat sepenuhnya menerapkan konten model dan berjalan lancar.

Dari perspektif logika perdagangan kuantitatif, strategi perdagangan sebenarnya didasarkan pada serangkaian kognisi dan asumsi pasar. Backtesting dapat menentukan apakah asumsi ini stabil atau tidak.

img

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.

Jejak Uji Kembali

  • Perangkap Sinyal perdagangan tidak stabil

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.

  • Perangkap fungsi Future

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 zigzag

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.

img

  • Perangkap Mencuri harga

Perilaku yang disebut mencuri harga mengacu pada penggunaan harga masa lalu untuk perdagangan. Misalnya: Jika harga tertinggi lebih besar dari harga tetap tertentu untuk membuka posisi dengan menggunakan harga pembukaan. Kondisi posisi pembukaan ini adalah mencuri harga, karena di pasar nyata, ketika harga tertinggi lebih besar dari harga tertentu, harga mungkin lebih tinggi dari harga pembukaan jarak tertentu, dan kemudian menggunakan harga pembukaan untuk membuka posisi tidak mungkin. Namun, dalam lingkungan backtesting, Anda dapat secara hipotetis membuka posisi dengan harga pembukaan.

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.

  • Perangkap Harga perdagangan yang tidak mungkin

Harga perdagangan yang tidak mungkin dapat dibagi menjadi beberapa kasus:

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 Black swan. Seperti yang ditunjukkan lingkaran merah pada gambar berikut, franc Swiss dalam acara black swan valuta asing, meskipun di permukaan ada harga pembukaan, harga tertinggi, harga terendah dan harga penutupan. pada kenyataannya, situasi pasar ekstrem seperti itu datang dengan garis k yang sebagian besar vakum, banyak pesanan stop-loss menyebabkan peristiwa stampede, likuiditasnya hampir nol, untuk perintah untuk dieksekusi sangat sulit, tetapi dalam lingkungan backtesting, dimungkinkan untuk menghentikan kerugian.

img

  • Perangkap over-fitting

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.

img

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.

  • Perangkap dari bias survivor

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.

img

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.

img

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.

  • Perangkap biaya dampak

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

img

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

img

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.

Untuk meringkas

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 harga, Anda akan memahaminya. Dan semua pelajaran ini ditumpuk dalam uang sungguhan. Artikel ini terutama untuk mengurangi jalan memutar dan perangkap.

Latihan setelah sekolah

  1. Apa itu terlalu cocok dan bagaimana kita menghindarinya?

  2. Apa contoh-contoh Survivor bias dalam kehidupan nyata?


Lebih banyak