Cos’è il backtesting? Come eseguire il backtest di una strategia di crypto trading

>

Introduzione al backtesting

Il backtesting è una simulazione matematica utilizzata dai trader per valutare le prestazioni di una strategia di trading. La simulazione sfrutta i dati storici di mercato nel tentativo di calcolare quanto sarebbe andata bene una strategia di trading in passato.

Fondamentalmente, il backtesting è un modo per i trader di provare a prevedere se una strategia sarà redditizia o meno se implementata con capitale reale. I trader utilizzano il backtesting per filtrare qualsiasi strategia che non sia stata storicamente redditizia.

Sebbene la performance storica non garantisca risultati futuri, il backtesting è ancora il modo più affidabile per identificare strategie solide. È necessario studiare queste simulazioni per filtrare le strategie che hanno chiaramente prestazioni inferiori. In questo modo abbiamo le migliori possibilità di fare soldi e non abbiamo bisogno di testare strategie con fondi reali.

Poiché gli strumenti di trading di criptovaluta sono diventati più popolari, anche il backtesting. Oggi, si consiglia ai trader di testare a fondo ogni strategia prima di rilasciarla nel selvaggio mercato delle criptovalute. In questo modo possiamo acquisire fiducia che la strategia abbia il potenziale per funzionare in modo ottimale.

Uno studio di backtest per il riequilibrio

Questo studio valuta l’efficacia di varie strategie di ribilanciamento per determinare le migliori configurazioni storiche.

Requisiti dei dati per il backtest

Prima di poter iniziare le strategie di backtest, dobbiamo comprendere i diversi tipi di dati che gli sviluppatori utilizzano per creare strumenti di backtest e come ciascuno di essi rappresenta il mercato reale.

Candlestick Data

Il modo più comune per implementare uno strumento di backtesting è che gli sviluppatori utilizzino i dati delle candele OHLCV. Il motivo per cui la maggior parte degli sviluppatori utilizza questi dati è perché sono prontamente disponibili.


Sfortunatamente, sebbene siano i dati più facili a cui accedere per la creazione di questi strumenti, sono i dati più inaffidabili. In effetti, l’utilizzo dei dati delle candele OHLCV per eseguire test retrospettivi può fare la differenza tra la costruzione di una strategia redditizia e la perdita di denaro.

La situazione peggiora ancora quando i trader utilizzano dati aggregati sulle candele da fonti come CoinMarketCap. I dati aggregati non sono una rappresentazione valida degli ordini effettivi che erano disponibili su una borsa specifica in quel momento.

Non utilizzare i dati delle candele per creare strumenti di backtest.

Dati commerciali tick-by-tick

I dati commerciali tick-by-tick possono essere una componente utile per gli strumenti di backtest storici. Le operazioni in tick individuali sono le transazioni esatte che sono state eseguite su una borsa in ogni momento. Queste singole operazioni rappresentano ordini reali che sono stati eseguiti, quindi sappiamo per certo che deve esserci stato un ordine aperto disponibile a quel prezzo in borsa.

Sebbene i dati sul commercio di tick possano essere un aspetto potente dei servizi di backtesting, saranno comunque solo leggermente più accurati dei dati delle candele OHLCV. I singoli punti di dati della transazione non forniscono informazioni sullo stato del portafoglio ordini al momento della transazione. Di conseguenza, gli sviluppatori non possono valutare con precisione quali ordini sarebbero stati disponibili sulla borsa nel momento esatto in cui viene eseguita un’operazione simulata.

L’uso di dati commerciali tick-by-tick per strumenti di backtest è sconsigliato.

Order Book Snapshot Data

L’ultimo tipo di dati comune negli strumenti di backtest sono gli snapshot del registro degli ordini. Le istantanee del registro ordini forniscono lo stato esatto di un mercato al momento dell’istantanea. L’intenzione è di avere una rappresentazione completa di quali ordini erano disponibili in borsa in un determinato momento.

Quando si creano strumenti di backtest, questo è il tipo di dati più potente da utilizzare. Poiché i dati includono gli ordini precisi che erano disponibili al momento della simulazione di un’operazione, possiamo calcolare le operazioni esatte che potremmo eseguire e il prezzo di ciascuna di queste operazioni.

Le istantanee del registro ordini consentono agli sviluppatori di simulare l’impatto dello spread denaro-lettera, dello slippage e della liquidità.

Le istantanee del registro ordini sono altamente consigliate come tipo di dati per gli strumenti di backtest.

