Saya pedagang algo ibu: mencari kerangka kerja gratis untuk menguji hipotesis dan meluncurkan dalam mode pertempuran (Python)

Misalkan Anda ada hubungannya dengan pasar saham sebelumnya. Atau, tidak memilikinya, terbawa oleh tema cryptocurrency panas (tapi dalam beberapa bulan terakhir sudah terasa dingin ....). Kami juga berasumsi bahwa Anda telah melangkah lebih jauh dan memutuskan bahwa "kontrol manual" penerbangan sudah tidak efektif dan bahwa Anda perlu mengotomatisasi ide-ide cemerlang Anda dan mengubah monyet menjadi sesuatu yang lebih teknologi. Tepat pada titik ini, pertanyaan yang ingin saya bahas dalam artikel ini dimulai, yaitu: apakah ada solusi yang sudah jadi untuk ide-ide perdagangan backtesting (gratis diinginkan), di mana untuk mendapatkan data historis (idealnya gratis), dan juga apa yang harus dilakukan dengan semua ini nanti, yaitu Apa solusi untuk peluncuran tempur sistem perdagangan otomatis yang telah berhasil diuji pada backtest? Catatan satu dan dua: artikel ini ditulis untuk perpustakaan dan sistem berbasis Python, saya tidak bisa menilai bagaimana aksesibilitas untuk bahasa lain bisa; prioritas diberikan kepada pasar asing dan / atau cryptocurrency; Saya juga tidak berani menilai bagaimana berlaku untuk pasar saham Rusia.

gambar

Materi ini bukan panduan atau tinjauan lengkap, melainkan proposal untuk bertukar ide kerja berdasarkan pencarian praktis untuk perakitan kerja normal untuk penggunaan pribadi. Dihadapkan dengan kebutuhan untuk mengotomatisasi bahkan strategi perdagangan yang sederhana (perdagangan momentum, mengikuti tren, dll.), Sejumlah masalah muncul segera. Mari kita tunjukkan apa yang kita perlu:

  • Merumuskan hipotesis dan membuat algoritme
  • Uji hipotesis pada data historis. Catatan yang sangat penting: Anda juga harus memahami data historis apa yang termasuk dalam kategori "cocok" untuk digunakan dalam tes sistem perdagangan yang paling belakang. Saya tidak akan melakukan untuk menulis posting terpisah tentang ini sekarang (walaupun ini mengharuskannya, tetapi ada banyak bahan tentang hal ini dalam domain publik), saya akan menguraikan beberapa masalah utama dengan data historis: adalah perusahaan yang keluar dari indeks atau bangkrut diperhitungkan, saham terbagi, dan juga bagaimana profitabilitas dipertimbangkan - dengan mempertimbangkan dividen akun (pengembalian total) atau tidak. Saya benar-benar minta maaf untuk singkatnya, tetapi posting ini belum tentang itu, dan ini bukan satu set lengkap persyaratan data.
  • Jika verifikasi berhasil, cara mentransfer hipotesis ke akun perdagangan nyata, menambahkan sistem manajemen risiko, manajemen pesanan, penyeimbangan ulang, dan evaluasi hasilnya.

