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
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.
Mengambil strategi waktu FMZ Quant
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.
Klik pada
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.
Isi kontrak
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.
Sebelum backtesting, tentukan strategi trading Anda. Di sini kita mengambil strategi waktu
// 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.
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).
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.
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.
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.
Cobalah untuk menyalin strategi di bagian ini dan backtest itu.
Cobalah untuk meningkatkan dan mengoptimalkan strategi di bagian ini berdasarkan pengalaman trading Anda.