5.2 Bagaimana untuk melakukan pengujian balik perdagangan kuantitatif

Penulis:Kebaikan, Dicipta: 2019-05-08 13:08:52, Dikemas kini:

Ringkasan

Pentingnya dan kepentingan backtesting tidak diragukan lagi. Apabila melakukan backtesting kuantitatif, strategi harus diletakkan dalam persekitaran sejarah yang sebenar dan sedekat mungkin. Jika beberapa butiran dalam persekitaran sejarah diabaikan, keseluruhan backtesting kuantitatif mungkin tidak sah.

Backtesting adalah setara dengan pemutaran data. Dengan memainkan semula data K-line sejarah dan melaksanakan peraturan perdagangan pasaran sebenar, seperti nisbah Sharpe, kadar retracement maksimum, kadar pulangan tahunan dan lengkung modal.github.com, yang boleh disesuaikan secara fleksibel.

FMZ Quant sebagai perisian perdagangan kuantitatif komersial, dilengkapi dengan enjin backtest berprestasi tinggi, menggunakan bingkai backtest for-loop (polling), untuk mengukur pengiraan dengan lebih cepat.

FMZ Quant Backtest Antara muka Pengenalan

  • Langkah 1

Mengambil strategi masa FMZ Quant Thermostat sebagai contoh, mari kita buka laman web rasmi FMZ Quant (www.fmz.comKlik papan pemuka, Strategi, pilih strategi, klik backtest, dan pergi ke halaman berikut:

img img

Dalam antara muka konfigurasi backtest, anda boleh menyesuaikannya mengikut keperluan sebenar anda. Seperti: menetapkan tempoh backtest, kitaran garisan K, jenis data (data tahap simulasi atau data tahap pasaran sebenar. Sebaliknya, kelajuan backtesting data tahap simulasi lebih cepat, backtesting data tahap pasaran sebenar lebih tepat). Di samping itu, anda juga boleh menetapkan yuran komisen untuk backtest dan dana awal akaun.

  • Langkah 2

Klik pada perpustakaan dagangan mylanguage core (kerana strategi ini ditulis oleh bahasa M, jika anda menggunakan bahasa pengaturcaraan lain, pilihan ini mungkin tidak muncul) Pertama sekali, tetapkan label dagangan. Bahasa FMZ Quant M mempunyai dua jenis kaedah pelaksanaan backtest, iaitu: model harga penutupan dan model harga terkini. Model harga penutupan merujuk kepada pelaksanaan model selepas garis K semasa selesai, dan dagangan dilaksanakan pada permulaan garis K seterusnya; Model harga terkini merujuk kepada pelaksanaan model untuk setiap perubahan harga, dan apabila isyarat perdagangan ditubuhkan, ia akan berdagang dengan segera. Seperti yang ditunjukkan di bawah:

img img

Ukuran lot terbuka lalai merujuk kepada jumlah kedudukan pembukaan dan penutupan semasa backtesting. Jumlah perdagangan maksimum sekali adalah kedudukan pembukaan maksimum yang dihantar ke enjin backtest dengan satu transaksi.

Di samping itu, jika anda mempunyai harga yang lebih rendah daripada harga yang ditetapkan, anda juga boleh menggunakan harga yang lebih rendah daripada harga yang ditetapkan.

  • Langkah 3

Isi kontrak masa depan dengan jenis kontrak yang anda ingin backtest, untuk cryptocurrency, kita hanya perlu menentukan tempoh k-garis yang kita mahu backtest, dalam kes ini, hanya menggunakan mingguan k baris, jadi, letakkan this_week di.

img

tetapan pasaran sebenar pilihan digunakan terutamanya untuk perdagangan pasaran sebenar, dalam persekitaran backtesting, kita hanya mengekalkan ia tetapan lalai akan baik-baik saja. Jika kemudahan pemulihan automatik ditandakan benar, maka apabila robot berhenti di pasaran sebenar, memulakan semula robot akan secara automatik memulihkan kedudukan isyarat sebelumnya tanpa mengira semula isyarat. jumlah usaha semula pesanan ditetapkan kepada 20 secara lalai. Apabila meletakkan pesanan gagal, ia akan cuba untuk menghantar semula sehingga 20 kali. Interval pengundian rangkaian (milisaat) adalah di mana robot melaksanakan kod strategi setiap kali lagi.

img

  • Langkah 4

Pilihan perdagangan spot adalah terutamanya untuk perdagangan cryptocurrency, apabila backtesting, simpan dalam tetapan lalai akan baik-baik saja.

img

Ujian Kembali Strategi

Sebelum backtesting, tentukan strategi dagangan anda. Di sini kita mengambil strategi masa Thermostat sebagai contoh. Strategi ini akan mengamalkan strategi trend di pasaran trend mengikut keadaan pasaran, dan mengamalkan strategi Oscillating di pasaran yang tidak menentu. Kod sumber adalah seperti yang ditunjukkan di bawah (juga boleh dimuat turun dari halaman Strategy Square laman web FMZ Quant):

// 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 antara muka backtesting simulasi, selepas mengkonfigurasi tetapan backtesting, klik pada butang Start Backtest, dan hasil backtesting akan dipaparkan dengan serta-merta selepas beberapa saat. Dalam log backtest, ia akan menunjukkan berapa banyak saat yang digunakan untuk backtest, log, dan jumlah transaksi. Maklumat akaun mencetak hasil akhir dari backtest strategi: purata keuntungan dan kerugian, keuntungan dan kerugian kedudukan, margin, yuran komisen dan anggaran pulangan.

img

Bar status merakam pelbagai dagangan, kedudukan, harga kedudukan, harga terkini, jenis isyarat dagangan sebelumnya, harga tertinggi dan terendah kedudukan, bilangan kemas kini serta maklumat modal dan masa. Di samping itu, dalam label keuntungan dan kerugian terapung, kurva dana terperinci akaun dipaparkan, dan penunjuk prestasi yang biasa digunakan juga termasuk: kadar pulangan, kadar pulangan tahunan, nisbah Sharpe, turun naik tahunan, dan kadar retracement maksimum, yang pada dasarnya dapat memenuhi kebanyakan keperluan pengguna.

Antara mereka, penunjuk prestasi yang paling penting adalah: nisbah Sharpe. Ia adalah semasa melaksanakan indeks komprehensif mempertimbangkan manfaat dan risiko, dan ia adalah indeks penting untuk mengukur produk dana. Secara umum, ia adalah berapa banyak risiko yang anda menanggung, setiap kali anda memperoleh keuntungan, jadi nilai nisbah Sharpe yang lebih tinggi, lebih baik.

Volatiliti tahunan, secara ringkasnya, memperkirakan pengamatan dalam jangka masa yang singkat akan berterusan sepanjang setahun. Ia adalah ukuran risiko dana, tetapi ia pasti bukan risiko penuh. Sebagai contoh, Strategi A mempunyai volatiliti yang lebih besar, tetapi ia telah turun naik, keuntungan adalah baik; Strategi B mempunyai volatiliti yang kecil, tetapi ia telah bergerak dengan mantap (() hampir tidak bergerak sama sekali.

img

Akhirnya, dalam maklumat log, rekod terperinci setiap situasi dagangan yang diperdagangkan semasa backtesting, termasuk masa tertentu dagangan, maklumat pertukaran, jenis kedudukan terbuka dan dekat, mekanisme pemadan pesanan enjin backtest, serta bilangan transaksi dan maklumat cetak.

img

Selepas Backtesting

Banyak kali, dan dalam kebanyakan kes, hasil backtesting akan jauh dari apa yang anda harapkan. Lagipun, strategi jangka panjang, stabil dan menguntungkan tidak begitu mudah untuk mendapatkan, yang memerlukan keupayaan anda untuk memahami pasaran.

Jika keputusan ujian belakang strategi anda kehilangan wang, jangan kecewa. Ini sebenarnya agak normal. periksa sama ada logik strategi salah ditafsirkan oleh kod, sama ada ia menggunakan beberapa parameter yang melampau, sama ada ia menggunakan terlalu banyak keadaan kedudukan pembukaan, dll.

Jika keputusan backtest strategi anda sangat baik, kurva pembiayaan adalah sempurna, dengan nisbah Sharpe lebih tinggi daripada 1. Sila jangan tergesa-gesa, Dalam kes ini, kebanyakan situasi menggunakan fungsi masa depan, mencuri harga, over-fit, atau tidak ada harga slippage ditambah, dll. Anda boleh menggunakan data luar sampel dan perdagangan pasaran sebenar simulasi untuk mengecualikan isu-isu ini.

Ringkasnya

Di atas adalah keseluruhan proses backtesting strategi dagangan, dapat dikatakan bahawa ia telah khusus untuk setiap butiran. Perlu diperhatikan bahawa backtesting data sejarah adalah persekitaran yang ideal di mana semua risiko diketahui. Oleh itu, yang terbaik adalah melalui pusingan pasar lembu dan beruang untuk masa backtesting strategi. Bilangan perdagangan yang berkesan tidak boleh kurang dari 100 kali, untuk mengelakkan beberapa bias yang terselamat.

Pasaran sentiasa dalam proses perubahan dan evolusi. Strategi backtesting bersejarah tidak bermakna masa depan akan sama. Ia bukan sahaja untuk membiarkan strategi mengatasi risiko yang mungkin diketahui dalam persekitaran backtesting, tetapi juga untuk menangani risiko yang tidak diketahui di masa depan. Oleh itu, sangat perlu untuk meningkatkan ketahanan risiko dan universaliti strategi.

Latihan selepas sekolah

  1. Cuba tiru strategi dalam bahagian ini dan uji balik.

  2. Cuba untuk meningkatkan dan mengoptimumkan strategi dalam bahagian ini berdasarkan pengalaman perdagangan anda.


Lebih lanjut