5.2 Cara melakukan backtesting perdagangan kuantitatif

Penulis:Kebaikan, Dibuat: 2019-05-08 13:08:52, Diperbarui:

Ringkasan

Pentingnya dan pentingnya backtesting tidak diragukan lagi. Ketika melakukan backtesting kuantitatif, strategi harus ditempatkan dalam lingkungan historis yang sereal dan sedekat mungkin. Jika beberapa detail dalam lingkungan historis diabaikan, seluruh backtesting kuantitatif mungkin tidak valid. Artikel ini akan menjelaskan cara melakukan backtesting perdagangan kuantitatif yang tepat.

Backtesting setara dengan pemutaran data. Dengan memutar kembali data K-line historis dan melakukan aturan perdagangan pasar nyata, seperti rasio Sharpe, tingkat retracement maksimum, tingkat pengembalian tahunan dan kurva modal. Saat ini, ada banyak perangkat lunak yang dapat melakukan semua ini, seperti MetaTrader, MultiCharts dan IB Trader Workstation, yang semuanya sangat komprehensif, juga ada yang open source yang disebut VNPY padagithub.com, yang dapat disesuaikan secara fleksibel.

FMZ Quant sebagai perangkat lunak perdagangan kuantitatif komersial, dilengkapi dengan mesin backtest berkinerja tinggi, menggunakan kerangka backtest for-loop (polling), untuk mengukur perhitungan lebih cepat.

FMZ Quant Backtest Interface Pengantar

  • Langkah 1