Origine dei dati

La fonte principale per i dati del libro degli ordini è ogni singolo scambio crittografico stesso. Nella maggior parte dei casi, questi dati vengono trasmessi in streaming dal vivo attraverso i websocket di uno scambio. Tuttavia, a causa dell’enorme volume di dati, gli scambi generalmente non memorizzano questi dati a lungo termine. Ciò significa che una volta che i dati vengono inviati tramite un websocket di scambio, sono persi per sempre.

A meno che, ovviamente, qualcuno raccolga i dati dallo scambio e li renda disponibili tramite un servizio di terze parti. È qui che entrano in gioco i fornitori di dati. I fornitori di dati sono essenzialmente aziende che aggregano i dati in ogni scambio e li archiviano in modo che altre persone possano accedervi in ​​un secondo momento.

I fornitori di dati per le istantanee storiche del registro degli ordini sono pochi e rari. A causa della disponibilità limitata di questi dati, gli sviluppatori hanno fatto ricorso a set di dati alternativi, come le candele OHCLV, che possono causare imprecisioni per i test retrospettivi. Di conseguenza, la maggior parte degli strumenti di backtesting oggi disponibili sul mercato travisano le prestazioni delle strategie.

Dopo una recente collaborazione tra Gamberetti e Kaiko, Shrimpy è ora in grado di offrire un catalogo storico completo di istantanee del registro ordini in tutte le principali borse. Risalente al 2014, Kaiko ha raccolto meticolosamente dati commerciali tick-by-tick, istantanee del book degli ordini e candelabri OHLCV.

Gli sviluppatori possono accedere a questi dati tramite API per sviluppatori gamberetti. Utilizzando il semplice modello di determinazione dei prezzi su richiesta, i clienti possono eseguire query per istantanee in diversi intervalli di tempo, coppie di scambi e scambi.

Kaiko fornisce i dati più precisi sul mercato. Ora, ogni sviluppatore può accedere ai dati di Kaiko per simulare accuratamente i test retrospettivi tramite le API di Shrimpy.

Script Python per libri di ordine storico

Il API per sviluppatori gamberetti fornire accesso ai registri storici degli ordini di scambio. Le istantanee di ogni portafoglio ordini vengono acquisite a intervalli di 1 minuto. Usando il Libreria Shrimpy Python, forniremo esempi di come gli sviluppatori possono accedere ai dati storici con solo poche righe di codice.

Simulare un backtest

Figura 1: un portafoglio ordini di esempio per la coppia di trading ENJ-USDT.

Per calcolare con precisione le prestazioni di una strategia, un backtest richiede i numeri più esatti possibili. Alcuni fattori che devono essere considerati durante un backtest includono:

  • La commissione di negoziazione della borsa

  • Lo spread denaro-lettera per la coppia di scambio

  • Slittamento del mercato sul portafoglio ordini

  • Tempistica per ogni singola operazione

Quando si simula l’acquisto di un asset, dobbiamo utilizzare il prezzo richiesto sul book di negoziazione. Se sei in borsa, il miglior prezzo richiesto è il prezzo più basso che chiunque in borsa è disposto a vendere l’asset. Non dimenticare di tenere in considerazione anche la commissione di negoziazione e lo slippage.

Usando il book degli ordini nella Figura 1 come esempio, immaginiamo di voler acquistare 1.500 USDT di ENJ. Per il bene di questo esempio, supponiamo che questo portafoglio ordini sia per Binance, che ha una commissione di trading base dello 0,1%.

Potremmo simulare l’acquisto di 1.500 USDT di ENJ aumentando in modo incrementale il prezzo dell’ordine rispetto al portafoglio ordini fino a quando non avremo acquistato l’importo desiderato di 1.500 USDT di ENJ. Le operazioni consecutive che eseguiremmo includono quanto segue:

  1. Acquista 1151.74904126 ENJ a 0.20559424 USDT ciascuno = 236,97296881 USDT + 0,2369729 USDT di commissioni (1262,79005829 USDT a sinistra)

  2. Acquista 2559,954 ENJ a 0,20640294 USDT ciascuno = 528,38203186 USDT + 0,52838203 USDT di commissioni (733,8796444 USDT a sinistra)

  3. Acquista 1992.51418976 ENJ a 0.20659518 USDT ciascuno = 411,64382769 USDT + 0,41164382 USDT di commissioni (321,82417288 USDT a sinistra)

  4. Acquista 1555.85587451 ENJ a 0.20663894 USDT ciascuno = 321,50267164 USDT + 0,32150267 USDT di commissioni (0 USDT rimanenti)