Sekarang adalah waktunya untuk membuat dua penyimpangan penting tentang "pengantar" yang sedang kami kerjakan dalam artikel ini. Yang pertama adalah pilihan bahasa: banyak yang akan mengatakan bahwa C # untuk membuat robot perdagangan / sistem perdagangan otomatis jauh lebih umum dan lebih cepat daripada Python. Saya tidak bisa tidak setuju, tetapi saya harus memperhitungkan poin penting kedua - perbedaan antara perdagangan algoritmik dan otomatisasi sistem perdagangan. Dari percakapan dengan para praktisi perdagangan kuantitatif dan hanya dari bahan-bahan teoretis yang ditemukan, dapat disimpulkan bahwa perdagangan algoritmik (sering digunakan sebagai sinonim untuk "Perdagangan Frekuensi Tinggi (HFT)" adalah taktik untuk bekerja dengan pesanan, dengan aliran data ke bursa yang berbeda, berdasarkan kecepatan akses ke mereka (dan tergantung pada milidetik), dan di sana secara eksklusif C # dapat mengatasi tugas-tugas tersebut. Pada saat yang sama, tugas-tugas yang dikejar pedagang algo "rumah" kemungkinan besar adalah Python, karena kami bertujuan untuk mengotomatisasi sistem perdagangan spekulatif jangka pendek dan menengah, yang perputaran portofolionya tidak mencapai 100% per hari, dan jumlah pesanan dan persyaratan kecepatan eksekusi mereka tidak melebihi ambang batas wajar yang memisahkan perdagangan frekuensi tinggi dan perdagangan otomatis jangka pendek / menengah.

Bagaimana sistem perdagangan dievaluasi, bagaimana algoritma perdagangan ditulis dan sebagainya - semua ini sekarang berada di luar ruang lingkup, jika tidak, tidak ada cara untuk masuk ke dalam artikel. Mari kita lihat contoh spesifik - saya memiliki sistem perdagangan berdasarkan pada yang dijelaskan dalam buku "Stocks on the Move: Mengalahkan Pasar dengan Strategi Momentum Hedge Fund". Strategi perdagangan ditulis dalam Python dan tidak termasuk elemen super-kompleks. Hal pertama yang Anda butuhkan adalah kesempatan untuk menguji strategi pada data historis. Saya tidak punya masalah membahas pilihan broker, saya menggunakan layanan broker Interaktif dan mereka sudah memiliki API asli untuk Python. Namun demikian, kemungkinan backtest bahkan dengan langganan data berbayar tidak disediakan di sana. Inilah yang saya berhasil temukan untuk backtest:

1) Semua orang mendengar - Quantopian.com

Hanya Python 2.7 yang didukung, dimungkinkan untuk membangun dan menguji sistem perdagangan secara gratis, ada data historis gratis untuk digunakan (US equity & futures), online tersedia, pemasangan lokal tidak memungkinkan. Saya tidak akan menulis tinjauan panjang, saya akan segera menguraikan bidang masalah yang ditemukan bahkan pada tingkat dasar: karena mereka menghapus kemungkinan menghubungkan ke akun pialang, tidak ada cara untuk menggunakan sistem perdagangan yang dikembangkan dan diuji untuk perdagangan langsung. Ini segera memberlakukan batasan (beberapa di antaranya akan membantu menyelesaikan zipline-live, lebih dari itu di bawah), karena Quantopian didasarkan pada pustaka zipline dan, terlebih lagi, ada beberapa fungsi yang hanya berfungsi di dalam sistem mereka, jadi ketika Anda ingin mentransfer sistem yang Anda tulis dan uji sendiri ke API asli yang sama dari pialang, Anda harus menulis ulang setengahnya untuk berfungsi, dan juga memutuskan apa yang harus dilakukan dengan cuplikan kode berbasis zipline. Nilai minus (untuk beberapa sistem) juga dapat dianggap sebagai larangan tickers dinamis, tetapi untuk saat ini kami meninggalkan tesis ini tanpa perincian.

Kelebihan utama Quantopian (IMHO) (selain sistem gratis untuk tes dan data historis) adalah komunitas yang sangat aktif, banyak posting tentang analitik dan nuansa sistem bangunan. Penting: data historis yang tersedia di sana memperhitungkan beberapa masalah (Anda dapat bekerja tidak hanya dengan perusahaan langsung, tetapi juga mendapatkan daftar indeks tahun-tahun terakhir untuk memperhitungkan drop out, bangkrut, dll.), Pemisahan juga diperhitungkan, dan bahkan ada (!) Kumpulan data Total Return, yaitu, Anda dapat menggunakan indikator profitabilitas dengan dividen.