Mengambil strategi waktu FMZ Quant Thermostat sebagai contoh, mari kita buka situs web resmi FMZ Quant (www.fmz.comKlik dashboard, Strategi, pilih strategi, klik backtest, dan pergi ke halaman berikut:

img img

Di antarmuka konfigurasi backtest, Anda dapat menyesuaikan sesuai dengan kebutuhan aktual Anda. Seperti: mengatur periode backtest, siklus garis K, jenis data (data tingkat simulasi atau data tingkat pasar nyata. Sebaliknya, kecepatan backtesting data tingkat simulasi lebih cepat, backtesting data tingkat pasar nyata lebih akurat). Selain itu, Anda juga dapat mengatur biaya komisi untuk backtest dan dana awal akun.

  • Langkah 2

Klik pada mylanguage core trading library (karena strategi ini ditulis dengan bahasa M, jika Anda menggunakan bahasa pemrograman lain, opsi ini mungkin tidak muncul) Pertama-tama, atur label perdagangan. Bahasa FMZ Quant M memiliki dua jenis metode eksekusi backtest, yaitu: model harga penutupan dan model harga terbaru. Model harga penutupan mengacu pada eksekusi model setelah garis K saat ini selesai, dan perdagangan dilaksanakan di awal garis K berikutnya; Model harga terbaru mengacu pada eksekusi model untuk setiap perubahan harga, dan ketika sinyal perdagangan ditetapkan, itu akan diperdagangkan segera. Seperti yang ditunjukkan di bawah ini:

img img

Ukuran lot terbuka default mengacu pada jumlah posisi pembukaan dan penutupan saat backtesting. Jumlah perdagangan maksimal sekali adalah posisi pembukaan maksimum yang dikirim ke mesin backtest dengan satu transaksi.

Akan selalu ada penyimpangan antara harga perdagangan yang sebenarnya dan harga perdagangan yang direncanakan. Ofset ini umumnya bergerak ke arah yang tidak menguntungkan bagi pedagang, yang mengakibatkan kerugian tambahan dalam perdagangan. Oleh karena itu, perlu untuk menambahkan slippage untuk mensimulasikan lingkungan perdagangan yang sebenarnya.

  • Langkah 3

Isi kontrak futures dengan jenis kontrak yang ingin Anda backtest, untuk cryptocurrency, kita hanya perlu menentukan periode k-line yang ingin kita backtest, dalam hal ini, hanya menggunakan mingguan k line, jadi, masukkan this_week.

img

pengaturan pasar riil pilihan terutama digunakan untuk perdagangan pasar riil, dalam lingkungan backtesting, kita hanya mempertahankan pengaturan default akan baik-baik saja. Jika selanjutnya pemulihan otomatis ditandai benar, maka ketika robot berhenti di pasar riil, memulai kembali robot akan secara otomatis mengembalikan posisi sinyal sebelumnya tanpa menghitung kembali sinyal. jumlah upaya ulang order ditetapkan menjadi 20 secara default. Ketika pemesanan gagal, itu akan mencoba untuk mengirim kembali sampai 20 kali. Interval jajak pendapat jaringan (milisekund) adalah di mana robot mengeksekusi kode strategi setiap kali.

img

  • Langkah 4

Opsi perdagangan spot terutama untuk perdagangan cryptocurrency, ketika backtesting, tetapkan dalam pengaturan default akan baik-baik saja. Jika Anda ingin, Anda dapat menentukan semua parameter dalam pengaturan ini. Selain itu, untuk beberapa pertukaran cryptocurrency, Anda juga dapat mengatur ukuran leverage dan pengaturan terkait lainnya.

img

Strategi Backtest

Sebelum backtesting, tentukan strategi trading Anda. Di sini kita mengambil strategi waktu Thermostat sebagai contoh. Strategi ini akan mengadopsi strategi tren di pasar tren sesuai dengan keadaan pasar, dan mengadopsi strategi osilasi di pasar yang tidak stabil.

// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;

// Define key prices
KOD:=(H+L+C)/3;

// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);

// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);

// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);

// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);

// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;

// Calculate the quit price of the trend market
MA50:=MA(C,50);

// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;

// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;

Dalam antarmuka backtesting simulasi, setelah mengkonfigurasi pengaturan backtesting, klik pada tombol Start Backtest, dan hasil backtesting akan ditampilkan segera setelah beberapa detik.

img

Bar status merekam variasi perdagangan, posisi, harga posisi, harga terbaru, jenis sinyal perdagangan sebelumnya, harga tertinggi dan terendah posisi, jumlah pembaruan serta informasi modal dan waktu. Selain itu, dalam label laba dan kerugian yang mengambang, kurva dana terperinci akun ditampilkan, dan indikator kinerja yang umum digunakan juga disertakan: tingkat pengembalian, tingkat pengembalian tahunan, rasio Sharpe, volatilitas tahunan, dan tingkat retracement maksimum, yang pada dasarnya dapat memuaskan sebagian besar kebutuhan pengguna.

Di antara mereka, indikator kinerja yang paling penting adalah: rasio Sharpe. Ini adalah saat menerapkan indeks komprehensif mempertimbangkan manfaat dan risiko, dan ini adalah indeks penting untuk mengukur produk dana. Secara umum, ini adalah berapa banyak risiko yang Anda tanggung, setiap kali Anda menghasilkan keuntungan, jadi nilai rasio Sharpe semakin tinggi, semakin baik.

Volatilitas tahunan, dengan kata sederhana, memperkirakan bahwa pengamatan dalam jangka waktu singkat akan berlanjut selama setahun. Ini adalah ukuran risiko dana, tetapi jelas bukan risiko penuh. Misalnya, Strategi A memiliki volatilitas yang lebih besar, tetapi volatilitasnya ke atas, keuntungan baik; Strategi B memiliki volatilitas kecil, tetapi telah bergerak dengan mantap ((hampir tidak bergerak sama sekali).

img

Akhirnya, dalam informasi log, catatan terperinci dari setiap situasi perdagangan yang dilakukan oleh broker saat backtesting, termasuk waktu khusus perdagangan, informasi pertukaran, jenis posisi terbuka dan dekat, mekanisme pencocokan pesanan mesin backtest, serta jumlah transaksi dan informasi cetak.

img

Setelah Backtesting

Banyak kali, dan dalam kebanyakan kasus, hasil dari backtesting akan jauh dari apa yang Anda harapkan.

Jika hasil backtest strategi Anda kehilangan uang, jangan putus asa. Ini sebenarnya cukup normal. periksa apakah logika strategi disalahartikan oleh kode, apakah itu menggunakan beberapa parameter ekstrem, apakah itu menggunakan terlalu banyak kondisi posisi pembukaan, dll.

Jika hasil backtest strategi Anda sangat baik, kurva pendanaan sempurna, dengan rasio Sharpe lebih tinggi dari 1. Harap jangan terburu-buru, Dalam hal ini, sebagian besar situasi menggunakan fungsi masa depan, mencuri harga, over-fit, atau tidak ada harga slippage yang ditambahkan, dll. Anda dapat menggunakan data off-sample dan simulasi perdagangan pasar nyata untuk mengecualikan masalah ini.

Untuk meringkas

Di atas adalah seluruh proses backtesting strategi trading, dapat dikatakan bahwa itu telah spesifik untuk setiap detail. Perlu dicatat bahwa backtesting data historis adalah lingkungan yang ideal di mana semua risiko diketahui. Oleh karena itu, yang terbaik adalah melalui putaran pasar banteng dan beruang untuk waktu backtesting strategi.

Pasar selalu dalam proses perubahan dan evolusi. Strategi backtesting historis tidak berarti bahwa masa depan akan sama. Ini bukan hanya untuk membiarkan strategi mengatasi risiko yang mungkin diketahui dalam lingkungan backtesting, tetapi juga untuk menangani risiko yang tidak diketahui di masa depan. Oleh karena itu, sangat diperlukan untuk meningkatkan ketahanan risiko dan universalitas strategi.

Latihan setelah sekolah

  1. Cobalah untuk menyalin strategi di bagian ini dan backtest itu.

  2. Cobalah untuk meningkatkan dan mengoptimalkan strategi di bagian ini berdasarkan pengalaman trading Anda.


Lebih banyak