Saturday, 8 July 2017

Moving Average Trading System Backtesting


Memindahkan Strategi Crossover Rata-rata Pada halaman ini Id ingin membawa Anda melalui perbandingan beberapa sistem crossover rata-rata bergerak. Satu menggunakan dua rata-rata bergerak sederhana (smas) dan yang lainnya menggunakan tiga smas. Pernah berpikir untuk menggunakan sistem rata-rata bergerak ganda untuk diperdagangkan Jika Anda mempertimbangkan untuk menggunakan crossover rata-rata bergerak ganda ke transaksi masuk dan keluar, Anda mungkin mempertimbangkan untuk menguji sistem triple MA juga. Membandingkan mereka berdampingan pada saham yang berbeda atau instrumen perdagangan lainnya serta periode waktu atau jangka waktu yang berbeda. Uji periode rata-rata bergerak yang berbeda, namun berhati-hatilah agar tidak mengandalkan hasil optimal atau kurva. Tapi karena beberapa pengunjung saya tidak tahu apa ini, mari kita membahas beberapa hal mendasar terlebih dahulu. WHATS A MOVING AVERAGE CROSSOVER Gambar di sebelah kanan adalah contoh crossover rata-rata bergerak ganda. Yang akan memulai sinyal beli (crossover bullish). Rata-rata pergerakan yang lebih cepat (8 sma - biru) melintasi rata - rata yang lebih lambat (13 sma - kuning). Perhatikan bahwa sinyal tidak dikonfirmasi sampai penutupan bar. Ini berarti entri sebenarnya (dalam live trading) akan berada di suatu tempat di bar berikutnya. Kemungkinan besar di dekat tempat terbuka bar itu. Jika Anda belum melakukan backtesting, sistem sederhana semacam ini mungkin akan menjadi ujian pertama yang harus Anda uji, karena memerlukan sedikit keahlian pemrograman. Bagaimanapun, jika Anda menuruni jalan ini, Anda akan menemukan bahwa harga pembukaan bar berikutnya setelah salib, adalah di mana perangkat lunak backtesting (tergantung pada setting) akan menempatkan perdagangan simulasi. Yang masuk akal, karena kalau sebenarnya Anda trading menggunakan software trading otomatis. Ini adalah perkiraan dekat dimana perdagangan Anda akan berlangsung. Dengan sistem stop reversal yang khas, entri panjang ini tidak akan keluar sampai biru, MA lebih cepat melintang di bawah MA yang kuning dan lambat. Crossover bearish MA ini tidak hanya keluar dari perdagangan, tapi juga memulai perdagangan singkat dengan arah yang berlawanan. Jadi, dengan dual moving average crossover system, trader selalu dalam trading, long atau short. Mari kita lihat contoh intraday selama satu hari. DUAL MOVING AVERAGE CROSSOVER Gunakan grafik 5 menit SPY dengan dua rata-rata bergerak sederhana untuk contoh pertama: Cepat (8 sma - hijau) dan Lambat (13 sma - kuning). Saya memilih hari ini, karena saya ingin menggambarkan apa yang sangat khas untuk strategi crossover rata-rata bergerak. Perdagangan panjang pertama setelah pukul 11:00 berjalan sangat baik dan benar-benar menarik arus mundur yang bagus. Jalan keluar sekitar pukul 12.45 WIB ini menguntungkan. Tapi, mau Id seperti yang anda amati adalah aksi harga berombak antara pukul 12:00 - 3:00. Di sinilah sistem MA ganda dapat benar-benar menggiling keuntungan Anda. MAs hanya whipsaw bolak-balik menyebabkan tiga kerugian berturut-turut, mungkin menguap keuntungan dari perdagangan pertama. Jika seseorang memperdagangkan metode ini pada hari ini, untungnya mereka akan melihat satu lagi perdagangan kemenangan yang layak pada pukul 2.30. Bagian yang bagus dari sistem ini ditampilkan pada perdagangan pertama dan perdagangan terakhir. Sementara moving average crossover gagal total selama aksi harga berombak, mereka bekerja sangat baik selama aksi harga tren. Jika Anda mendukung sistem stop and reverse sederhana ini, dan memeriksa yang menghasilkan keuntungan, kemungkinan besar Anda akan menemukan bahwa kemenangan kurang dari 50, namun pemenang rata-rata akan lebih besar daripada pecundang rata-rata. Itu karena sistem crossover rata-rata bergerak pada dasarnya adalah sistem perdagangan tren. Dan, sistem perdagangan tren hampir selalu memiliki karakteristik persentase kecil dari pemenang dan rasio ave. win yang baik terhadap ave. loss. Pada grafik di bawah L Long, S Short dan Ex Exit. TRIPLE MOVING AVERAGE CROSSOVER Sejauh ini diskusi berpusat di seputar sistem tipe stop reverse, dimana sinyal untuk keluar, juga menghasilkan perdagangan ke arah yang berlawanan. Tapi jika kita memperkenalkan rata-rata pergerakan ketiga ke sistem, bisa jadi ada periode netralitas. Dengan kata lain, tidak ada perdagangan yang terjadi - Anda secara tunai. Untuk contoh ini, akan menggunakan grafik 3 menit dan tiga simple moving averages: 4 sma, 10 sma dan 50 sma. Aturannya sangat sederhana. Jika garis lambat (50 sma) naik, dan jalur cepat (4 sma) melintasi garis tengah (10 sma), ada sinyal beli. Sinyal keluar datang saat garis cepat melintasi garis tengah. Aturannya berlawanan untuk entri pendek. Its mudah untuk melihat, bahwa sistem ini mirip dengan mengambil perdagangan dari tren kerangka waktu yang lebih tinggi. Sebuah alternatif untuk sistem ini, hanya akan mengambil entri lama, ketika rata-rata bergerak cepat dan menengah berada di atas sma yang lamban. Sadarilah bahwa ketika Anda berhadapan dengan tiga tingkat kebebasan (3 variabel), bukan dua seperti contoh di atas, Anda membuat sistem lebih kompleks dan karena itu menciptakan lebih banyak kombinasi yang mungkin untuk diuji. Tentu saja, backtesting software membuat ini sekejap, tapi ingat bahwa menambahkan filter dan kompleksitas tidak selalu membuat sistem yang lebih baik. Seringkali, sistem yang lebih sederhana bisa lebih kuat dalam pengujian. Contohnya adalah di bawah ini. Jika Anda tertarik untuk bergerak rata-rata, Anda mungkin juga ingin melihat halaman saya tentang bagaimana menggunakan moving averages sebagai trailing stop. Backtesting Moving Average Crossover dengan Python dengan panda Pada artikel sebelumnya di Research Backtesting Environments Dengan Python Dengan Pandas yang kami buat Sebuah lingkungan backtesting berbasis penelitian berorientasi objek dan mengujinya dengan strategi peramalan acak. Pada artikel ini kami akan menggunakan mesin yang kami perkenalkan untuk melakukan penelitian mengenai strategi aktual, yaitu Moving Average Crossover on AAPL. Strategi Crossover Average Crossover Teknik Moving Average Crossover adalah strategi momentum simplistik yang sangat terkenal. Hal ini sering dianggap sebagai contoh Hello World untuk perdagangan kuantitatif. Strategi yang digariskan di sini hanya panjang saja. Dua filter rata-rata bergerak sederhana yang terpisah dibuat, dengan berbagai periode waktu tunggu, dari rangkaian waktu tertentu. Sinyal untuk membeli aset terjadi ketika moving average moving average lebih pendek rata-rata bergerak rata-rata. Jika rata-rata yang lebih lama kemudian melebihi rata-rata yang lebih pendek, aset tersebut dijual kembali. Strategi ini berjalan dengan baik ketika deret waktu memasuki periode tren yang kuat dan kemudian perlahan membalikkan tren. Untuk contoh ini, saya telah memilih Apple, Inc. (AAPL) sebagai rangkaian waktu, dengan tampilan singkat 100 hari dan tampilan balik 400 hari yang panjang. Ini adalah contoh yang disediakan oleh zipline algorithmic trading library. Jadi jika kita ingin menerapkan backtester kita sendiri, kita perlu memastikan bahwa itu sesuai dengan hasil di zipline, sebagai sarana dasar untuk melakukan validasi. Implementasi Pastikan mengikuti tutorial sebelumnya disini. Yang menggambarkan bagaimana hirarki objek awal untuk backtester dibangun, jika kode di bawah ini tidak akan berhasil. Untuk implementasi khusus ini saya menggunakan library berikut: Implementasi macross. py membutuhkan backtest. py dari tutorial sebelumnya. Langkah pertama adalah mengimpor modul dan objek yang diperlukan: Seperti pada tutorial sebelumnya, kita akan mengelompokkan kelas dasar Strategi abstrak untuk menghasilkan MovingAverageCrossStrategy. Yang berisi semua rincian tentang bagaimana menghasilkan sinyal saat rata-rata bergerak AAPL saling silang. Objek membutuhkan shortwindow dan longwindow untuk beroperasi. Nilai telah ditetapkan ke default masing-masing 100 hari dan 400 hari, yang merupakan parameter yang sama yang digunakan pada contoh utama zipline. Rata-rata bergerak dibuat dengan menggunakan fungsi rollingmanan pandas pada harga penutupan barClose dari saham AAPL. Setelah rata-rata pergerakan individu telah dibangun, Seri sinyal dihasilkan dengan menetapkan kolom sebesar 1,0 bila rata-rata bergerak pendek lebih besar daripada rata-rata bergerak yang panjang, atau 0,0 sebaliknya. Dari posisi inilah pesanan bisa dihasilkan untuk mewakili sinyal trading. MarketOnClosePortfolio adalah subkelas dari Portofolio. Yang ditemukan di backtest. py. Hal ini hampir sama dengan implementasi yang dijelaskan di tutorial sebelumnya, dengan pengecualian bahwa perdagangan sekarang dilakukan secara Close-to-Close, bukan Open-to-Open. Untuk rincian tentang bagaimana objek Portofolio didefinisikan, lihat tutorial sebelumnya. Saya telah meninggalkan kode ini untuk kelengkapan dan menjaga agar tutorial ini tetap mandiri: Setelah kelas MovingAverageCrossStrategy dan MarketOnClosePortfolio telah ditetapkan, fungsi utama akan dipanggil untuk mengikat semua fungsi bersama-sama. Selain itu kinerja strategi akan diperiksa melalui sebidang kurva ekuitas. Objek pandas DataReader mendownload harga OHLCV dari saham AAPL untuk periode 1 Januari 1990 sampai 1 Januari 2002, pada saat mana sinyal DataFrame dibuat untuk menghasilkan sinyal lama. Selanjutnya portofolio dihasilkan dengan basis modal awal 100.000 USD dan imbal hasil dihitung pada kurva ekuitas. Langkah terakhir adalah menggunakan matplotlib untuk merencanakan plot dua gambar dari harga AAPL, yang dilapisi dengan rata-rata bergerak dan sinyal buysell, serta kurva ekuitas dengan sinyal buysell yang sama. Kode pemodelan diambil (dan dimodifikasi) dari contoh penerapan zipline. Output grafis dari kode tersebut adalah sebagai berikut. Saya menggunakan perintah paste IPython untuk memasukkan ini langsung ke konsol IPython saat berada di Ubuntu, sehingga output grafis tetap terlihat. The upticks merah muda mewakili pembelian saham, sedangkan downticks hitam mewakili menjual kembali: Seperti dapat dilihat strategi kehilangan uang selama periode, dengan lima perdagangan round-trip. Hal ini tidak mengherankan mengingat perilaku AAPL selama periode tersebut, yang pada tren sedikit menurun, diikuti oleh kenaikan yang signifikan yang dimulai pada tahun 1998. Periode lookback dari sinyal rata-rata bergerak agak besar dan ini berdampak pada keuntungan perdagangan akhir , Yang sebaliknya mungkin telah membuat strategi menguntungkan. Dalam artikel selanjutnya kita akan menciptakan cara yang lebih canggih untuk menganalisis kinerja, serta menggambarkan bagaimana mengoptimalkan periode lookback dari sinyal rata-rata bergerak individual. Baru Memulai dengan Quantitative TradingBackTesting Moving Averages Mengapa Moving Averages Sebagai trader atau investor, satu-satunya alasan untuk menginvestigasi moving averages adalah dengan mendapatkan pengetahuan untuk meningkatkan keuntungan. Seperti banyak indikator teknis lainnya, moving averages dimaksudkan untuk membantu kita secara obyektif memberi tahu status pasar pada waktu tertentu. Ini membantu kita melihat melalui emosi hari ini dan membuat keputusan rasional, yang menurut kita akan menghasilkan keuntungan lebih besar dan sedikit kerugian dalam jangka panjang. Moving averages (MAs) memperlancar deretan harga saham. MA paling sering digunakan untuk mengidentifikasi tren arah pasar, dan digolongkan sebagai indikator tren berikut. Ini tidak berarti bahwa MA hanya untuk investor jangka panjang 8211 pedagang jangka pendek juga menggunakannya. Moving averages dapat digunakan untuk menyaring saham untuk calon yang baik, peluang membeli sinyal, dan menawarkan sinyal jual. Mengapa Backtest 8211 A Story Tujuan backtesting adalah untuk mengetahui apakah moving averages benar-benar menghasilkan hasil yang lebih baik dan cara yang paling menjanjikan untuk menerapkan MA. Mari saya ceritakan sebuah cerita pendek. Sementara saya mengumpulkan hasilnya untuk salah satu isu BackTesting Report yang bergerak rata-rata, kebetulan saya mengunjungi seorang teman. Di rumahnya, saya menemukan beberapa bahan bacaan dari broker saham diskon yang diiklankan dengan baik. Di dalamnya ada artikel yang menasihati pelanggannya untuk menggunakan panjang rata-rata bergerak tertentu yang diterapkan dengan cara tertentu untuk mendapatkan hasil terbaik. Saya memiliki tes komprehensif di depan saya dan saya dapat memberitahu Anda bahwa metode broker tidak menghasilkan hasil terbaik walaupun mereka menyebutkan panjang MA yang berguna dengan cara lain. Hasil tes tangan saya yang menunjukkan bahwa cara broker menerapkan moving average memiliki tingkat kemenangan lebih buruk dari pada baseline saat menguji 7.147 saham selama 14 tahun data pasar saham. Jelas broker itu tidak menjalankan pengujian semacam itu. Ini sampai ke pelanggan 8211 kita 8211 untuk menjaga diri kita sendiri dan mencari tahu apa yang berhasil versus apa yang tidak. Cara Menghitung MA Saat backtesting moving averages, keputusan pertama adalah bagaimana cara menghitung moving average. Apakah Anda ingin rata-rata bergerak sederhana (SMA) Atau sesuatu yang dirancang untuk melacak harga lebih baik seperti moving average eksponensial (EMA) Anda mungkin mempertimbangkan eksperimen untuk membandingkan tingkat kemenangan dari dua rata-rata yang berbeda. Saya melakukan hal itu beberapa tahun yang lalu, dan sementara saya tidak memiliki hasil untuk dipublikasikan, saya merasa yakin bahwa hal itu tidak membuat perbedaan besar apakah saya memilih SMA atau EMA 8212 hanya memilih satu dan menggunakannya secara konsisten. Jadi untuk proyek ini, saya memilih untuk menggunakan rata-rata bergerak sederhana karena saya melihat mereka disebutkan dalam komentar paling sering. Untuk benar-benar melakukan perhitungan, saya mengandalkan fungsi built-in yang datang dengan TradeStation. (Pilihan mesin backtesting adalah keputusan lain yang cukup umum untuk ditulis di pos lain.) Cara Menggunakan MAs Selanjutnya, Anda perlu menentukan seberapa tepatnya Anda ingin menerapkan moving averages. Bagaimana Anda akan menafsirkan hubungan antara harga dan rata-rata bergerak Aturan apa yang akan Anda gunakan untuk memutuskan kapan harus membeli dan menjual? Anda harus membaca lama tentang saham sebelum menemukan referensi bullish ke perdagangan saham di atas rata-rata pergerakan 200 hari atau nilainya. Moving average 50 hari, atau bahkan MA 10 atau 20 hari. Atau saran untuk membeli saham saat mereka melewati moving average 50 hari atau 200 hari. Ini adalah aturan penting untuk diuji di mesin backtesting. Dan kemudian ada crossover rata-rata bergerak 8211 metode analisis teknis klasik. Itu membuat tiga cara berbeda menggunakan moving averages untuk diuji. Pergi lebih dalam, beberapa teks perdagangan berbicara tentang kemiringan rata-rata bergerak. Jika Anda kembali ke aljabar dan menganggap MA sebagai garis, untuk menemukan kemiringannya, Anda akan memilih dua titik di telepon dan menerapkan rumus biasa ((x2-x1) (y2-y1)). Ini memunculkan pertanyaan tentang seberapa jauh jaraknya untuk memilih dua poin yang dapat membuat perbedaan pada hasil. Sungguh, karena MA sedang digunakan untuk mengidentifikasi tren, kita hanya ingin tahu apakah itu miring ke atas atau ke bawah. Kemudian kita dapat menyederhanakan keseluruhan perhitungan dengan memperhatikan bahwa jika harga berada di atas rata-rata bergerak, maka harus ditarik rata-rata, dan harga di bawah MA menariknya ke bawah. Demikian alasan lain untuk menguji kemanjuran harga di atas rata-rata bergerak. Pengaturan Parameter Setelah Anda memutuskan bagaimana menggunakan MA, Anda perlu memilih beberapa pilihan untuk diuji. Waspadai terlalu banyak pengoptimalan. Di suatu tempat di luar sana ada seorang pria dengan hasil backtesting yang menunjukkan keuntungan 3895 atau apapun yang menggunakan rata-rata pergerakan yang tepat. Sayang sekali dia tidak tahu apa MA akan menghasilkan hasil itu di masa depan. Yang mengatakan, Anda perlu mencoba lebih dari satu panjang untuk memastikan bahwa hasil Anda tidak sesuai. Stick dengan pengaturan default atau yang Anda dengar paling banyak di media. Menemukan satu pengaturan parameter yang sempurna tidak akan membuat Anda kaya. Menemukan sekumpulan pengaturan bagus dan kuat mungkin akan banyak membantu Anda. Sebagai masalah praktis ketika backtesting memungkinkan lag data yang cukup sebelum diukur. Semua tes harus mulai diukur di tempat yang sama untuk perbandingan apel-apel sampai perbandingan antara panjang MA yang berbeda. Misalnya, jika Anda menguji rata-rata pergerakan 200 hari, dibutuhkan 200 hari pertama data untuk menghitung titik pertama dari rata-rata pergerakan itu. Itu berarti hari pertama Anda mungkin memiliki sinyal 200 hari ke kumpulan data. Untuk melakukan perbandingan yang adil dengan, misalnya, rata-rata pergerakan 10 hari, Anda harus memastikan tidak menghitung sinyal dari rata-rata pergerakan 10 hari sebelum hari 200 siap. Untungnya TradeStation memiliki cara untuk mengatur jumlah bar maksimum 8220Max akan menjadi referensi8221 dalam 8220Properties untuk strategi All8221 yang memaksa mesin backtesting untuk menunggu lama sebelum data tabulasi. Lebih Banyak Keuntungan dari Membeli atau Menjual Aturan rata-rata bergerak, dan khususnya aturan crossover moving average, sering dibicarakan sebagai sistem pembalikan. Ini berarti bahwa satu sinyal, katakanlah penyeberangan MA ke atas adalah sinyal beli dan kemudian sebaliknya, katakanlah garis MA melintang, bukan hanya sinyal jual tapi juga pemicunya akan menjadi pendek. Secara teoritis, itu bagus tapi banyak orang tidak tertarik pada korslet pasar. Mereka mencari teknik untuk membantu mereka membeli dan mungkin menjual. Bahkan orang yang sering menjual dan menjual dengan cepat mungkin menggunakan teknik yang berbeda untuk membeli dan menjual. Untuk alasan ini, bijaksana untuk menguji sinyal beli secara terpisah dari sinyal jual. Hal ini menimbulkan dilema karena sulit untuk mengevaluasi sinyal beli secara terpisah. Salah satu cara untuk melakukannya adalah dengan menggunakan exit time keluar 8211 yaitu keluar dari perdagangan atau menjual saham setelah sejumlah waktu berlalu. Saya memilih untuk menjalankan setiap backtest tiga kali dengan tiga waktu yang berbeda karena orang yang berbeda memiliki gaya yang berbeda dan kebutuhan yang berbeda. Untuk menghasilkan backtesting hasilnya berguna bagi swing trader, saya keluar setelah 2 hari. Untuk model trader posisi, 20 hari. Untuk memenuhi kebutuhan investor aktif, backtesting memegang setiap posisi selama 200 hari. Ini memberi cara untuk mengisolasi sinyal beli dan mencari tahu seberapa berguna rata-rata pergerakannya bagi pembeli saham dari berbagai temperamen. Perlu Menentukan Kebaikan Satu hal yang sangat penting untuk dipertimbangkan jika Anda melakukan backtesting moving averages untuk mengetahui seberapa baik kinerja mereka di pasar saham: Bagaimana Anda tahu apa yang baik Anda memerlukan kriteria objektif untuk sukses. Itu berarti mengidentifikasi statistik kunci seperti tingkat kemenangan, harapan, keuntungan ekuitas hipotetis, dan lain-lain. Ini juga berarti menetapkan standar untuk kinerja yang dapat diterima di masing-masing bidang ini. Sebuah contoh menggambarkan mengapa hal ini penting dan mengapa hal itu tidak semudah yang pertama kali muncul. Katakanlah tes Anda menunjukkan tingkat kemenangan 55 untuk indikator tertentu. Itu mungkin tidak begitu bagus jika, katakanlah, 62 dari semua saham naik selama periode waktu yang sama. Atau jika hanya 25 saham yang naik selama periode tersebut, tingkat kemenangan Anda akan spektakuler. Apa yang baik tergantung pada bagaimana perbandingan dengan kinerja pasar dasar di bawah kondisi yang sama. Anda dapat mendownload salinan gratis dari Baseline Laporan BackTesting dengan mengklik di sini. Untuk backtest yang berarti, Anda perlu memiliki cukup data untuk membuat perbandingan yang valid secara statistik. Minimal, itu berarti 30 perdagangan. Bahkan jika Anda hanya memperdagangkan satu instrumen hanya satu saham atau satu pasangan mata uang 8211, saya pikir penting untuk menguji strategi trading Anda pada berbagai instrumen untuk membuktikan ketahanannya. Saya pergi dari atas dengan tes yang sangat besar mengatur 8212 7147 saham selama 14 tahun 8212 untuk memastikan hasilnya akan diterapkan dalam berbagai kondisi pasar. Anda bisa mendapatkan salinan laporan backtesting saya untuk memindahkan sinyal beli rata-rata dengan mengklik di sini.

No comments:

Post a Comment