2) Benar-benar ingin didengar oleh semua orang, tetapi belum - Backtrader.com

Python 2.7, 3.2-3.6 didukung, hanya tersedia untuk digunakan pada mesin lokal.
Sepertinya ada integrasi dengan broker dan dimungkinkan untuk meluncurkan sistem menggunakan perpustakaan ini ke dalam pertempuran dengan upaya integrasi minimal. Terus terang - ini sangat diragukan, saya belum melihat contoh hidup, komunitas hampir mati - ada keheningan di forum. Penulis perpustakaan secara aktif mempromosikannya di Quora dan sumber daya lainnya. Tidak ada data historis, jadi Anda harus membeli atau mencari sumber gratis - tetapi ada masalah "survivor", dividen (termasuk atau tidak dalam data), split dan hal-hal lain dimulai. Saya akan senang mendapatkan umpan balik nyata tentang praktik menggunakan perpustakaan ini.

3) QuantConnect - quantconnect.com

Ini adalah platform online (masing-masing mendukung Python), menawarkan data, backtest, dan integrasi dengan broker populer. Tetapi pada saat yang sama, katakanlah untuk dapat melakukan perdagangan langsung melalui Broker Interaktif, Anda harus membayar minimal $ 20 per bulan untuk berlangganan QuantConnect, dan ini tidak memperhitungkan langganan akun untuk data dari broker, dll.
Pendapat subyektif saya adalah bahwa platform ini tidak terlalu nyaman untuk penggunaan konstan, entah bagaimana semuanya terlalu padat dan tidak nyaman, ditambah dibayar, plus itu awalnya ditulis dalam C # dan hanya dibungkus sehingga Anda dapat menggunakan Python. Jadi, setelah mencoba menguji beberapa strategi di sana, saya menolak untuk menggunakannya lebih lanjut. Meskipun kami harus membayar upeti - komunitas di sana kurang aktif, ada banyak materi di forum, dan masalah dapat diselesaikan dengan cepat. Saya akan senang jika Anda berbagi ulasan yang sebenarnya - mungkin saya hanya tidak memiliki pengalaman pengguna.

4) QuantRocket - quantrocket.com

Dilihat oleh deskripsi - itu hanya sebuah "lagu". Ada segalanya - baik instalasi online dan lokal, dan backtesting, dan data historis yang dapat dikumpulkan dari broker atau disediakan sendiri (untuk $ 9 per bulan), dan segera integrasi dengan broker, dan integrasi sangat baik sehingga mereka berjanji untuk menulis ulang apa pun Anda harus ... Dan mereka bahkan berjanji bahwa jika dulu Anda tertarik pada Quantopian dan Anda menulis beberapa hal di zipline, mereka akan membantu dengan transisi ke platform mereka dan ke perpustakaan internal (Moonshot), yang akan memungkinkan perdagangan langsung melalui broker untuk diimplementasikan dengan upaya minimal ... Semua terdengar sempurna jika bukan karena satu tentang "tetapi" - setidaknya $ 30 per bulan untuk kesempatan menguji seperti semua orang sebenarnya. Saya tidak berani, karena ada bulan yang tidak memerlukan partisipasi Anda di pasar (misalnya, semua filter untuk memasuki pasar menunjukkan "duduk diam") dan kemudian bayaran $ 30 untuk kesempatan untuk menguji hipotesis tampaknya terlalu dibenarkan. Tapi saya akan berterima kasih untuk ulasan nyata - yang mencoba, apa pro dan kontra dan sebagainya. Titik memalukan lainnya adalah pengikatan pada platform dan perpustakaan, yang hanya digunakan di atasnya, kemudian dipenuhi dengan โ€œbiaya pengalihanโ€, yaitu. besok, alih-alih $ 30, mereka akan menempatkan semua $ 150 untuk tarif sederhana, dan Anda memilikinya terikat ke perpustakaan Moonshot unik mereka dan digunakan melalui platform mereka ... Seperti yang mereka katakan, telur Anda dalam satu keranjang ...)

