Tuesday 4 July 2017

Trading Strategy Generation Using Genetic Algorithms


Ada banyak literatur tentang keberhasilan penerapan algoritma evolusioner secara umum, dan algoritma genetika khususnya, ke pasar keuangan. Namun, saya merasa tidak nyaman saat membaca literatur ini. Algoritma genetika bisa terlalu sesuai dengan data yang ada. Dengan begitu banyak kombinasi, mudah untuk menemukan beberapa peraturan yang bekerja. Ini mungkin tidak kuat dan tidak memiliki penjelasan yang konsisten mengapa peraturan ini berjalan dan peraturan tersebut tidak melampaui argumen belaka (melingkar) sehingga berhasil karena pengujian menunjukkan bahwa hasilnya berhasil. Apa konsensus saat ini tentang penerapan algoritma genetika di bidang keuangan yang diajukan pada 18 Februari 11 jam 9:00 Saya telah bekerja di hedge fund yang memungkinkan strategi yang diturunkan dari GA. Demi keamanan, diperlukan agar semua model diajukan jauh sebelum produksi untuk memastikan bahwa mereka masih bekerja di backtests. Jadi mungkin ada penundaan hingga beberapa bulan sebelum model diizinkan masuk. Its juga membantu untuk memisahkan sampel alam semesta menggunakan setengah acak dari kemungkinan saham untuk analisis GA dan setengah lainnya untuk backtests konfirmasi. Apakah itu proses yang berbeda dari yang akan Anda gunakan sebelum mempercayai strategi perdagangan lainnya (Jika demikian, tidak jelas bagi saya apa yang Anda dapatkan dari membuat model GA menggunakan data ke waktu t, lalu menguji sampai tN sebelum mempercayainya, versus menggunakan data Ke waktu tN, tes dari tN ke t, dan menggunakannya segera.) Ndash Darren Cook 23 Nov 11, 2:08 DarrenCook satu masalah yang saya lihat adalah bahwa jika Anda menguji dari tN ke t dan menemukannya tidak bekerja dengan baik, maka Anda akan pergi Untuk membuat model lain yang diuji pada periode waktu yang sama dengan t (ad infinitum). Yang memperkenalkan kemungkinan overfitting kuotot-kuantum selama proses pembuatan model. Ndash Chan-Ho Suh 22 Jul 15 at 5:24 Mengenai data-mengintip, jika GA diimplementasikan dengan benar, itu seharusnya tidak menjadi perhatian. Fungsi mutasi secara khusus disertakan untuk mencari secara acak melalui ruang masalah, dan menghindari pengintaian data. Dengan kata lain, menemukan tingkat mutasi yang tepat dapat berupa sesuatu dari suatu seni dan jika tingkat mutasinya terlalu rendah, maka fungsi tersebut tidak akan semestinya diterapkan. Ndash BioinformaticsGal 6 Apr 11 at 16:28 BoinformaticsGal Saya tidak mengerti bagaimana masuknya fungsi mutasi memungkinkan kita menghindari pengintaian data. Setelah pencarian, ada fungsi kebugaran yang membuat setiap generasi memiliki data lebih banyak lagi. Atau saya tidak mengerti Anda benar ndash Vishal Belsare 15 September 11 di 18:05 Ada banyak orang di sini berbicara tentang bagaimana GA bersifat empiris, tidak memiliki dasar teoritis, adalah kotak hitam, dan sejenisnya. Saya mohon untuk membedakan Theres keseluruhan cabang ekonomi yang ditujukan untuk melihat pasar dalam hal metafora evolusioner: Ekonomi Evolusioner Saya sangat merekomendasikan buku Dopfer, The Evolutionary Foundations of Economics, sebagai intro. Cambridge. orggbknowledgeisbnitem1158033sitelocaleenGB Jika pandangan filosofis Anda adalah bahwa pasar pada dasarnya adalah kasino raksasa, atau permainan, maka GA hanyalah sebuah kotak hitam dan tidak memiliki dasar teoritis. Namun, jika filosofi Anda adalah bahwa pasar adalah ekologi survival-of-the-fittest, maka GA memiliki banyak fondasi teoretis, dan sangat masuk akal untuk membahas hal-hal seperti spesiasi perusahaan, ekologi pasar, genom portofolio, iklim perdagangan, dan seperti. Dijawab Apr 5 11 at 15:42 Pada skala waktu singkat itu lebih merupakan kasino. Seperti alam, sebenarnya. Ndash quantdev Apr 5 11 at 20:46 quantdev, masalahnya dengan ini adalah bahwa GA - seperti metode kuantitatif lainnya - hanya bekerja dengan skala waktu singkat, jika saya tidak salah. Jadi jika pasar saham lebih seperti pasar saham, maka GA sama sekali tidak berguna. Ndash Graviton 6 Apr 11 jam 8:56 Graviton. Tidak ada alasan yang melekat mengapa seseorang tidak bisa melakukan GA untuk melakukan analisis pada rentang waktu yang lebih lama. Domain waktu GA diukur dalam generasi, bukan tahun atau hari. Jadi, orang hanya perlu mendefinisikan populasi yang mengandung individu yang generasinya beberapa tahun atau puluhan tahun yang panjang (misalnya korporasi). Sudah pasti ada beberapa pekerjaan yang mendekati penentuan fakta perusahaan oleh proses produksinya. Dalam model seperti itu, seseorang akan mengoptimalkan model bisnis perusahaan yang efisien, mengingat iklim pasar tertentu. Ini bukan model portofolio harga saham. Ndash BioinformaticsGal 6 Apr 11 at 15:12 Dengan asumsi Anda menghindari bias pengintaian data dan semua potensi jebakan menggunakan masa lalu untuk memprediksi masa depan, percayalah algoritma genetika untuk menemukan solusi tepat, hampir banyak kemungkinan bahwa Anda bertaruh saat Anda melakukannya. Secara aktif mengelola portofolio, baik kuantitatif maupun discretionary. Jika Anda percaya pada efisiensi pasar maka biaya transaksi Anda meningkat dari manajemen aktif tidak masuk akal. Jika, bagaimanapun Anda yakin ada pola atau kelemahan psikologis struktural untuk dieksploitasi dan hasilnya layak waktu dan uang untuk meneliti dan menerapkan strategi pilihan logis adalah manajemen aktif. Menjalankan strategi yang diturunkan dari GA adalah taruhan tersirat melawan efisiensi pasar. Anda pada dasarnya mengatakan bahwa saya pikir ada salah penilaian yang terjadi dari beberapa alasan (massa orang-orang irasional, reksa dana bergirang karena insentif yang salah selaras, dll.) Dan menjalankan GA ini dapat mengurutkan data massal ini dengan cara yang lebih cepat daripada yang saya bisa. . Menjawab 18 Feb 11 at 15:49 mengelola portofolio aktif secara manual melibatkan penggunaan semua informasi yang kami miliki dan mendapatkan kesimpulan logis tentang pasar dan kemudian menjalankan strategi untuk melakukannya, ini adalah aktivitas rasional. OTOH, menggunakan GA menggunakan alat kotak hitam, kami dapat menjelaskan hasil yang diperoleh darinya dari prinsip yang berlaku. Saya tidak terlalu yakin apakah keduanya benar-benar sama. Ndash Graviton 18 Feb 11 at 15:57 Graviton Ya tapi pertimbangkan kesamaan antara GA39 dan bagaimana kita belajar tentang pasar, mengembangkan strategi, belajar dari kesalahan, dan beradaptasi dengan perubahan kondisi pasar. Ketika Anda meneliti apa yang menang dan kehilangan saham memiliki kesamaan, atau berapa volume dan pola harga menciptakan perdagangan yang baik, atau model mana yang paling akurat untuk menilai derivatif apa yang Anda lakukan adalah data mining masa lalu dengan cara tertentu. Bila kondisi pasar berubah, Anda bisa menukar strategi baru atau akhirnya gulung tikar. Jika ada tepi yang dapat dieksploitasi di pasar maka satu-satunya perbedaan antara Anda dan GA adalah ndash Joshua Chance 18 Feb 11 di 16:46 Graviton (dalam pengertian yang sangat luas) adalah bahwa Anda memiliki sebuah narasi, sebuah cerita untuk mengikuti strategi Anda. . Kita manusia berisiko menemukan pola yang tampaknya berulang dan kemudian merasionalisasi dan menciptakan sebuah narasi. Risiko GA sama, hanya model yang berpotensi salah mereka tidak menggunakan kata-kata, mereka menggunakan matematika dan logika. Ndash Joshua Chance 18 Feb 11 jam 16:54 almarhum Thomas Cover. (Kemungkinan teorema Informasi terkemuka dari generasinya), menganggap pendekatan Universal untuk hal-hal seperti kompresi data dan alokasi portofolio sebagai algoritma genetika yang sebenarnya. Evolusi tidak memiliki parameter yang sesuai atau sesuai. Mengapa algoritma genetika benar Pendekatan universal tidak membuat asumsi tentang distribusi data yang mendasarinya. Mereka tidak berusaha untuk memprediksi masa depan dari pola atau hal lainnya. Efektivitas teoritis pendekatan Universal (mereka menyajikan tantangan implementasi yang signifikan melihat pertanyaan terbaru saya: Geometri untuk Portofolio Universal) mengikuti dari mereka melakukan apa yang dibutuhkan evolusi. Yang tercepat, paling cerdas, atau paling kuat jangan bertahan di generasi berikutnya. Evolusi mendukung algoritma gen, organisme, meme, portofolio, atau data kompresi yang diposisikan paling mudah disesuaikan dengan apa pun yang terjadi selanjutnya. Selain itu, karena pendekatan ini tidak membuat asumsi dan beroperasi secara non-parametrik, seseorang dapat mempertimbangkan semua tes, bahkan pada semua data historis, seperti di luar sampel. Tentunya mereka memiliki keterbatasan, pastinya mereka tidak dapat bekerja untuk setiap jenis masalah yang kita hadapi di domain kita, tapi astaga, betapa cara yang menarik untuk memikirkan hal-hal itu. Menjawab 14 Jul 13 jam 15:42 Nah, tujuan algo genetik adalah menemukan solusi terbaik tanpa melalui semua skenario yang mungkin karena akan terlalu lama. Jadi tentu saja itu adalah kurva pas, itulah tujuannya. Jawab Mar 6 11 di 20:40 Tapi ada perbedaan yang signifikan antara overfitting sampel (buruk) dan pas populasi (baik). Itulah sebabnya banyak yang menyarankan Anda untuk memvalidasi algoritma Anda dengan pengujian di luar sampel. Ndash Joshua 17 Jul 13 at 2:34 Your Answer 2017 Stack Exchange, Algoritma Genetika IncSnowCron dalam Sistem Perdagangan FOREX Menggunakan Algoritma Genetika untuk menciptakan Strategi Perdagangan FOREX yang menguntungkan. Algoritma Genetika di Cortex Neural Networks Perangkat Lunak Feedforward Backpropagation Neural Network Aplikasi untuk perhitungan genetik berbasis perdagangan Forex. Contoh ini menggunakan konsep dan gagasan dari artikel sebelumnya, jadi tolong baca Algoritma Genetika Jaringan Syaraf Tiruan dalam Sistem Perdagangan FOREX terlebih dahulu, meski tidak wajib. Tentang teks ini Pertama-tama, mohon membaca disclaimer. Ini adalah contoh penggunaan fungsionalitas algoritma genetika Jaringan Cortex Neural Networks, bukan contoh bagaimana melakukan trading yang menguntungkan. Saya bukan guru Anda, saya juga tidak bertanggung jawab atas kerugian Anda. Cortex Neural Networks Software memiliki jaringan syaraf di dalamnya, dan FFBP yang pernah kita bahas sebelumnya hanyalah salah satu cara untuk memilih strategi trading forex. Ini adalah teknik yang bagus, kuat dan bila diaplikasikan dengan benar, sangat menjanjikan. Namun, ada masalah - untuk mengajar Jaringan Syaraf Tiruan. Kita perlu tahu output yang diinginkan. Hal ini agak mudah dilakukan ketika kita melakukan aproksimasi fungsi, kita hanya mengambil nilai sebenarnya dari sebuah fungsi, karena kita tahu apa jadinya. Saat kita melakukan peramalan jaringan syaraf tiruan. Kami menggunakan teknik (dijelaskan dalam artikel sebelumnya) untuk mengajarkan Jaringan Syaraf Tiruan pada sejarah, sekali lagi, jika kita memprediksi, katakanlah, nilai tukar, kita tahu (selama pelatihan) apa prediksi yang benar. Namun, ketika kita membangun sistem perdagangan, kita tidak tahu apa keputusan trading yang benar, walaupun kita tahu nilai tukar. Sebenarnya, kita memiliki banyak strategi trading forex yang bisa kita gunakan kapan saja, dan Kita perlu menemukan yang baik - bagaimana Apa yang harus kita makan sebagai keluaran yang diinginkan dari Neural Net kita Jika Anda mengikuti artikel sebelumnya, Anda tahu, bahwa kita telah menipu untuk mengatasi masalah ini. Kami menganjurkan Neural Network untuk melakukan prediksi nilai tukar (atau nilai tukar berbasis indikator), dan kemudian menggunakan prediksi ini untuk melakukan trading. Kemudian, di luar bagian Neural Network dari program ini, kami membuat keputusan tentang Jaringan Syaraf Tiruan mana yang terbaik. Algoritma genetika dapat mengatasi masalah ini secara langsung, mereka BISA memecahkan masalah yang dinyatakan sebagai menemukan sinyal perdagangan terbaik. Pada artikel ini kita akan menggunakan Cortex Neural Networks Software untuk membuat program semacam itu. Algoritma genetika menggunakan Algoritma Genetika yang sangat berkembang dengan baik, dan sangat beragam. Jika Anda ingin mempelajari semua tentang mereka, saya sarankan Anda menggunakan Wikipedia, karena artikel ini hanya tentang apa yang dapat dilakukan Cortex Neural Networks Software. Memiliki Cortex Neural Networks Software. Kita dapat membuat Jaringan Syaraf Tiruan yang mengambil beberapa input, katakanlah, nilai indikator, dan menghasilkan beberapa keluaran, katakanlah, sinyal perdagangan (beli, jual, tahan) dan stop loss mengambil tingkat keuntungan untuk posisi yang akan dibuka. Tentu saja, jika kita membobol bobot Jaringan Syaraf Tiruan ini secara acak, hasil perdagangan akan sangat buruk. Namun, katakanlah kita menciptakan selusin NN tersebut. Kemudian kita bisa menguji kinerja masing-masing, dan memilih yang terbaik, pemenangnya. Ini adalah generasi pertama NNs. Untuk melanjutkan ke generasi kedua, kita perlu membiarkan pemenang kita berkembang biak, tapi untuk menghindari salinan yang sama, mari tambahkan beberapa noice acak ke bobot keturunannya. Pada generasi kedua, kita memiliki pemenang generasi pertama dan salinannya yang tidak sempurna (bermutasi). Mari kita melakukan pengujian lagi. Kami akan memiliki pemenang lain, yang LEBIH BAIK, maka Jaringan Syaraf Tiruan lainnya ada di generasinya. Dan seterusnya. Kami hanya mengizinkan para pemenang untuk berkembang biak, dan menghilangkan pecundang, sama seperti evolusi kehidupan nyata, dan kami akan mendapatkan jaringan syaraf perdagangan terbaik kami. Tanpa pengetahuan sebelumnya tentang bagaimana sistem perdagangan (algoritma genetika) seharusnya. Algoritma Genetika Jaringan Syaraf Tiruan: Contoh 0 Ini adalah contoh algoritma genetika yang pertama. Dan yang sangat sederhana. Kita akan berjalan melewatinya selangkah demi selangkah, untuk mempelajari semua trik yang akan digunakan contoh berikut. Kode memiliki komentar sebaris, jadi mari kita fokus pada momen penting. Pertama, kita telah menciptakan jaringan syaraf tiruan. Ini menggunakan bobot acak, dan belum diajar. Kemudian, dalam siklus, kita membuat 14 salinannya, dengan menggunakan fumction MUTATIONNN. Fungsi ini membuat salinan sumber Neural Network. Menambahkan nilai acak dari 0 ke (dalam kasus kami) 0,1 ke semua bobot. Kami tetap menangani 15 NNs dalam array, kita bisa melakukannya, karena pegangan hanya bilangan bulat. Alasan kami menggunakan 15 NN tidak ada hubungannya dengan perdagangan: Cortex Neural Networks Software dapat merencanakan hingga 15 baris pada grafik secara bersamaan. Kita bisa menggunakan pendekatan yang berbeda untuk pengujian. Pertama, kita bisa menggunakan set pembelajaran, semuanya sekaligus. Kedua, kita bisa menguji, katakanlah, 12000 surat perintah (dari 100000), dan berjalan melalui rangkaian pembelajaran, dari awal sampai akhir. Itu akan membuat learnigs berbeda, karena kita akan mencari Neural Network s yang menguntungkan pada setiap bagian data, tidak hanya di seluruh rangkaian. Pendekatan kedua bisa memberi kita masalah, jika data berubah, dari awal sampai akhir. Kemudian jaringan akan berkembang, mendapatkan kemampuan untuk berdagang di penghujung data, dan kehilangan kemampuan untuk berdagang sejak awal. Untuk mengatasi masalah itu, kita akan mengambil acak 12000 fragmen data dari data, dan memasukkannya ke Neural Network. Hanyalah siklus yang tak ada habisnya, karena siklus 100000 tidak akan pernah tercapai pada kecepatan kita. Di bawah ini kami menambahkan satu anak untuk setiap jaringan, dengan bobot sedikit berbeda. Perhatikan, bahwa 0.1 untuk mutasi tange bukan satu-satunya pilihan, faktanya, parameter ini pun bisa dioptimalkan menggunakan algoritma genetika. NN yang baru dibuat ditambahkan setelah 15 yang sudah ada. Dengan cara ini kita memiliki 30 NNs dalam array, 15 tua dan 15 baru. Kemudian kita akan melakukan siklus pengujian berikutnya, dan untuk membunuh pecundang, dari kedua generasi. Untuk melakukan pengujian, kami menerapkan Jaringan Syaraf Tiruan ke data kami, untuk menghasilkan keluaran, dan kemudian memanggil fungsi Uji, yang menggunakan keluaran ini untuk mensimulasikan perdagangan. Hasil perdagangan digunakan untuk menentukan, mana NN yang terbaik. Kami menggunakan interval catatan nLearn, dari nStart ke nStart nLearn, di mana nStart adalah titik acak dalam pembelajaran. Kode di bawah ini adalah tipuan. Alasan kami menggunakannya adalah untuk mengilustrasikan fakta, bahwa algoritma genetika dapat menciptakan algoritma genetika. Tapi itu tidak akan menjadi yang terbaik, dan juga, untuk menyarankan, bahwa kita dapat memperbaiki hasilnya, jika kita menyiratkan beberapa keterbatasan pada proses belajar. Ada kemungkinan, bahwa sistem perdagangan kita bekerja dengan baik pada perdagangan yang panjang, dan sangat buruk, atau sebaliknya. Jika, katakanlah, perdagangan panjang SANGAT bagus, algoritma genetika ini bisa menang, bahkan dengan kerugian besar pada perdagangan pendek. Untuk menghindarinya, kita menetapkan bobot lebih pada perdagangan panjang dalam perdagangan ganjil dan pendek bahkan dalam siklus. Ini hanyalah sebuah contoh, tidak ada jaminan, bahwa itu akan memperbaiki sesuatu. Lebih lanjut tentang itu di bawah ini, dalam diskusi tentang koreksi. Secara teknis, Anda tidak perlu melakukannya, atau bisa membuatnya berbeda. Tambahkan keuntungan ke array yang diurutkan. Ini mengembalikan posisi penyisipan, kemudian kita menggunakan posisi ini untuk menambahkan pegangan Jaringan Syaraf Tiruan, mempelajari dan menguji keuntungan ke array yang tidak diurutkan. Sekarang kita memiliki data untuk Jaringan Syaraf Tiruan saat ini pada indeks array yang sama dengan keuntungannya. Idenya adalah sampai pada deretan NN, diurutkan berdasarkan profitabilitas. Karena array diurutkan berdasarkan keuntungan, untuk menghapus 12 jaringan, yang kurang menguntungkan, kita hanya perlu menghapus NN 0 sampai 14 Keputusan perdagangan didasarkan pada nilai sinyal Neural Network, dari sudut pandang ini programnya identik dengan contoh dari Artikel sebelumnya Strategi Perdagangan FOREX: Membahas contoh 0 Pertama-tama, mari kita lihat grafiknya. Bagan pertama untuk keuntungan selama iterasi pertama tidak bagus sama sekali, seperti yang diharapkan, Jaringan Syaraf Tiruan kehilangan uang (image evolution00gen0.png disalin setelah iterasi pertama dari folder gambar): Citra untuk keuntungan pada siklus 15 lebih baik, kadang-kadang , Algoritma genetika dapat belajar sangat cepat: Namun, perhatikan kejenuhan pada kurva keuntungan. Menarik juga untuk melihat bagaimana keuntungan individu berubah, mengingat, jumlah kurva tersebut, katakanlah, tidak selalu sama untuk Jaringan Syaraf Tiruan yang sama. Karena mereka terlahir dan dihentikan setiap saat: Perhatikan juga, bahwa dengan sedikit sistem perdagangan otomatis forex melakukan buruk pada perdagangan pendek, dan jauh lebih baik dalam rindu, yang mungkin atau mungkin tidak terkait dengan fakta, bahwa dolar turun dibandingkan dengan Euro selama periode tersebut Ini juga mungkin ada kaitannya dengan parameter indikator kita (mungkin, kita memerlukan periode yang berbeda untuk celana pendek) atau pilihan indikator. Inilah sejarah setelah siklus 92 dan 248: Yang mengejutkan kami, algoritma genetika gagal total. Mari kita coba untuk mencari tahu mengapa, dan bagaimana membantu situasi. Pertama-tama, isnt setiap generasi seharusnya lebih baik daripada yang sebelumnya. Jawabannya tidak, setidaknya tidak sesuai model yang kita gunakan. Jika kita terus belajar mengatur sekaligus, dan menggunakannya berulang kali untuk mengajarkan NNs kita, maka ya, mereka akan memperbaiki setiap generasi. Tapi sebaliknya, kami mengambil fragmen acak (12000 catatan waktu), dan menggunakannya. Dua pertanyaan: mengapa sistem gagal dalam fragmen acak dari himpunan pembelajaran, dan mengapa kita tidak menggunakan keseluruhan pembelajaran. Untuk menjawab pertanyaan kedua, saya melakukannya. NNs tampil sangat - pada set pembelajaran. Dan mereka gagal dalam pengujian, karena alasan yang sama gagal saat kami menggunakan pembelajaran FFPB. Secara berbeda, NNs kita mengalami overspecialized, mereka belajar bagaimana bertahan di lingkungan tempat mereka dulu, tapi tidak di luarnya. Hal ini banyak terjadi di alam. Pendekatan yang kami ambil malah dimaksudkan untuk mengkompensasi hal itu, dengan memaksa NN melakukan kinerja yang baik pada fragmen dataset acak manapun, sehingga mudah-mudahan, mereka juga dapat melakukan pengujian yang tidak biasa. Sebaliknya, mereka gagal dalam pengujian dan pembelajaran. Bayangkan binatang, tinggal di padang pasir. Banyak matahari, tidak ada salju sama sekali. Ini adalah metafor untuk menilai pasar, karena data NNs kita memainkan peran lingkungan. Hewan belajar tinggal di padang pasir. Bayangkan binatang, yang hidup dalam iklim yang dingin. Salju dan tidak ada matahari sama sekali. Nah, mereka menyesuaikan diri. Namun, dalam percobaan kami, kami secara acak menempatkan NNs kami di padang pasir, di salju, di air, di pepohonan. Dengan menyajikan berbagai fragmen data (secara acak naik, jatuh, rata.). Hewan mati. Atau, dengan kata lain, kami memilih Jaringan Syaraf Tiruan terbaik untuk kumpulan data acak 1, yang, katakanlah, adalah untuk meningkatkan pasar. Kemudian kami sampaikan, kepada para pemenang dan anak-anak mereka, data pasar yang sedang jatuh. NNs tampil buruk, kami mengambil yang terbaik dari pemain miskin, mungkin salah satu anak mutan, yang kehilangan kemampuan untuk berdagang di pasar yang sedang naik, namun memiliki kemampuan untuk mengatasi kejatuhannya. Kemudian kami membalik meja lagi, dan sekali lagi, kami mendapatkan pemain terbaik - tapi terbaik di antara pemain miskin. Kami hanya tidak memberikan NNs kami kesempatan untuk menjadi universal. Ada beberapa teknik yang memungkinkan algoritma genetika mempelajari informasi baru tanpa menghilangkan informasi lama (bagaimanapun juga, hewan dapat hidup di musim panas dan musim dingin, jadi evolusi dapat mengatasi perubahan yang berulang). Kita mungkin akan membahas teknik ini nanti, walaupun artikel ini lebih banyak tentang penggunaan Perangkat Lunak Neural Networks Cortex. Daripada tentang membangun sistem perdagangan otomatis forex yang sukses. Algoritma Genetika Jaringan Syaraf Tiruan: Contoh 1 Sekarang saatnya untuk membicarakan koreksi. Algoritma genetika sederhana yang kami buat selama langkah sebelumnya memiliki dua kelemahan utama. Pertama, gagal melakukan perdagangan dengan keuntungan. Tidak apa-apa, kita bisa mencoba menggunakan sistem yang sebagian terlatih (memang menguntungkan di awal). Cacat kedua lebih serius: kita tidak memiliki kendali atas hal-hal, bahwa sistem ini tidak. Misalnya, mungkin belajar untuk menjadi menguntungkan, tapi dengan penarikan besar. Ini adalah fakta yang diketahui, bahwa dalam kehidupan nyata, evolusi dapat mengoptimalkan lebih dari satu parameter secara bersamaan. Sebagai contoh, kita bisa mendapatkan seekor binatang, yang bisa berlari cepat DAN tahan terhadap dingin. Mengapa tidak mencoba melakukan hal yang sama di sistem trading otomatis forex kita. Thats ketika kita menggunakan koreksi, yang tidak lain adalah himpunan hukuman tambahan. Katakanlah, sistem kita diperdagangkan dengan drawdown 0.5, sementara kita ingin mengkonfirmasi ke 0 - 0,3 interval. Untuk memberi tahu sistem bahwa itu membuat kesalahan, kami menurunkan keuntungannya (yang digunakan untuk menentukan, algoritma genetika mana yang dimenangkan) sampai tingkat yang sebanding dengan ukuran DD. Kemudian, algoritma evolusi menangani sisanya. Ada beberapa faktor lagi, yang ingin kita pertimbangkan: kita mungkin ingin memiliki jumlah operasi buy and sell yang kurang lebih sama, kita ingin memiliki lebih banyak operasi yang menguntungkan, kemudian kegagalan, kita mungkin menginginkan bagan keuntungan untuk Menjadi linier dan seterusnya. Dalam evolusi01.tsc kita menerapkan satu set koreksi sederhana. Pertama-tama, kami menggunakan sejumlah besar untuk nilai koreksi awal. Kami memperbanyaknya menjadi nilai kecil (biasanya antara 0 dan 1), tergantung pada hukuman yang ingin kami terapkan. Kemudian kita melipatgandakan keuntungan kita dengan koreksi ini. Akibatnya, keuntungan dikoreksi, untuk mencerminkan seberapa banyak algoritma genetik sesuai dengan kriteria kita yang lain. Kemudian kami menggunakan hasilnya untuk menemukan pemenang Neural Network. Strategi Perdagangan FOREX: Membahas contoh 1 Contoh 1 bekerja lebih baik, daripada contoh 0. Selama 100 siklus pertama, ia belajar banyak, dan grafik keuntungan terlihat meyakinkan. Namun, seperti pada contoh 0, perdagangan panjang jauh lebih menguntungkan, yang kemungkinan besar berarti ada masalah dalam pendekatan kami. Namun demikian, sistem tersebut menemukan keseimbangan antara beberapa kondisi awal yang kontradiktif: Ada beberapa dinamika positif baik dalam pembelajaran maupun yang lebih penting, dalam pengujian. Sedangkan untuk pembelajaran lebih lanjut, pada siklus 278 kita dapat melihat, bahwa sistem kita terlipat. Ini berarti, kita masih memiliki kemajuan dalam pembelajaran: Tapi rangkaian pengujian menunjukkan kelemahan: Ini adalah masalah umum dengan NNs: ketika kita mengajarkannya pada pembelajaran, ia belajar untuk menghadapinya, dan terkadang, pembelajarannya berjalan dengan baik - ke Derajat, bila kehilangan kinerja pada set pengujian. Untuk mengatasi masalah itu, solusi tradisional digunakan: kami terus mencari Jaringan Syaraf Tiruan. Yang melakukan yang terbaik pada set pengujian, dan simpan, Timpa yang terbaik sebelumnya, setiap saat puncak baru tercapai. Ini adalah pendekatan yang sama, kami menggunakan pelatihan FFBP, kecuali saat ini kami harus melakukannya sendiri (menambahkan kode, yang mencari Jaringan Syaraf Tiruan terbaik di set pengujian, dan memanggil SAVENN, atau mengekspor bobot Jaringan Syaraf Tiruan ke sebuah mengajukan). Dengan cara ini, saat Anda menghentikan latihan Anda, Anda akan memiliki pemain terbaik SETEL TESTING SET yang tersimpan dan menunggu Anda. Perhatikan juga, itu bukan yang maks. Keuntungan yang Anda kejar, tapi performa optimal, jadi pertimbangkan untuk menggunakan koreksi, saat mencari pemain terbaik di set pengujian. Algoritma Genetika untuk Analisis Teknik FOREX: Dimana sekarang Setelah Anda mendapatkan Neural Network pemenang Anda. Anda bisa mengikuti langkah-langkahnya, yang dijelaskan di artikel sebelumnya, untuk mengekspor bobot Jaringan Syaraf Tiruan itu. Dan kemudian menggunakannya di platform trading real time Anda, seperti Meta Trader, Trade Station dan sebagainya. Sebagai alternatif, Anda dapat berfokus pada cara lain untuk mengoptimalkan Neural Network. Berbeda dengan algoritma FFBP, di sini Anda bisa mendapatkan avay dari menggunakan set pembelajaran dan pengujian, dan memindahkan pembelajaran berurutan. Download Cortex Order Cortex Lihat Harga Daftar Visibilitas sangat penting untuk situs ini. Jika Anda suka, silakan hubungkan ke URLTrading Article Library Building Trading Systems Menggunakan Generasi Kode Otomatis oleh Michael R. Bryant Karena semakin banyak pedagang beralih ke perdagangan otomatis, minat pada strategi perdagangan yang sistematis telah meningkat. Sementara beberapa pedagang mengembangkan strategi trading mereka sendiri, kurva belajar yang curam yang dibutuhkan untuk mengembangkan dan menerapkan sistem perdagangan merupakan hambatan bagi banyak pedagang. Solusi yang baru dikembangkan untuk masalah ini adalah penggunaan algoritme komputer untuk menghasilkan kode sistem perdagangan secara otomatis. Tujuan dari pendekatan ini adalah untuk mengotomatisasi banyak langkah dalam proses tradisional dalam mengembangkan sistem perdagangan. Perangkat lunak pembuatan kode otomatis untuk membangun sistem perdagangan sering didasarkan pada pemrograman genetika (GP), yang termasuk dalam kelas teknik yang disebut algoritma evolusioner. Algoritma evolusioner dan GP pada khususnya dikembangkan oleh para peneliti dalam kecerdasan buatan yang didasarkan pada konsep biologis reproduksi dan evolusi. Algoritma GP mengembangkan populasi strategi perdagangan dari populasi awal anggota yang dihasilkan secara acak. Anggota populasi bersaing satu sama lain berdasarkan kebugarannya. Anggota yang lebih bugar dipilih sebagai orang tua untuk menghasilkan anggota baru dari populasi, yang menggantikan anggota yang lebih lemah (kurang pas). Dua orang tua digabungkan menggunakan teknik yang disebut crossover, yang meniru crossover genetik dalam reproduksi biologis. Dalam crossover, bagian dari satu genom orang tua digabungkan dengan bagian genom orang tua lainnya untuk menghasilkan genom anak. Untuk pembuatan sistem perdagangan, genom dapat mewakili elemen strategi perdagangan yang berbeda, termasuk berbagai indikator teknis, seperti moving averages, stochastics, dan seterusnya berbagai jenis perintah masuk dan keluar dan kondisi logis untuk memasuki dan keluar dari pasar. Anggota populasi lainnya diproduksi melalui mutasi, dimana salah satu anggota populasi dipilih untuk dimodifikasi dengan mengubah secara acak bagian genomnya. Biasanya, mayoritas (misalnya 90) anggota populasi baru diproduksi melalui crossover, dengan anggota yang tersisa diproduksi melalui mutasi. Selama generasi reproduksi yang berurutan, kebugaran keseluruhan populasi cenderung meningkat. Kebugaran didasarkan pada seperangkat tujuan membangun yang memberi peringkat atau mencetak setiap strategi. Contoh tujuan membangun mencakup berbagai ukuran kinerja, seperti keuntungan bersih, penarikan, persentase pemenang, faktor keuntungan, dan sebagainya. Hal ini dapat dinyatakan sebagai persyaratan minimum, seperti faktor keuntungan minimal 2,0, atau sebagai tujuan untuk memaksimalkan, seperti memaksimalkan laba bersih. Jika ada beberapa tujuan membangun, rata-rata tertimbang dapat digunakan untuk membentuk metrik kebugaran. Prosesnya berhenti setelah beberapa generasi atau saat fitness berhenti meningkat. Solusinya umumnya diambil sebagai anggota terkuat dari populasi yang dihasilkan, atau seluruh populasi mungkin diurutkan menurut kebugaran dan disimpan untuk ditinjau lebih lanjut. Karena pemrograman genetik adalah jenis optimasi, over-fitting menjadi perhatian. Hal ini biasanya ditangani dengan menggunakan pengujian out-of-sample, dimana data yang tidak digunakan untuk mengevaluasi strategi selama fase pengembangan digunakan untuk mengujinya setelahnya. Intinya, setiap strategi kandidat yang dibangun selama proses build adalah hipotesis yang didukung atau ditolak oleh evaluasi dan didukung atau ditolak oleh hasil di luar sampel. Ada beberapa manfaat untuk membangun sistem perdagangan via pembuatan kode otomatis. Proses GP memungkinkan sintesis strategi yang diberikan hanya set tingkat tinggi dari tujuan kinerja. Algoritma melakukan sisanya. Hal ini mengurangi kebutuhan akan pengetahuan rinci tentang indikator teknis dan prinsip perancangan strategi. Selain itu, proses GP tidak bias. Padahal sebagian besar pedagang telah mengembangkan bias untuk atau melawan indikator dan logika perdagangan tertentu, GP hanya dipandu oleh apa yang berhasil. Selain itu, dengan memasukkan semantik aturan perdagangan yang tepat, proses GP dapat dirancang untuk menghasilkan aturan perdagangan yang benar dan kode bebas kesalahan. Dalam banyak kasus, proses GP menghasilkan hasil yang tidak hanya unik tapi tidak jelas. Permata tersembunyi ini hampir tidak mungkin ditemukan dengan cara lain. Terakhir, dengan mengotomatisasi proses pembuatan, waktu yang dibutuhkan untuk mengembangkan strategi yang layak dapat dikurangi dari minggu atau bulan sampai hitungan menit dalam beberapa kasus, tergantung pada panjang data harga input dan pengaturan bangunan lainnya. Jika Anda ingin diberitahu tentang perkembangan baru, berita, dan penawaran khusus dari Perangkat Lunak Adaptrade, silakan bergabung dengan daftar email kami. Terima kasih. Disclaimer HASIL KINERJA HIPOTHETIK ATAU SIMULASI MEMILIKI BATASAN INHERENT TERTENTU. MELIHAT KINERJA KINERJA SEBENARNYA, HASIL YANG SIMULASI JANGAN MENYATAKAN PERDAGANGAN YANG BENAR. JUGA, SEJAK TRADES TIDAK SEGALA DITINJAU, HASIL YANG DAPAT MEMILIKI BAWAH ATAU TERLUKA UNTUK DAMPAK, JIKA ADA, FAKTOR PASAR TERTENTU, SEPERTI KURANGNYA LIKUIDITAS. PROGRAM PERDAGANGAN SIMULASI DALAM UMUM JUGA TERTARIK FAKTA BAHWA MEREKA DITANDATANGANI DENGAN MANFAAT HINDSIGHT. TIDAK ADA REPRESENTASI YANG DIBUAT BAHWA SETIAP AKUN AKAN ATAU CUKUP UNTUK MENCAPAI KEUNTUNGAN ATAU KERUGIAN YANG SESUAI DENGAN MEREKA. EasyLanguage and TradeStation adalah merek dagang terdaftar dari TradeStation Technologies, Inc. Pendahuluan Salah satu tren terbesar dalam perdagangan eceran selama dekade terakhir adalah meningkatnya popularitas perdagangan otomatis. Dalam jenis perdagangan ini, juga dikenal sebagai eksekusi pesanan otomatis, sinyal beli dan jual yang dihasilkan oleh sistem perdagangan secara otomatis dilakukan oleh platform yang terhubung ke akun perantara pedagang. Ini memungkinkan perdagangan bebas tangan, yang memungkinkan eksekusi lebih cepat, lebih sedikit kesalahan, dan kemampuan untuk memperdagangkan kerangka waktu yang lebih pendek dengan strategi frekuensi tinggi. Karena semakin banyak pedagang beralih ke perdagangan otomatis, minat pada strategi perdagangan yang sistematis telah meningkat. Sementara beberapa pedagang mengembangkan strategi perdagangan mereka sendiri, banyak pedagang kekurangan keterampilan pemrograman yang diperlukan untuk menerapkan gagasan mereka. Pedagang lain tidak memiliki pengetahuan spesifik tentang metode perdagangan teknis atau pengalaman yang dibutuhkan untuk merancang strategi yang layak. Bahkan bagi pedagang dengan keterampilan yang diperlukan untuk mengembangkan sistem perdagangan, cukup banyak waktu dan usaha yang dibutuhkan untuk mengembangkan strategi yang baik seringkali merupakan pencegah. Solusi yang baru dikembangkan untuk masalah ini adalah penggunaan algoritme komputer untuk menghasilkan kode sistem perdagangan secara otomatis. Tujuan dari pendekatan ini adalah untuk mengotomatisasi banyak langkah dalam proses tradisional dalam mengembangkan sistem perdagangan. Dalam pendekatan manual dan manual terhadap pengembangan strategi, pedagang memilih elemen strategi perdagangan berdasarkan pengalaman dan pengetahuan sebelumnya tentang indikator teknis, jenis pesanan masuk dan keluar, dan perancangan strategi. Biasanya, strategi didasarkan pada hipotesis pasar yaitu, gagasan tentang bagaimana pasar bekerja. Strategi perdagangan yang layak biasanya dikembangkan melalui proses trial and error yang panjang yang melibatkan banyak iterasi, revisi, dan pengujian sampai hasil yang dapat diterima tercapai. Proses tradisional dalam mengembangkan sistem perdagangan ini sangat memakan waktu dan melibatkan secara sistematis menghilangkan banyak gagasan yang sama sekali tidak berhasil. Juga, semua pedagang memiliki bias tentang bagaimana pasar bekerja, dan bias ini dapat mempengaruhi proses pengembangan sistem. Dalam beberapa kasus, bias ini mungkin membantu, namun juga dapat membatasi kemungkinan sistem yang mungkin dipertimbangkan oleh trader. Daripada memulai dengan pandangan yang bias dan serangkaian peraturan yang terbatas, generator kode otomatis dimulai dengan serangkaian aturan dan penelusuran yang luas dengan cara yang tidak bias untuk kombinasi yang bekerja sambil segera menghilangkan yang tidak. Makalah ini menyajikan ikhtisar metode pembuatan kode otomatis untuk membangun sistem perdagangan. Metode sederhana dan kompleks dibahas. Metode ad hoc sederhana dipaparkan yang dapat diimplementasikan dalam bahasa scripting EasyScripter TradeStations untuk menemukan strategi berbasis pola harga dasar. A more complex approach based on genetic programming is also discussed. Automatically generating trading systems is an attractive idea. However, there are several drawbacks as well. For one thing, rigorous approaches, such as those based on genetic programming, are complex and difficult to implement. Also, automatic code generation generally relies on historical simulation, which means its an optimization process. As such, the risk of over-fitting must be addressed. These caveats are also discussed. The Basic Approach The basic algorithm for building trading systems using automatic code generation is depicted below in Fig. 1. It starts with a method for combining different elements of the trading strategy. These elements may include various technical indicators, such as moving averages, stochastics, and so on different types of entry and exit orders and logical conditions for entering and exiting the market. Figure 1. Basic algorithm for automated strategy building. After the different elements are combined into a coherent strategy, it can be evaluated on the market or markets of interest. This requires market data prices, volume, open interest, etc. for each market. Generally speaking, you would also have a set of build goals to help rank or score each strategy. Examples of build goals include various performance measures, such as the net profit, drawdown, percentage of winners, profit factor, and so on. These could be stated as minimum requirements, such as a profit factor of at least 2.0, or as objectives to maximize, such as maximizing the net profit. The strategy generation and evaluation steps are repeated until the termination criteria are met. The termination criteria could be as simple as creating a predetermined number of different strategies, or the process might be stopped after no further improvement in the build goals is achieved. Typically, an optimization algorithm is used to guide the strategies towards ones that meet the build goals. The final strategies are the ones with the highest rank or score based on the build goals. You could either take the single best strategy or save some number (or all) of the strategies, ranked by build goals. If there are multiple build goals, a weighted average can be used to form a single metric. This is the most basic view of automatic system building. A more detailed description will be provided below in the section on genetic programming. This description also ignores the important problem of over-fitting, in which the strategy is fit so closely to the market data thats used during the build process that the strategy doesnt perform well in the future when applied to new data. This issue is also addressed below. Theoretical Basis of Automatic Code Generation As described above, building a trading system using automatic code generation is essentially an optimization problem. The combination of strategy elements that maximizes the build goals is taken as the final strategy. Some traders would object that trading systems should be constructed based on a hypothesis of market behavior or action. If you have a good hypothesis for how the markets work, a strategy can be built around that hypothesis and tested. If it works, it supports the hypothesis and justifies trading the strategy. In fact, the approach described here is not fundamentally different than that. Each candidate strategy constructed during the build process, as depicted in Fig. 1, is essentially a hypothesis that is either supported or refuted by the evaluation. If out-of-sample testing is used, the final strategies can be further supported or refuted by the out-of-sample results. Another way to view automatic code generation is as a problem of statistical inference. The price data can be thought of as a combination of signal and noise. The signal is the tradable part of the data, and the noise is everything else. In this context, the strategy building process is a nonlinear curve-fitting problem where the objective is finding strategies that fit the signal while ignoring the noise and avoiding over-fitting. At the same time, market data is often non-stationary: the statistical properties change over time. A successful strategy is therefore one that fits the stationary elements of the market signal with adequate degrees-of-freedom to avoid over-fitting. Although discussed in more detail below, out-of-sample testing is generally used to verify that the strategies are not over-fit to the market. Pattern System Code Generator for TradeStation This section describes an ad hoc approach to automatic code generation in which a trading system for TradeStation automatically generates other, pattern-based trading systems for TradeStation. The AutoSystemGen system searches for a set of trading rules, along with the associated parameter values, that meet a specified set of performance requirements. Depending on the performance requirements, it might find several or even dozens of trading systems that meet the requirements. It then writes the EasyLanguage code for each system to a file. For illustrative purposes, the rules for the generated systems are restricted to price patterns. In principle, this technique could be expanded to automatically generate systems drawing from a wide variety of entry and exit techniques applicable to almost any market. Price Pattern Rules While almost any type of indicator or trading logic could be included in the trading system generator described here, to keep things fairly simple, the rules of the generated systems will be restricted to price patterns. Each entry rule of a generated trading system will have the following form: where P1 and P2 are prices (open, high, low, or close), N1 and N2 are the number of bars to look back (e. g. Close2 is the close two bars ago), and Ineq is an inequality operator, either lt or gt. Examples of rules include the following: Close lt Close2 Low2 lt High10 High3 gt Close4 and so on. P1, P2, N1, N2, and Ineq are all variables to be determined by the system generation process. N1 and N2 will be restricted to the range 0 20. Also, the number of rules, NRules, will be a variable with values ranging from one to 10. A trade entry will be triggered if all the rules are true. In that case, the entry will be taken at the open of the next bar. The trade direction will be set beforehand, so that the system will be generating systems that are either all long or all short trades. To obtain trading logic for both long and short trades, the system can be run twice, once for long trades and the second time for short trades. Trades will be exited at the market after a fixed number of bars, NX, which will range from one to 20. Finding the Rules The key to this process is finding candidate trading systems. A system can consist of between one and 10 rules of the form shown above. Trades are entered at market if all the rules are true, and trades are exited a certain number of bars later. If this were coded as a traditional TradeStation system, with a maximum of 10 rules, there would be 52 inputs. This would make for a cumbersome strategy. Instead, a different approach will be used. At each step of the optimization, the values for each variable (P1, P2, N1, N2, Ineq, NRules, and NX) will be chosen randomly. A different set of values of P1, P2, N1, N2, and Ineq will be selected for each rule, for a total of NRules sets of values. Each step of the optimization will generate a different trading system as the variables are randomly selected. If the performance results of the system meet the requirements entered by the user, the generated system will be written to a file in EasyLanguage code. Putting it All Together The code for the AutoSystemGen system and its related functions is available at Breakout Futures (breakoutfutures ) on the Free Downloads page . The first input to the strategy is called OptStep. To run the system, OptStep should be optimized in TradeStation by varying it from 1 to some large number, such as 10,000, in steps of 1. This will cause AutoSystemGen to generate, for example, 10,000 different trading systems. The ones that meet the specified performance criteria are written to the file shown as an input to the WriteSystem function (e. g. C:AutoSysGen-Output1.txt). The performance criteria are specified via the system inputs (reqNetProfit, reqMaxDD, etc.). Most of the hard work is performed by the functions that the system calls. The function GetPatVars randomly selects the values for the variables that determine the trading rules. To determine whether or not a trade entry will occur on the next bar, the price pattern rules are evaluated by the function EvalPattern. Finally, if the system meets the performance criteria, the corresponding EasyLanguage code is generated and written out to a text file by the function WriteSystem. Example As an example, consider the 30-year treasury bond futures market (symbol US. P in TradeStation 8). AutoSystemGen was optimized over the past 20 years of T-bond prices with the OptStep input incremented from 1 to 10000. This means the system evaluated 10,000 different trading systems. The optimization was run twice, once for long trades and once for short trades. The following performance requirements were used: net profit of at least 30,000, worst-case drawdown no more than 7500, at least 200 trades, percent profitable of at least 50, and profit factor of at least 1.2. On a dual core computer running Vista, it took approximately 10 minutes to run each optimization (10,000 systems per optimization). The systems generated by this process are shown below. These are the systems written to the file AutoSysGen-Output1.txt by the WriteSystem function. The first ones are the long-only systems, followed by a short-only system (the only one that met the performance criteria). System 2332, US. P, 9172007 12:23:00, Long Trades Net Profit 53562.50, Max DD -7381.25, Num Trades 250, Percent Wins 56.80, Prof factor 1.631 Var: EntNext (false) EntNext Open2 gt Low16 and Low9 gt Low3 and Close14 lt Low6 and If EntNext then Buy next bar at market If BarsSinceEntry gt NBarExS then Buy to cover next bar at market If STrailOn then Buy to cover next bar at SStop stop Until recently, most applications of genetic programming to trading strategy generation have been academic studies based on limited rule sets, overly simple entry and exit logic, and custom-written code, making the results unsuitable for most traders. At the same time, most available software that implements GP for market trading has either been targeted to professional traders and priced accordingly or is very complicated to set up and use. Adaptrade Builder was designed to make GP simple to use for any trader, individual or professional, who has a basic understanding of strategy trading and the TradeStation platform. More information on Builder can be found at AdaptradeBuilder . Over-fitting Building trading systems via automatic code generation is a type of optimization. Most systematic traders are probably familiar with parameter optimization, in which the inputs to a strategy are optimized. Unlike parameter optimization, automatic code generation optimizes the strategys trading logic. Nonetheless, the risk of over-optimization, or over-fitting, is also a concern for automatic code generation, just as it is for parameter optimization. Typically, optimization is performed over one segment of data, called the optimization or in-sample segment, and tested on different data, called the test or out-of-sample segment. Over-fitting refers to the problem of optimizing a strategy so that it fits the in-sample segment well but doesnt work well on any other data, including the out-of-sample data. Poor out-of-sample performance is usually caused by one of several factors. One important factor is the so-called number of degrees-of-freedom in the in-sample segment. The number of degrees-of-freedom, which is equal to the number of trades minus the number of rules and conditions of the strategy, determines how tightly the strategy fits the data. Provided inputs are added for each parameter in the strategy, the number of strategy inputs can be used as a proxy for the number of rules and conditions. For example, if a strategy has 100 trades and 10 inputs, it has 90 degrees-of-freedom. The more degrees-of-freedom, the less likely it is that the strategy will be over-fit to the market and the more likely it is that it will have good out-of-sample performance. The number of degrees-of-freedom can be increased during the build process by including the number of trades andor the number of strategy inputs as build goals. Assuming the fitness metric is a weighted average of the build goals, all other things being equal, increasing the weighting for the number of trades will result in strategies with more trades and therefore more degrees-of-freedom. Likewise, increasing the weighting for the (negative) number of inputs will result in strategies with fewer inputs, which will also increase the number of degrees-of-freedom. Another option is to include the statistical significance as a build goal. The statistical significance can be calculated by applying the Students t test to the average trade. This will measure the probability that the average trade is greater than zero. The t test is based on the number of degrees-of-freedom but is a more complete measure of whether a strategy is over-fit than the number of degrees-of-freedom alone. One way, then, to improve out-of-sample performance is to include the significance in the fitness function, which will tend to generate strategies that have a high statistical significance. Another important factor affecting out-of-sample performance is the variety of market conditions in the in-sample segment. Generally speaking, its better to optimize over data that includes a wide variety of market conditions, such as up trending and down trending markets, periods of consolidation, high and low volatility, etc. The more variety in the in-sample segment, the more likely it is that the strategy will perform well on other data, including out-of-sample data and in real-time trading. While the future never exactly duplicates the past, provided the future (or out-of-sample data) is similar enough to at least part of the in-sample segment, the strategy should perform well on new data. The value of optimizing over a variety of market conditions presumes that good performance is achieved over each part of the in-sample segment. One way to measure this is with the correlation coefficient of the equity curve, which measures how closely the equity curve approximates a straight line. If the equity curve is a straight line, it implies that the performance is uniform over all segments of the data. Obviously, this is desirable if the goal is to achieve good performance over as many different types of market conditions as possible. The correlation coefficient for the strategies generated via automatic code generation can be increased by including the correlation coefficient as a build goal and weighting it as part of the fitness function. Unfortunately, there will be cases where even with a high significance, a correlation coefficient close to 1, and a wide variety of market conditions in the in-sample segment, the out-of-sample performance will be poor. This can happen for several reasons. First, even a simple strategy with few parameters can in some cases fit the noise rather than the signal. By definition, noise is any part of the market data that does not contribute to profitable trading signals. Secondly, the market dynamics on which the strategy logic is based (i. e. the signal) may have changed in the out-of-sample segment enough to negatively impact performance. This is sometimes due to a fundamental change in the market, such as the switch from floor-based to electronic trading. However, more subtle changes, often related to the trading patterns of market participants, are also possible, particularly for shorter-term trading. If this appears to be the problem, the solution may be as simple as rebuilding the strategy with new trading logic. Using a tool such as Adaptrade Builder makes this much easier than if a manual approach to trading strategy development were used. Another possible solution is to include the most recent data in the optimization segment and test it out-of-sample by tracking the performance in real-time. In most cases, a strategy that has a large number of trades, a high significance value and good performance on the in-sample segment will continue to perform well for some period of time post-optimization. For information on software for building trading strategies using genetic programming, please click here . Jika Anda ingin diberitahu tentang perkembangan baru, berita, dan penawaran khusus dari Perangkat Lunak Adaptrade, silakan bergabung dengan daftar email kami. Terima kasih.

No comments:

Post a Comment