Tuesday 25 July 2017

Testing Trading Strategies In Matlab


Sementara saya suka ke mana pertanyaan ini diajukan, saya menyarankan agar membuatnya sedikit lebih konkret. Bagian mana dari proses backtesting yang ingin Anda pelajari Ini bisa berkisar dari perkiraan perkiraan pengembalian normal, di mana portofolio kembali dari strategi Anda sudah diberikan untuk menerapkan aturan pembentukan portofolio penuh secara algoritme. Ndash Constantin Dec 30 14 at 21:06 Sejujurnya saya tidak tahu banyak tentang backtesting. Saya diberi tahu bahwa saya harus mendukung strategi baru atau memperbaiki strategi saat ini selama magang. Jadi saya ingin tahu lebih banyak tentang subjek sebelum memulai. Apa bedanya bagian itu? Ndash Maxime Dec 30 14 at 21:31 Ide umum Untuk sekuritas ekuitas, backtest sederhana biasanya terdiri dari dua langkah: Perhitungan pengembalian portofolio yang dihasilkan dari aturan pembentukan portofolio Anda (atau strategi trading) Penyesuaian risiko pengembalian portofolio menggunakan Model penetapan harga aset Langkah 2 hanyalah sebuah regresi dan komputasi sangat sederhana di Matlab. Yang lebih rumit adalah implementasi langkah 1, yang akan mengharuskan Anda untuk merasa sangat nyaman di Matlab, dan ada banyak cara untuk melakukan ini. Jika Anda tahu bagaimana melakukan regresi OLS di Matlab, yang harus Anda fokuskan adalah semua jenis manipulasi matriks. Implementasi dalam formasi Portofolio Matlab dan perhitungan pengembalian Untuk memberi Anda contoh bagaimana strategi perdagangan primitif dapat diterapkan di Matlab, mari berasumsi data pengembalian bulanan dan periode holding yang seragam satu bulan pada n aset selama periode k, di mana i in dan k di . Dengan asumsi tidak ada perubahan komposisi alam semesta saham Anda, matriks pengembalian X Anda adalah dimensi k kali n. X mulai x amp dots amp x amp amp amp vdots amp ddots amp vdots amp ddots amp vdots x amp amp amp amp amp amp v amp amp amp amp amp amp amp amp amp amp amp v amp amp amp amp titik akhir amp x amp amp amp akhir Dihitung sebagai x frac -1. Dengan asumsi bahwa kriteria seleksi Anda adalah semacam karakteristik saham yang tersedia pada frekuensi bulanan, Anda juga akan memiliki matriks karakteristik C. Anda kemudian bisa menulis sebuah algoritma yang mengidentifikasi entri-entri di C yang memenuhi kriteria seleksi Anda (misalnya melebihi ambang batas tertentu ) Dan ganti entri yang sesuai (di mana i dan t adalah sama) dari matriks indikator I (yang telah diinisialisasi sebagai matriks nol dengan menggunakan fungsi nol) dengan yang. Anda kemudian dapat mengalikan entri saya dengan matriks pengembalian X untuk mendapatkan matriks R yang menunjukkan hasil yang dihasilkan dari kepemilikan Anda. Anda kemudian dapat menghitung rata-rata entri non-nol untuk setiap baris R untuk mendapatkan vektor pengembalian portofolio Anda. Penyesuaian risiko dan identifikasi abnormal return Pada langkah 2 Anda membandingkan vektor ini dengan tingkat pengembalian normal yang diperoleh dari estimasi regresi model penetapan harga aset seperti model Fama-French. Dengan mengurangi vektor pengembalian normal dari vektor pengembalian portofolio Anda, Anda menentukan apakah strategi trading Anda menghasilkan return abnormal yang positif, itulah yang Anda inginkan. Rekomendasi Jika Anda baru mengenal Matlab, saya pribadi menyarankan Anda untuk membiasakan diri dengan menerapkan strategi sederhana ini sebelum merelaksasi beberapa asumsi yang menyederhanakan (seperti periode memegang dan periodisitas yang seragam) dan melanjutkan ke implementasi yang lebih canggih. Sekali lagi, apa yang ingin saya stres adalah bahwa ini mengharuskan Anda untuk merasa sangat nyaman dengan Matlab dan terutama berbagai cara untuk memanipulasi matriks, yang dapat memakan waktu lama. Jika Anda tidak diharuskan menggunakan Matlab untuk magang Anda dan ingin mendapatkan hasil dengan cepat, Anda bisa melakukan langkah 1 di Excel sebagai gantinya, yang membosankan, tapi tidak memerlukan investasi awal (berharga) yang perlu Anda buat untuk Matlab. Untuk menjadi akrab dengan Matlab, saya yakin Anda telah menemukan dokumentasi yang sangat bagus yang menyertainya. Itu, bagi saya, adalah sumber tunggal yang paling berharga dan mungkin lebih berguna daripada sumber keuangan lainnya yang lebih spesifik (yang dengannya saya akan menunggu sampai Anda mengenal Matlab itu sendiri). Semua yang diperlukan untuk menentukan tingkat pengembalian normal adalah regresi OLS dan pemahaman dasar mengenai model penetapan harga aset. Menjawab 22 Des 14 di 22: 20 Menguji dan Analisis Strategi Perdagangan Algoritma di MATLAB (Bagian 1) - Pendahuluan Halo, nama saya Igor Volkov. Saya telah mengembangkan strategi perdagangan algoritmik sejak 2006 dan telah bekerja di beberapa hedge fund. Pada artikel ini, saya ingin membahas kesulitan yang timbul dari strategi pengembang perdagangan MATLAB selama pengujian dan analisis, dan juga menawarkan solusi yang mungkin. Saya telah menggunakan MATLAB untuk menguji strategi algoritma sejak 2007 dan saya sampai pada kesimpulan bahwa ini bukan hanya alat penelitian yang paling mudah, tapi juga yang paling hebat karena memungkinkan penggunaan model statistik dan ekonometrik yang kompleks, jaringan syaraf tiruan, Pembelajaran mesin, filter digital, logika fuzzy, dll dengan menambahkan toolbox. Bahasa MATLAB cukup sederhana dan terdokumentasi dengan baik, sehingga bahkan non-programmer (seperti saya) bisa menguasainya. Bagaimana semuanya dimulai Ini adalah tahun 2008 (jika saya tidak salah) ketika webinar pertama tentang perdagangan algoritmik di MATLAB dengan Ali Kazaam dirilis, mencakup topik untuk mengoptimalkan strategi sederhana berdasarkan indikator teknis, dan sebagainya. Meskipun ada kode yang agak rumit, alat itu menarik. Cukup untuk digunakan Mereka berfungsi sebagai titik awal untuk penelitian dan pengembangan model pengujian dan analisis yang memungkinkan penggunaan semua peralatan kotak peralatan dan kebebasan tindakan MATLAB selama pembuatan strategi perdagangan sendiri, pada saat bersamaan akan memungkinkan untuk mengendalikan proses Pengujian dan data yang diperoleh dan analisis selanjutnya akan memilih portofolio efektif dari sistem perdagangan yang kuat. Selanjutnya, webinar Mathworks telah diperbarui setiap tahun dan secara bertahap memperkenalkan elemen yang lebih dan lebih menarik. Dengan demikian, webinar pertama pada perdagangan pasangan (arbitrase statistik) menggunakan Econometric Toolbox diadakan pada tahun 2010, walaupun Toolbox pengujian dan analisisnya tetap sama. Pada tahun 2013, Trading Toolbox dari Mathworks muncul yang memungkinkan untuk menghubungkan MATLAB dengan broker yang berbeda untuk pelaksanaan aplikasi mereka. Meskipun ada solusi otomatis untuk pelaksanaan transaksi, dari situ MATLAB dapat dianggap sebagai sistem untuk mengembangkan strategi trading dengan siklus penuh: dari pemuatan data hingga pelaksanaan strategi perdagangan otomatis. Mengapa Harus Setiap Algotrader Menemukan Kembali Roda Namun, Mathworks belum menawarkan solusi lengkap untuk menguji dan menganalisis strategi 8211 kode-kode yang bisa Anda dapatkan dari webinar adalah satu-satunya elemen dari uji sistem penuh, dan perlu memodifikasinya. , Menyesuaikannya, dan menambahkannya ke GUI untuk kemudahan penggunaan. Ini sangat memakan waktu, jadi mengajukan pertanyaan: Apapun strateginya, ia harus menjalani proses pengujian dan analisis yang sama, yang memungkinkannya diklasifikasikan sebagai 8211 yang stabil dan bermanfaat, jadi mengapa setiap algotrader menciptakan roda dan menulis Kode sendiri untuk strategi pengujian yang tepat di MATLAB Jadi, keputusan dibuat untuk menciptakan produk yang memungkinkan dilakukannya keseluruhan proses yang terkait dengan pengujian dan analisis strategi perdagangan algoritmik menggunakan antarmuka yang sederhana dan mudah digunakan. MatlabTrading Pos ini adalah tentang Seberapa penting menggunakan berbagai jenis metode optimasi seperti algoritma genetika dan pararelasi untuk mendapatkan hasil lebih cepat. Optimalisasi Algoritma Genetika Terlepas dari kenyataan bahwa prinsip algoritma genetika (evolusioner) dijelaskan dengan sangat baik di webinar MathWorks, namun demikian, hanya digunakan untuk optimalisasi pilihan kelompok strategi dari satu set. Ini adalah contoh bagus dari penggunaan algoritme ini, namun terjadi bahwa ada kebutuhan untuk menetapkan banyak variabel dengan interval yang signifikan untuk satu strategi, Anda tidak dapat melakukannya dengan satu iterasi dan paralelisasi proses perhitungan 8211 dapat memakan waktu beberapa hari. . Pastinya, ada strategi di tahap akhir optimasi. Ketika kita hampir pasti tahu strategi tradingnya sukses, kita bisa menunggu beberapa hari juga atau menyewakan keseluruhan klaster - hasilnya mungkin worth it. Namun, jika kita perlu memperkirakan hasil strategi besar dan memutuskan apakah perlu untuk menghabiskan waktu, maka algoritma genetika mungkin sangat sesuai. Kami menyediakan kemungkinan untuk menggunakan tiga metode untuk mengoptimalkan strategi di WFAToolbox: Metode linier 8211 adalah cara pemilahan yang biasa dimana Anda akan melihat semua hasil antara (suboptimal). Ini memberikan akurasi maksimal. Metode paralel 8211 semua kernel CPU Anda akan digunakan. Ini tidak memungkinkan untuk melihat hasil antara, namun secara signifikan mempercepat operasi. Ini memberikan akurasi maksimal saat kenaikan kecepatan komputasi. Metode genetik 8211 menggunakan algoritma pengoptimalan evolusioner. Hal ini memungkinkan untuk melihat nilai suboptimal, namun memberikan hasil mendekati yang terbaik. Ini bukan metode yang sangat akurat, namun cukup tepat untuk strategi awal. Sangat cepat. Kita sering ditanya apakah WFAToolbox - Walk-Forward Analysis Toolbox untuk MATLAB memiliki kemampuan untuk menggunakan GPU dalam perhitungan. Sayangnya, GPU tidak cocok untuk semua tugas dan penggunaannya sangat spesifik. Untuk menggunakannya, Anda perlu menyesuaikan logika dan kode masing-masing strategi untuk menguji core grafis. Sayangnya, karena metode non-universalitas seperti itu, seseorang tidak dapat menggunakan GPU di WFAToolbox. Melanjutkan Bagian 2 dari pembahasan masalah dan solusi dalam pengujian dan analisis strategi perdagangan algoritmik di MATLAB, saya mengundang Anda untuk membaca tulisan ini tentang masalah ketidaktersediaan visualisasi proses dalam solusi perangkat lunak modern untuk menguji sistem perdagangan. Visualisasi Proses Pengujian Dalam pengalaman kerja saya, saya sering menganalisa platform populer lainnya untuk pengujian strategi trading. Seperti TradeStation. MetaStock. Multicharts dll dan saya selalu terkejut melihat betapa sedikit perhatian yang diberikan pada visualisasi proses pengujian. Masalahnya adalah ketika kita tidak melihat hasil nilai parameter optimum dari suboptimal yang dioptimasi, kita sering membuang emas beserta kotorannya. Masalahnya adalah karena sampling yang terlalu luas, strategi menyesuaikan parameter seperti kita melihat strategi sempurna yang gagal dalam kehidupan nyata atau melihat satu atau dua kesepakatan, yang konon merupakan yang terbaik karena dipilih seperti data interval waktu dimana Strategi trading terbaik adalah buy-and-hold, tapi mengapa strategi lain yang diperlukan untuk Visualisasi proses pengujian strategi perdagangan di MATLAB (diusulkan di webinar) Sebagai hasilnya, tanpa melihat hasil antara, kita perlu mengubah parameter untuk dicoba. Untuk mendapatkan data yang lebih baik atau menontonnya dalam beberapa 3D atau 4D (warna adalah dimensi ke-4), seperti yang diusulkan di webinar. Analisis nilai di ruang berdimensi N pasti bisa menjadi alternatif, namun memiliki beberapa keterbatasan: Bagaimana jika ada lebih dari 4 dimensi Bila Anda melihat sinyal dan frekuensi berapa yang muncul dalam kisaran harga, Anda memiliki hampir semua Representasi visual yang diperlukan dari strategi Anda: frekuensi transaksi, keuntungan mereka (kurva pendapatan), ketepatan pembukaan, kesamaan dengan nilai suboptimal lainnya, dan lain-lain yang tidak dapat dikatakan tentang kinerja di ruang N-dimensi dimana semua informasi bermanfaat Sebenarnya, nilai optimum tidak hanya satu tapi ada berbagai macam nilai suboptimal di satu atau lebih area. Sambil mengoptimalkan strategi WFAToolbox 8211 Walk-Forward Analysis Toolbox untuk MATLAB174. Sebagai nilai optimum baru ditemukan, sinyal strategi perdagangan pada periode di-sampel dan di luar sampel langsung muncul di bagan, jadi Anda selalu dapat mengontrol opsi pilihan apa yang harus Anda tetapkan, dan Anda juga dapat menjeda pengoptimalan Tanpa menunggu akhir ujian, karena menjadi jelas bahwa ada yang tidak beres atau semuanya baik-baik saja. Halo, nama saya Igor Volkov. Saya telah mengembangkan strategi perdagangan algoritmik sejak 2006 dan telah bekerja di beberapa hedge fund. Pada artikel ini, saya ingin membahas kesulitan yang timbul dari strategi pengembang perdagangan MATLAB selama pengujian dan analisis, dan juga menawarkan solusi yang mungkin. Saya telah menggunakan MATLAB untuk menguji strategi algoritma sejak 2007 dan saya sampai pada kesimpulan bahwa ini bukan hanya alat penelitian yang paling mudah, tapi juga yang paling hebat karena memungkinkan penggunaan model statistik dan ekonometrik yang kompleks, jaringan syaraf tiruan, Pembelajaran mesin, filter digital, logika fuzzy, dll dengan menambahkan toolbox. Bahasa MATLAB cukup sederhana dan terdokumentasi dengan baik, sehingga bahkan non-programmer (seperti saya) bisa menguasainya. Bagaimana semuanya dimulai Ini adalah tahun 2008 (jika saya tidak salah) ketika webinar pertama tentang perdagangan algoritmik di MATLAB dengan Ali Kazaam dirilis, mencakup topik untuk mengoptimalkan strategi sederhana berdasarkan indikator teknis, dan sebagainya. Meskipun ada kode yang agak rumit, alat itu menarik. Cukup untuk digunakan Mereka berfungsi sebagai titik awal untuk penelitian dan pengembangan model pengujian dan analisis yang memungkinkan penggunaan semua peralatan kotak peralatan dan kebebasan tindakan MATLAB selama pembuatan strategi perdagangan sendiri, pada saat bersamaan akan memungkinkan untuk mengendalikan proses Pengujian dan data yang diperoleh dan analisis selanjutnya akan memilih portofolio efektif dari sistem perdagangan yang kuat. Selanjutnya, webinar Mathworks telah diperbarui setiap tahun dan secara bertahap memperkenalkan elemen yang lebih dan lebih menarik. Dengan demikian, webinar pertama pada perdagangan pasangan (arbitrase statistik) menggunakan Econometric Toolbox diadakan pada tahun 2010, walaupun Toolbox pengujian dan analisisnya tetap sama. Pada tahun 2013, Trading Toolbox dari Mathworks muncul yang memungkinkan untuk menghubungkan MATLAB dengan broker yang berbeda untuk pelaksanaan aplikasi mereka. Meskipun ada solusi otomatis untuk pelaksanaan transaksi, dari situ MATLAB dapat dianggap sebagai sistem untuk mengembangkan strategi trading dengan siklus penuh: dari pemuatan data hingga pelaksanaan strategi perdagangan otomatis. Mengapa Harus Setiap Algotrader Menemukan Kembali Roda Namun, Mathworks belum menawarkan solusi lengkap untuk menguji dan menganalisis strategi 8211 kode-kode yang bisa Anda dapatkan dari webinar adalah satu-satunya elemen dari uji sistem penuh, dan perlu memodifikasinya. , Menyesuaikannya, dan menambahkannya ke GUI untuk kemudahan penggunaan. Ini sangat memakan waktu, jadi mengajukan pertanyaan: Apapun strateginya, ia harus menjalani proses pengujian dan analisis yang sama, yang memungkinkannya diklasifikasikan sebagai 8211 yang stabil dan bermanfaat, jadi mengapa setiap algotrader menciptakan roda dan menulis Kode sendiri untuk strategi pengujian yang tepat di MATLAB Jadi, keputusan dibuat untuk menciptakan produk yang memungkinkan dilakukannya keseluruhan proses yang terkait dengan pengujian dan analisis strategi perdagangan algoritmik menggunakan antarmuka yang sederhana dan user-friendly. Pertama-tama, saya ingin menjawab pertanyaan-pertanyaan berikut: Apa yang terjadi dengan blog 1. Jev Kuznetsov bukan pemiliknya lagi. Blog itu dibeli dari teman kita, Jev Kuznetsov, yang telah pindah ke trading blog lainnya denganpython. blogspot. Dia menyimpulkan bahwa Python lebih baik daripada MATLAB untuk trading, yang menurut saya salah. MATLAB tetap menjadi salah satu perangkat lunak terbaik di dunia untuk tujuan perdagangan algoritmik IMHO (saya memiliki beberapa fakta tentang hal ini meskipun untuk diskusi di masa depan). 2. Kami telah mengubah mereknya. Dari saat ini blog akan disebut MatlabTrading, yang jauh lebih mudah dipahami mengenai topik yang akan disertakan. Selanjutnya, nama domain telah diubah menjadi matlabtrading bukan matlab-trading. blogspot awal. Walaupun domain lama masih bekerja mengalihkan dari nama domain utama. Apa yang akan terjadi dengan blog 1. Lebih banyak posting dan artikel Kami berharap bisa membawa kehidupan ke blog ini dengan memposting konten yang relevan satu atau dua kali dalam seminggu. Dalam beberapa bulan pertama, kami akan memposting sebagian besar artikel dan video yang telah kami miliki untuk memudahkan pembaca terkasih untuk mencari informasi mengenai satu sumber dan memiliki kaitan silang terhadap mereka. Kemudian kita memiliki rencana untuk menulis posting tentang aspek praktis dari perdagangan algoritmik di MATLAB. Cara membuat strategi trading otomatis modern seperti: Perdagangan pasangan arbitrase statistik berarti strategi pasar berbalik arah netral berdasarkan kointegrasi bollinger bands kalman filter dll untuk komoditas, saham dan Forex. Trend mengikuti strategi dengan Jurik Moving Average dan filter digital canggih lainnya Peramalan strategi dengan pembelajaran mesin (Support Vector Machines) dan metode lainnya Menciptakan strategi trading yang kuat dengan menggunakan manajemen uang muka yang berjalan secara visual untuk menginvestasikan kembali modal Anda (sains tentang cara mendapatkan 1M dari 10K Dalam setahun dengan maksimal, namun diperkirakan resiko dan reward keringat). Mungkin setelah membaca ini youve pikir ini akan menjadi artikel bodoh lain bagi orang-orang miskin mencari cara untuk menjadi kaya melalui perdagangan forex dan semua itu. Nah, itu benar-benar salah Kami bekerja di MATLAB, dan mayoritas dari kita adalah ilmuwan dan ahli dalam aspek itu sehingga semuanya serius. 2. Lebih interaktivitas saya akan senang jika kita semua bisa berhubungan melalui komentar di posting. Berlangganan berita kami untuk mendapatkan peringatan tentang posting dan acara terbaru. Nantinya, kami berencana membuat Google Hangouts webinar. Dont miss it, klik tombol Follow di pojok kanan atas untuk bergabung dengan komunitas kita. Apa yang ingin Anda baca di posting blog kami Topik apa yang bisa Anda sarankan Silakan tulis di sini di komentar. Dalam posting saya sebelumnya, saya sampai pada sebuah kesimpulan bahwa perdagangan pasangan close-to-close tidak menguntungkan saat ini seperti dulu sebelum 2010. Seorang pembaca menunjukkan bahwa hal itu bisa jadi sifat pengembalian yang rata-rata kembali beralih ke rentang waktu yang lebih pendek . Saya kebetulan berbagi ide yang sama, jadi saya memutuskan untuk menguji hipotesis ini. Kali ini hanya satu pasang yang diuji: 100 SPY vs -80 IWM. Backtest dilakukan pada data bar 30 detik dari pukul 11.2011 sampai 12.2012. Aturannya sederhana dan serupa dengan strategi yang saya uji di pos terakhir: jika pengembalian bar pasangan melebihi 1 pada nilai z, tukar baris berikutnya. Hasilnya terlihat sangat cantik: Saya akan menganggap ini cukup bukti bahwa masih banyak pembalikan rata-rata pada skala 30 detik. Jika Anda berpikir bahwa bagan ini terlalu bagus untuk menjadi kenyataan, sayangnya memang begitu. Tidak ada biaya transaksi atau spread bid-ask yang diperhitungkan. Sebenarnya, saya akan meragukan bahwa akan ada keuntungan yang tersisa setelah mengurangi semua biaya perdagangan. Namun, grafik seperti ini adalah wortel yang menjuntai di depan hidung saya, membuat saya tetap berjalan. Kabar buruk semua orang, menurut perhitungan saya, (yang saya harap benar tidak benar) perdagangan pasangan klasik sudah mati. Beberapa orang akan sangat tidak setuju, tapi inilah yang saya temukan: Mari kita mengambil strategi hipotetis yang bekerja di sekeranjang etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Dari etf ini 90 unik Pasang bisa dibuat Masing-masing pasangan dibangun sebagai pasar netral. Aturan strategi: Pada setiap hari, untuk masing-masing pasangan, hitung z-score berdasarkan standar deviasi 25 hari. Jika z-score gt threshold, lanjutkan, tutup hari berikutnya Jika nilai z lt - threshold pergi lama, tutup keesokan harinya Untuk menjaga semuanya sederhana, perhitungan dilakukan tanpa manajemen modal (seseorang bisa memiliki hingga 90 pasangan dalam portofolio Setiap hari). Biaya transaksi juga tidak diperhitungkan. Sederhananya, strategi ini melacak satu hari berarti mengembalikan sifat spread netral pasar. Berikut adalah hasil simulasi untuk beberapa batasan: Tidak peduli apa ambang batas yang digunakan, strategi ini sangat menguntungkan di tahun 2008, cukup baik throuh 2009 dan sama sekali tidak berharga mulai awal 2010. Ini bukan pertama kalinya saya menemukan perubahan ini dalam mean reverting. Perilaku di etfs. Tidak peduli apa yang telah saya coba, saya tidak beruntung dalam menemukan strategi perdagangan pasangan yang akan berjalan di ETF melewati tahun 2010. Kesimpulan saya adalah bahwa jenis model stat-arb sederhana ini tidak memotongnya lagi.

No comments:

Post a Comment