Crypto Quant: perdagangan terprogram BTC menggunakan Binance dan Backtrader — Bagian 2 dari 3 Intelijen Data PlatoBlockchain. Pencarian Vertikal. ai.

Crypto Quant: perdagangan terprogram BTC menggunakan Binance dan Backtrader — Bagian 2 dari 3


Crypto Quant: perdagangan terprogram BTC menggunakan Binance dan Backtrader — Bagian 2 dari 3 Intelijen Data PlatoBlockchain. Pencarian Vertikal. ai.

Di bagian ini wsaya ingin menginstal Pedagang balik dan backtest beberapa model perdagangan terhadap data Binance yang kami kumpulkan di bagian sebelumnya.

Ada banyak artikel dan video tentang Backtrader dan pengaturannya. Pustaka Python yang populer ini memfasilitasi pekerjaan Quant untuk menguji kembali strategi perdagangan dengan data historis, menjawab pertanyaan klasik “seberapa menguntungkan jika berdagang menggunakan strategi BELI/JUAL yang diberikan”. Ini terasa seperti alkimia matematika pada awalnya, tetapi kita harus ingat bahwa data historis adalah, yah, historis! Strategi perdagangan yang berhasil kemarin tidak mungkin berhasil hari ini… tapi kami akan segera kembali ke sana.

Petunjuk pemasangan Backtrader ('bt') adalah di sini. Catatan: ada masalah yang diketahui dengan versi mapplotlib di atas 3.2.0 jadi berhati-hatilah.

Panduan memulai cepat adalah bacaan yang berharga, temukan itu di sini.

RSI

Apa yang akan kami coba dengan Backtrader di sini adalah backtesting dan RSI (Indikator Kekuatan Relatif) strategi perdagangan pada data kripto historis (untuk BTC) dari awal tahun.

Indikator momentum RSI dijelaskan di sini. Ini mengukur kondisi oversold dan overbought relatif untuk aset perdagangan tertentu dan parameter 'periode' yang merupakan # tick (interval perdagangan) mundur.

Parameter periode default ke 14, jadi jika intervalnya adalah menit maka rumusnya akan menyertakan 14 interval ticks data. Seperti yang akan kita jelajahi selanjutnya, setiap indikator teknis memiliki parameter yang merupakan cara kita 'menyesuaikan' dengan kondisi pasar; parameter ini memiliki dampak besar pada profitabilitas dari setiap indikator yang diberikan dalam suatu strategi.

Tes Balik.py

Pengaturan backtest kami: backtest.py dibagikan di sini. Ini akan memberikan struktur backtest untuk menjalankan backtest kami, yang akan ditentukan selanjutnya. Ini adalah pengaturan 'bt' yang cukup standar. Mari kita tinjau beberapa kode ini, perhatikan bahwa ada banyak contoh dan tutorial video online tentang backtest Python untuk dipelajari.

Di sini, dalam definisi kelas, kami menetapkan parameter untuk strategi RSI kami.

  • bertele-tele: jika kita ingin menampilkan data log selama backtest
  • periode: periode rata-rata bergerak, # kutu yang perlu dipertimbangkan
  • kuantitas: # saham yang akan dibeli/dijual
  • atas: ambang atas indikator untuk overbought
  • menurunkan: ambang batas bawah indikator untuk oversold
  • hentikan kerugian: pengaturan stop loss untuk menjual

Grafik berikutnya() fungsi dalam kelas strategi Backtrader adalah apa yang terjadi setelah setiap interval 'centang' data. Berikut adalah buy() atau sell() sesuai data, dalam hal ini indikator RSI dan threshold kita.

Di sini kita mendefinisikan uji balik() fungsi yang akan dipanggil oleh kode kita. Fungsi strategi RSI yang disebutkan di atas ditambahkan ke otak contoh.

Semua barang Backtrader cukup standar. Mari kita lihat bagaimana menjalankan ini terhadap data kita.

Menguji kembali data kami

Pastikan untuk mendapatkan data (menggunakan langkah-langkah bagian terakhir) untuk 1 Januari hingga 2 Januari 2021, ini akan berada dalam file bernama: BTCUSDT-20210101–20210102–1m.csv dengan 1440 baris CSV, satu untuk setiap menit dalam sehari.

Sini adalah kode dan output untuk hari perdagangan menit demi menit untuk Bitcoin (BTC):

Melihat lebih dekat:

Parameternya sederhana, kami ingin menganalisis satu hari perdagangan, menggunakan indikator RSI dengan periode 12 tick, tidak ada stop-loss dan batas default 70,30 untuk pemicu overbought dan oversold.

1 Jan hasil bt dengan strategi indikator RSI standar

Baris keluaran terakhir merangkum hasil backtest ini:

/BTCUSDT-20210101-20210102-1m.csv, RSI (Hal 12) (SL 0.0%) (U70 L30) Bersih $777.78 (0.78%) WL 18/7 SQN 1.76

RSI periode 12, 0 (Tidak) stop-loss, (U)batas atas 70 (L)batas bawah 30, laba bersih (dalam satu hari) sebesar $777.78 dengan 18 perdagangan yang menang dan 7 perdagangan yang kalah.