Si noti che erano rimasti alcuni avanzi nel portafoglio ordini che non abbiamo potuto acquistare al prezzo di 0,20663894. L’importo che non abbiamo acquistato sarebbe rimasto in borsa per un altro operatore di mercato da prendere.

In totale, abbiamo comprato esattamente 7260.08410553 ENJ dopo che tutte le operazioni sono state completate. Se avessimo usato solo i dati delle candele OHLCV, la nostra stima sarebbe stata probabilmente lontana 7319.76112984. Questa è quasi una differenza 60 ENJ o quasi l’1%. Potrebbe non sembrare molto, ma questa piccola percentuale aumenta incredibilmente rapidamente se stiamo simulando centinaia o migliaia di scambi.

Una volta completata la simulazione del commercio, registra i risultati dell’ordine in modo da poter utilizzare quei fondi per scambiare con un altro asset più avanti nel backtest. Usando questo registro dettagliato del commercio, possiamo tenere registri meticolosi di ogni scambio effettuato durante il backtest. Questi registri possono essere utilizzati per calcolare statistiche aggiuntive come il volume degli scambi che eseguiamo, il numero di operazioni che abbiamo eseguito e la frequenza di acquisto o vendita di un particolare asset.

Risultati delle prestazioni

Calcolare la performance di una strategia è semplice. Tutto quello che dobbiamo fare è calcolare il valore del nostro portafoglio all’inizio del backtest e confrontarlo con il valore del nostro portafoglio alla fine del backtest.

Il valore di un portafoglio viene calcolato moltiplicando l’importo di ogni asset che deteniamo per il prezzo di quell’asset e sommando i valori di tutti gli asset nel portafoglio.

Facendo questo calcolo all’inizio del backtest e ancora una volta alla fine del backtest, possiamo ottenere la variazione di valore per il nostro portafoglio nel corso del backtest.

Il calcolo delle prestazioni può quindi essere eseguito utilizzando l’equazione:

Prestazioni = [(Vf – Vi) / Vi] x 100

Dove,

  • Vf è il valore finale del portafoglio

  • Vi è il valore iniziale del portafoglio

  • Moltiplica per 100 per convertire da un decimale a una percentuale

Si noti che lo scopo di un backtest non è solo quello di ottimizzare le prestazioni. In sostanza, solo perché una strategia specifica funziona bene nelle condizioni di backtest, ciò non significa automaticamente che sia una buona strategia. Dobbiamo anche considerare la coerenza e la solidità della strategia.

Consistenza del backtest – La capacità di produrre risultati simili in periodi storici diversi e condizioni di mercato variabili.

Backtest Robustness – La capacità di produrre risultati simili anche quando vengono apportate piccole modifiche ai parametri della strategia.

Una strategia priva di robustezza può vedere grandi oscillazioni delle prestazioni quando vengono apportate anche le più piccole modifiche ai parametri di una strategia. Allo stesso modo, una strategia che non è coerente produrrà probabilmente risultati molto diversi quando si testano periodi storici diversi.

Nel caso ideale, vogliamo utilizzare una strategia che può essere testata a ritroso su qualsiasi periodo di tempo storico e produrre risultati simili. Allo stesso modo, le prestazioni della nostra strategia non dovrebbero subire grandi oscillazioni quando vengono apportate piccole modifiche alla strategia.

Strategie prive di coerenza o robustezza possono portare a prestazioni future ampiamente imprevedibili. Se il backtesting di una varietà di periodi storici e configurazioni per la nostra strategia produce risultati ampiamente variabili, potrebbe indicare che la nostra strategia è imprevedibile. In tal caso, selezionare solo una singola configurazione o un periodo di backtest da valutare sarebbe essenzialmente un adattamento eccessivo della strategia a una situazione particolare. I risultati di un backtest overfit non sarebbero una rappresentazione generale della strategia.

Un esempio di strategia coerente che abbiamo trovato è il riequilibrio. Nella stragrande maggioranza dei casi, il ribilanciamento ha sovraperformato l’hodling. Anche quando abbiamo regolato il periodo di ribilanciamento da 1 ora a 1 giorno a 1 mese.

Backtest bandiere rosse

