Crypto Quant: programmatische handel in BTC met behulp van Binance en Backtrader — Deel 2 van 3 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Crypto Quant: programmatische handel in BTC met behulp van Binance en Backtrader - Deel 2 van 3


Crypto Quant: programmatische handel in BTC met behulp van Binance en Backtrader — Deel 2 van 3 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

In dit deel wik wil installeren Terughandelaar en test een aantal handelsmodellen tegen de Binance-gegevens die we in de vorige sectie hebben verzameld.

Er zijn talloze artikelen en video's over Backtrader en de opzet ervan. Deze populaire Python-bibliotheek vergemakkelijkt het Quant-werk van backtesting van handelsstrategieën met historische gegevens, en beantwoordt de essentiële vraag "hoe winstgevend zou het zijn geweest om te handelen met behulp van bepaalde KOOP/VERKOOP-strategieën". Dit voelt in het begin als wiskundige alchemie, maar je moet onthouden dat historische gegevens, nou ja, historisch zijn! Een handelsstrategie die gisteren werkte, zal vandaag waarschijnlijk niet werken... maar daar komen we binnenkort op terug.

Backtrader ('bt') installatie-instructies zijn: hier. Opmerking: er zijn bekende problemen met mapplotlib-versies boven 3.2.0, dus pas daar op.

Snelstartgids is de moeite waard om te lezen, vind het hier.

RSI

Wat we hier met Backtrader zullen proberen, is backtesting en RSI (Relatieve sterkte-indicator) handelsstrategie op historische cryptogegevens (voor BTC) van eerder in het jaar.

De RSI-momentumindicator wordt uitgelegd hier. Het meet relatieve oversold- en overbought-voorwaarden voor een bepaald handelsactief en een parameter van 'periode' die het # teken (handelsintervallen) achteruit is.

De parameter period is standaard ingesteld op 14, dus als het interval minuten is, bevat de formule 14 intervaltikjes aan gegevens. Zoals we hierna zullen onderzoeken, heeft elke technische indicator parameters die onze manier zijn om ons af te stemmen op de marktomstandigheden; deze parameters hebben een enorme impact op de winstgevendheid van een bepaalde indicator binnen een strategie.

Backtest.py

Onze backtest-opstelling: backtest.py is gedeeld hier. Dit levert de backtest-structuur voor onze backtest-run, die hierna wordt gedefinieerd. Dit is een vrij standaard 'bt'-opstelling. Laten we een deel van deze code bekijken, merk op dat er tal van voorbeelden en videozelfstudies online zijn over Python-backtest om van te leren.

Hier in de klassendefinitie stellen we parameters vast voor onze RSI-strategie.

  • breedsprakig: als we loggegevens willen uitvoeren tijdens de backtest
  • periode: voortschrijdend gemiddelde periode, het # teken om te overwegen
  • hoeveelheid: het aantal aandelen om te kopen/verkopen
  • bovenste: de bovengrens van de indicator voor overbought
  • te verlagen: de onderdrempel van de indicator voor oversold
  • stopVerlies: de stop loss-instelling voor verkopen

De De volgende() functie in een Backtrader-strategieklasse is wat er gebeurt na elk interval 'tick' van gegevens. Hier is buy() of sell() volgens de gegevens, in dit geval de RSI-indicator en onze drempels.

Hier definiëren we de teruglooptest() functie die wordt aangeroepen door onze code. De eerder genoemde RSI-strategiefunctie is toegevoegd aan de hersenen aanleg.

Allemaal redelijk standaard Backtrader-dingen. Laten we eens kijken hoe we dit kunnen vergelijken met onze gegevens.

Backtesting van onze gegevens

Zorg ervoor dat u gegevens krijgt (met behulp van de stappen van de laatste sectie) voor 1 januari tot 2 januari 2021, dit zal in een bestand staan ​​met de naam: BTCUSDT-20210101-20210102-1m.csvs met 1440 CSV-regels, één voor elke minuut van de dag.

Here is de code en output voor deze ene dag van minuut tot minuut handelsdag voor Bitcoin (BTC):

Onder de loep:

De parameters zijn eenvoudig, we willen één handelsdag analyseren, met behulp van de RSI-indicator met een periode van 12 ticks, geen stop-loss en standaardlimieten van 70,30 voor de overbought- en oversold-triggers.

1 jan bt resultaten met standaard RSI indicatorstrategie

De laatste regel van de uitvoer vat de resultaten van deze backtest samen:

/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 (Geen) stop-loss, (B)bovengrens van 70 (L)ondergrens van 30, nettowinst (in één dag) van $ 777.78 met 18 winnende transacties en 7 verliezende transacties.

