Crypto Quant: Programmatischer Handel von BTC mit Binance und Backtrader – Teil 2 von 3 PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Crypto Quant: Programmatischer Handel mit BTC mit Binance und Backtrader — Teil 2 von 3


Crypto Quant: Programmatischer Handel von BTC mit Binance und Backtrader – Teil 2 von 3 PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

In diesem Teil wIch möchte installieren Backtrader und testen Sie einige Handelsmodelle anhand der Binance-Daten, die wir im vorherigen Abschnitt gesammelt haben.

Es gibt zahlreiche Artikel und Videos über Backtrader und seine Einrichtung. Diese beliebte Python-Bibliothek erleichtert die Quant-Arbeit beim Backtesting von Handelsstrategien mit historischen Daten und beantwortet die grundlegende Frage „Wie profitabel wäre es gewesen, mit bestimmten KAUF/VERKAUF-Strategien zu handeln?“. Das fühlt sich zunächst wie mathematische Alchemie an, aber man muss bedenken, dass historische Daten, nun ja, historisch sind! Eine Handelsstrategie, die gestern funktioniert hat, wird heute wahrscheinlich nicht funktionieren ... aber darauf kommen wir gleich zurück.

Installationsanweisungen für Backtrader ('bt') sind hier. Hinweis: Es gibt bekannte Probleme mit Mapplotlib-Versionen über 3.2.0, seien Sie also vorsichtig.

Die Schnellstartanleitung ist eine lohnende Lektüre, finde sie hier.

RSI

Was wir hier mit Backtrader versuchen werden, ist Backtesting und RSI (Relativer Stärkeindikator) Handelsstrategie für historische Kryptodaten (für BTC) von Anfang des Jahres.

Der RSI-Momentum-Indikator wird erklärt hier. Es misst die relativen überverkauften und überkauften Bedingungen für einen bestimmten Handelswert und einen Parameter von "Periode", der die Anzahl der Ticks (Handelsintervalle) rückwärts ist.

Der Periodenparameter ist standardmäßig auf 14 eingestellt. Wenn das Intervall also Minuten beträgt, enthält die Formel 14 Intervall-Ticks von Daten. Wie wir als nächstes untersuchen werden, hat jeder technische Indikator Parameter, die unsere Art der „Abstimmung“ auf die Marktbedingungen sind; Diese Parameter haben einen großen Einfluss auf die Rentabilität eines bestimmten Indikators innerhalb einer Strategie.

Backtest.py

Unser Backtest-Setup: backtest.py wird geteilt hier. Dadurch wird die Backtest-Struktur für unseren Backtest-Lauf bereitgestellt, die als nächstes definiert wird. Dies ist ein ziemlich normales 'bt'-Setup. Sehen wir uns einen Teil dieses Codes an, Beachten Sie, dass es online viele Beispiele und Video-Tutorials zum Python-Backtest gibt, von denen Sie lernen können.

Hier in der Klassendefinition legen wir Parameter für unsere RSI-Strategie fest.

  • ausführlich: wenn wir während des Backtests Log-Daten ausgeben wollen
  • maperiod: gleitender Durchschnitt, die Anzahl der zu berücksichtigenden Ticks tick
  • Menge: die Anzahl der zu kaufenden/zu verkaufenden Aktien
  • obere: die obere Schwelle des Indikators für überkauft
  • senken: die untere Schwelle des Indikators für überverkauft
  • StopLoss: die Stop-Loss-Einstellung für den Verkauf

Das Nächster() Funktion in einer Backtrader-Strategieklasse ist das, was nach jedem Intervall-'Tick' von Daten passiert. Hier ist buy() oder sell() entsprechend den Daten, in diesem Fall der RSI-Indikator und unsere Schwellenwerte.

Hier definieren wir die Rücklauftest() Funktion, die von unserem Code aufgerufen wird. Die oben erwähnte RSI-Strategiefunktion wird zu den Gehirn Beispiel.

Alles ziemlich normale Backtrader-Sachen. Sehen wir uns an, wie dies mit unseren Daten ausgeführt wird.

Backtesting unserer Daten

Stellen Sie sicher, dass Sie Daten (mit den Schritten des letzten Abschnitts) für den 1. Januar bis 2. Januar 2021 abrufen. Diese befinden sich in einer Datei mit dem Namen: BTCUSDT-20210101–20210102–1m.csv mit 1440 CSV-Zeilen, eine für jede Minute des Tages.

Hier ist der Code und die Ausgabe für diesen eintägigen minutengenauen Handelstag für Bitcoin (BTC):

Bei genauerem Hinsehen:

Die Parameter sind einfach, wir wollen einen Handelstag analysieren, indem wir den RSI-Indikator mit einer Periode von 12 Ticks, ohne Stop-Loss und Standardlimits von 70,30 für die überkauften und überverkauften Trigger verwenden.

1. Januar bt-Ergebnisse mit Standard-RSI-Indikatorstrategie

Die letzte Ausgabezeile fasst die Ergebnisse dieses Backtests zusammen:

/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 (kein) Stop-Loss, (Obere) Obergrenze von 70 (Untere Grenze von 30 .), Nettogewinn (an einem Tag) von $777.78 mit 18 Gewinn-Trades und 7 Verlust-Trades.