A causa della natura tecnica del backtest, a volte è difficile identificare se un backtest è affidabile. I seguenti elementi con bandiera rossa ti aiuteranno a identificare se i risultati di un backtest sono ragionevoli. Questo non è un elenco completo, ma alcuni dei casi più comuni.

  1. Le prestazioni aumentano dopo ogni scambio. Se la performance aumenta costantemente, specialmente dopo ogni scambio, ciò può indicare che c’è un errore di calcolo nella logica di trading.

  2. Crescita esponenziale costante dei fondi. Quando i risultati delle prestazioni di un backtest crescono in modo esponenziale nel tempo, questo può spesso essere il risultato dell’utilizzo delle candele OHLCV per le simulazioni commerciali o indica un errore di calcolo che è una percentuale di sconto.

  3. Le strategie di trading ad alta frequenza non diminuiscono di valore. In generale, una strategia che negozia un importo significativo perderà valore a causa delle commissioni di negoziazione. Se una strategia di trading ad alta frequenza non perde valore, il backtest potrebbe non prendere in considerazione le commissioni di cambio.

  4. I mercati a bassa liquidità si comportano come i mercati ad alta liquidità. Un modo semplice per rilevare se uno strumento di backtesting utilizza dati candlestick OHLCV o dati aggregati è eseguire la strategia su un mercato a bassa liquidità che in genere ha un ampio spread. Il trading ad alta frequenza su un mercato a bassa liquidità dovrebbe comportare ingenti perdite di portafoglio.

  5. La modifica degli scambi non influisce sui risultati. Ogni borsa ha diverse commissioni di liquidità e di negoziazione. Quando esegui il test retrospettivo su diverse piattaforme, dovresti ottenere risultati diversi. Se ottieni gli stessi risultati su diverse borse, ciò suggerisce che lo strumento di backtesting utilizza dati aggregati e non utilizza la commissione di negoziazione corretta per ogni singola borsa.

Prima di accettare i risultati di un backtest al valore nominale, utilizzare queste bandiere rosse per identificare i problemi con le operazioni simulate.

Conclusioni

Ci sono stati alcuni temi principali in questo articolo. In primo luogo, abbiamo dimostrato quanto possa essere difficile costruire uno strumento di backtesting robusto. Tuttavia, allo stesso tempo, siamo stati in grado di illustrare l’importanza del test retrospettivo di una strategia prima di implementarla dal vivo.

Il primo passo per costruire una strategia di backtest è sempre stato quello di disporre di dati di alta qualità. Senza dati del book degli ordini di alta qualità, i risultati saranno altamente imprecisi. In definitiva, prendere decisioni basate su strumenti di backtesting difettosi può essere costoso. Può farci avere aspettative non realistiche per una strategia che erode il nostro portafoglio.

Quando crei uno strumento di backtesting, non dimenticare di simulare commissioni di trading, slippage e spread bid-ask. Ciascuno di questi aspetti di un backtest può fare una grande differenza. La rimozione anche di uno solo di questi componenti dal backtest può fare la differenza tra una strategia redditizia e non redditizia.

Infine, prima di implementare una strategia basata su backtest, continua a testare. Quando pensi di aver terminato il test, riprova. Invece di 100 test, esegui 100.000 test. Il backtesting è il modo migliore per comprendere il comportamento di una strategia. Prova a formulare nuove ipotesi per le strategie e a testare quelle ipotesi per identificare nuove strategie. Continua il ciclo di sperimentazione finché non trovi le strategie che funzionano per te.

COPIA I MIGLIORI TRADER DEL MONDO

Attualmente ci sono migliaia di trader attivi che gestiscono il proprio portafoglio su Binance. Questi trader sono alcuni dei trader più avanzati del settore.

Buone letture aggiuntive

Come creare un bot di Crypto Trading usando Python

Guida ai prestiti crittografici – I migliori prestatori a confronto

Script per Bitcoin Price Live Ticker (utilizzando Websocket)

Ribilanciamento della soglia per la gestione del portafoglio crittografico

Cos’è la DeFi? Guida alla finanza decentralizzata

La nostra piattaforma di social trading

Gamberetti è una piattaforma di social trading per criptovaluta. È progettato sia per i trader professionisti che per i principianti per venire a conoscere il settore in crescita delle criptovalute. Su Shrimpy, gli utenti possono copiare i portafogli e le strategie di trading di altri trader.

Seguici su Twitter e Facebook per gli aggiornamenti e per qualsiasi domanda alle nostre fantastiche e attive community su Telegramma & Discordia.

Grazie per esserti fermato!

Il team di gamberetti

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me