Thursday 17 August 2017

Trading Strategy Optimization Matlab


Sebagian besar sistem perdagangan memiliki sejumlah parameter yang disematkan, parameter seperti periode lookback, ambang pintu masuk dan keluar, dan sebagainya. Pembaca blog saya (misalnya di sini dan di sini) dan buku saya akan mengetahui pendapat saya tentang pengoptimalan parameter: Saya bukan penggemar beratnya. Ini karena saya yakin deret waktu keuangan terlalu non-stasioner untuk memungkinkan seseorang mengatakan apa yang optimal di backtest tentu akan optimal di masa depan. Kebanyakan pedagang yang saya tahu lebih suka menukar strategi yang tidak sensitif terhadap perubahan parameter kecil, atau alternatifnya, strategi tanpa parameter yang secara efektif merupakan model rata-rata dengan parameter yang berbeda. Dengan kata lain, jika Anda hanya bisa menukar satu model dengan satu set parameter tertentu, adalah rasional untuk bertanya bagaimana seseorang dapat memilih parameter parameter terbaik (optimal). Banyak model perdagangan memiliki jumlah parameter yang bagus, dan sangat berat untuk mengetahui nilai optimal dari semua parameter ini secara bersamaan. Baru-baru ini, Ron Schoenberg menerbitkan sebuah artikel di Majalah Futures yang merinci cara untuk melakukannya dengan hanya sejumlah kecil kekuatan komputer. Teknik kunci yang digunakan Ron adalah kecocokan polinomial kubik permukaan PampL sebagai fungsi parameter. Ron menggunakan strategi VIX RSI di buku Larry Connors Short Term Trading Strategies That Work sebagai contoh. Strategi ini memiliki 5 parameter untuk dioptimalkan, namun Ron hanya perlu menghitung PampL untuk 62 set parameter yang berbeda, dan keseluruhan prosedur hanya membutuhkan waktu 58 detik. Meskipun Ron telah mengkonfirmasi bahwa sebagian besar parameter yang dipilih Connors mendekati optimal, dia menemukan beberapa kejutan: yaitu, RSI periode 3 atau 4 secara signifikan lebih menguntungkan daripada yang digunakan oleh Connors, setidaknya pada periode backtest. . Sekarang, untuk pengujian sebenarnya dari pengoptimalan ini, akan sangat membantu jika Ron melakukan pengoptimalan ini dengan menahan beberapa data di luar sampel, dan melihat apakah parameter ini masih optimal dalam kumpulan data yang ditahan. Karena dia tidak melakukan itu, kita perlu menunggu satu tahun lagi untuk menemukan diri kita sendiri 11 komentar: Berbicara tentang data di luar sampel, apakah Anda memiliki pendapat kuat mengenai pengujian Walk-forward yang saya tahu Robert Pardo adalah pendukung besar dari itu Sebagai alat untuk beradaptasi dengan pasar yang berubah (yaitu tidak stasioner). Di sisi lain Anda memiliki Dunn yang memperdagangkan sistem yang sama dengan parameter yang sama. Saya juga baru-baru ini menemukan model Portofolio Luar Angkasa Ralph Vince yang kedengarannya seperti alternatif yang menjanjikan untuk proses pengoptimalan - dengan menggunakan permukaan kinerja dan penarikan - namun hanya melihat sisi pengelolaan uang dari barang (yaitu ukuran posisi dan bukan pilihan parameter) . Hal yang hebat adalah bahwa hal itu harus memungkinkan beberapa optimasi sistem. Apakah Anda punya pikiran tentang ini? Terima kasih atas link yang berguna. Kegagalan untuk menggeneralisasi out-of-sample biasanya menjadi masalah dengan model yang cenderung over-fitted, seperti jaring saraf. Model yang saya lihat, variasi model yang diajukan oleh Connors dan Alvarez dalam buku mereka, adalah model yang sangat sederhana dan saya tidak mengharapkan mereka memiliki masalah yang tidak diunggulkan. Saya melakukan tes ke depan model di Futures Magazine. Model dioptimalkan pada data 1993-2003, dan kemudian saya menjalankan model data dari tahun 2003 sampai 2009. Hasilnya serupa. Hal ini dilaporkan dalam artikel Futures Magazine. Bukankah ini memenuhi syarat sebagai uji out-of-sample dari model Ron, permintaan maaf saya - saya telah mengabaikan paragraf yang menyebutkan pengujian di masa depan. Tabel Anda menunjukkan bahwa parameter optimal yang dihitung dalam backtest menghasilkan hasil yang baik dalam uji out-of-sample. Namun, apakah Anda mengoptimalkan keseluruhan rangkaian parameter pada data di luar sampel, dan lihat apakah yang Anda pilih dalam periode di sampel tetap optimal dalam uji lanjutan? Kita melihat bahwa Factor53 optimal di backtest. Tapi Factor54 adalah optimal out-of-sample sebagai gantinya. Dan siapa yang mengatakan bahwa mengingat periode out-of-sample yang berbeda di tahun 2010, Factor52 akan menjadi lebih optimal. Jika saya menukar strategi ini, sebaiknya saya menukar 3 model dengan Factor52, 3, dan 4 secara bersamaan hanya untuk rata-rata sepanjang masa depan. Mungkin parameter optimal Jez, terimakasih untuk menyebut Leverage Space Portfolio anda. Saya telah menemukannya sebelum dan akan mempelajarinya sebelum berkomentar. Ernie Anda membuat titik yang baik bahwa titik optimal dalam satu periode waktu bukanlah titik optimal dalam periode waktu yang lain. Itu jelas salah satu kelemahan dalam eksperimen dengan data keuangan historis. Namun, jika tujuannya adalah untuk mendapatkan angka terbaik yang ditawarkan oleh masa lalu dalam waktu sesingkat-singkatnya, Anda bisa mengalahkan eksperimen yang dirancang secara statistik. Jika kita berbicara tentang pendekatan perdagangan kuantitatif maka kita berbicara tentang mendapatkan dan menggunakan angka terbaik, yaitu angka yang paling berguna di masa lalu. Tapi karena saya yakin Anda sadar, percobaan yang dirancang lebih dari sekedar tentang hasil optimal. Setiap percobaan berisi seratus pertanyaan dan jawaban, dan setiap percobaan menimbulkan pertanyaan yang hanya bisa dijawab dengan eksperimen lebih lanjut. Anda bisa kehilangan diri Anda selama setahun untuk melihat semua aspek percobaan percobaan 200 tunggal. Ketika menganalisis spread (menghitung koefisien kointegrasi, menerapkan tes untuk pengembalian rata-rata dan memperkirakan spread half life) apakah Anda menggunakan harga log atau harga dolar Maaf untuk posting komentar yang berbicara tentang topik lain. Hai Anon, saya menggunakan harga dolar, tapi menurut saya itu tidak masalah. Ernie Hanya bertanya-tanya apa sistem pengujian kembali yang Anda gunakan Dan untuk pemasangan data polinomial kubik Anda menggunakan Matlab cs96ai, saya menggunakan Matlab untuk backtesting saya. Sedangkan untuk baju kubik, Anda bisa bertanya kepada penulis dari kertas asli yang saya kutip. (Tentu saja Anda bisa melakukannya di Matlab, tapi saya tidak melakukan penelitian ini sendiri.) Ernie Dear Ernie, terimakasih untuk buku ini. Ini sangat bagus. Saya mencoba menerapkan beberapa program dan melakukan beberapa pengujian ulang. Saya tidak memiliki matlab karena saya tahu itu sangat mahal untuk perdagangan startup saya. Apakah ada yang lain yang akan Anda rekomendasikan. Saya mencoba memprogram di R, tapi sekarang sangat lambat. Apakah Anda memiliki semua contoh Anda di Excel, kebetulan? Sekali lagi, terima kasih untuk buku ini dan saya telah menikmati membacanya dan mencoba menerapkannya. Vina, terima kasih atas pujianmu Anda mungkin bisa menemukan beberapa pengganti Excel (misalnya misalnya pembaca yang mengatakan di blog ini bahwa ada tes adf Excel untuk penempatan di suatu tempat). Namun, banyak strategi yang sulit diterapkan di Excel. Itu sebabnya banyak quants menggunakan Matlab untuk backtesting sebagai gantinya. Pastinya R adalah alternatif yang bagus juga. (Tamu blogger Paul Teetor yang dapat Anda telusuri di blog ini memiliki beberapa contoh program R yang diposkan.) Kegunaan terbaik, ErnieMemodifikasi sistem perdagangan teknis dengan menggunakan prosedur algoritma genetika MATLAB yang baru Penelitian terbaru di pasar keuangan menunjukkan bahwa analisis teknis dapat dilakukan. Alat yang sangat berguna dalam memprediksi trend. Sistem perdagangan banyak digunakan untuk penilaian pasar namun, optimalisasi parameter dari sistem ini telah menarik sedikit minat. Dalam tulisan ini, untuk mengeksplorasi potensi kekuatan perdagangan digital, kami menyajikan alat MATLAB baru berdasarkan algoritma genetika yang digunakan alat ini untuk mengetahui parameter optimalisasi aturan teknis. Ini menggunakan kekuatan algoritma genetika untuk menghasilkan solusi cepat dan efisien dalam istilah perdagangan riil. Alat kami diuji secara ekstensif terhadap data historis investasi dana UBS di pasar saham yang sedang berkembang melalui sistem teknis khusus kami. Hasil penelitian menunjukkan bahwa GATradeTool yang kami usulkan melebihi alat bantu perangkat lunak yang umum digunakan, non-adaptif, berkenaan dengan stabilitas pengembalian dan penghematan waktu selama keseluruhan periode sampel. Namun, kami memberikan bukti kemungkinan efek ukuran populasi dalam kualitas solusi. Pasar keuangan Prediksi Algoritma genetika Aturan Teknis Investasi 1. Pendahuluan Para pedagang dan analis investasi hari ini membutuhkan alat yang cepat dan efisien di pasar keuangan yang kejam. Pertempuran dalam perdagangan sekarang terutama dilancarkan pada kecepatan komputer. Perkembangan teknologi perangkat lunak baru dan munculnya lingkungan perangkat lunak baru (misalnya MATLAB) memberikan dasar untuk memecahkan masalah keuangan yang sulit secara real time. MATLABrsquos fungsi matematika dan keuangan built-in yang luas, fakta bahwa bahasa pemrograman yang ditafsirkan dan dikompilasi dan independensi platform membuatnya sesuai untuk pengembangan aplikasi finansial. Bukti pengembalian yang diperoleh dari peraturan teknis, termasuk strategi momentum (misalnya 14. 15. 16. 16. 25 xA0andxA020), peraturan rata-rata bergerak dan sistem perdagangan lainnya 6. 2. 9 xA0andxA024 dapat mendukung pentingnya analisis teknis. Namun, sebagian besar penelitian ini mengabaikan masalah optimasi parameter, membiarkan mereka terbuka terhadap kritik terhadap data yang mengintip dan kemungkinan bias bertahan 7. 17 xA0andxA08. Secara tradisional peneliti menggunakan spesifikasi aturan perdagangan ad hoc. Mereka menggunakan konfigurasi populer default atau secara acak mencoba beberapa parameter yang berbeda dan memilih kriteria terbaik berdasarkan pengembalian terutama. Papadamou dan Stephanides 23. menerapkan toolbox berbasis MATLAB untuk perdagangan teknis dibantu komputer yang menyertakan prosedur untuk masalah optimasi parameter. Namun, titik lemah prosedur pengoptimalan mereka adalah waktu: fungsi tujuan (misalnya keuntungan) hanya memerlukan fungsi kesalahan kuadrat sederhana namun rumit (setiap iterasi pengoptimalan berjalan melalui data, menghasilkan sinyal perdagangan, menghitung keuntungan, dll.). Ketika kumpulan data berukuran besar dan Anda ingin mengoptimalkan sistem Anda sesering mungkin dan Anda memerlukan solusi sesegera mungkin, kemudian mencoba semua solusi yang mungkin untuk mendapatkan yang terbaik akan menjadi tugas yang sangat membosankan. Algoritma genetika (GA) lebih cocok karena mereka melakukan pencarian acak secara terstruktur dan bertemu dengan sangat cepat pada populasi yang mendekati solusi optimal. GA akan memberi Anda set (populasi) solusi ldquogoodrdquo. Analis tertarik untuk mendapatkan beberapa solusi bagus secepat mungkin daripada solusi terbaik di dunia. Solusi terbaik secara global memang ada, namun sangat tidak mungkin hal itu akan terus berlanjut menjadi yang terbaik. Tujuan dari penelitian ini adalah untuk menunjukkan bagaimana algoritma genetika, kelas algoritma dalam perhitungan evolusioner, dapat digunakan untuk memperbaiki kinerja dan efisiensi sistem perdagangan terkomputerisasi. Bukan tujuan di sini untuk memberikan pembenaran teoritis atau empiris untuk analisis teknis. Kami menunjukkan pendekatan kami dalam peramalan tertentu berdasarkan pasar saham yang sedang berkembang. Makalah ini disusun sebagai berikut. Pekerjaan sebelumnya disajikan pada Bagian 2. Kumpulan data dan metodologi kami dijelaskan pada Bagian 3. Hasil empiris dibahas pada Bagian 4. Kesimpulan berikut Bagian 5. 2. Pekerjaan sebelumnya Ada banyak pekerjaan GA di bidang ilmu komputer dan teknik tapi sedikit pekerjaan yang telah dilakukan mengenai bidang bisnis terkait. Akhir-akhir ini, ada minat yang tumbuh pada penggunaan GA dalam ekonomi keuangan, namun sejauh ini hanya sedikit penelitian mengenai perdagangan otomatis. Sepengetahuan kami makalah pertama yang menghubungkan algoritma genetika dengan investasi berasal dari Bauer dan Liepins 4. Bauer 5 dalam bukunya ldquoGenetic Algorithms and Investment strategiesrdquo menawarkan panduan praktis mengenai bagaimana GA dapat digunakan untuk mengembangkan strategi perdagangan yang menarik berdasarkan informasi mendasar. Teknik ini dapat dengan mudah diperluas untuk mencakup jenis informasi lainnya seperti data teknis dan makroekonomi serta harga masa lalu. Menurut Allen dan Karjalainen 1. Algoritma genetika adalah metode yang tepat untuk menemukan aturan perdagangan teknis. Fernaacutendez-Rodriacuteguez dkk. 11 dengan mengadopsi optimasi algoritma genetika dalam aturan perdagangan sederhana memberikan bukti keberhasilan penggunaan GA dari Bursa Saham Madrid. Beberapa penelitian lain yang menarik adalah penelitian oleh Mahfoud dan Mani 18 yang menghadirkan sistem berbasis algoritma genetika baru dan menerapkannya pada tugas untuk memprediksi kinerja saham individual masa depan oleh Neely dkk. 21 dan oleh Oussaidene et al. 22 bahwa menerapkan pemrograman genetik untuk peramalan valuta asing dan melaporkan beberapa keberhasilan. Salah satu komplikasi dalam optimasi GA adalah bahwa pengguna harus menentukan seperangkat parameter seperti tingkat crossover, ukuran populasi dan tingkat mutasi. Menurut De Jong 10 yang mempelajari algoritma genetika dalam pengoptimalan fungsi, kinerja GA yang baik memerlukan probabilitas crossover tinggi (berbanding terbalik dengan ukuran populasi) dan ukuran populasi moderat. Goldberg 12 dan Markellos 19 menunjukkan bahwa seperangkat parameter yang bekerja dengan baik di banyak masalah adalah parameter crossover 0,6, ukuran populasi 30 dan parameter mutasi 0,0333. Bauer 4 melakukan serangkaian simulasi mengenai masalah optimasi keuangan dan mengkonfirmasi validitas saran Goldbergrsquos. Dalam penelitian ini kita akan melakukan studi simulasi terbatas dengan menguji berbagai konfigurasi parameter untuk sistem perdagangan yang dipilih. Kami juga akan memberikan bukti untuk GA yang diajukan dengan membandingkan alat kami dengan perangkat lunak lainnya. Optimalisasi Strategi Ada dua, di antara banyak, kesulitan dalam menjalankan skrip ini di MatlabR. Yang pertama adalah coding. Pendapat pribadi saya adalah bahwa hal itu membutuhkan usaha keras untuk mensimulasikan strategi perdagangan non-sepele (atau sistem kompleks) di MatlabR dan memastikan bahwa simulasi itu benar. Tidak ada proses atau alat yang mudah tersedia secara sistematis dan otomatis untuk memeriksa dan menguji kebenaran skrip. Lebih buruk lagi, kebanyakan quantstrader tidak bisa kode. Mereka tidak tahu apa-apa tentang pengujian perangkat lunak. Dalam prakteknya, kebanyakan quantstrader hanya berpikir bahwa gagasan itu benar. Sebenarnya, banyak programmer di industri keuangan tidak bisa kode keduanya. (Yang baik pergi ke GooG, MFT, AAPL8230 atau startups). Yang lebih penting lagi, kesulitan kedua, fokus diskusi ini, adalah kinerja. Saya percaya bahwa lebih dari jelas bahwa secara umum, mengeksekusi skrip MatlabR sangat lambat. MatlabR mengeksekusi dan menafsirkan script line-by-line. Untuk skrip optimasi strategi algoritmik algoritme kami, kemacetannya adalah: Setiap simulasi strategi lambat karena perulangan melebihi waktu (atau tanggal, atau kutu). Kita perlu mensimulasikan strategi berkali-kali dalam setiap iterasi DE. Kami menjalankan banyak iterasi DE seperti pada algoritma genetika. Dengan kata lain, jika Anda mencoba mengkodekan kode pseudo di atas di MatlabR, mungkin diperlukan waktu berhari-hari, jika memungkinkan, untuk menghasilkan hasil. Jika strategi trading Anda bekerja dengan data tick-by-tick, maka itu tidak ada harapan. Untuk mempercepat prosesnya, kita bisa menjalankan algoritma evolusi diferensial secara paralel pada grid. MatlabR tidak memungkinkan Anda memparalelkan kode Anda. Namun, secara realistis, saya tidak pernah melihat quantstrader yang menulis kode MatlabR paralel. Bahkan jika mereka ingin melakukannya, sedikit, jika ada, mengerti pemrograman multi-threaded bersamaan untuk mendapatkan kode dengan benar. Selain itu, kita dapat beralih dari MatlabR ke beberapa bahasa pemrograman sebenarnya, mis. CCJava Kode yang dipatuhi selalu berjalan lebih cepat dari pada skrip. (Tolong Tidak VBA Hanya manajer yang menggunakannya) Algo Quant membahas masalah optimasi strategi perdagangan dengan Mengaktifkan pengkodean strategi perdagangan yang kompleks di Jawa dengan mudah. Untuk mengode strategi, quanttrader hanya mengumpulkan komponen, mis. Sinyal, matematika, event handlers, dari perpustakaan. Optimalkan strategi atau portofolio dengan menjalankan algoritma optimasi evolusi diferensial secara paralel. Saya menunjukkan kinerja Algo Quant menggunakan strategi crossover moving average sederhana. Strategi ini mempertahankan dua moving averages, moving average yang cepat dan moving average yang lamban. Bila rata-rata bergerak cepat melintasi rata-rata bergerak lambat dari bawah, kita memasuki posisi panjang ketika moving average bergerak cepat melewati rata-rata bergerak lambat dari atas, kita masuk dalam posisi short. Ada bukti teoritis dan empiris untuk menunjukkan bahwa ukuran jendela bergerak cepat dan lambat tidak boleh terlalu besar. Lihat catatan kursus Haksuns kuliah 6. Sebagian besar pedagang memilih ukuran jendela yang cepat dan lamban dengan 1) menebak, 2) kabar angin, 3) backtesting (dengan sedikit atau lebih sedikit parameter yang dipilih secara acak) di Bloomberg. Beberapa pedagang mengkalibrasi ulang secara berkala dengan memperbarui parameternya. Mari kita coba dulu pendekatan desas-desus. Pilihan yang populer adalah (50, 200). Saya mensimulasikan strategi trading berjangka S038P 500 ini, VFINX, dari tahun 200011 sampai 2011531 dengan data Yahoo. Kode sumber ada di sini. Berikut adalah P038L yang dihasilkan menggunakan Algo Quant. Kami memiliki: pnl 50.4 sharpe 0.080829 omega 1.285375 Tidak ada alasan mengapa (50, 200) adalah parameter set yang optimal atau bahkan bekerja sama sekali. Secara intuitif, jika kita memperbarui pasangan secara berkala (lebih fleksibel), kita berpotensi menghasilkan P038L yang lebih baik. Sebagai contoh, saya menukar strategi Simple Moving Average Crossover ini dengan menggunakan parameter optimal Dinamis dikalibrasi setiap 3 bulan dengan menggunakan data dalam 12 bulan terakhir. Untuk fungsi objektif untuk menentukan optimalitas, saya menggunakan omega. Kode sumber ada di sini. Seperti yang diharapkan, strategi yang dikalibrasi secara dinamis ini menghasilkan P038L (jauh lebih baik) daripada strategi statik menggunakan parameter yang dapat ditebak secara acak. Kami memiliki: pnl 106.65 sharpe 0.309824 omega 2.816514 Dalam hal kinerja (kecepatan komputasi), dibutuhkan 32,5 menit (1954877 ms) untuk menyelesaikan simulasi selama 10 setengah tahun di workstation saya (dual E5520 2.27GHz) dengan memori 12GB. (Sebagai catatan, menggunakan algoritma Brute Force paralel lainnya hanya butuh 6,6 menit atau 395334 ms.) Algoritma evolusi diferensial paralel kami mempertahankan kumpulan 16 parameter. Di masing-masing dari 80 iterasi, saya menjalankan 16 simulasi secara paralel, satu di setiap inti. Gambar menunjukkan bahwa komputer saya bekerja keras, memanfaatkan semua sumber dayanya untuk mencari set parameter historis yang optimal. Mengulangi prosedur simulasi-test-and-pick ini di MatlabR mungkin akan memakan waktu berhari-hari, jika tidak selamanya. Sebagai disclaimer, saya tidak mengklaim bahwa strategi SMA2Crossover yang dikalibrasi secara dinamis ini menghasilkan alpha pada masa depan S038P500. Sebenarnya, saya baru saja memilih (f 3, L 12) secara kebetulan. Maksud saya adalah membandingkan kinerja Algo Quants dari evolusi diferensial paralel pada optimasi strategi dengan MatlabR. 5 Comments Quant Trader on 2011-05-31 at 5:11 pmGap-on-Open Menguntungkan Strategi Perdagangan 5 Agustus 2014 oleh Pawel Setelah lebih lama, QuantAtRisk kembali ke bisnis. Sebagai trader algo, saya selalu tergoda untuk menguji strategi trading gap-on-open. Ada berbagai alasan yang berdiri di belakangnya tapi yang paling populer selalu omni-dibahas: berita baik tentang saham. Dan berapa harga saham meroket turun pada hari-hari berikutnya. Ketika kita mendekati pola harga seperti itu, kita membicarakan pemicu atau kejadian yang dipicu. Inti dari aktivitas algoritma adalah identifikasi pemicu dan melakukan tindakan yang tepat: berjalan jauh atau pendek. Itu itu. Dalam kedua kasus tersebut kita ingin menghasilkan uang. Dalam posting ini kami akan merancang kondisi awal untuk strategi trading gap-on-open kami yang bertindak sebagai pemicu dan kami akan mendukung sebuah skenario realistis untuk menangkan uang kami pada saham-saham yang dibuka menguat pada hari perdagangan berikutnya. Tujuan kami adalah untuk menemukan periode holding yang paling optimal untuk perdagangan tersebut ditutup dengan keuntungan. Strategi kami dapat di backtested menggunakan portofolio N-aset. Di sini, untuk kesederhanaan, mari kita gunakan subset acak dari 10 saham (portfolio. lst) menjadi bagian dari Indeks Dow Jones saat ini: AXP CSCO DIS IBM JNJ KO NKE PG UTX XOM Di Matlab, kami mengambil harga saham dari Google Finance Penyedia data dapat diakses melalui API Matlab Quandl8217s (lihat posting ini untuk penyiapannya di Matlab). Kami mulai menulis kode backtesting utama kami sebagai berikut: Gap pada Strategi Perdagangan Terbuka Mengambil harga saham melalui Quandl and Strategy Backtesting (c) 2014 oleh Pawel Lachowicz, QuantAtRisk hapus semua parameter clc fnameportfolio. lst semua parameter 1 (tahun) parm11 ndaysparm1365 ldaydatenum ( 2014-08-05) mengambil data stok Top, Thp, Tlp, Tcp, N, ntdaysFetchQuandl (fname, ndays, lday) di mana kita menggunakan fungsi pre-designed dari FetchQuandl untuk mengimpor 4 seri harga terpisah dari setiap stock8217s terbuka (Top ), Harga tinggi (Thp), rendah (Tlp), dan tutup (Tcp) setiap hari: fungsi Top, Thp, Tlp, Tcp, N, ntdaysFetchQuandl (fname, ndays, lday) Baca daftar komponen Dow Jones fileID fopen (fname ) Tmp textscan (fileID, s) fclose (fileID) componentstmp daftar sebagai array sel Baca dalam daftar tickers dan kode internal dari Quandl xlsread (QuandlStockCodeListUS. xlsx) quandlctext (:, 1) lagi, sebagai daftar di sel Array quandlcodetext (:, 3) Kode Harga Quandls yang sesuai mengambil data saham untuk tanggal terakhir terakhir2datest R (lday, yyyy-mm-dd) dari date1datestr (lday-ndays, yyyy-mm-dd) ke Rop Tcp memindai semua tickers dan mengambil data dari Quandl untuk i1: length (components) untuk j1: length (quandlc) if (Strcmp (komponen, quandlc)) fprintf (4.0f sn, i, quandlc) fts0 fts, headersQuandl. get (kode quandlcode, tipe, fints. Kode akses, PutHereYourQuandlCode Start up, date1, enddate, date2) cpfts2mat (fts. Close, 1) Tcp cp tutup harga seri opfts2mat (fts. Open, 1) harga op terbuka harga hpfts2mat (fts. High, 1) Thp harga hp lpfts2mat ( Fts. Low, 1) Tlp lp harga rendah Rcp cp (2: end, 2).cp (1: end-1,2) -1 akhir seri cp end end end Nlength (komponen) ntdayslength (Tcp) end Harap diperhatikan Bahwa di baris 12 kami menentukan jumlah tahun, yaitu seberapa jauh backtest kami harus diperpanjang mundur dalam waktu (atau jumlah hari kalender lihat baris 13) dari hari yang ditentukan pada baris 14 (hari terakhir). Pertama, mari kita desain strategi trading. Kami memindai secara bersamaan empat seri harga untuk masing-masing saham secara terpisah. Kami mendefinisikan pemicu strategi sebagai berikut: yaitu jika harga saham terbuka pada hari t lebih tinggi dari harga penutupan pada hari t-1 dan harga terendah pada hari t lebih tinggi dari harga tertinggi pada hari t-1. Setelah itu, kami membuat keputusan BUY PANJANG Kami membeli saham itu pada hari berikutnya dengan harga pasarnya (harga penutupan). Pendekatan ini harus menghapus bias selip secara efektif (lihat lebih banyak tentang selip dalam perdagangan saham di sini). Sekarang, kita menjalankan backtest pada setiap saham dan setiap perdagangan terbuka. Kita memilih parameter kedua (parm2) menjadi beberapa hari, yaitu berapa lama kita memegang saham. Dalam kode berikut, mari kita biarkan untuk menjual saham setelah 1 sampai 21 hari kalender (pm akhir pekan atau periode waktu libur umum): matriks yang telah ditentukan untuk hasil akhir backtest hasil untuk parm20: 20 cR untuk i1: N hanya untuk Sebuah tujuan merencanakan plot harga jika (i1) open (warna biru) plot (Top (:, 1), Top (:, 2),) terus di dekat (warna merah) plot (Tcp (:, 1), Tcp (:, 2), r) berpegang pada plot warna hijau tinggi (Thp (:, 1), Thp (:, 2), g) xlabel (Hari) ylabel (Harga Saham AXP AS) akhiri untuk t2: Ntdays menentukan indikator ind1Tcp (t-1,2) cp on (t-1) hari ind2Thp (t-1,2) hp on (t-1) day ind3Top (t, 2) op on (t) day ind4Tlp (t , 2) lp on (t) day detect trigger if (ind1ltind3) ampamp (ind2ltind4) yang hanya direncanakan untuk AXP jika (i1) berpegang pada plot (Top (t, 1), Top (t, 2), o) tanggal akhir Sebuah pemicu tdayTop (t, 1) nextbusdatebusdate (tday, 1) temukan tanggal perdagangan berikutnya TbuyTbuy nextbusdate akhir akhir Tsellbusdate (Tbuyparm2,1) Di sini, di baris 57 dan 60 kami menyusun array waktu yang menyimpan informasi fisik pada hari-hari itu. Sekarang, kita akan menggunakannya untuk memeriksa harga perdagangan dan membuka dan menurunkan keuntungan dan kerugian untuk setiap saham: R untuk k1: length (Tbuy) jfind (Tbuy (k) Tcp (:, 1)) pbuyTcp (j, 2 ) Jfind (Tsell (k) Tcp (:, 1)) psellTcp (j, 2) ret (psellpbuy-1) return per trade RR ret akhir compRprod (R1) -1 compound return per stocks cRcR compR end resultsresults cR end Di Lingkaran dalam (garis 24 sampai 75, yaitu melacak sejumlah saham dalam indeks portofolio i, di sini 1 sampai 10) kita menangkap semua perdagangan per saham (garis 63-70) dan menghitung pengembalian majemuk multi-periode (garis 72) seolah-olah Kami memperdagangkan stok itu hanya menggunakan model kami. Misalnya, untuk saham i1 (AXP) dari portofolio kami, kode kami menampilkan seri harga 1 tahun: di mana hari-hari memenuhi kriteria pemicu kami telah ditandai dengan penanda lingkaran terbuka. Jika Anda sekarang menjalankan kembali backtest membuat substitusi lembut di baris 24 sekarang menjadi: kita dapat menemukan bahwa dengan menjalankan beberapa baris kode tambahan seperti yang didefinisikan: gambar (2) batang ((0:20), 100 hasil) xlabel ( Holding Period days) ylabel (AXP: Compound Return) kami memperoleh hasil yang menarik: Bagan tersebut menunjukkan bahwa untuk AXP, selama 251 hari yang lalu (sejak Aug4 2014 mundur), kami memiliki 16 pemicu sehingga 16 perdagangan dan, yang mengejutkan, terlepas dari periode holding , Gabungan kembali dari semua perdagangan tertutup sangat positif (menguntungkan). Hal ini tidak terjadi jika kita mempertimbangkan, misalnya, i4, saham IBM: Hasil ini menunjukkan bahwa untuk periode holding yang berbeda (dan beragam saham tentunya) indikator perdagangan ekstra tertentu harus diterapkan untuk membatasi kerugian (misalnya target keuntungan). Jika kita menukar keseluruhan portofolio dengan menggunakan model gap-on-open kita, kita akan mendapatkan hasil yang sangat menggembirakan: di mana untuk setiap periode holding kita menampilkan rata-rata 10 saham majemuk imbal hasil. Dengan mempertimbangkan tren naik global di pasar saham AS antara Agustus 2013 dan 2014, strategi ini layak dipertimbangkan dengan modifikasi lebih lanjut (mis., Mempertimbangkan pemicu pendek atau panjang dan pendek, time series FX, dll.). Seseorang bijak pernah berkata: Terkadang kamu menang. Terkadang Anda belajar. Dalam perdagangan algo kita semua belajar untuk menang. Selanjutnya post8230 Marginal Value-at-Risk untuk Manajer Portofolio INGIN BELAJAR LEBIH BANYAK PADA PORTOFOLIOS di MATLAB Klik di sini Tentang Pendiri Pawel Lachowicz, PhD. Analis Risiko Kuantitatif Bank of New York Mellon. Ahli Pengolahan Sinyal Digital. Ilmu Data. Penggemar Blockchain. Python Advokat. Penulis dan fotografer Pesaing Traveller dan Subway. Berbasis di Wroclaw, Polandia. Untuk profesional bertanya jangan ragu untuk menghubungi saya secara langsung. Ikuti QaR di Web

No comments:

Post a Comment