Angka terakhir adalah SQN, sebuah 'Nomor Kualitas Sistem' (SQN) yang dirancang untuk membantu pedagang dalam menentukan kekuatan, keinginan, kualitas sistem perdagangan. Strategi berkualitas baik dipandang sebagai strategi yang dapat diperdagangkan dan efisien.*

Nilai SQN berikut menyarankan "kualitas" berikut:

  • 1.6–1.9 Di bawah rata-rata
  • 2.0–2.4 Rata-rata
  • 2.5–2.9 Bagus
  • 3.0–5.0 Luar biasa
  • 5.1–6.9 Luar biasa
  • 7.0 — Cawan Suci

Rumus SQN :

SquareRoot(NumberTrades) * Rata-Rata(TradesProfit) / StdDev(TradesProfit)

Biasanya kami akan bersikeras pada setidaknya 30 perdagangan agar metrik ini signifikan secara statistik, tetapi kami akan mengabaikannya untuk saat ini karena kami menguji backtest kami dengan waktu yang singkat.

Anda dapat memperbesar bagian plot, misalnya:

Di sini kita melihat sinyal beli (panah atas berwarna hijau) saat nilai RSI turun di bawah 30 dan kemudian sinyal jual yang menguntungkan sebagai dan penanda keuntungan (lingkaran biru) saat RSI mencapai di atas 70. Lihat nilai RSI di sudut kanan bawah .

Laba (dalam satu hari) sebesar $777.78 dengan 18 perdagangan yang menang dan 7 perdagangan yang kalah cukup bagus, khususnya untuk hari perdagangan dengan tindakan yang relatif dangkal (+1.42%). Bayangkan apa yang bisa kita capai pada hari bullish dengan volume tinggi!

Parameter model

Anda menjalankan get_data untuk hari yang berbeda dan menganalisisnya secara terpisah. Perhatikan bagaimana parameter RSI yang berbeda berdampak pada profitabilitas dari satu hari ke hari berikutnya.

Contoh kasus, pada hari yang sama dengan perdagangan BTC tetapi dengan periode RSI 20 daripada 12, menang-kalah 2/3 dan laba bersih -$21.51 (termasuk biaya perdagangan). Itu perbedaan besar dari backtest terakhir!

Anda juga dapat bereksperimen dengan batas RSI yang berbeda (selain default 70/30) dan parameter stop-loss. Stop-loss adalah order jual otomatis setelah harga turun di bawah beberapa level relatif terhadap order beli yang dieksekusi. Sesuai namanya, ini bisa berfungsi untuk “menghentikan kerugian” setelah masuk ke posisi volatilitas.

Stop-Loss

Cara kita men-setup stop-loss disini adalah sebagai berikut:

  • 0 : tidak ada pengaturan stop-loss, tunggu indikator memicu order jual
  • 0.00x : stop-loss pada nilai % di bawah harga beli, 0.001 adalah 0.1% di bawah
  • -0.0x : trailing stop-loss akan mengikuti perdagangan saat harga naik, 0.01 adalah trailing stop-loss 1% di bawah harga beli

Stop-loss ini merupakan parameter penting untuk setiap perdagangan dan dapat memiliki impor yang signifikan, tidak mengherankan, pada kinerja. Untuk lebih lanjut tentang strategi stop-loss lihat di sini.

Di sini, di backtest.py kami adalah tempat kami mengatur ini menggunakan backtrader:

Ini adalah run yang sama seperti yang baru saja kami analisis tetapi dengan trailing stop-loss 0.1%

Laba bersih $383.67 dengan 12 kemenangan dan 12 kekalahan, jauh lebih baik dari kerugian yang kami alami sebelumnya. Anda dapat melihat di plot bahwa trailing stop-loss melindungi banyak perdagangan agar tidak tergelincir ke kerugian sebagai indikator menunggu sinyal jual (overbought).

Dalam satu indikator, dalam pengaturan ini, kami memiliki banyak kemungkinan permutasi yang berbeda:

  • rentang periode antara 10 dan 30 interval (20 varian)
  • pengaturan stop-loss (mari kita bayangkan 5 varian praktis yang berbeda)
  • ambang batas untuk overbought/oversold (mari kita bayangkan 5 varian untuk saat ini)

Itu akan menjadi 20x5x5, atau 500 variasi berbeda untuk setiap hari. Untuk memeriksa ini satu per satu dengan tangan akan menjadi konyol, namun kami ingin tahu parameter mana yang paling menguntungkan dan dengan kualitas perdagangan tertinggi dan mana yang tidak.

Alkimia kuantitas!

Ini membawa kita ke langkah selanjutnya dalam eksplorasi Crypto Quant ini. Kami dapat secara brutal menentukan parameter strategi perdagangan yang paling menguntungkan dan berkualitas tinggi untuk periode perdagangan tertentu dan kemudian melihat bagaimana hal ini berlanjut.

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

Stempel Waktu:

Lebih dari Medium