Crypto Quant: trading programmatico di BTC utilizzando Binance e Backtrader — Parte 2 di 3 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Crypto Quant: trading programmatico di BTC utilizzando Binance e Backtrader — Parte 2 di 3


Crypto Quant: trading programmatico di BTC utilizzando Binance e Backtrader — Parte 2 di 3 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

In questa parte wVogliamo installare Backtrader e testare alcuni modelli di trading confrontandoli con i dati di Binance che abbiamo raccolto nella sezione precedente.

Ci sono numerosi articoli e video su Backtrader e la sua configurazione. Questa popolare libreria Python facilita il lavoro quantistico di backtesting delle strategie di trading con dati storici, rispondendo alla domanda fondamentale “quanto sarebbe stato redditizio fare trading utilizzando determinate strategie ACQUISTA/VENDI”. All'inizio sembra un'alchimia matematica, ma bisogna ricordare che i dati storici sono, beh, storici! È improbabile che una strategia di trading che ha funzionato ieri funzioni oggi... ma ci torneremo presto.

Le istruzioni per l'installazione di Backtrader ("bt") sono qui. Nota: ci sono problemi noti con le versioni di mapplotlib superiori alla 3.2.0, quindi fai attenzione.

Vale la pena leggere la guida rapida, trovala qui.

RSI

Ciò che proveremo con Backtrader qui è il backtest di un RSI (Indicatore di forza relativa) strategia di trading sui dati storici delle criptovalute (per BTC) dall'inizio dell'anno.

Viene spiegato l'indicatore del momentum RSI qui. Misura le condizioni relative di ipervenduto e ipercomprato per un dato asset di trading e un parametro di "periodo" che è il numero di tick (intervalli di trading) all'indietro.

Il parametro periodo è impostato per impostazione predefinita su 14, quindi se l'intervallo è di minuti la formula includerà 14 intervalli di dati. Come esploreremo in seguito, ogni indicatore tecnico ha parametri che rappresentano il nostro modo di "sintonizzarci" sulle condizioni di mercato; questi parametri hanno un enorme impatto sulla redditività di qualsiasi indicatore all’interno di una strategia.

Backtest.py

La nostra configurazione di backtest: backtest.py è condiviso qui. Ciò fornirà la struttura di backtest per la nostra esecuzione di backtest, che sarà definita in seguito. Questa è una configurazione "bt" abbastanza standard. Rivediamo parte di questo codice, tieni presente che ci sono molti esempi e tutorial video online sul backtest di Python da cui imparare.

Qui nella definizione della classe stabiliamo i parametri per la nostra strategia RSI.

  • verboso: se vogliamo visualizzare i dati di registro durante il backtest
  • maperiod: periodo della media mobile, il numero di tick da considerare
  • quantità: il numero di azioni da acquistare/vendere
  • superiore: la soglia superiore dell'indicatore di ipercomprato
  • inferiore: la soglia inferiore dell'indicatore di ipervenduto
  • stopLoss: l'impostazione dello stop loss per la vendita

Il Il prossimo() La funzione in una classe di strategia Backtrader è ciò che accade dopo ogni "tick" di intervallo di dati. Ecco buy() o sell() in base ai dati, in questo caso l'indicatore RSI e le nostre soglie.

Qui definiamo il test di esecuzione() funzione che verrà chiamata dal nostro codice. La suddetta funzione di strategia RSI viene aggiunta a cervello esempio.

Tutta roba abbastanza standard da Backtrader. Vediamo come confrontarlo con i nostri dati.

Backtesting dei nostri dati

