Crypto Quant: programmatisk handel med BTC ved hjelp av Binance og Backtrader — Del 2 av 3 PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Crypto Quant: programmatisk handel med BTC ved hjelp av Binance og Backtrader - Del 2 av 3


Crypto Quant: programmatisk handel med BTC ved hjelp av Binance og Backtrader — Del 2 av 3 PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

I denne delen we ønsker å installere Backtrader og backtest noen handelsmodeller mot Binance-dataene vi samlet i forrige avsnitt.

Det er mange artikler og videoer på Backtrader og dens oppsett. Dette populære Python-biblioteket letter Quant-arbeidet med backtesting av handelsstrategier med historiske data, og svarer på det viktigste spørsmålet "Hvor lønnsomt ville det ha vært å handle med gitte KJØP / SELG-strategier". Dette føles først som matematisk alkymi, men man må huske at historiske data er vel, historiske! En handelsstrategi som fungerte i går, vil neppe fungere i dag ... men det kommer vi snart tilbake til.

Installasjonsinstruksjoner for Backtrader ('bt') er her.. Merk: det er kjente problemer med mapplotlib-versjoner over 3.2.0, så vær forsiktig med det.

Hurtigstartguide er verdt å lese, finn den her..

RSI

Det vi skal prøve med Backtrader her er backtesting av en RSI (Relativ styrkeindikator) handelsstrategi på historiske kryptodata (for BTC) fra tidligere i år.

RSI momentum-indikatoren er forklart her.. Den måler relative oversolgte og overkjøpte forhold for en gitt handelsaktiva og en parameter for 'periode' som er antall flått (handelsintervaller) bakover.

Periodeparameteren er som standard 14, så hvis intervallet er minutter, vil formelen inkludere 14 intervallfelt med data. Som vi skal utforske videre, har hver tekniske indikator parametere som er vår måte å 'innstille' på markedsforholdene; disse parametrene har stor innvirkning på lønnsomheten til en gitt indikator i en strategi.

Backtest.py

Vårt backtest-oppsett: backtest.py er delt her.. Dette vil gi backtest-strukturen for backtest-løpet, som skal defineres neste. Dette er et ganske standard 'bt' oppsett. La oss se gjennom noe av denne koden, Vær oppmerksom på at det er mange eksempler og videoopplæringer online på Python backtest å lære av.

Her i klassedefinisjonen etablerer vi parametere for vår RSI-strategi.

  • ordrik: hvis vi vil sende loggdata under backtesten
  • maperiod: glidende gjennomsnittsperiode, antall flått å vurdere
  • kvantitet: antall aksjer å kjøpe / selge
  • øverste: den øvre terskelen til indikatoren for overkjøpt
  • lavere: den nedre terskelen til indikatoren for oversolgt
  • forhindre tap: stop loss-innstillingen for salg

De neste () funksjon i en Backtrader strategiklasse er hva som skjer etter hvert intervall "kryss" av data. Her er kjøp () eller salg () i henhold til dataene, i dette tilfellet RSI-indikatoren og våre terskler.

Her definerer vi runbacktest () funksjon som vil bli kalt av koden vår. Den nevnte RSI-strategifunksjonen blir lagt til hjerne forekomst.

Alt ganske standard Backtrader-ting. La oss se hvordan du kjører dette mot dataene våre.

Backtesting av dataene våre

Sørg for å få data (ved å bruke trinnene i den siste delen) for 1. januar til 2. januar 2021, dette vil være i en fil som heter: BTCUSDT-20210101–20210102–1m.csv med 1440 CSV-linjer, en for hvert minutt av dagen.

Her er koden og utdata for denne en dags verdi av minutt for minutt handelsdag for Bitcoin (BTC):

Ser vi nærmere på:

Parametrene er enkle, vi ønsker å analysere en handelsdag, ved hjelp av RSI-indikatoren med en periode på 12 flått, ingen stop-loss og standardgrenser på 70,30 for de overkjøpte og oversolgte utløserne.

Resultater fra 1. januar med standard RSI-indikatorstrategi

Den siste produksjonslinjen oppsummerer resultatene av denne backtesten:

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

RSI-periode 12, 0 (Nei) stop-loss, (U) pper-grense på 70 (L) øvre grense på 30, nettoresultat (på en dag) på $ 777.78 med 18 vinnende handler og 7 tapte handler.

