18 Agustus 2015 6 Oktober 2015 Perdagangan Kalman Filter and Pair Bayangkan skenario ini. Anda adalah pedagang arbitrase statistik di meja prop atau HF. Dengan demikian, Anda secara rutin memegang inventarisasi eksposur ETF yang harus Anda lindung nilai. Malam sebelumnya, Anda menginstruksikan pedagang semalam untuk menghitung rasio lindung nilai untuk matriks ETF8217s. Keesokan paginya sebelum pasar dibuka, pedagang junior Anda dengan penuh semangat menyajikan hasilnya untuk inspeksi Anda. Menyukai apa yang Anda lihat, Anda memuat rasio lindung nilai ke dalam platform trading Anda dan menunggu yang terbuka. Saat pasar pertama kali dibuka untuk trading, Anda menyeimbangkan kembali lindung nilai Anda sesuai dengan rasio baru. Setelah itu, Anda menyaksikan dengan ngeri karena pagar tanaman Anda tidak berfungsi seperti yang diharapkan. Apa yang salah Setiap trader yang baik tahu bahwa mereka harus beradaptasi saat kondisi di pasar berubah, jadi mengapa kita menuntut yang lain dari model perdagangan kita Para pedagang di contoh kita mengandalkan rasio lindung nilai statis untuk menyalakan logika trading mereka. Akibatnya, mereka membuka diri terhadap apa yang dikenal sebagai parameter risk. Memperbarui parameter Anda saat informasi baru tersedia adalah salah satu cara untuk melindungi diri dari risiko perdagangan yang kurang dihargai ini. Sejauh ini, model yang paling banyak dicari untuk menyelesaikan skenario perdagangan ini adalah Filter Kalman. Ini berguna bila Anda berurusan dengan model linier seperti perdagangan pasangan, yang dalam bentuknya yang paling sederhana mengurangi perdagangan residu regresi linier: Dimana harga saham sekarang saat ini, adalah harga saham kedua saat ini , Adalah rasio lindung nilai saat ini dan merupakan spread harga saat ini yang kita trading. Kita juga bisa memperkirakan rasio lindung nilai menggunakan perubahan log pada X dan Y, bukan tingkatnya. Hal ini akan lebih mungkin terjadi dalam skenario Perdagangan Frekuensi Tinggi, di mana semua yang kita pedulikan adalah perubahan harga. Filter Kalman memungkinkan kita untuk memvariasikan rasio lindung nilai dari waktu ke waktu. Misalnya, kita anggap rasio lindung nilai mengikuti jalan acak, yaitu di mana keadaan rasio lindung nilai saat ini, adalah keadaan terakhir dan merupakan noise putih acak dengan rata-rata nol dan volatilitas. Filter Kalman dirancang untuk memperkirakan state8221 8220 dari model Gaussian linier seperti Pairs Trading. Filter didasarkan pada sistem persamaan: adalah keadaan tersembunyi saat ini (misalnya rasio lindung nilai kita), adalah matriks transisi (misalnya matriks identitas), adalah vektor observasi terakhir (misalnya perubahan log stok Y) adalah Matriks observasi terakhir (misalnya perubahan log stok X) adalah noise putih Gaussian dengan mean nol dan varians Let8217s melihat contoh konkret Filter Kalman dalam tindakan untuk mendapatkan pemahaman yang lebih baik tentang bagian yang bergerak. Secara khusus, kami ingin menyoroti pentingnya pilihan Anda dan. Rasio kedua parameter ini disebut rasio signal-to-noise. Jika relatif kecil, filter akan menempatkan sebagian besar bobotnya untuk perkiraan berikutnya pada perkiraan terakhir (yaitu filter akan menyukai keadaan saat ini mengenai informasi baru). Jika kebalikannya benar, filter akan menyesuaikan dengan cepat informasi baru dengan mengorbankan keadaan sebelumnya. Bagan berikut mengilustrasikan efeknya dengan baik. Setiap garis mewakili estimasi saat ini dari rasio lindung nilai antara ETF8217s SPY dan EEM dengan menggunakan nilai yang berbeda untuk mempertahankan konstan. Semakin tinggi rasio signal to noise, semakin cepat model menyesuaikan dengan informasi baru: Python memiliki implementasi sederhana dan efektif dari Kalman Filter yang disebut pykalman. Kami mendownload data saham intraday gratis untuk SPY dan EEM dengan menggunakan fungsi getgoogledata yang telah kami bagi sebelumnya. Untuk menerapkannya untuk diri sendiri, Anda bisa mengikuti di bawah ini. Langkah pertama adalah mengimpor modul yang dibutuhkan: Selanjutnya kita bisa mendownload harga saham dan mentransformasinya menjadi perubahan log: Sekarang mari8217s memisahkan dataset menjadi sampel inout untuk memperkirakan keadaan awal filter: Sekarang kita bisa menjalankan setiap filter dengan menggunakan yang berbeda. Rasio signal-to-noise: Ini adalah sekuel yang digabungkan secara longgar dengan posting sebelumnya, Buatlah sebuah kontrak dengan pasangan arbitrase Untuk contoh yang ditulis dengan baik tentang bagaimana menggunakan model spread dengan intercept dan juga rasio lindung nilai, lihat TheAlgoEngineer. Tertarik sumber daya untuk Pairs Trading Ingin belajar menambang sumber data sosial seperti Google Trends, StockTwits, Twitter, dan Estimasi Pastikan untuk mendownload buku kami Intro ke Data Sosial untuk Pedagang Ikuti Blog via Email Posting navigasi Recent Posts Recent Comments CategoriesKalman filter and Kekuatan mata uang Bergabung bulan Agustus 2011 Status: Anggota 1.132 Posting Akhir-akhir ini Im bermain-main dengan estimator Bayesian rekursif (en. wikipedia. orgwikiRecursi. Ianestimation) dimana filter Kalman adalah kasus khusus. Saya tidak akan masuk dalam rincian berdarah melihat Peramalan Bayesian dan Model Dinamis oleh Barat dan Harrison. Awalnya saya mencoba memperkirakan tren dan volatilitas pasar. Tapi bukan itu postingan ini. Ini tentang mengapa kamu lebih baik menjadi panjang di Dragon hari ini. Return pasar tidak didistribusikan secara normal tapi antara Cauchy dan Student didistribusikan. Kinerja filter Kalman menurun dengan cepat untuk inovasi non-Normal. Itulah mengapa saya menggunakan filter Kalman lain yang memperkirakan kesalahan yang pertama dan saya memberi umpan balik informasi ini ke model pertama sebagai modulasi varians yang diizinkan negara. Semacam kursor kursor dinamis lt-gt smoothnessquot. Model pertama ini adalah estimasi lokal polinomial pesanan kedua. Saya memilih urutan kedua polinomial karena dapat memperkirakan (Taylor) setiap fungsi halus seperti gelombang sinus untuk pasar dengan komponen siklik (kisaran atau tren valatile) atau tren eksponensial (untuk indeks dan saham). Juga faktor akselerasi membantu kenaikan harga jika terjadi pergerakan mendadak. Filter kedua hanya menggunakan model konstan. Saya menggunakan H4 untuk mengukur tren harian. Berikut adalah screenshot EURUSD H4. Garis biru adalah ideal, tapi tidak kausal, low pass filter sinc (en. wikipedia. orgwikiSincfilter) yang digunakan dengan 41 sampel. Ini memberi Anda gambaran tentang lag. Filter berwarna hijau saat tren paling mungkin naik dan merah sebaliknya. Amplop dasbor adalah interval kepercayaan 95 dari perkiraan harga rata-rata. Berikut adalah kesalahan antara harga dan perkiraan (hitam) dan nilai ini disaring dengan filter ke-2 (merah). Ini tidak mengikuti kesalahan terlalu banyak untuk tidak membuat filter utama bereaksi berlebihan. Terlampir Gambar (klik untuk memperbesar) Tidak ada keserakahan. Tidak takut. Hanya matematika Bergabung Agustus 2011 Status: Anggota 1.132 Posting Sekarang saya memiliki perkiraan tren yang paling mungkin terjadi. Penting untuk diingat bahwa kemungkinan tidak ada kepastian bahwa saya dapat menggunakan informasi ini untuk menentukan apakah EURUSD paling mungkin naik atau turun. Baiklah saya mendengarmu, saya juga bisa melihat grafiknya dan melihat apakah itu meningkat atau turun :-). Kamu benar. Tapi gagasan yang saya miliki adalah mengulanginya dengan masing-masing jurusan, tidak hanya untuk mengetahui apakah mereka naik atau turun tapi seberapa banyak mereka naik atau turun. Jika GBPUSD turun maka berarti USD lebih kuat dari Pound. Jika EURUSD turun juga EUR lebih lemah dari USD juga. Tapi yang mana dari GBP atau EUR adalah yang terlemah? Tidak dapat hanya menggunakan nilai pip dari tren karena nilai dari isnt pip sama untuk semua pasangan. Untuk itulah saya menggunakan persentase variasi. Dengan membagi selisih harga dengan harga, Anda mendapatkan nilai unit-less. Dengan cara ini saya menyingkirkan unitcale dan saya bisa membandingkan EURNZD dan USDJPY secara langsung. Karena EURGBP adalah (EURUSD) (GBPUSD) itu tidak perlu untuk menyaring semua pasangan. Perkiraan harga dan perkiraan tren jurusan cukup untuk linearize dengan akurasi yang cukup baik. Jika Anda menemukan GBP lebih lemah dari EUR daripada Anda dapat memesan tiga mata uang: GBP lt EUR lt USD. Masuk akal untuk mencari entri yang bagus pada GBPUSD karena di mana kita memiliki kesempatan bagus untuk mengikuti tren. Sekarang untuk setiap pasangan saya memesan mata uang pair-wise, lebih kuat-lebih lemah. Masing-masing mata uang dihargai skor setiap kali lebih kuat dari yang lain. Skor ini adalah pertumbuhan persentase yang paling rendah. Pada akhirnya setiap mata uang memiliki skor dan daftar mata uang lebih kuat dari itu. Saya bisa mengatur ini dalam sebuah grafik. Hal ini seharusnya mewakili perkiraan arus uang. Dont meminta saya untuk indi kustom karena saya tidak bisa program MQL. Jika Anda tertarik untuk mengkodekan indi berdasarkan gagasan ini, saya dapat membantu Anda jika waktu mengizinkan. Attached Image (klik untuk memperbesar) Pertanyaan terbuka: jika ada siklus dalam grafik, apakah masuk akal untuk perdagangan keranjang mata uang yang diliputi dalam cincin yang sangat menarik, akan melihat tautan yang Anda poskan, saat ini saya menggunakan perubahan nilai untuk Bias dan memegang perdagangan dan add ons, saya tidak menemukan apapun yang mendekati informasi yang saya dapatkan dari pasangan ini. Meskipun saya melihat perubahan nilai pada nilai pip dan keseluruhan persentase. havnt cukup mendapatkannya sempurna secara luar biasa namun masih dalam proses. Anda menyebutkan perdagangan dalam keranjang, ini bisa sangat bermanfaat. Contoh bagus dari jenis perdagangan ini adalah hari ini, saya terutama perdagangan kabel yang seperti semua pasang terkait didorong turun. Pasangan terdepan dalam perubahan hari ini adalah nilai cable. its 60 ditambah pips sementara penggandengan doller lainnya tidak bergerak. Pasangan yen juga terhenti tapi pada titik ini tidak ada tanda arah perubahan. Kekuatan kabel adalah petunjuknya. Saya menempatkan perdagangan dengan pasangan 4 yen, doller chf, doller cad Dan euro. termasuk kabel awal saya cukup lama sampai mendekati 400 pips. Korelasi tersebut dipecat banyak di forum ini karena tidak terpahami. Dengan cara yang telah Anda jelaskan dan teliti, ini menunjukkan bagaimana korelasi yang ada berkaitan dengan hubungan di sana, diimbangi dengan nilai pip dan perubahan kondisi di dalam diri individu. Fundamentals. but siklus tersebut ada dan dapat digunakan Tampaknya mata uang bisa kuat baik karena menerima banyak dari beberapa mata uang lain atau karena menerima dari semua yang lain. Biasanya 2 kondisi cocok. Mana yang terkuat USD dengan nilai terbesar atau EUR yang menerima dari yang lainnya (nilainya adalah jumlah dari kecenderungan lereng) Perhatikan juga ada siklus JPY-gtAUD-gtUSD. Tidak keserakahan Tidak takut. Hanya matematika Bergabung Desember 2010 Status: Foook Bollinger-dr. Kegel tahu 9,292 Posting Sekarang saya memiliki perkiraan kecenderungan yang paling mungkin terjadi. Penting untuk diingat bahwa ini adalah kemungkinan bukan kepastian. Pada akhirnya setiap mata uang memiliki skor dan daftar mata uang lebih kuat dari itu. Saya bisa mengatur ini dalam sebuah grafik. Hal ini seharusnya mewakili perkiraan arus uang. Dont meminta saya untuk indi kustom karena saya tidak bisa program MQL. Jika Anda tertarik untuk mengkodekan indi berdasarkan gagasan ini, saya dapat membantu Anda jika waktu mengizinkan. Saya melakukan sesuatu yang serupa. Saya bermain dengan indeks. 7 mata uang 21 pasang mata uang. Saya menandai mereka dengan beberapa pengakuan statistik sekali sehari. Memberikan setiap pasangan mata uang jumlah sekuens (kuota dayquot1 dan quotdown dayquot 0). Itu bisa disajikan sebagai aliran uang. Tapi sulit untuk mengatakannya. Pasti memiliki beberapa kelemahan. Pasti lebih mudah untuk berdagang tapi kita perlu disiplin saat berada dalam tren dan saat kita mengalami koreksi. Hal yang sulit. Seperti yang saya lihat, ini menyajikan saya yang merupakan mata uang terpanas di luar sana. Berarti dengan cara yang negatif dan positif. Top 2 in dan - Lower 2. Masalah dengan sistem ini selalu merupakan jeda waktu dari perpindahan ke koreksi, kemudian ke tahap koreksi yang lebih dalam dan akhirnya presentasi dari sebuah tren baru. Sulit memprogram ini. Itulah mengapa sangat penting bahwa seseorang pasti mencoba untuk mengetahuinya setiap hari apa yang terjadi. Saya menggunakan 4 kecepatan indeks yang berbeda. Kecenderungan yang kuat pasti memberi saya presentasi tentang arah arus uang (Gambar 1). Saya mematuhinya dan saya mencoba memainkan drama terarah ini. Beberapa minggu terakhir kami sangat menyukai GBP dan EUR, sementara kami mencoba menyingkirkan CAD dan JPY. Hal-hal yang cukup sederhana, tapi jika Anda tidak berdagang grafik mingguan bulanan dan seseorang tidak menggunakan pemberhentian yang lebih tinggi dari 300 pippers, masih merupakan tugas mudah saat memasuki dan bagaimana memanggil koreksi akhir. Diagram Tren Kecepatan (Gambar 2) adalah tempat orang bisa menemukan beberapa bukti di mana permainan akan berakhir. Setidaknya tersangka apa yang akan terjadi dalam sebuah koreksi. Hal yang sangat sulit dilakukan karena volatilitas pada ekstrem ini akan semakin tinggi. Terutama memudar pergerakan tren awal yang merupakan tren candra sehari-hari yang sangat kuat. Currency Pair (Gambar 3) chart melihat mata uang GBP sebagai salah satu yang terkuat dan AUD salah satu yang terlemah. Pada bulan lalu setelah beberapa minggu yang kuat dengan tingkat yang lebih tinggi, kita bisa melihat beberapa jeda dalam kenaikan. Itu juga terlihat di daily chart, dengan mudah. Tapi seperti yang terlihat pada grafik, kita dapat melihat bahwa sudah pada tanggal 6 desember seseorang dapat melihat bahwa kita akan melakukan koreksi beberapa hari kemudian. Mengapa indeks AUDL (long) dan AUD (short) melintas pada tanggal 4 desember, Masih di zona negatif. Sama berlaku untuk kedua indeks GBP. Mereka diliputi kelemahan pada tanggal 6 desember sehingga kami memiliki saran kuat untuk koreksi yang lebih dalam. Setidaknya satu harus sekarang sangat hati-hati tentang membeli dips, pasti satu harus dalam beberapa hari terakhir menyingkirkan posisi satu diadakan hari sebelumnya. Kita bisa dengan mudah berpindah HH setiap hari, tapi harus dibatasi. Sekarang saya sampai pada pertanyaan saya. Apakah Anda masih mengerjakan masalah ini Dapatkah Anda membagikan temuan umum Anda mengenai indeks perdagangan. Siklus Apakah Anda memiliki beberapa hasil dalam menemukan faktor yang menjanjikan terhadap probabilitas tepi terhadap keinginan Anda terkait dengan quotonly retracementquot. Tampaknya mata uang bisa kuat baik karena menerima banyak dari beberapa mata uang lain atau karena ia menerima dari semua yang lain. Biasanya 2 kondisi cocok. Mana yang terkuat USD dengan nilai terbesar atau EUR yang menerima dari yang lainnya (nilainya adalah jumlah dari kecenderungan lereng) Perhatikan juga ada siklus JPY-gtAUD-gtUSD. Bergabung Agustus 2011 Status: Member 1.132 Posting Saya tidak menyelidiki siklusnya. Saya menemukan ini bisa menjadi perantara bagi pedagang basket. Keterlambatan adalah pembunuh dengan indikator ini. Sering kali demikian. Bila menemukan pasangan sangat tren maka langkah tersebut sudah dilakukan. Tapi memudar langkah ini sangat mematikan. Jadi Anda perlu menunggu retracement. Pergi multi-kerangka waktu adalah apa yang saya temukan langkah logis berikutnya. Anda melakukan ini juga. Misalnya AN saat ini berada dalam daftar bearish utama saya setiap hari. Tentu saja tidak ada yang membutuhkan filter Kalman untuk melihat AN bearish pada daily. Tapi ternyata bullish pada H4. Saya akan menerjemahkan ini dengan: waktu agar beruang mengambil keuntungan. Hal ini juga bullish pada H1. Ketika menjadi bearish pada H1 saya akan mencoba untuk menemukan kesempatan teknis untuk melawan H4 dalam rangka untuk memasukkan ayunan berikutnya pada D1. Tentu saja saya akan terlambat pada H1 dan tentunya terlalu dini pada H4. Tapi lebih baik dari pada 300 pip SL di D1 mengingat bahwa saya tidak tahu apakah langkah ini bukan leg pertama pembalikan. Sayangnya sangat sulit untuk memperkirakan secara obyektif keabsahan pendekatan ini untuk memperkirakan kekuatan arus uang yang mengalir. Seperti halnya indikator apapun Anda tidak bisa memperkirakan kekuatannya di luar ruang lingkup sistem perdagangan yang menggunakannya. Jika hasilnya buruk maka itu karena indi, dari sistem, trader gagal dalam menggunakan sistemnya. Jika hasilnya bagus anda tidak tahu apakah itu karena indi adalah alat yang bagus atau jika anda baru beruntung Dalam kondisi pasar yang menguntungkan untuk sistem selama periode pengujian. Gambar yang dilampirkan (klik untuk memperbesar) Jika hasilnya bagus, Anda tidak tahu apakah itu karena indi adalah alat yang bagus atau jika Anda hanya beruntung berada dalam kondisi pasar yang menguntungkan untuk sistem selama masa pengujian. Ini benar. Im pengujian ini dari 13 Agustus dan Im mendapatkan hasil yang sangat baik. Gembira. Tapi tetap tidak bisa melihat apakah ini benar-benar menguntungkan empat bulan terakhir atau ini benar-benar bisa bekerja untuk waktu yang lama. Yang saya yakini, itu dengan penyaringan masuk dan menemukan kontrol manajemen yang baik terhadap posisi terbuka. Semua itu bisa memberikan beberapa kurva imbal hasil yang relatif baik. Akan melalui kerja statistik dimana saya terutama berkonsentrasi pada kemenangan oleh EA6 oleh setiap peraturan. Menemukan R optimum R yang terbaik tanpa penyaringan tambahan. Setelah itu, saya akan mencoba untuk menemukan bagian yang dicap di atas sana. Saya di atm tahap keempat, dan saya pikir sudah menemukan beberapa setting yang sangat menarik, yang positif melalui rangkaian pengujian ini. Aku membunuh banyak biji yang buruk, tapi hanya sedikit yang tersisa dan aku masih mempersempitnya. Saya cant backtest sistem ini karena dibutuhkan seluruh pasar sekaligus. Saya mencoba melakukannya di excel tapi akan memakan banyak waktu. Im workaholic, tapi itu akan memakan waktu berbulan-bulan untuk menetapkan, lalu berbulan-bulan. Dll Saya membangun pigabi yang berperilaku baik .. Saya heran jika Anda pernah memikirkan penggunaan pengukuran KF Anda sebagai bagian dari masukan untuk sistem pembelajaran mesin untuk mendapatkan sinyal perdagangan Beberapa sistem yang saya gunakan memanfaatkan pengukuran kekuatan dan kekuatan mata uang yang serupa. Kemampuan peramalan yang layak Saya biasanya melakukan pembelajaran mesin dengan menggunakan R atau beberapa perpustakaan pembelajaran berbasis mesin C (seperti wafel atau hiu). Saya melihat bahwa Anda berpotensi membangun sebuah sistem di sini di mana KF bertindak sebagai masukan dan Anda bisa mendapatkan prediksi evolusi tren untuk sekeranjang mata uang. Idenya adalah untuk memilih sekeranjang tiga pairsquot truncual dengan memasangkan tiga terkuat dan tiga mata uang terlemah. Pasangan ini dibuat dengan menjaga korelasi mereka. Dengan menggunakan metode ini, saya mendapatkan bobot untuk diterapkan ke MM: mereka adalah tiga pasang dan persentase pada tangkapan layar. Pasangan yang terdiri dari dua mata uang yang tersisa mungkin mulai dan mungkin harus diberikan pada sistem berbasis pengembalian rata-rata. Tentang penggunaan KF untuk memperkirakan tren pasar yang saya buat dengan menggunakan diagram batang jarak jauh. Sejauh ini mengklasifikasikan 9 tren pasar: sangat naik, sangat naik, naik, sedikit naik, rata. Sangat turun Mereka diberi kode warna. Dari sini saya membagi data untuk setiap kelas untuk mendapatkan probabilitas jarak harga dari mean yang diberikan kelas: Attached Image (klik untuk memperbesar) Hasilnya berjalan dengan baik dan saya dapat memperbaiki estimasi mean. Thats the green line dan bandsenveloppes biru dan merah Attached Image (klik untuk memperbesar) Masalah saya sekarang adalah menggunakannya untuk mengupdate exposure dari sistem. Disini saya benar-benar diblokir untuk saat ini. Idenya adalah untuk memilih sekeranjang tiga pairsquot truncual dengan memasangkan tiga terkuat dan tiga mata uang terlemah. Pasangan ini dibuat dengan menjaga korelasi mereka. Dengan menggunakan metode ini, saya mendapatkan bobot untuk diterapkan ke MM: mereka adalah tiga pasang dan persentase pada tangkapan layar. Namun jika saya mengerti dengan benar apa yang Anda lakukan dengan ini sepertinya adalah untuk mendapatkan perkiraan keadaan pasar saat ini yang sedang tren, ini mungkin tidak berguna karena Anda tertarik pada masa depan dan tidak dalam keadaan yang telah berkembang sampai sekarang. (Apa gunanya mengetahui bahwa pasar sedang tren jika ketika Anda memasuki perdagangan itu akan berhenti). Saya bertanya-tanya apakah Anda telah mencoba menggunakan metode pembelajaran mesin - menggunakan nilai KF Anda sebagai masukan - untuk memperkirakan keadaan pasar tren masa depan. Apa yang paling berguna tidak akan menjadi ukuran dari tren pasar saat ini, namun perkiraan probabilitas dari apa yang akan terjadi di pasar tren masa depan. Saya ingin tahu apakah pengukuran berbasis KF Anda memiliki kemampuan prediksi mengenai tren pasar di masa depan. Karena Anda mengevaluasi serangkaian interaksi pasar yang kompleks, tampaknya masuk akal bahwa ini mungkin terjadi. Menurut Anda apa yang saya akui jika saya salah memahami sesuatu, mungkin Anda sudah mendapatkan prediksi di masa depan dan saya agak kehilangan informasi ini. Bergabung Agustus 2011 Status: Anggota 1.132 Posting Saya tidak pernah mencoba untuk memprediksi keadaan di luar ekstrapolasi polinomial yang sama sekali tidak memiliki kekuatan prediktif. Trending state masa depan akan sama dengan yang sekarang ditambah drift acak: varians yang meningkat secara linear. Trennya adalah garis merah di bawah grafik. Yang biru adalah tingkat perubahan tren. Kedua osciallte di sekitar mean mereka (0). Perhatikan bahwa unit skala adalah satu standar deviasi nilai mereka sendiri (orange2 sigma). Trennya berarti reverting namun saya tidak pernah mencoba menyesuaikan proses O-U. BAIK. Satu baris lagi di TODO :-) Tidak ada keserakahan. Tidak takut. Hanya matematika Anggota harus memiliki minimal 0 voucher untuk diposkan di thread ini. 0 trader melihat sekarang Forex Factoryreg adalah merek dagang terdaftar. Kalman Filter-Based Pairs Trading Strategy Di QSTrader Sebelumnya di QuantStart kami telah mempertimbangkan dasar-dasar matematika dari State Space Models dan Kalman Filters. Serta penerapan perpustakaan pykalman ke sepasang ETF untuk secara dinamis menyesuaikan rasio lindung nilai sebagai dasar strategi trading reverting rata-rata. Pada artikel ini kita akan membahas strategi trading yang awalnya dilakukan oleh Ernest Chan (2012) 1 dan diuji oleh Aidan OMahony di Quantopian 2. Kami akan menggunakan kerangka backtesting open source QSTrader berbasis Python untuk menerapkan strategi ini. QSTrader akan melakukan pengangkatan posisi pelacakan, penanganan portofolio dan penyerapan data yang ketat, sementara kami hanya berkonsentrasi pada kode yang menghasilkan sinyal perdagangan. Strategi Perdagangan Strategi perdagangan pasangan diterapkan pada beberapa Exchange Traded Funds (ETF) yang melacak kinerja berbagai periode obligasi Treasury AS. Mereka adalah: Tujuannya adalah untuk membangun strategi pengembalian rata-rata dari pasangan ETF ini. Penyebaran sintetis antara TLT dan IEI adalah deret waktunya bahwa kita sebenarnya tertarik pada kerinduan atau korslet. Filter Kalman digunakan untuk secara dinamis melacak rasio lindung nilai di antara keduanya agar spread stationer tetap (dan karenanya berarti reverting). Untuk membuat aturan perdagangan, penting untuk menentukan kapan spread telah bergerak terlalu jauh dari nilai yang diharapkan. Bagaimana kita menentukan sejauh mana kita bisa menggunakan seperangkat nilai absolut tetap, tapi ini harus ditentukan secara empiris. Ini akan memperkenalkan parameter bebas lainnya ke dalam sistem yang memerlukan optimasi (dan tambahan bahaya overfitting). Salah satu pendekatan tanpa parameter untuk menciptakan nilai-nilai ini adalah mempertimbangkan kelipatan dari penyimpangan standar penyebaran dan menggunakan ini sebagai batas. Untuk kesederhanaan kita bisa mengatur koefisien multipel menjadi sama dengan satu. Oleh karena itu kita bisa pergi lama menyebar jika kesalahan perkiraan turun di bawah standar deviasi negatif dari penyebaran. Masing-masing kita bisa menjelaskan penyebarannya jika perkiraan kesalahan melebihi standar deviasi positif dari penyebaran tersebut. Aturan keluar hanya kebalikan dari peraturan masuk. Rasio lindung nilai dinamis diwakili oleh satu komponen vektor keadaan tersembunyi pada waktu t, yaitu, yang akan kita tunjukkan sebagai theta0t. Ini adalah nilai kemiringan beta yang sudah dikenal dari regresi linier. Kerinduan penyebaran disini berarti pembelian (rindu) satuan N TLT dan jual (korslet) lfloor, dimana lantai adalah lantai yang mewakili bilangan bulat tertinggi kurang dari x. Yang terakhir ini diperlukan karena kita harus bertransaksi di seluruh unit ETF. Korsletan menyebar adalah kebalikan dari ini. N mengontrol ukuran keseluruhan posisi. Et mewakili kesalahan perkiraan atau kesalahan residual dari prediksi pada waktu t, sedangkan Qt mewakili varians dari prediksi ini pada waktu t. Untuk kelengkapan, aturan ditentukan di sini: et lt - sqrt - Long spread: Pergi lama N saham TLT dan pergi unit lfloor pendek IEI et ge-sqrt - Keluar dari panjang: Tutup semua posisi panjang TLT dan IEI et gt sqrt - Turunkan spreadnya: Belilah N saham TLT dan pergi ke unit lfloor lama IEI et le sqrt - Keluar pendek: Tutup semua posisi pendek TLT dan IEI Peran filter Kalman adalah membantu kami menghitungnya, begitu juga et dan Qt. Thetat mewakili vektor nilai intersep dan slope pada regresi linier antara TLT dan IEI pada waktu t. Diperkirakan oleh filter Kalman. Perkiraan errorresidual et yt - hat t adalah perbedaan antara perkiraan nilai TLT hari ini dan perkiraan filter Kalman TLT hari ini. Qt adalah varians dari prediksi dan karenanya sqrt adalah standar deviasi dari prediksi. Implementasi strategi ini meliputi langkah-langkah berikut: Menerima pasar harian bar OHLCV untuk TLT dan IEI Gunakan filter Kalman rekursif online untuk memperkirakan harga TLT hari ini berdasarkan pengamatan IEI kemarin. Ambillah perbedaan antara estimasi Kalman tentang TLT dan Nilai sebenarnya, sering disebut forecast error atau residual error. Yang merupakan ukuran seberapa besar penyebaran TLT dan IEI bergerak menjauh dari nilai yang diharapkan. Long spread ketika pergerakan tersebut jauh dari nilai yang diharapkan dan sejatinya short spread saat pergerakan positif jauh dari nilai yang diharapkan. Keluar dari panjang Dan posisi pendek saat seri beralih ke nilai yang diharapkan. Untuk menjalankan strategi ini, perlu ada data harga OHLCV untuk periode yang dicakup oleh backtest ini. Secara khusus perlu untuk mendownload yang berikut ini: TLT - Untuk periode 3 Agustus 2009 sampai 1 Agustus 2016 (link di sini) IEI Untuk periode 3 Agustus 2009 sampai 1 Agustus 2016 (link di sini). Data ini perlu ditempatkan di direktori yang ditentukan oleh file pengaturan QSTrader jika Anda ingin mereplikasi hasilnya. Implementasi QSTrader Python Karena QSTrader menangani pelacakan posisi, manajemen portofolio, konsumsi data dan manajemen pesanan, satu-satunya kode yang perlu kita tulis melibatkan objek Strategi itu sendiri. Strategi berkomunikasi dengan PortfolioHandler melalui antrian acara, memanfaatkan objek SignalEvent untuk melakukannya. Selain itu kita harus mengimpor basis strategi abstrak kelas, AbstractStrategy. Perhatikan bahwa dalam versi alfa QSTrader saat ini kita juga harus mengimpor kelas PriceParser. Ini digunakan untuk melipatgandakan semua harga pada input oleh beberapa besar (108) dan melakukan perhitungan bilangan bulat saat posisi pelacakan. Hal ini untuk menghindari pembalikan floating point yang dapat terakumulasi selama periode backtest yang panjang. Kita harus membagi semua harga dengan PriceParser. PRICEMULTIPLIER untuk mendapatkan nilai yang benar: Langkah selanjutnya adalah menciptakan kelas KalmanPairsTradingStrategy. Tugas kelas ini adalah menentukan kapan membuat objek SignalEvent berdasarkan BarEvent yang diterima dari bar OHLCV harian TLT dan IEI dari Yahoo Finance. Ada banyak cara untuk mengatur kelas ini. Ive memilih untuk hardcode semua parameter di kelas untuk kejelasan penjelasan. Terutama Ive tetap nilai delta10 dan vt10. Mereka mewakili kebisingan sistem dan perbedaan pengukuran kebisingan pada model Kalman Filter. Ini juga bisa diimplementasikan sebagai argumen kata kunci di konstruktor init kelas. Pendekatan semacam itu akan memungkinkan pengoptimalan parameter langsung. Tugas pertama adalah mengatur waktu dan menginvestasikan anggota agar sama dengan None. Karena akan diperbarui karena data pasar diterima dan sinyal perdagangan dihasilkan. Harga terbaru adalah dua array dari harga TLT dan IEI saat ini, yang digunakan untuk kenyamanan melalui kelas. Kumpulan parameter berikutnya semuanya berhubungan dengan Filter Kalman dan dijelaskan secara mendalam di dua artikel sebelumnya di sini dan di sini. Set terakhir parameter termasuk hari. Digunakan untuk melacak berapa hari telah berlalu serta qty dan curhedgeqty. Digunakan untuk melacak jumlah absolut ETF untuk membeli baik untuk sisi panjang dan pendek. Saya telah menetapkan ini menjadi 2.000 unit pada ekuitas akun sebesar 100.000 USD. Metode berikut menetapkan waktu dan harga sebenarnya adalah metode penolong yang digunakan untuk memastikan bahwa Filter Kalman memiliki semua informasi harga yang benar yang tersedia pada titik yang tepat. Hal ini diperlukan karena dalam sistem backtest berbasis event seperti informasi pasar QSTrader tiba secara berurutan. Kita mungkin berada dalam situasi di hari K dimana kita menerima harga untuk IEI, tapi bukan TFT. Makanya kita harus menunggu sampai kedua event pasar TFT dan IEI telah tiba dari backtest loop, melalui event queue. Dalam live trading hal ini tidak menjadi masalah karena mereka akan tiba hampir seketika dibandingkan dengan periode perdagangan beberapa hari. Namun, dalam backtest berbasis aktivitas, kita harus menunggu kedua harga tiba sebelum menghitung update filter Kalman yang baru. Kode dasarnya memeriksa apakah acara berikutnya adalah untuk hari ini. Jika ya, maka harga yang benar ditambahkan ke daftar harga terbaru TLT dan IEI. Jika itu adalah hari baru maka harga terbaru di-reset dan harga yang benar sekali lagi ditambahkan. Metode pembukuan jenis ini kemungkinan akan diserap ke dalam basis kode QSTrader di masa depan, mengurangi kebutuhan untuk menulis kode boilerplate, namun untuk saat ini harus merupakan bagian dari strategi itu sendiri. Inti dari strategi ini dilakukan dalam metode calculatesignals. Pertama, kita mengatur waktu dan harga yang benar (seperti yang dijelaskan di atas). Kemudian kami memeriksa apakah kami memiliki kedua harga untuk TLT dan IEI, pada saat mana kami dapat mempertimbangkan sinyal perdagangan baru. Y ditetapkan sama dengan harga terbaru untuk IEI, sedangkan F adalah matriks observasi yang berisi harga terbaru untuk TLT, dan juga placeholder kesatuan untuk mewakili intersep dalam regresi linier. Filter Kalman kemudian diperbarui dengan harga terbaru ini. Akhirnya kita menghitung kesalahan perkiraan et dan deviasi standar prediksi, sqrt. Mari kita jalankan kode ini selangkah demi selangkah, karena tampilannya sedikit rumit. Tugas pertama adalah membentuk nilai skalar y dan matriks observasi F. yang berisi harga IEI dan dan TLT masing-masing. Kami menghitung matriks ragam-kovariansi R atau mengaturnya ke matriks nol jika belum diinisialisasi. Selanjutnya kita menghitung prediksi baru dari pengamatan yhat dan juga kesalahan perkiraan et. Kami kemudian menghitung varians dari prediksi observasi Qt serta standar deviasi sqrtQt. Kami menggunakan aturan update yang diturunkan disini untuk mendapatkan distribusi posterior theta theta. Yang berisi ratioslope lindung nilai antara dua harga: Akhirnya kita menghasilkan sinyal trading berdasarkan nilai et dan sqrt. Untuk melakukan ini, kita perlu memeriksa status investasinya - baik panjang, pendek atau None. Perhatikan bagaimana kita perlu menyesuaikan kuantitas lindung nilai curhedgeqty saat kita pergi panjang atau pendek karena kemiringannya terus menyesuaikan waktu: Ini adalah semua kode yang diperlukan untuk objek Strategi. Kita juga perlu membuat file backtest untuk mengenkapsulasi semua logika trading dan pilihan kelas kita. Versi khusus sangat mirip dengan yang digunakan di direktori contoh dan menggantikan ekuitas 500.000 USD dengan 100.000 USD. Ini juga mengubah FixedPositionSizer menjadi NaivePositionSizer. Yang terakhir ini digunakan untuk secara naif menerima saran jumlah mutlak unit ETF untuk diperdagangkan sebagaimana ditentukan dalam kelas Manajemen KalmanPairsTradingStrategi. Dalam lingkungan produksi, perlu menyesuaikan hal ini tergantung pada tujuan pengelolaan risiko portofolio. Berikut adalah kode lengkap untuk kalmanqstraderbacktest. py: Selama QSTrader terinstal dengan benar dan data yang telah diunduh dari Yahoo Finance, kode tersebut dapat dijalankan melalui perintah berikut di terminal: Terimakasih atas banyak pengembang relawan, terutama Ryankennedyio dan femtotrader the code is well-optimised for OHLCV bar data and carries out the backtesting rapidly. Strategy Results One of the latest features to be added to QSTrader is that of the tearsheet developed primarily by nwillemse. This feature is still in an early stage of development but will be demonstrated here. A tearsheet is primarily used within institutional settings as a one pager description of a trading strategy. The TearsheetStatistics class in the QSTrader codebase replicates many of the statistics found in a typical strategy performance report. The top two graphs represent the equity curve and drawdown percentage, respectively. Beneath this are the monthly and yearly performance panels. Finally the equity curve, trade-level and time-based statistics are presented: Click the image for a larger view. The equity curve begins relatively flat for the first year of the strategy but rapidly escalates during 2011. During 2012 the strategy becomes significantly more volatile remaining underwater until 2015 and reaching a maximum daily drawdown percentage of 15.79. The performance gradually increases from the maximum drawdown in late 2013 through to 2016. The strategy has a CAGR of 8.73 with a Sharpe Ratio of 0.75. It also has a long maximum drawdown duration of 777 days - over two years Note that this strategy is carried out gross of transaction costs so the true performance would likely be worse. Next Steps There is a lot of research work necessary to turn this into a profitable strategy that we would deploy in a live setting. Potential avenues of research include: Parameter Optimisation - Varying the parameters of the Kalman Filter via cross-validation grid search or some form of machine learning optimisation. However, this introduces the distinct possibility of overfitting to historical data. Asset Selection - Choosing additional, or alternative, pairs of ETFs would help to add diversification to the portfolio, but increases the complexity of the strategy as well as the number of trades (and thus transaction costs). In future articles we will consider how to carry out these procedures for various trading strategies. References 1 Chan, E. P. (2013) Algorithmic Trading: Winning Strategies and their Rationale . Wiley 2 OMahony, A. (2014) Ernie Chans EWAEWC pair trade with Kalman filter . quantopianpostsernie-chans-ewa-slash-ewc-pair-trade-with-kalman-filter Just Getting Started with Quantitative TradingKalman Filter 8211 S038P 500 and Dow Jones Linear Regression Author: Peter C. L. Lin, Ph. D. is an Industry Professor of Financial Engineering at Stevens Institute of Technology. Linear Regression Let8217s get some Kalman filter basics and start playing around with it. There is a long history about least-squares filtering. Like a linear regression model, we can fit the data with a linear function that minimizes the mean-square error. Python pandas can easily do the job: To get some visual of the regression, First observation you might have is: there are two clusters. The light grey indicate the cluster for the SPY-DIA dots in the years from 2000 to 2008 the light purple dots indicate the cluster for years from 2008 to 2015. So the regressed line parameters should not be constant. KEMBALI. Kalman in 60s published his groundbreaking paper to accommodate the time-varying linear models. Also, the framework he proposed can handle noisy measurements (prices) which might distort the fitting result. Nowaday Kalman filter becomes a popular tool for signal processing. To start, let8217s introduce the notation. Let be a sequence of the true intercepts and slopes of the SPY-DIA regression and assume are the prior knowledge associated with and . It is what we believe the time series of and distribution should behave at time following linear transformation. So, from time to time we have We assume follows a normal distribution. If you believe the parameters should be constant over time, then we simply assume is an identity matrix and , which is mean, variance. Now, if and represent the prices at time , we plug and back to the price relationship: where represents the measurement error of the linear regression (becasue the relatinship is never perfactly linear and subjected to many room of interpretation). We also assume follows the normal distribution. Now, let8217s try if we can recreate the oridinary linear regression result. We will use pykalman module. What8217s Next In light of the increasing need for more complicated models to capture prices dynamics, intuition on advanced development is connected with simple cases. Today we set foot in Kalman filter and successfully replicate an ordinary least-squares regression result. Even with noisy price data, Kalman filter has done its first task by smoothing out the signals. Next time we shall start some fundamental pairs trading with Kalman filter. We will consider the nature of streaming financial data feed and build a workable long-short strategy on SampP 500 and Dow Jones ETFs. We will show how Kalman filter generates divergent signals, and how additional latent factors can improve the performance. DEMO IPython notebook Kalman Filter 8211 SampP 500 and Dow Jones Linear Regression Dr. Lin received his MS in Computer Science from Columbia University and his PhD in Applied Mathematics and Statistics from Johns Hopkins University. He is currently a managing director at Gamma Paradigm Capital. Previously, he was a quantitative analyst for fixed-income quantitative portfolio strategies at Ryan Labs Asset Management, a New York-based investment advisor with over 4 Billion assets under management. His research interests include algorithmic trading, interest-rate term-structure modeling, and quantitative portfolio management.
No comments:
Post a Comment