Assicurati di ottenere i dati (utilizzando i passaggi dell'ultima sezione) per il periodo dal 1° gennaio al 2 gennaio 2021, questi saranno in un file denominato: BTCUSDT-20210101–20210102–1 milione.csv con 1440 linee CSV, una per ogni minuto della giornata.

Qui è il codice e l'output per questo giorno di trading minuto per minuto per Bitcoin (BTC):

Dando un'occhiata più da vicino:

I parametri sono semplici, vogliamo analizzare una giornata di trading, utilizzando l'indicatore RSI con un periodo di 12 tick, senza stop-loss e limiti predefiniti di 70,30 per i trigger di ipercomprato e ipervenduto.

Risultati del 1° gennaio con la strategia dell'indicatore RSI standard

L'ultima riga di output riassume i risultati di questo backtest:

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

Periodo RSI 12, 0 (No) stop-loss, limite superiore (U) di 70 limite inferiore (L) di 30, profitto netto (in un giorno) di $777.78 con 18 operazioni vincenti e 7 operazioni perdenti.

L'ultima cifra è SQN, un "Numero di qualità del sistema" (SQN) progettato per assistere i trader nel determinare i punti di forza, l'opportunità e la qualità di un sistema di trading. Una strategia di buona qualità è vista come una strategia commerciabile ed efficiente.*

I seguenti valori SQN suggeriscono le seguenti “qualità”:

  • 1.6–1.9 Sotto la media
  • 2.0–2.4 Media
  • 2.5–2.9 Buono
  • 3.0–5.0 Eccellente
  • 5.1–6.9 Superbo
  • 7.0 — Santo Graal

La formula SQN:

Radice quadrata(Numero di operazioni) * Media(Profitto di operazioni) / DevStd(Profitto di operazioni)

Normalmente insisteremmo su almeno 30 operazioni affinché questo parametro sia statisticamente significativo, ma per ora lo ignoreremo poiché stiamo testando il nostro backtest con un breve periodo di tempo.

Puoi ingrandire sezioni della trama, ad esempio:

Qui vediamo un segnale di acquisto (freccia verde verso l'alto) quando il valore dell'RSI scende sotto 30 e poi un segnale di vendita redditizio e un indicatore di profitto (cerchio blu) quando l'RSI raggiunge sopra 70. Vedi i valori dell'RSI nell'angolo in basso a destra .

Il profitto (in un giorno) di $777.78 con 18 operazioni vincenti e 7 operazioni perdenti è abbastanza buono, soprattutto per una giornata di trading con un'azione relativamente superficiale (+1.42%). Immagina cosa potremmo ottenere in una giornata rialzista con un volume elevato!

Parametri del modello

Esegui get_data per giorni diversi e li analizzi separatamente. Nota come i diversi parametri RSI hanno un impatto sulla redditività da un giorno all'altro.

Caso in questione, lo stesso giorno di negoziazione di BTC ma con un periodo RSI di 20 anziché 12, vincite-perdite di 2/3 e un utile netto di -$21.51 (comprese le commissioni di negoziazione). Questa è una grande differenza rispetto all'ultimo backtest!

Puoi anche sperimentare diversi limiti RSI (diversi dal predefinito 70/30) e parametri di stop-loss. Lo stop loss è un ordine di vendita automatico una volta che il prezzo scende al di sotto di un certo livello rispetto all'ordine di acquisto eseguito. Come suggerisce il nome, questo può servire a “fermare una perdita” dopo essere entrati in una posizione di volatilità.

Stop-Loss

Il modo in cui abbiamo impostato lo stop loss qui è il seguente:

  • 0 : nessuna impostazione stop-loss, attendi che l'indicatore attivi un ordine di vendita
  • 0.00x : stop loss ad un valore% inferiore al prezzo di acquisto, 0.001 è inferiore dello 0.1%.
  • all'0.0 ottobrex: il trailing stop loss seguirà l'operazione man mano che il prezzo sale, 0.01 è un trailing stop loss dell'1% inferiore al prezzo di acquisto

Questo stop loss è un parametro importante per ogni operazione e può avere un impatto significativo, non a caso, sulla performance. Per ulteriori informazioni sulle strategie stop-loss vedere qui.

Qui nel nostro backtest.py è dove lo configuriamo utilizzando backtrader:

Ecco la stessa corsa che abbiamo appena analizzato ma con un trailing stop loss dello 0.1%.

Utile netto di $ 383.67 con 12 vittorie e 12 sconfitte, molto migliore della perdita precedente. Nel grafico puoi vedere che il trailing stop-loss ha protetto molte operazioni dallo scivolare in perdite poiché l'indicatore attende un segnale di vendita (ipercomprato).

All'interno di un singolo indicatore, in questa configurazione quindi, abbiamo molte diverse possibili permutazioni:

  • un periodo compreso tra 10 e 30 intervalli (20 varianti)
  • un'impostazione stop-loss (immaginiamo 5 diverse varianti pratiche)
  • una soglia di ipercomprato/ipervenduto (immaginiamo per ora 5 varianti)

Sarebbe 20x5x5 o 500 varianti diverse per ogni giorno. Esaminarli manualmente uno per uno sarebbe ridicolo, eppure vogliamo sapere quali parametri sono stati più redditizi e di altissima qualità commerciale e quali no.

Alchimia quantistica!

Questo ci porta al passo successivo in questa esplorazione di Crypto Quant. Possiamo determinare con la forza bruta i parametri della strategia di trading più redditizi e di massima qualità per un dato periodo di trading e poi vedere come questi vengono portati avanti.

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

Timestamp:

Di più da Medio