Het laatste cijfer is SQN, een 'System Quality Number' (SQN) dat is ontworpen om handelaren te helpen bij het bepalen van de sterke punten, wenselijkheid en kwaliteit van een handelssysteem. Een strategie van goede kwaliteit wordt gezien als een strategie die zowel verhandelbaar als efficiënt is.*

De volgende SQN-waarden suggereren de volgende "kwaliteiten":

  • 1.6–1.9 Onder het gemiddelde
  • 2.0–2.4 Gemiddelde
  • 2.5–2.9 Goed
  • 3.0–5.0 Uitstekend
  • 5.1–6.9 Super Super
  • 7.0 — Heilige Graal

De SQN-formule:

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

Normaal gesproken zouden we aandringen op ten minste 30 transacties om deze statistiek statistisch significant te laten zijn, maar we zullen dat voorlopig negeren, aangezien we onze backtest met een korte tijdsperiode aan het testen zijn.

U kunt inzoomen op delen van de plot, bijvoorbeeld:

Hier zien we een koopsignaal (groene pijl omhoog) als de RSI-waarde onder de 30 daalt en vervolgens een winstgevend verkoopsignaal als en winstmarkering (blauwe cirkel) als de RSI boven de 70 komt. Zie de waarden voor RSI in de rechterbenedenhoek .

Winst (in één dag) van $ 777.78 met 18 winnende transacties en 7 verliezende transacties is redelijk goed, vooral voor een handelsdag met relatief oppervlakkige actie (+1.42%). Stel je voor wat we zouden kunnen bereiken op een bullish dag met een hoog volume!

Modelparameters

Je krijgt get_data voor verschillende dagen en analyseert deze afzonderlijk. Merk op hoe verschillende RSI-parameters van de ene op de andere dag een impact hebben op de winstgevendheid.

Voorbeeld, dezelfde dag van BTC-handel maar met een RSI-periode van 20 in plaats van 12, win-verlies van 2/3 en een nettowinst van -$ 21.51 (inclusief handelskosten). Dat is een groot verschil met de laatste backtest!

U kunt ook experimenteren met verschillende RSI-limieten (anders dan de standaard 70/30) en stop-loss-parameters. Stop-loss is een automatische verkooporder zodra de prijs onder een bepaald niveau komt ten opzichte van de uitgevoerde kooporder. Zoals de naam al aangeeft, kan dit dienen om "een verlies te stoppen" nadat u in een volatiliteitspositie bent beland.

Stop-Loss

De manier waarop we stop-loss hier hebben ingesteld, is als volgt:

  • 0 : geen stop-loss setup, wacht tot de indicator een verkooporder activeert
  • 0.00x : stop-loss bij een % waarde onder de aankoopprijs, 0.001 is 0.1% onder
  • -0.0x : trailing stop-loss volgt de handel naarmate de prijs stijgt, 0.01 is een trailing stop-loss 1% onder de aankoopprijs

Deze stop-loss is een belangrijke parameter voor elke transactie en kan, niet verrassend, een aanzienlijke invloed hebben op de prestaties. Zie voor meer informatie over stop-loss-strategieën: hier.

Hier in onze backtest.py hebben we dit ingesteld met behulp van backtrader:

Hier is dezelfde run als die we net hebben geanalyseerd, maar met een stop-loss van 0.1% trail

Nettowinst van $383.67 met 12 overwinningen en 12 verliezen, veel beter dan het verlies dat we eerder hadden. U kunt in de plot zien dat de trailing stop-loss veel van de transacties beschermde tegen verlies, omdat de indicator wachtte op een verkoopsignaal (overbought).

Binnen een enkele indicator, in deze opstelling, hebben we dus veel verschillende mogelijke permutaties:

  • een periodebereik tussen 10 en 30 intervallen (20 varianten)
  • een stop-loss instelling (laten we ons 5 verschillende praktische varianten voorstellen)
  • een drempel voor overbought/oversold (laten we ons nu 5 varianten voorstellen)

Dat zou 20x5x5 zijn, of 500 verschillende variaties voor elke dag. Deze één voor één met de hand onderzoeken zou belachelijk zijn en toch willen we weten welke parameters het meest winstgevend waren en van de hoogste handelskwaliteit en welke niet.

Kwantitatieve alchemie!

Dit brengt ons bij onze volgende stap in deze Crypto Quant-verkenning. We kunnen met brute kracht de meest winstgevende handelsstrategieparameters van de hoogste kwaliteit bepalen voor een bepaalde handelsperiode en vervolgens zien hoe deze worden overgedragen.

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

Tijdstempel:

Meer van Medium