Contoh strategi trading backtesting


Kembali menguji ide trading Anda Salah satu hal yang paling berguna yang dapat Anda lakukan di jendela analisis adalah menguji kembali strategi trading Anda pada data historis. Hal ini dapat memberi Anda wawasan berharga tentang kekuatan dan kelemahan sistem Anda sebelum menginvestasikan uang sungguhan. Fitur AmiBroker tunggal ini bisa menghemat banyak uang untuk Anda. Menulis aturan trading Anda Pertama-tama Anda harus memiliki peraturan objektif (atau mekanis) untuk masuk dan keluar dari pasar. Langkah ini adalah dasar strategi Anda dan Anda perlu memikirkannya sendiri karena sistem ini harus sesuai dengan toleransi risiko, ukuran portofolio, teknik pengelolaan uang, dan banyak faktor individual lainnya. Setelah Anda memiliki aturan trading sendiri, Anda harus menuliskannya sebagai aturan beli dan jual di AmiBroker Formula Lanugage (ditambah short dan cover jika Anda ingin menguji juga short trading). Dalam bab ini kita akan mempertimbangkan sistem cross average moving average yang sangat mendasar. Sistem ini akan membeli stockscontracts ketika harga penutupan naik di atas moving average 45 hari eksponensial dan akan menjual stockscontracts ketika harga penutupan turun di bawah rata-rata pergerakan eksponensial 45 hari. Rata-rata pergerakan eksponensial dapat dihitung di AFL menggunakan fungsi EMA bawaannya. Yang perlu Anda lakukan adalah menentukan array masukan dan periode rata-rata, sehingga rata-rata moving average 45-hari dari harga penutupan dapat diperoleh dengan pernyataan berikut: Pengenal dekat mengacu pada array built-in yang menahan harga penutupan simbol yang dianalisis saat ini. . Untuk menguji apakah harga penutupan di atas rata-rata bergerak eksponensial, kita akan menggunakan fungsi silang bawaan: beli cross (close, ema (close, 45)) Pernyataan di atas mendefinisikan aturan jual beli. Ini memberi quot1quot atau quottruequot saat harga penutupan mendekati di atas ema (close, 45). Kemudian kita bisa menulis aturan jual yang akan memberi quote saat situasi berlawanan terjadi - harga penutupan dekat di bawah ema (close, 45): sell cross (ema (close, 45), close) Perlu diketahui bahwa kita menggunakan fungsi cross yang sama tapi Urutan argumen yang berlawanan. Jadi rumus lengkap untuk perdagangan panjang akan terlihat seperti ini: beli cross (close, ema (close, 45)) jual cross (ema (close, 45), close) CATATAN: Untuk membuat formula baru silahkan buka Formula Editor menggunakan Analysis-gtFormula Editor Menu, ketik rumusnya dan pilih Tools-gtSend to Analysis menu di Formula editor Untuk melakukan back-test sistem anda cukup klik tombol Back test di jendela automatic analysis. Pastikan Anda telah mengetikkan rumus yang berisi setidaknya membeli dan menjual peraturan perdagangan (seperti yang ditunjukkan di atas). Bila rumusnya benar, AmiBroker mulai menganalisis simbol Anda sesuai dengan peraturan perdagangan Anda dan menghasilkan daftar perdagangan simulasi. Seluruh prosesnya sangat cepat - Anda bisa kembali menguji ribuan simbol dalam hitungan menit. Jendela kemajuan akan menunjukkan perkiraan waktu penyelesaian. Jika Anda ingin menghentikan prosesnya Anda bisa mengklik tombol Cancel di progress window. Ketika proses selesai daftar perdagangan simulasi ditunjukkan di bagian bawah jendela analisis otomatis. (Panel Hasil). Anda bisa memeriksa kapan sinyal beli dan jual terjadi hanya dengan mengklik ganda pada trade di panel Results. Ini akan memberi Anda sinyal mentah atau tanpa filter untuk setiap batang saat kondisi beli dan jual terpenuhi. Jika Anda hanya ingin melihat panah perdagangan tunggal (membuka dan menutup perdagangan yang dipilih saat ini), Anda harus mengklik dua kali baris sambil menahan tombol SHIFT yang ditekan. Atau Anda bisa memilih jenis tampilan dengan memilih item yang sesuai dari menu konteks yang muncul saat Anda klik pada panel hasil dengan tombol mouse sebelah kanan. Selain daftar hasil, Anda bisa mendapatkan statistik yang sangat terperinci mengenai kinerja sistem Anda dengan mengklik tombol Report. Untuk mengetahui lebih lanjut tentang statistik laporan, periksa deskripsi jendela laporan. Mengubah pengaturan pengujian kembali Anda Mesin pengujian ulang di AmiBroker menggunakan beberapa nilai yang telah ditetapkan untuk menjalankan tugasnya termasuk ukuran portofolio, periodisitas (setiap bulan sepekan sekali), jumlah komisi, tingkat suku bunga, kerugian maksimum dan target keuntungan, jenis perdagangan, bidang harga dan sebagainya. di. Semua pengaturan ini bisa diubah oleh pengguna menggunakan setting window. Setelah mengubah pengaturan ingatlah untuk menjalankan pengujian kembali jika Anda ingin hasilnya disinkronkan dengan pengaturannya. Misalnya, untuk kembali menguji pada bar mingguan bukan sehari-hari klik saja pada tombol Settings pilih Weekly from Periodicity combo box dan klik OK. Kemudian jalankan analisis Anda dengan mengklik Back test. Nama variabel yang dicadangkan Tabel berikut menunjukkan nama variabel reserved yang digunakan oleh Automatic Analyzer. Makna dan contoh penggunaannya akan diberikan kemudian dalam bab ini. Memungkinkan pengendalian jumlah dolar atau persentase portofolio yang diinvestasikan ke dalam perdagangan (lihat penjelasan di bawah) Analisis Otomatis (baru dalam 3.9) Sampai saat ini kami telah membahas penggunaan tester belakang yang cukup sederhana. AmiBroker, bagaimanapun, mendukung metode dan konsep yang jauh lebih canggih yang akan dibahas nanti di bab ini. Harap dicatat bahwa pengguna pemula pertama-tama harus bermain sedikit dengan topik yang lebih mudah dijelaskan di atas sebelum melanjutkan. Jadi, saat Anda siap, mohon lihat fitur penguji belakang berikut ini: a) host scripting AFL untuk penulis rumus lanjutan b) dukungan yang disempurnakan untuk perdagangan pendek c) cara untuk mengendalikan harga eksekusi pesanan dari Script d) berbagai jenis berhenti di back tester e) ukuran posisi f) ukuran lot bulat dan ukuran centang g) akun margin h) backtesting futures Hosting script AFL adalah topik lanjutan yang tercakup dalam dokumen terpisah yang tersedia di sini dan saya tidak akan membahasnya. Itu dalam dokumen ini Sisa fitur jauh lebih mudah dimengerti. Dalam versi AmiBroker sebelumnya, jika Anda ingin sistem back-test menggunakan perdagangan panjang dan pendek, Anda hanya bisa mensimulasikan strategi stop-and-reverse. Bila posisi long ditutup maka posisi short baru dibuka dengan segera. Itu karena membeli dan menjual variabel reserved digunakan untuk kedua jenis perdagangan. Sekarang (dengan versi 3.59 atau lebih tinggi) ada variabel reserved terpisah untuk pembukaan dan penutupan perdagangan jangka panjang dan pendek: buy - quottruequot atau 1 value membuka trade sell sell - quottruequot atau 1 value menutup trade long short - quottruequot atau 1 value membuka short trade cover. - quottruequot atau 1 value menutup short trading Som untuk melakukan back-test short trade Anda perlu menetapkan variabel short dan cover. Jika Anda menggunakan sistem stop-and-reverse (selalu ada di pasaran) cukup tetapkan sell to short dan beli untuk cover sell cover buy. Ini mensimulasikan cara kerja versi pra-3.59. Tapi sekarang AmiBroker memungkinkan Anda memiliki peraturan perdagangan terpisah untuk jangka panjang dan untuk berjalan singkat seperti yang ditunjukkan pada contoh sederhana ini: peraturan masuk dan keluar perdagangan yang panjang: beli salib (cci (), 100) menjual potongan silang (100, cci ()) Aturan masuk dan keluar perdagangan: cross cross pendek (-100, cci ()) mencakup cross (cci (), -100) Perhatikan bahwa dalam contoh ini jika CCI berada di antara -100 dan 100 Anda berada di luar pasar. Mengontrol harga perdagangan AmiBroker sekarang menyediakan 4 variabel reserved baru untuk menentukan harga di mana order beli, sell, short dan cover dieksekusi. Array ini memiliki nama berikut: buyprice, sellprice, shortprice dan coverprice. Aplikasi utama dari variabel-variabel ini adalah mengendalikan harga perdagangan: BuyPrice IIF (dayofweek () 1, HIGH, CLOSE) pada hari senin membeli di level tinggi, jika tidak membeli di dekat Jadi, Anda dapat menulis berikut untuk mensimulasikan perintah stop-order: BuyStop. Rumus untuk membeli stop level SellStop. Rumus untuk sell stop level jika setiap saat di siang hari harga naik di atas tingkat buystop (highgtbuystop) order beli berlangsung (pada buystop atau low mana yang lebih tinggi) Buy Cross (High, BuyStop) jika harga siang hari di bawah harga di bawah level sellprice (Sellstop rendah) order jual berlangsung (di sellstop atau high mana yang lebih rendah) Sell Cross (SellPrice, SellStop) BuyPrice max (BuyStop, Low) pastikan harga beli tidak kurang dari SellPrice Rendah min (SellStop, High) pastikan Harga jual tidak lebih besar dari Tinggi Harap dicatat bahwa AmiBroker mengatur variabel pilihan, variabel harga jual, harga pendek dan variabel coverprice dengan nilai yang ditentukan di jendela pengaturan sistem (ditunjukkan di bawah), sehingga Anda dapat melakukannya namun tidak perlu menentukannya dalam formula Anda. Jika Anda tidak mendefinisikan mereka AmiBroker bekerja seperti pada versi lama. Selama pengujian ulang, AmiBroker akan memeriksa apakah nilai yang Anda tetapkan untuk dijual, harga jual, harga pendek, harga penutupan sesuai dengan kisaran rendah kisaran bar yang diberikan. Jika tidak, AmiBroker akan menyesuaikannya dengan harga tinggi (jika harga array lebih tinggi dari harga tinggi) atau dengan harga rendah (jika nilai harga array lebih rendah dari yang rendah) Target keuntungan berhenti Seperti yang dapat Anda lihat pada gambar di atas, pengaturan baru untuk Target keuntungan berhenti tersedia di jendela pengaturan sistem. Target penghentian laba dijalankan saat harga tinggi untuk hari tertentu melebihi tingkat stop yang dapat diberikan sebagai persentase atau kenaikan poin dari harga beli. Secara default, penghentian dijalankan dengan harga yang Anda definisikan sebagai array harga jual (untuk perdagangan jangka panjang) atau kisaran harga penutupan (untuk perdagangan singkat). Perilaku ini bisa diubah dengan menggunakan fitur quotExit pada stopquot. QuotExit pada fitur stopquot Jika Anda menandai quotExit pada kotak stopquot pada pengaturan, stop akan dijalankan pada level stop yang tepat, yaitu jika Anda menentukan target keuntungan berhenti di 10 stop dan harga beli 50 stop order akan dieksekusi di 55 bahkan jika Array harga jual Anda mengandung nilai yang berbeda (misalnya harga penutupan 56). Kerugian maksimum berhenti bekerja dengan cara yang sama - mereka dijalankan saat harga rendah untuk hari tertentu turun di bawah tingkat stop yang dapat diberikan sebagai persentase atau kenaikan poin dari harga beli Jenis pemberhentian ini digunakan untuk melindungi keuntungan karena Melacak perdagangan Anda sehingga setiap kali nilai posisi mencapai tingkat tinggi yang baru, trailing stop ditempatkan pada tingkat yang lebih tinggi. Bila profit turun di bawah level trailing stop posisi ditutup. Mekanisme ini diilustrasikan pada gambar di bawah (10 trailing stop ditunjukkan): contoh implementasi tingkat rendah dari pemberhentian Target Laba di AFL: Beli Cross (MACD (), Sinyal ()) untuk (i 0 i lt BarCount i) Jika (priceatbuy 0 Buy i) priceatbuy BuyPrice i if (priceatbuy gt 0 SellPrice i gt 1.1 priceatbuy) Jual i 1 SellPrice i 1.1 priceatbuy priceatbuy 0 lain Jual i 0 Ini adalah fitur baru di versi 3.9. Ukuran posisi di backtester diimplementasikan dengan menggunakan variabel reserved baru PositionSize ltsize arraygt Sekarang Anda dapat mengendalikan jumlah dolar atau persentase portofolio yang diinvestasikan ke dalam jumlah positif perdagangan menentukan jumlah (dolar) yang diinvestasikan ke dalam perdagangan misalnya: PositionSize 1000 menginvestasikan 1000 dalam setiap nomor negatif perdagangan -100 ..- 1 mendefinisikan persentase: -100 memberikan 100 dari ukuran portofolio saat ini, -33 memberikan 33 ekuitas yang tersedia misalnya: PositionSize -50 selalu menginvestasikan hanya setengah dari ukuran ekuitas dinamis saat ini contoh: PositionSize - 100 RSI () karena RSI bervariasi dari 0,.100, ini akan menghasilkan posisi tergantung pada nilai RSI - rendahnya nilai RSI akan menghasilkan persentase investasi yang lebih tinggi. Jika kurang dari 100 uang yang tersedia diinvestasikan maka jumlah sisanya akan menghasilkan tingkat bunga Seperti yang didefinisikan dalam pengaturan. Ada juga kotak centang baru di jendela pengaturan AA: ukuran penguraian posisi kuota - ini mengontrol bagaimana backtester menangani situasi saat ukuran posisi yang diminta (melalui variabel PositionSize) melebihi uang yang tersedia: saat bendera ini diperiksa posisi dimasukkan dengan ukuran yang telah dipangkas ke Tersedia uang jika tidak dicentang posisi tidak masuk. Untuk melihat ukuran posisi sebenarnya, gunakan mode laporan baru di jendela setelan AA: daftar Perdagangan dengan harga dan pos. Sizequot Untuk akhirnya, berikut adalah contoh teknik penentuan posisi berbasis Tharps ATR yang dikodekan di AFL: Beli formula pembelian ltyour heregt Jual 0 jual hanya dengan berhenti TrailStopAmount 2 ATR (20) Modal 100000 PENTING: Set juga di Settings: Initial Resiko Ekuitas 0.01 Posisi Personalisasi (RiskTrailStopAmount) BuyPrice ApplyStop (2, 2, TrailStopAmount, 1) Teknik ini dapat diringkas sebagai berikut: Ekuitas total per simbol adalah 100.000, kami menetapkan tingkat risiko pada 1 dari total ekuitas. Tingkat risiko didefinisikan sebagai berikut: jika trailing stop pada 50 saham berada di, katakanlah, 45 (nilai dua ATR terhadap posisi), 5 kerugian dibagi menjadi 1000 risiko untuk memberikan 200 saham untuk membeli. Jadi, risiko kerugiannya adalah 1000 tapi risiko alokasi adalah 200 saham x 50share atau 10.000. Jadi, kami mengalokasikan 10 dari ekuitas untuk pembelian tetapi hanya mempertaruhkan 1000. (Diedit kutipan dari mailing list AmiBroker) Ukuran lot bulat dan ukuran kutu Berbagai instrumen diperdagangkan dengan berbagai unit quottradingquot atau quotblocksquot. Misalnya Anda bisa membeli pecahan jumlah unit reksadana, tapi Anda tidak bisa membeli pecahan jumlah saham. Terkadang Anda harus membeli di 10s atau 100s lot. AmiBroker sekarang memungkinkan Anda untuk menentukan ukuran blok pada tingkat global dan per simbol. Anda dapat menentukan ukuran lot per simbol dalam halaman Symbol-gtInformation (gambar 3). Nilai nol berarti simbol tidak memiliki ukuran bulat khusus dan akan menggunakan ukuran kuadrat kuartet bulat (pengaturan global) dari halaman pengaturan Analisis Otomatis (gambar 1). Jika ukuran default diatur juga ke nol berarti jumlah pecahan dari kontrak saham diperbolehkan. Anda juga dapat mengontrol ukuran lot bulat secara langsung dari formula AFL Anda dengan menggunakan variabel reserved RoundLotSize, misalnya: Pengaturan ini mengendalikan pergerakan harga minimum dari simbol yang diberikan. Anda dapat menentukannya di tingkat global dan per simbol. Seperti ukuran putaran lot, Anda dapat menentukan ukuran kuncian per simbol di halaman Symbol-gtInformation (gambar 3). Nilai nol menginstruksikan AmiBroker untuk menggunakan ukuran kuota tick kuadrat yang ditentukan di halaman Pengaturan (gambar 1) jendela Analisis Otomatis. Jika ukuran kutu default juga disetel ke nol berarti tidak ada pergerakan harga minimum. Anda dapat mengatur dan mengambil ukuran kutu juga dari formula AFL menggunakan variabel TickSize reserved, misalnya: Perhatikan bahwa pengaturan ukuran kutu mempengaruhi HANYA perdagangan yang dikeluarkan oleh penghentian built-in dan atau ApplyStop (). Backtester mengasumsikan bahwa data harga mengikuti persyaratan ukuran tick dan tidak mengubah array harga yang dipasok oleh pengguna. Jadi, menentukan ukuran kutu masuk akal hanya jika Anda menggunakan penghentian built-in sehingga titik keluar dihasilkan pada tingkat harga quotetowedquot daripada yang dihitung. Misalnya di Jepang - Anda tidak dapat memiliki bagian fraksional dari yen sehingga Anda harus menentukan ticksize global menjadi 1, jadi berhenti berhenti beroperasi pada tingkat integer. Setelan margin akun menentukan persyaratan persentase margin untuk keseluruhan akun. Nilai default dari margin Account adalah 100. Ini berarti bahwa Anda harus menyediakan 100 dana untuk memasuki perdagangan, dan inilah cara bagaimana backtester bekerja di versi sebelumnya. Tapi sekarang Anda bisa mensimulasikan akun margin. Bila Anda membeli dengan margin Anda hanya meminjam uang dari broker Anda untuk membeli saham. Dengan peraturan saat ini Anda dapat memasang 50 dari harga pembelian saham yang ingin Anda beli dan meminjam separuh lainnya dari broker Anda. Untuk mensimulasikan ini masuk saja 50 di bidang margin Account (lihat gambar 1). Jika ekuitas awal Anda ditetapkan ke 10000 daya beli Anda akan menjadi 20000 dan Anda akan dapat memasuki posisi yang lebih besar. Perlu diketahui bahwa pengaturan ini menetapkan margin untuk keseluruhan akun dan TIDAK terkait dengan perdagangan berjangka sama sekali. Dengan kata lain Anda bisa menukar saham dengan margin account. QuotReverse entry signal memaksa exitquot check box ke pengaturan Backtester. Saat ON (pengaturan default) - backtester bekerja seperti pada versi sebelumnya dan menutup posisi sudah terbuka jika sinyal masuk baru di arah sebaliknya ditemui. Jika saklar ini OFF - meskipun sinyal balik terjadi, backtester mempertahankan perdagangan terbuka saat ini dan tidak menutup posisi sampai sinyal keluar (sell atau cover) tetap dihasilkan. Dengan kata lain saat saklar ini MATI backtester mengabaikan sinyal pendek selama perdagangan panjang dan mengabaikan sinyal Beli selama perdagangan singkat. QuotAllow bar yang sama keluar (single bar trade) quot pilihan ke Pengaturan Bila ON (pengaturan default) - masuk dan keluar pada bar yang sama diperbolehkan (seperti pada versi sebelumnya) jika OFF - exit bisa terjadi mulai dari Bar berikutnya saja (ini berlaku untuk sinyal reguler, ada pengaturan terpisah untuk pintu keluar yang dihasilkan oleh ApplyStop). Switching to OFF memungkinkan untuk mereproduksi perilaku backtester MS yang tidak mampu menangani hari yang sama. QuotActivate stop soonquotThis setting memecahkan masalah sistem pengujian yang memasuki perdagangan di pasar terbuka. Pada versi sebelum 4.09 backtester diasumsikan bahwa Anda memasuki perdagangan di pasar sehingga berhenti terpasang diaktifkan dari hari berikutnya. Masalahnya adalah ketika Anda sebenarnya mendefinisikan harga terbuka sebagai harga masuk perdagangan - maka fluktuasi harga hari yang sama tidak memicu pemberhentian. Ada beberapa workarounds diterbitkan berdasarkan kode AFL tapi sekarang Anda tidak perlu menggunakannya. Cukup jika Anda berdagang terbuka Anda harus menandai stop quotActivate stopquote segera (gambar 1). Anda mungkin bertanya mengapa tidak hanya memeriksa array buyprice atau shortprice jika sama dengan harga terbuka. Unfortunatelly ini biasa bekerja. Mengapa Cukup karena ada doji hari ketika harga terbuka sama dengan penutupan dan kemudian backtester tidak akan pernah tahu apakah perdagangan masuk di pasar terbuka atau dekat. Jadi kita benar-benar butuh setting yang terpisah. QuotUse QuickAFLquotQuickAFL (tm) adalah fitur yang memungkinkan perhitungan AFL lebih cepat dalam kondisi tertentu. Awalnya (sejak 2003) hanya tersedia untuk indikator, seperti versi 5.14 tersedia dalam Automatic Analysis juga. Awalnya idenya adalah untuk memungkinkan redundansi grafik lebih cepat melalui perhitungan formula AFL hanya untuk bagian yang terlihat pada grafik. Dengan cara yang sama, jendela analisis otomatis dapat menggunakan subset dari kutipan yang tersedia untuk menghitung AFL, jika dipilih parameter 8220range8221 kurang dari 8220All quotationsquot. Penjelasan terperinci tentang bagaimana QuickAFL bekerja dan bagaimana cara mengendalikannya, disediakan dalam artikel Basis Pengetahuan ini: amibrokerkb20080703quickafl Perhatikan bahwa opsi ini tidak hanya bekerja di backtester, namun juga dalam pengoptimalan, eksplorasi dan pemindaian. Peninjauan ulang: Menafsirkan Backtesting Masa Lalu adalah sebuah kunci. Komponen pengembangan sistem perdagangan yang efektif. Hal ini dilakukan dengan merekonstruksi, dengan data historis, perdagangan yang akan terjadi di masa lalu dengan menggunakan peraturan yang didefinisikan oleh strategi yang diberikan. Hasilnya menawarkan statistik yang bisa digunakan untuk mengukur keefektifan strategi. Dengan menggunakan data ini, para pedagang dapat mengoptimalkan dan memperbaiki strategi mereka, menemukan kekurangan teknis atau teoritis, dan mendapatkan kepercayaan pada strategi mereka sebelum menerapkannya ke pasar sebenarnya. Teori dasarnya adalah bahwa setiap strategi yang bekerja dengan baik di masa lalu cenderung berjalan dengan baik di masa depan, dan sebaliknya, strategi apa pun yang berkinerja buruk di masa lalu cenderung berkinerja buruk di masa depan. Artikel ini membahas aplikasi apa yang digunakan untuk melakukan backtest, data seperti apa yang diperoleh, dan bagaimana menggunakannya untuk menggunakan Data dan Alat BackTesting dapat memberikan banyak umpan balik statistik yang berharga mengenai sistem yang diberikan. Beberapa statistik backtesting universal meliputi: Laba atau Rugi Bersih - Persentase keuntungan atau kerugian bersih. Kerangka Waktu - Tanggal terakhir di mana proses pengujian terjadi. Universe - Saham yang termasuk dalam backtest. Langkah Volatilitas - Persentase maksimum terbalik dan downside. Rata-rata - Persentase kenaikan rata-rata dan rata-rata kerugian, rata-rata bar yang ditahan. Paparan - Persentase modal yang diinvestasikan (atau terkena pasar). Rasio - rasio Wins-to-losses. Annualized return - Persentase pengembalian lebih dari satu tahun. Resiko yang disesuaikan kembali - Persentase pengembalian sebagai fungsi risiko. Biasanya, backtesting software akan memiliki dua layar yang penting. Yang pertama memungkinkan pedagang untuk menyesuaikan pengaturan untuk backtesting. Penyesuaian ini mencakup segala hal mulai dari periode waktu hingga biaya komisi. Berikut adalah contoh layar seperti di AmiBroker: Layar kedua adalah laporan hasil backtesting aktual. Di sinilah Anda dapat menemukan semua statistik yang disebutkan di atas. Sekali lagi, berikut adalah contoh layar ini di AmiBroker: Secara umum, kebanyakan perangkat lunak perdagangan berisi elemen yang serupa. Beberapa program perangkat lunak high-end juga mencakup fungsionalitas tambahan untuk melakukan ukuran posisi otomatis, optimalisasi dan fitur lainnya yang lebih maju. 10 Perintah Ada banyak faktor yang diperhatikan para pedagang saat mereka melakukan backtesting strategi trading. Berikut adalah daftar 10 hal terpenting yang harus diingat saat backtesting: Perhatikan tren pasar yang luas dalam kerangka waktu di mana strategi yang diberikan diuji. Misalnya, jika strategi hanya dilelang pada tahun 1999-2000, mungkin strategi ini tidak berjalan dengan baik di pasar beruang. Seringkali merupakan ide bagus untuk melakukan backtest dalam jangka waktu lama yang mencakup beberapa jenis kondisi pasar yang berbeda. Perhatikan alam semesta di mana backtesting terjadi. Misalnya, jika sistem pasar yang luas diuji dengan alam semesta yang terdiri dari saham teknologi, hal itu mungkin gagal dilakukan dengan baik di berbagai sektor. Sebagai aturan umum, jika sebuah strategi ditargetkan pada genre saham tertentu, batasi alam semesta untuk genre itu, namun, dalam kasus lain, pertahankan alam semesta yang besar untuk tujuan pengujian. Langkah-langkah volatilitas sangat penting untuk dipertimbangkan dalam mengembangkan sistem perdagangan. Hal ini terutama berlaku untuk akun leverage, yang mendapat margin call jika ekuitas mereka turun di bawah titik tertentu. Pedagang harus berusaha menjaga agar volatilitas tetap rendah agar mengurangi risiko dan memungkinkan transisi lebih mudah masuk dan keluar dari saham tertentu. Jumlah rata-rata bar yang dipegang juga sangat penting untuk ditonton saat mengembangkan sistem perdagangan. Meskipun kebanyakan perangkat lunak backtesting mencakup biaya komisi dalam perhitungan akhir, bukan berarti Anda harus mengabaikan statistik ini. Jika memungkinkan, meningkatkan jumlah rata-rata bar yang dimiliki dapat mengurangi biaya komisi, dan meningkatkan keseluruhan pengembalian Anda. Paparan adalah pedang bermata dua. Eksposur yang meningkat dapat menyebabkan keuntungan lebih tinggi atau kerugian yang lebih tinggi, sementara penurunan eksposur berarti menurunkan keuntungan atau menurunkan kerugian. Namun, secara umum, adalah ide yang bagus untuk mempertahankan eksposur di bawah 70 untuk mengurangi risiko dan memungkinkan transisi lebih mudah masuk dan keluar dari saham tertentu. Statistik rata-rata gainloss, dikombinasikan dengan rasio won-to-loss, dapat berguna untuk menentukan ukuran posisi optimal dan pengelolaan uang menggunakan teknik seperti Kelly Criterion. (Lihat Manajemen Uang Menggunakan Kriteria Kelly.) Pedagang dapat mengambil posisi yang lebih besar dan mengurangi biaya komisi dengan meningkatkan keuntungan rata-rata mereka dan meningkatkan rasio kemenangan-terhadap-kerugian mereka. Kembalinya tahunan sangat penting karena digunakan sebagai alat untuk mengukur kembali sistem terhadap tempat investasi lainnya. Penting tidak hanya untuk melihat keseluruhan pengembalian tahunan, tetapi juga untuk memperhitungkan peningkatan atau penurunan risiko. Hal ini dapat dilakukan dengan melihat tingkat pengembalian yang disesuaikan dengan risiko, yang memperhitungkan berbagai faktor risiko. Sebelum sistem perdagangan diterapkan, perusahaan harus mengungguli semua tempat investasi lainnya dengan risiko sama atau kurang. Kustomisasi backtesting sangat penting. Banyak aplikasi backtesting memiliki masukan untuk jumlah komisi, ukuran lot bulat (atau pecahan), ukuran tick, persyaratan margin, tingkat suku bunga, asumsi slippage, peraturan ukuran posisi, aturan keluar bar yang sama, (trailing) stop setting dan banyak lagi. T o mendapatkan hasil backtesting yang paling akurat, saya penting untuk menyetel pengaturan ini untuk meniru broker yang akan digunakan saat sistem dijalankan live. Backtesting kadang-kadang dapat menyebabkan sesuatu yang dikenal sebagai over-optimization. Ini adalah kondisi dimana hasil kinerja sangat sesuai dengan masa lalu sehingga mereka tidak lagi seakurat mungkin di masa depan. Biasanya ide yang baik untuk menerapkan peraturan yang berlaku untuk semua saham, atau serangkaian target saham yang ditargetkan, dan tidak dioptimalkan sejauh peraturan tidak dapat dimengerti oleh pencipta. Backtesting tidak selalu merupakan cara yang paling akurat untuk mengukur keefektifan sistem perdagangan tertentu. Terkadang strategi yang dilakukan dengan baik di masa lalu gagal dilakukan dengan baik di masa sekarang. Kinerja masa lalu tidak menunjukkan hasil di masa depan. Pastikan kertas menukar sistem yang telah berhasil dilipat sebelum ditayangkan untuk memastikan strategi masih berlaku dalam praktik. Kesimpulan Backtesting adalah salah satu aspek terpenting dalam mengembangkan sistem perdagangan. Jika dibuat dan diinterpretasikan dengan benar, ini dapat membantu pedagang mengoptimalkan dan memperbaiki strategi mereka, menemukan kekurangan teknis atau teoritis, serta mendapatkan kepercayaan pada strategi mereka sebelum menerapkannya ke pasar dunia nyata. Sumber Daya Tradecision (tradecision) - Pengembangan Sistem Perdagangan High-end AmiBroker (amibroker) - Pengembangan Sistem Perdagangan Anggaran. Teori ekonomi tentang pengeluaran total dalam perekonomian dan pengaruhnya terhadap output dan inflasi. Ekonomi Keynesian dikembangkan. Kepemilikan aset dalam portofolio. Investasi portofolio dilakukan dengan harapan menghasilkan laba di atasnya. Ini. Rasio yang dikembangkan oleh Jack Treynor bahwa langkah-langkah pengembalian yang diperoleh melebihi yang bisa diperoleh tanpa risiko. Pembelian kembali saham beredar (repurchase) oleh perusahaan untuk mengurangi jumlah saham yang beredar di pasaran. Perusahaan. Pengembalian pajak adalah pengembalian pajak yang dibayarkan kepada seseorang atau rumah tangga bila kewajiban pajak sebenarnya kurang dari jumlah tersebut. Nilai moneter semua barang jadi dan jasa yang dihasilkan dalam batas negara dalam periode waktu tertentu. Backtesting Backstesting adalah proses penerapan strategi trading atau metode analisis terhadap data historis untuk melihat seberapa akurat strategi atau metode tersebut memperkirakan hasil aktual. . Cara kerjanya (Contoh): Sebagai contoh, mari kita anggap Anda merancang sebuah model yang menurut Anda secara konsisten memprediksi nilai SampP 500 di masa depan. Dengan menggunakan data historis, Anda dapat mendukung model untuk melihat apakah itu akan berhasil di masa lalu. Dengan membandingkan hasil prediksi model terhadap hasil historis yang sebenarnya, backtesting dapat menentukan apakah model memiliki nilai prediktif. Hampir semua metode untuk memprediksi sesuatu dapat ditunda. Sebagai contoh, seorang analis dapat mendukung metode mereka untuk memprediksi laba bersih perusahaan. Tingkat volatilitas saham tertentu. Rasio kunci Atau kembali persentase. Pedagang teknis adalah pengguna backtesting yang paling umum, dan kebanyakan backtesting saat ini dilakukan dengan perangkat lunak komputer. Mengapa Penting: Backtesting menawarkan analis. Pedagang, dan investor cara untuk mengevaluasi dan mengoptimalkan strategi perdagangan dan model analitis mereka sebelum menerapkannya. Gagasannya adalah bahwa strategi yang akan berhasil dengan buruk di masa lalu mungkin akan berjalan dengan buruk di masa depan, dan sebaliknya. Tapi seperti yang Anda lihat, bagian penting dari backtesting adalah asumsi berisiko bahwa kinerja masa lalu memprediksi kinerja di masa depan. InvestingAnswers adalah satu-satunya panduan referensi keuangan yang pernah Anda butuhkan. Alat mendalam kami memberi jutaan orang di seluruh dunia dengan sangat rinci dan benar-benar menjelaskan jawaban atas pertanyaan keuangan terpenting mereka. Kami menyediakan kamus keuangan paling komprehensif dan bermutu tinggi di planet ini, ditambah ribuan artikel, kalkulator praktis, dan jawaban atas pertanyaan keuangan umum - semua 100 gratis. Setiap bulan, lebih dari 1 juta pengunjung di 223 negara di seluruh dunia beralih ke InvestingAnswers sebagai sumber informasi berharga yang terpercaya. Backtesting Strategi Trading Algoritma yang Benar - Bagian I Artikel ini melanjutkan rangkaian perdagangan kuantitatif, yang dimulai dengan Panduan Pemula dan Identifikasi Strategi Kedua artikel yang lebih lama dan lebih terlibat ini sangat populer sehingga Ill melanjutkan hal ini dan memberikan detail tentang topik backtesting strategi. Algoritma backtesting membutuhkan pengetahuan dari banyak bidang, termasuk psikologi, matematika, statistik, pengembangan perangkat lunak dan mikrostruktur pasar. Saya tidak bisa berharap untuk membahas semua topik dalam satu artikel, jadi saya akan membagi mereka menjadi dua atau tiga bagian yang lebih kecil. Apa yang akan kita bahas di bagian ini. Permulaan dengan mendefinisikan backtesting dan kemudian saya akan menjelaskan dasar-dasar bagaimana hal itu dilakukan. Kemudian saya akan menjelaskan bias yang kita singgung pada Panduan Pemula untuk Perdagangan Kuantitatif. Selanjutnya saya akan menyajikan perbandingan dari berbagai opsi perangkat lunak backtesting yang ada. Dalam artikel selanjutnya kita akan melihat rincian implementasi strategi yang seringkali tidak disebutkan atau diabaikan. Kami juga akan mempertimbangkan bagaimana membuat proses backtesting lebih realistis dengan memasukkan kekhasan dari pertukaran perdagangan. Kemudian kita akan membahas biaya transaksi dan cara memodelkannya dengan benar dalam setting backtest. Kita akan berakhir dengan diskusi tentang kinerja backtests kita dan akhirnya memberikan contoh strategi quant yang umum, yang dikenal sebagai perdagangan pasang rata-rata. Mari kita mulai dengan membahas backtesting apa dan mengapa kita harus melaksanakannya dalam perdagangan algoritmik kita. Apa itu Trading Algoritma Backtesting yang berdiri terpisah dari jenis kelas investasi lainnya karena kita dapat dengan lebih andal memberikan harapan tentang kinerja masa depan dari kinerja masa lalu, sebagai konsekuensi ketersediaan data yang melimpah. Proses dimana hal ini dilakukan disebut backtesting. Secara sederhana, backtesting dilakukan dengan mengekspos algoritma strategi khusus Anda ke arus data keuangan historis, yang mengarah ke satu set sinyal perdagangan. Setiap perdagangan (yang akan kita maksud di sini untuk menjadi perjalanan pulang dari dua sinyal) akan memiliki keuntungan atau kerugian terkait. Akumulasi keuntungan ini selama durasi backtest strategi Anda akan menghasilkan total keuntungan dan kerugian (juga dikenal sebagai PL atau PnL). Itulah inti dari ide tersebut, walaupun tentu saja setan selalu ada dalam rincian Apa alasan utama untuk mendukung strategi algoritme Filtrasi - Jika Anda ingat dari artikel tentang Identifikasi Strategi. Tujuan kami pada tahap penelitian awal adalah menyusun strategi pipa dan kemudian menyaring strategi yang tidak memenuhi kriteria tertentu. Backtesting memberi kita mekanisme penyaringan lain, karena kita dapat menghilangkan strategi yang tidak sesuai dengan kebutuhan kinerja kita. Pemodelan - Backtesting memungkinkan kita untuk (aman) menguji model baru fenomena pasar tertentu, seperti biaya transaksi, urutan routing, latency, likuiditas atau masalah struktur mikro pasar lainnya. Optimalisasi - Meskipun pengoptimalan strategi penuh dengan bias, backtesting memungkinkan kita untuk meningkatkan kinerja strategi dengan memodifikasi kuantitas atau nilai parameter yang terkait dengan strategi tersebut dan menghitung ulang kinerjanya. Verifikasi - Strategi kami sering bersumber dari luar, melalui strategi pipa kami. Backtesting strategi memastikan bahwa hal itu tidak salah dilaksanakan. Meskipun kita jarang memiliki akses terhadap sinyal yang dihasilkan oleh strategi eksternal, kita akan sering memiliki akses ke metrik kinerja seperti karakteristik Sharpe Ratio and Drawdown. Dengan demikian kita bisa membandingkannya dengan implementasi kita sendiri. Backtesting menyediakan sejumlah keuntungan untuk perdagangan algoritmik. Namun, tidak selalu mungkin untuk secara langsung mendukung strategi. Secara umum, seiring dengan meningkatnya frekuensi strategi, menjadi sulit untuk memodelkan efek mikro pasar dan pertukaran dengan benar. Hal ini menyebabkan backtests kurang andal dan dengan demikian merupakan evaluasi yang lebih rumit mengenai strategi yang dipilih. Ini adalah masalah khusus di mana sistem eksekusi adalah kunci kinerja strategi, seperti algoritma frekuensi ultra-tinggi. Sayangnya, backtesting penuh dengan bias semua jenis. Kami telah menyinggung beberapa masalah ini di artikel sebelumnya, namun sekarang kami akan membahasnya secara mendalam. Biases Mempengaruhi Strategi Backtests Ada banyak bias yang dapat mempengaruhi kinerja strategi backtested. Sayangnya, bias ini memiliki kecenderungan untuk mengembang kinerja daripada menguranginya. Dengan demikian Anda harus selalu mempertimbangkan backtest untuk menjadi batas tertinggi ideal pada kinerja aktual strategi. Hampir tidak mungkin untuk menghilangkan bias dari perdagangan algoritmik, jadi tugas kita untuk meminimalkannya sebaik mungkin untuk membuat keputusan berdasarkan informasi tentang strategi algoritmik kami. Ada empat bias utama yang ingin saya diskusikan: Optimasi Bias. Look-Ahead Bias. Bias Survivorship dan Toleransi Psikologis Bias. Optimasi Bias Ini mungkin yang paling berbahaya dari semua bias backtest. Ini melibatkan penyesuaian atau pengenalan parameter perdagangan tambahan sampai kinerja strategi pada kumpulan data backtest sangat menarik. Namun, sekali menjalani kinerja strategi bisa sangat berbeda. Nama lain untuk bias ini adalah kurva pas atau data-snooping bias. Bias optimasi sulit dihilangkan karena strategi algoritmik sering melibatkan banyak parameter. Parameter dalam contoh ini mungkin merupakan kriteria entryexit, periode lihat-kembali, periode rata-rata (yaitu parameter pemulusan rata-rata bergerak) atau frekuensi pengukuran volatilitas. Bias optimasi dapat diminimalkan dengan menjaga jumlah parameter seminimal mungkin dan meningkatkan jumlah titik data dalam rangkaian pelatihan. Sebenarnya, kita juga harus berhati-hati dengan yang terakhir karena poin pelatihan yang lebih tua dapat dikenai rezim sebelumnya (seperti lingkungan peraturan) dan karenanya mungkin tidak sesuai dengan strategi Anda saat ini. Salah satu metode untuk membantu mitigasi bias ini adalah dengan melakukan analisis sensitivitas. Ini berarti memvariasikan parameter secara bertahap dan merencanakan permukaan kinerja. Suara, penalaran fundamental untuk pilihan parameter harus, dengan semua faktor lain dipertimbangkan, mengarah ke permukaan parameter yang lebih halus. Jika Anda memiliki permukaan kinerja yang sangat gelisah, seringkali berarti bahwa parameter tidak mencerminkan fenomena dan merupakan artefak dari data uji. Ada banyak literatur algoritma optimasi multi-dimensi dan ini adalah bidang penelitian yang sangat aktif. Saya tidak akan memikirkannya di sini, tapi tetap mengingatnya di belakang pikiran Anda saat Anda menemukan strategi dengan Bias Look-Ahead Back-Look yang fantastis Back-Look bias di depan diperkenalkan ke sistem backtesting saat data masa depan secara tidak sengaja disertakan pada satu titik di Simulasi dimana data tersebut sebenarnya tidak akan tersedia. Jika kita menjalankan backtest secara kronologis dan kita mencapai titik waktu N, maka bias look-ahead terjadi jika data disertakan untuk sembarang titik Nk, dimana k0. Kesalahan bias di depan bias bisa sangat halus. Berikut adalah tiga contoh bagaimana bias melihat ke depan dapat dikenalkan: Technical Bugs - Arraysvectors dalam kode sering kali memiliki iterator atau variabel indeks. Sepenuhnya offset dari indeks ini dapat menyebabkan bias melihat-depan dengan memasukkan data di Nk untuk non-nol k. Perhitungan Parameter - Contoh umum bias tampilan depan lainnya saat menghitung parameter strategi optimal, seperti regresi linier antara dua deret waktu. Jika seluruh kumpulan data (termasuk data masa depan) digunakan untuk menghitung koefisien regresi, dan dengan demikian secara retroaktif diterapkan pada strategi perdagangan untuk tujuan pengoptimalan, maka data masa depan digabungkan dan bias melihat-depan ada. MaximaMinima - Strategi perdagangan tertentu menggunakan nilai ekstrim dalam periode waktu tertentu, seperti memasukkan harga OHLC tinggi atau rendah. Namun, karena nilai maksimal maksimal ini hanya dapat dihitung pada akhir periode waktu, bias melihat ke depan diperkenalkan jika nilai ini digunakan - menunjukkan periode saat ini. Selalu perlu untuk menunda nilai highlow setidaknya dengan satu periode dalam strategi perdagangan yang memanfaatkannya. Seperti bias optimasi, seseorang harus sangat berhati-hati untuk menghindari pendahuluannya. Hal ini sering menjadi alasan utama mengapa strategi trading underperform backtests mereka secara signifikan dalam live trading. Bias Survivorship Survivinance bias adalah fenomena yang sangat berbahaya dan dapat menyebabkan kinerja meningkat secara signifikan untuk jenis strategi tertentu. Ini terjadi ketika strategi diuji pada kumpulan data yang tidak mencakup keseluruhan aset awal yang mungkin telah dipilih pada titik waktu tertentu, namun hanya mempertimbangkan yang bertahan sampai saat ini. Sebagai contoh, pertimbangkan untuk menguji strategi pemilihan acak ekuitas sebelum dan sesudah jatuhnya pasar 2001. Beberapa saham teknologi bangkrut, sementara yang lain berhasil bertahan dan bahkan makmur. Jika kami membatasi strategi ini hanya pada saham yang berhasil melewati periode penarikan pasar, kami akan memperkenalkan bias bertahan karena mereka telah menunjukkan keberhasilan mereka kepada kami. Sebenarnya, ini hanyalah kasus bias pratinjau yang spesifik, karena informasi masa depan digabungkan ke dalam analisis masa lalu. Ada dua cara utama untuk mengurangi bias bertahan dalam strategi backtests Anda: Survivorship Bias Free Datasets - Dalam kasus data ekuitas, kemungkinan untuk membeli dataset yang mencakup entitas yang delisted, meskipun tidak murah dan hanya cenderung dimanfaatkan oleh perusahaan institusional. . Secara khusus, data Yahoo Finance TIDAK bias bertahan bebas, dan ini biasa digunakan oleh banyak pedagang eceran algo. Seseorang juga dapat melakukan perdagangan di kelas aset yang tidak rentan terhadap bias bertahan, seperti komoditas tertentu (dan derivatif masa depan mereka). Gunakan Data yang Lebih Baru - Dalam kasus ekuitas, dengan memanfaatkan kumpulan data yang lebih baru, mengurangi kemungkinan pemilihan saham yang dipilih tertimbang untuk orang yang selamat, karena kemungkinan kehilangan delisting saham secara keseluruhan dalam periode waktu yang lebih singkat. Kita juga bisa mulai membangun dataset bebas bias pribadi dengan mengumpulkan data dari titik saat ini dan seterusnya. Setelah 3-4 tahun, Anda akan memiliki data ekuitas independen yang solid untuk bertahan lama yang mendukung strategi lebih lanjut. Kami sekarang akan mempertimbangkan fenomena psikologis tertentu yang dapat mempengaruhi kinerja perdagangan Anda. Toleransi Psikologis Bias Fenomena khusus ini tidak sering dibahas dalam konteks perdagangan kuantitatif. Namun, hal itu dibahas secara ekstensif sehubungan dengan metode perdagangan yang lebih discretionary. Ini memiliki berbagai nama, tapi saya telah memutuskan untuk menyebutnya bias toleransi psikologis karena menangkap esensi masalah. Saat membuat backtests selama 5 tahun atau lebih, mudah untuk melihat kurva ekuitas naik naik, menghitung imbal hasil tahunan gabungan, rasio Sharpe dan bahkan karakteristik penarikan dan merasa puas dengan hasilnya. As an example, the strategy might possess a maximum relative drawdown of 25 and a maximum drawdown duration of 4 months. This would not be atypical for a momentum strategy. It is straightforward to convince oneself that it is easy to tolerate such periods of losses because the overall picture is rosy. However, in practice, it is far harder If historical drawdowns of 25 or more occur in the backtests, then in all likelihood you will see periods of similar drawdown in live trading. These periods of drawdown are psychologically difficult to endure. I have observed first hand what an extended drawdown can be like, in an institutional setting, and it is not pleasant - even if the backtests suggest such periods will occur. The reason I have termed it a bias is that often a strategy which would otherwise be successful is stopped from trading during times of extended drawdown and thus will lead to significant underperformance compared to a backtest. Thus, even though the strategy is algorithmic in nature, psychological factors can still have a heavy influence on profitability. The takeaway is to ensure that if you see drawdowns of a certain percentage and duration in the backtests, then you should expect them to occur in live trading environments, and will need to persevere in order to reach profitability once more. Software Packages for Backtesting The software landscape for strategy backtesting is vast. Solutions range from fully-integrated institutional grade sophisticated software through to programming languages such as C, Python and R where nearly everything must be written from scratch (or suitable plugins obtained). As quant traders we are interested in the balance of being able to own our trading technology stack versus the speed and reliability of our development methodology. Here are the key considerations for software choice: Programming Skill - The choice of environment will in a large part come down to your ability to program software. I would argue that being in control of the total stack will have a greater effect on your long term PL than outsourcing as much as possible to vendor software. This is due to the downside risk of having external bugs or idiosyncrasies that you are unable to fix in vendor software, which would otherwise be easily remedied if you had more control over your tech stack. You also want an environment that strikes the right balance between productivity, library availability and speed of execution. I make my own personal recommendation below. Execution CapabilityBroker Interaction - Certain backtesting software, such as Tradestation, ties in directly with a brokerage. I am not a fan of this approach as reducing transaction costs are often a big component of getting a higher Sharpe ratio. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFTUHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as CC for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPySciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: FreeOpen Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: CC allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source CC implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Mulai dengan Trading Kuantitatif

Comments

Popular Posts