Den siste figuren er SQN, et 'System Quality Number' (SQN) som er designet for å hjelpe handelsmenn med å bestemme styrker, ønskelighet og kvalitet til et handelssystem. En god kvalitetsstrategi blir sett på som en både omsettelig og effektiv. *

Følgende SQN-verdier antyder følgende "kvaliteter":

  • 1.6–1.9 Under gjennomsnittet
  • 2.0–2.4 Gjennomsnitt
  • 2.5–2.9 Bra
  • 3.0–5.0 Utmerket
  • 5.1–6.9 Fantastisk
  • 7.0 - Holy Grail

SQN-formelen:

SquareRoot (NumberTrades) * Gjennomsnitt (TradesProfit) / StdDev (TradesProfit)

Normalt vil vi insistere på minst 30 handler for at denne beregningen skal være statistisk signifikant, men vi vil ignorere det foreløpig da vi tester ut vårt backtest med kort tid.

Du kan zoome inn i deler av plottet, for eksempel:

Her ser vi et kjøpesignal (grønn opp-pil) når RSI-verdien faller under 30 og deretter et lønnsomt salgssignal som og fortjenestemarkør (blå sirkel) når RSI når over 70. Se verdiene for RSI i høyre nedre hjørne .

Profitt (på en dag) på $ 777.78 med 18 vinnende handler og 7 tapte handler er ganske bra, spesielt for en handelsdag med relativt grunne handlinger (+ 1.42%). Tenk deg hva vi kunne oppnå på en bullish dag med høyt volum!

Modellparametere

Du får kjøre get_data for forskjellige dager og analyserer disse hver for seg. Legg merke til hvordan forskjellige RSI-parametere har innvirkning på lønnsomheten fra en dag til den neste.

Eksempel, samme dag for BTC-handel, men med en RSI-periode på 20 i stedet for 12, vinn-tap på 2/3 og en nettoresultat på - $ 21.51 (inkludert handelsgebyrer). Det er en stor forskjell fra den siste backtesten!

Du kan også eksperimentere med forskjellige RSI-grenser (annet enn standard 70/30) og stop-loss parametere. Stop-loss er en automatisk salgsordre når prisen går under et nivå i forhold til den utførte kjøpsordren. Som navnet antyder, kan dette tjene til å "stoppe et tap" etter å ha kommet i en posisjon i volatilitet.

Stop-Loss

Måten vi har satt opp stop-loss her er som følger:

  • 0 : ingen stopp-tap-oppsett, vent til indikatoren utløser en salgsordre
  • 0.00x : stop-loss til en% verdi under kjøpesummen, 0.001 er 0.1% under
  • -0.0x: etterfølgende stopp-tap vil følge handelen når prisen stiger, 0.01 er et etterfølgende stopp-tap 1% under kjøpesummen

Dette stop-loss er en viktig parameter for hver handel og kan ha en betydelig import, ikke overraskende, på ytelse. For mer om stop-loss strategier se her..

Her i backtest.py er hvor vi konfigurerer dette ved hjelp av backtrader:

Her er samme løp som vi nettopp analyserte, men med et 0.1% etterfølgende stopptap

Nettoresultat på $ 383.67 med 12 seire og 12 tap, mye bedre enn tapet vi hadde tidligere. Du kan se i plottet at det etterfølgende stopp-tapet beskyttet mange av handlerne fra å gli inn i tap som indikatoren som venter på et salg (overkjøpt) signal.

Innenfor en enkelt indikator, i dette oppsettet, har vi mange forskjellige mulige permutasjoner:

  • et tidsintervall mellom 10 og 30 intervaller (20 varianter)
  • en stop-loss-innstilling (la oss forestille oss 5 forskjellige praktiske varianter)
  • en terskel for overkjøpt / oversolgt (la oss forestille oss 5 varianter for nå)

Det ville være 20x5x5, eller 500 forskjellige varianter for hver dag. Å undersøke disse en for en for hånd ville være latterlig, og likevel vil vi vite hvilke parametere som var mest lønnsomme og av høyeste handelskvalitet, og hvilke som ikke var.

Kvant alkymi!

Dette bringer oss til vårt neste trinn i denne utforskningen av Crypto Quant. Vi kan styrke styrken til å bestemme de mest lønnsomme og høyeste kvalitetshandelsstrategiparametrene for en gitt handelsperiode, og se hvordan disse videreføres.

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

Tidstempel:

Mer fra Medium