5) Zipline & Zipline-live (http://www.zipline.io, www.zipline-live.io )

Itu diinstal secara lokal, bekerja dengan Python 2.7 dan 3.5 untuk Zipline dan hanya 2.7 untuk zipline-live.
Kami sampai pada bundel berharga, yang, menurut pengamatan saya, paling sering digunakan di komunitas pecinta sistem perdagangan otomatis di rumah.
Apa yang kita miliki: perpustakaan zipline, yang merupakan dasar dari mesin Quantopian (lihat poin 1) dan adiknya, zipline-live, yang mendukung integrasi dengan Broker Interaktif dan memungkinkan Anda untuk menjalankan algoritma yang dibuat menggunakan zipline dalam produksi dengan modifikasi minimal. Secara singkat tentang sejarah masalah ini - ketika beberapa tahun yang lalu di Quantopian mereka memutuskan untuk meninggalkan perdagangan langsung, komunitas menjadi gelisah, perairan berbusa, dan hasil dari upaya kolektif lahir (termasuk tim Quantopian, yang berjanji untuk mendukung pengembangan perpustakaan langsung secara tidak mementingkan diri). Setelah itu, Zipline-live menjadi, pada kenyataannya, satu-satunya (?) Cara mudah gratis (dan tanpa registrasi :) untuk mengadaptasi sistem yang diuji pada Quantopian (atau lokal di zipline) untuk perdagangan nyata melalui broker Interaktif (dengan yang ada integrasi, tetapi tanpa nomor beberapa fungsi zipline penting dan tidak begitu). Apa yang bisa dikatakan tentang kelompok ini:

  • zipline cocok untuk Anda secara lokal jika Anda memiliki sumber data historis yang andal atau jika Anda memiliki cukup dataset quandl yang dibangun ke perpustakaan secara gratis. Harus diingat bahwa perpustakaan tidak mendukung terjemahan data online, dan Anda harus mengunduhnya dan kemudian mengunggah untuk backtest (di sini Anda akan menemukan detail lebih lanjut tentang ini)
  • Secara teori zipline-live cocok jika integrasi dengan IB diimplementasikan secara normal, dan algoritma yang ditransfer dari Quantopian tidak akan membutuhkan pemrosesan dan pemangkasan yang signifikan karena fungsi yang tidak diimplementasikan dalam zipline-live.

6) QsTrader - github.com/mhallsmoore/qstrader

Ini adalah perpustakaan dari pembuat portal quantstart, komunitas dan satu set materi pendidikan, kuliah, dan sebagainya. Diinstal secara lokal, menggunakan Python 3 dan di atasnya. Tidak ada peluang perdagangan nyata melalui broker, tetapi mereka berjanji untuk menambahkan. Sebagian besar bergantung pada tumpukan Ilmu Data Python - panda, numpy, scipy, dll, sehingga Anda harus menginstal semuanya sekaligus. Saya tidak dapat memperoleh perkiraan obyektif tentang prevalensi perpustakaan ini dan saya akan mengatakan dengan jujur โ€‹โ€‹- saya belum mencobanya dalam praktik, karena menilai dari riwayat pembaruan, mengerjakannya tidak aktif, fungsi tidak ditambahkan, yang berarti tidak berfungsi untuk sistem yang lengkap, bahkan "rumah" cocok, tetapi jika ada hasil penggunaannya dan pendapat pribadi terbentuk - bagikan, tiba-tiba solusi ini lebih baik daripada yang lain.

7) Selanjutnya, saya akan daftar perpustakaan yang saya berhasil temukan, tetapi saya tidak bisa mengatakan banyak tentang mereka. Paling sering mereka didukung secara eksklusif oleh penulis blog yang menciptakannya, dan mereka tidak memiliki kemampuan untuk berintegrasi dengan broker, yang berarti bahwa itu hanya backtesting tanpa kemampuan untuk digunakan dalam pertempuran, tanpa komunitas dan dengan lambatnya perkembangan, mis. tidak memenuhi semua tugas yang ditugaskan.