Die letzte Zahl ist SQN, eine „System Quality Number“ (SQN), die Händlern dabei helfen soll, die Stärken, Erwünschtheit und Qualität eines Handelssystems zu bestimmen. Eine gute Qualitätsstrategie gilt als handelbar und effizient.*

Die folgenden SQN-Werte legen die folgenden „Qualitäten“ nahe:

  • 1.6–1.9 unterdurchschnittlich
  • 2.0–2.4 Durchschnitt
  • 2.5–2.9 gut
  • 3.0–5.0 Ausgezeichnet
  • 5.1–6.9 Hervorragend
  • 7.0 — Heiliger Gral

Die SQN-Formel:

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

Normalerweise würden wir auf mindestens 30 Trades bestehen, damit diese Kennzahl statistisch signifikant ist, aber wir ignorieren dies vorerst, da wir unseren Backtest mit einem kurzen Zeitraum testen.

Sie können in Abschnitte des Plots hineinzoomen, zum Beispiel:

Hier sehen wir ein Kaufsignal (grüner Aufwärtspfeil), wenn der RSI-Wert unter 30 fällt und dann ein profitables Verkaufssignal und eine Gewinnmarkierung (blauer Kreis), wenn der RSI über 70 steigt. Siehe die Werte für RSI in der rechten unteren Ecke .

Der Gewinn (an einem Tag) von $777.78 mit 18 Gewinn-Trades und 7 Verlust-Trades ist ziemlich gut, insbesondere für einen Handelstag mit relativ geringer Action (+1.42%). Stellen Sie sich vor, was wir an einem bullischen Tag mit hohem Volumen erreichen könnten!

Modellparameter

Sie erhalten run get_data für verschiedene Tage und analysieren diese separat. Beachten Sie, wie sich unterschiedliche RSI-Parameter von einem Tag auf den anderen auf die Rentabilität auswirken.

Ein typisches Beispiel ist der gleiche Tag des BTC-Handels, aber mit einer RSI-Periode von 20 statt 12, einem Gewinn-Verlust von 2/3 und a Nettogewinn von -21.51 $ (einschließlich Handelsgebühren). Das ist ein großer Unterschied zum letzten Backtest!

Sie können auch mit verschiedenen RSI-Limits (außer den standardmäßigen 70/30) und Stop-Loss-Parametern experimentieren. Stop-Loss ist ein automatischer Verkaufsauftrag, sobald der Preis im Verhältnis zum ausgeführten Kaufauftrag unter ein bestimmtes Niveau fällt. Wie der Name schon sagt, kann dies dazu dienen, einen Verlust zu stoppen, nachdem Sie eine Position in Volatilität eingegangen sind.

Stop-Loss

Die Art und Weise, wie wir Stop-Loss hier eingerichtet haben, ist wie folgt:

  • 0 : kein Stop-Loss-Setup, warten Sie, bis der Indikator eine Verkaufsorder auslöst
  • 0.00x : Stop-Loss bei einem %-Wert unter dem Kaufpreis, 0.001 ist 0.1% unter
  • -0.0x : Trailing Stop-Loss folgt dem Trade, wenn der Preis steigt, 0.01 ist ein Trailing Stop-Loss 1% unter dem Kaufpreis

Dieser Stop-Loss ist ein wichtiger Parameter für jeden Trade und kann, nicht überraschend, einen erheblichen Einfluss auf die Performance haben. Weitere Informationen zu Stop-Loss-Strategien finden Sie unter hier.

Hier in unserer backtest.py haben wir dies mit Backtrader eingerichtet:

Hier ist derselbe Lauf, den wir gerade analysiert haben, jedoch mit einem Trailing-Stop-Loss von 0.1%

Nettogewinn von $383.67 mit 12 Siegen und 12 Niederlagen, viel besser als der Verlust, den wir zuvor hatten. Sie können in der Grafik sehen, dass der Trailing Stop-Loss viele der Trades davor schützte, in Verluste abzurutschen, da der Indikator auf ein Verkaufssignal (überkauft) wartet.

Innerhalb eines einzelnen Indikators haben wir in diesem Setup also viele verschiedene mögliche Permutationen:

  • ein Periodenbereich zwischen 10 und 30 Intervallen (20 Varianten)
  • eine Stop-Loss-Einstellung (stellen wir uns 5 verschiedene praktische Varianten vor)
  • eine Schwelle für überkauft/überverkauft (stellen wir uns vorerst 5 Varianten vor)

Das wäre 20x5x5, oder 500 verschiedene Variationen für jeden Tag. Diese einzeln von Hand zu untersuchen, wäre lächerlich und dennoch wollen wir wissen, welche Parameter am profitabelsten und von höchster Handelsqualität waren und welche nicht.

Quanten-Alchemie!

Dies bringt uns zu unserem nächsten Schritt in dieser Crypto Quant-Exploration. Wir können mit Brute-Force die profitabelsten und qualitativ hochwertigsten Handelsstrategieparameter für einen bestimmten Handelszeitraum bestimmen und dann sehen, wie sich diese fortsetzen.

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

Zeitstempel:

Mehr von Medium