- bt (Backtesting for Python)
- Perdagangan sistem sistem

Meringkas hasil antara, saya membagikan kesimpulan subyektif:

  • Jika Anda tidak keberatan menggunakan platform online yang menjadi usang Python 2.7 dan instrumen target Anda dalam strategi adalah saham / futures di situs AS (dan broker IB), maka kombinasi Quantopian + zipline-live akan mudah dan pasti gratis (!) Menggunakan dimana Anda akan menerima data historis gratis (ยฑ memenuhi kriteria kualitas), IDE gratis untuk menguji hipotesis, serta perpustakaan lokal yang memungkinkan Anda untuk mengintegrasikan prestasi Anda dengan akun broker dan meluncurkan sistem dalam penerbangan tempur, dengan mempertimbangkan semua klausa dan kombinasi batas yang telah diungkapkan hereinabove. Secara pribadi, saya memilih opsi ini untuk Anda karena kenyamanan, fungsi dasar gratis, dan komunitas yang sangat aktif. Dalam posting berikutnya, saya akan memberi tahu Anda betapa mudahnya (atau tidak mudah) untuk menguji dan mentransfer strategi stok momentum dari Quantopian online ke zipline-live di mesin lokal, seberapa baik integrasi dengan akun pialang di IB di perpustakaan ini berhasil, dan juga berbagi rincian menggunakan asli API Python dari IB.
  • Jika prioritasnya adalah instalasi lokal, kontrol penuh atas sistem dan tidak repot dengan kebutuhan untuk mengunduh data historis dalam bentuk bundel data untuk menguji hipotesis, atau jika ada sumber data ini atau bebas dari quandl, maka bundel Zipline + Zipline-live akan menjadi solusi yang memungkinkan. Anda dapat menerapkan strategi yang diuji pada mesin lokal pada data historis (milik Anda atau gratis) melalui IB dan semua ini gratis dalam rangka fungsionalitas pustaka yang ditunjukkan dan pialang API Python.

  • Jika Anda tidak dapat atau tidak ingin membuka akun dengan broker Interaktif, maka pada umumnya, sebagian besar daftar di atas akan berhasil, karena QuantConnect, misalnya, bekerja dengan broker lain yang juga mendukung perdagangan FX / Crypto, dan sebagainya. Dan jika tugas, pada prinsipnya, tidak perlu melakukan perdagangan langsung melalui broker, maka Anda dapat mencoba semua pustaka / platform yang dijelaskan untuk pengujian ulang dan memilih salah satu yang paling memenuhi tugas Anda.

PS Sebagai kesimpulan, saya ingin mencatat bahwa pentingnya memilih platform / perpustakaan tidak hanya kenyamanan, tetapi juga "skalabilitas" sistem. Katakanlah saya mengembangkan sesuatu yang dapat dipahami dan mengujinya di zipline. Kemudian dia memutuskan untuk mengimplementasikannya tanpa backtest dari broker mana pun melalui API-nya - dan di sini dimulai jutaan detail tambahan yang tidak akan Anda perhitungkan dalam mode kotak pasir - bagaimana pesanan dijalankan, bagaimana sistem Anda memproses dalam mode perdagangan yang berbeda, dan jika ada kesenjangan / sesi supervoltaic pasca-perdagangan setelah laporan triwulanan dan seterusnya ... Oleh karena itu, menurut pendapat subjektif saya, penting untuk memilih majelis sedemikian sehingga kode bekerja baik untuk backtest dan untuk implementasi sistem perdagangan dalam pertempuran, maka akan bekerja dengan baik kelemahannya, h untuk meningkatkan kualitas keduanya.

Source: https://habr.com/ru/post/id434244/


All Articles