Questo articolo introduce una suite di backtesting per il nostro Strumento da banco. Workbench consente agli utenti di confrontare rapidamente le metriche esistenti, applicare formule e derivare nuove metriche personalizzate. Dimostreremo come definire le strategie di trading all'interno di Workbench e come eseguire una simulazione di tali strategie di trading autodefinite su dati storici.
Introduzione
Nella sua definizione più ristretta, un backtest è una simulazione storica di come si sarebbe comportata una strategia di investimento se fosse stata eseguita in un periodo passato. Una strategia è un insieme di regole che specificano quando un asset deve essere acquistato e venduto. Un modo pratico di rappresentare una strategia di investimento è in termini di un cosiddetto segnale di trading. Un segnale di trading è una funzione del tempo con valori reali, che restituisce valori nell'intervallo [0, 1] o, equivalentemente, 0-100%. Il segnale di trading determina quanto del portafoglio di trading dovrebbe essere investito nell'asset sottostante per ogni istanza di tempo. Ad esempio, la strategia HODL è rappresentata con un segnale costante pari a 1; deteniamo nel tempo il 100% del nostro capitale di investimento in bitcoin. Per i trader esperti, una posizione corta di un asset è rappresentata da un segnale di trading negativo: un segnale di -1 equivale a una posizione corta con una dimensione del 100% del portafoglio di investimenti. Includendo le posizioni corte, l'intervallo valido per il segnale di trading si estende a [-1, 1].
Dovrebbe essere chiaro, tuttavia, che un backtest non coinciderà mai con l'andamento dal vivo di una strategia di trading. La più grande trappola durante il backtesting è l'overfitting del backtest. L'ottimizzazione dei parametri di una strategia verso la migliore performance storica (in-sample) ridurrà probabilmente la generalità della strategia e quindi diminuirà la performance futura (out-of-sample). Ma molte difficoltà rimangono anche quando si tiene conto dell'overfitting del backtest (per quanto possibile). Luo et al. offrono un riepilogo degli errori comuni di backtesting nel loro articolo "Seven Sins of Quantitative Investing" (Luo et al. [2014]). Il backtesting non è uno strumento di ricerca e non è adatto per ricavare strategie di trading. Serve semplicemente come ultimo passaggio all'interno di un processo di ricerca per testare e potenzialmente invalidare un'ipotesi di investimento.
Guarda il backtesting in azione attraverso la guida video
La suite di test retrospettivi
Prima di esaminare alcuni esempi concreti, discutiamo lo schema generale della definizione delle strategie di trading e della loro simulazione nel passato. Esecuzione di un backtest in banco di lavoro segue sempre la stessa procedura:
- La strategia di trading deve essere tradotta in un segnale di trading che assegna un valore compreso tra zero e uno a ciascun momento. Abbreviamo il segnale di trading con
f1
. - Chiama il nuovo Workbench
backtest
funzione:
backtest(m1, f1, since, initial_capital_usd, rel_trading_costs)
Analizziamo cosa rappresenta ogni argomento:
m1
: la serie di prezzi (es. BTC) che vuoi negoziare.f1
: il segnale di trading dal primo passaggio.since
: un timestamp che indica la data di inizio della tua simulazione di trading, ad es."2020-01-01"
initial_capital_usd
: quanti soldi (USD) assegni alla tua strategia per il trading, ad es.1000
(DOLLARO STATUNITENSE). Nel tempo, nessun capitale aggiuntivo entra o esce dal portafoglio di trading simulato. Ciò è in contrasto, ad esempio, con una strategia di media del costo in dollari. Invece, la simulazione di trading varierà l'esposizione all'asset scambiato nel tempo, a seconda del segnale di trading.rel_trading_costs
: un'approssimazione dei relativi costi di negoziazione attesi, che consistono in commissioni di cambio e slippage. Un valore di, ad esempio,0.001
si riferisce ai costi di negoziazione pari allo 0.1% del volume di ciascuna operazione.
I backtest
La funzione genera una cosiddetta curva del valore patrimoniale netto (NAV). Questo rappresenta il valore del tuo portafoglio nel tempo (in USD). Il tuo portafoglio è sempre composto da una combinazione di USD e BTC. Il segnale di trading determina quale frazione del portafoglio è investita in BTC e il resto (un segnale di trading meno) rappresenta la componente USD del tuo portafoglio. Il NAV, invece, rappresenta sempre l'intero valore del portafoglio denominato in USD.
Per gli esperti: sotto il cofano, il backtest
funzione moltiplica il segnale di trading del giorno precedente per il rendimento (giornaliero) del sottostante (m1
, ad es. BTC) per ogni giorno tenendo conto dei costi di negoziazione sui cambiamenti del segnale. La serie di rendimenti risultante viene quindi aggregata e rettificata per l'investimento iniziale e la data di inizio della simulazione.
Esempi
Nel resto di questo documento, ti guideremo attraverso alcuni esempi giocattolo di definizione delle strategie di trading ed esecuzione dei corrispondenti backtest. In particolare, inizieremo con la strategia più fondamentale: comprare e tenere. Successivamente, esaminiamo un indicatore tecnico standard, il semplice crossover della media mobile. Infine, ci tufferemo in un esempio più interessante; testeremo un'ipotesi di trading basata sulla metrica on-chain SOPR.
Esempio 0: HODL
Inizieremo con la strategia di trading più basilare e giustamente più popolare per Bitcoin: hodling. Immagina di avere una somma forfettaria di denaro che volevi investire in bitcoin. Il modo più semplice è acquistare bitcoin e non vendere mai. Questo servirà come base per il confronto con altre strategie. Di seguito, adotteremo questa strategia di investimento di base come primo esempio di creazione di un backtest in Workbench.
Abbiamo preparato un file Preimpostazione banco da lavoro che costituisce per te il segnale di trading della strategia HODL e il backtest.
Lì, abbiamo definito la strategia di trading Segnale HODL nella formula f1
as m1/m1
, Dove m1
è il prezzo di BTC. Pertanto, il segnale di trading è costante nel tempo. Quando definisci il segnale, non devi preoccuparti della data di inizio della tua simulazione; questo arriva nel passaggio successivo.
Formula f2
che è etichettato come Test retrospettivo HODL [USD] contiene la chiamata alla funzione backtest:
backtest(m1, f1, "2020-01-01", 1000, 0.001)
I parametri di cui sopra definiscono la simulazione di backtest da adottare m1
come attività di trading sottostante (BTC) e f1
come segnale di trading, a partire da "2020-01-01"
con un valore iniziale del portafoglio di $ 1000 e costi di negoziazione dello 0.1%. Questo finalizza il nostro primo backtest! Di seguito è riportato un grafico con la curva NAV risultante della strategia (etichettata come Test retrospettivo HODL [USD]) e il segnale di trading costante Segnale HODL. Puoi leggere il rendimento totale del tuo investimento confrontando il valore del grafico NAV all'ultima data con la data di inizio.
Per ricapitolare: abbiamo simulato l'acquisto di $ 1000 di BTC il 1° gennaio 2020, con successive lancette di diamanti che hanno mantenuto fino ad oggi.
Esempio 1: Incrocio di media mobile semplice
Sei qui per conoscere il backtesting. Pertanto, c'è una buona possibilità che tu voglia indagare sulle strategie di trading oltre l'hodling. Strategie che costituiscono un modo sistematico di acquistare e vendere un bene. Andiamo al punto.
Il cross-over della media mobile semplice (SMA) è il nostro primo esempio di strategia di trading sistematica. Questo popolare indicatore di tendenza è costituito da due SMA con periodi diversi (ad esempio, 20 giorni e 50 giorni). La motivazione è la seguente: quando il prezzo è in un trend rialzista, lo saranno anche gli SMA del prezzo per tutti i periodi. Per costruzione, tuttavia, la SMA con un periodo più breve reagisce più rapidamente a un trend rialzista emergente rispetto alla SMA con un periodo più lungo. Questo ci porta al nostro insieme di regole di trading:
- Ogni volta che la SMA più breve è al di sopra della SMA più lunga, affermiamo di essere in un trend rialzista e acquistiamo e deteniamo bitcoin, ovvero il segnale di trading è all'uno o al 100%.
- Altrimenti (la SMA più corta è inferiore alla SMA più lunga), vendi bitcoin e detieni contanti. Il segnale di trading corrispondente è zero.
A puro scopo illustrativo, esaminiamo rapidamente uno pseudo-codice in stile Python per formalizzare queste regole di trading:
# SMA cross-over trading rules:
if sma20 > sma50: signal = 1
else: signal = 0
Se sei più visivo, ecco un grafico del prezzo BTC (barre) e le due medie mobili semplici (SMA20 e SMA50). Il nostro insieme di regole di trading determina il colore delle barre dei prezzi. Quando il segnale di trading è uno, il colore è verde; quando il segnale è zero, il colore è rosso.
Ora che le regole di trading del cross-over SMA sono state stabilite, siamo pronti a eseguirne il backtest! Questo preset Workbench espande l'esempio precedente. Useremo il banco da lavoro if
condizionale (cfr Guida al banco da lavoro per dettagli). In linea con le regole di trading precedentemente definite, definiamo il segnale di trading f3
come:
if(sma(m1, 20), ">", sma(m1, 50), 1, 0)
Ora che abbiamo svolto il lavoro pesante definendo il segnale di trading, eseguire un backtest sulla strategia di trading cross-over SMA è semplice. Questo passaggio è identico alla creazione del backtest della strategia di hodling; passiamo solo un segnale diverso. Definiamo il backtest (nel nostro esempio, è formula f4
) attraverso:
backtest(m1, f3, "2020-01-01", 1000, 0.001)
Questo produce direttamente la curva NAV della strategia di trading cross-over SMA, etichettata in Preimpostazione banco da lavoro as Backtest incrociato SMA (curva blu). Il precedentemente introdotto Retrotest HODL è incluso nel colore rosso per il confronto.
Esempio 2: un'ipotesi di trading on-chain basata su SOPR
Il cross-over della media mobile semplice utilizza il prezzo come unica metrica di input. Date solo queste informazioni di base, svolge un lavoro ragionevole nell'identificare le tendenze. Tuttavia, il libro mastro pubblico di Bitcoin offre informazioni molto più approfondite sul comportamento degli investitori rispetto al solo prezzo. Il rapporto di profitto dell'output speso (SOPR), ad esempio, viene calcolato dividendo il valore realizzato (in USD) diviso per il valore alla creazione (USD) di un output speso. O semplicemente: prezzo venduto / prezzo pagato. Il suo valore ci informa se l'investitore medio vende con un profitto (SOPR > 1) o una perdita (SOPR < 1). Si potrebbe dedurre che un ambiente in cui l'investitore medio vende con profitto è preferibile per detenere bitcoin rispetto a quando l'investitore medio vende in perdita. Pertanto, definiamo l'ipotesi di trading basata su SOPR (in pseudo-codice in stile Python per l'illustrazione) come:
# SOPR-based trading rules:
if sopr > 1: signal = 1
else: signal = 0
Diamo un'occhiata a un backtest. Abbiamo preparato un Preimpostazione banco da lavoro per te con tutti gli ingredienti. Il segnale SOPR è piuttosto rumoroso; quindi, lo appianiamo con una media mobile esponenziale (EMA). È caricato come m2
nella preselezione. In analogia con l'esempio precedente, stiamo adottando il if
condizione per formalizzare le regole commerciali SOPR nella sintassi di Workbench:
if(m2, ">", 1, 1, 0)
Questo è il nostro segnale di trading f3
. Vogliamo essere long bitcoin (segnale uno) quando SOPR (m2
) è maggiore di uno e altrimenti zero. Per eseguire il backtest con il segnale di trading SOPR appena definito, abbiamo definito la formula f5
in esatta analogia con gli esempi precedenti:
backtest(m1, f3, "2020-01-01", 1000, 0.001)
Questo genererà direttamente la curva NAV del backtest, etichettata come Retrotest SOPR [USD] nella tabella sottostante.
Esempio 3: combinazione di diverse strategie di trading
Abbiamo ora esplorato due strategie di trading oltre il puro hodling: il cross-over SMA e una strategia basata sulla metrica on-chain SOPR. Come ultimo esempio di creazione di un backtest, esaminiamo come combinare diversi componenti della strategia di trading in un'unica strategia globale. Con più strategie, si potrebbe immaginare di suddividere il portafoglio in diverse frazioni e scambiare quelle con strategie diverse in modo indipendente. In alternativa, è possibile combinare in anticipo le strategie basate sui singoli segnali di trading e quindi scambiare il segnale di trading combinato per l'intero portafoglio. In questo modo, si possono salvare le operazioni quando le diverse componenti si contraddicono a vicenda. Non ci sono limiti su come combinare diversi segnali di trading. Il modo più semplice, tuttavia, è calcolarne la media. Proviamo questo. Nel Esempio 3 Preimpostazione Workbench, abbiamo definito il segnale di crossover SMA come f2
e il segnale di trading SOPR come f3
; quindi, possiamo eseguire un backtest combinato con:
backtest(m1, (f2+f3)/2, "2020-01-01", 1000, 0.001)
Nota come facciamo la media dei due singoli segnali di trading come input per questo backtest.
Di seguito, tracciamo i due singoli backtest di SMA cross-over e SOPR, etichettati come Backtest incrociato SMA [USD] ed Retrotest SOPR [USD], rispettivamente, insieme al backtest combinato. Nota come le barre del segnale Segnale di strategia combinata ora assume non solo i valori 0 e 1 ma 0.5 nei casi in cui i segnali delle due componenti della strategia non coincidono.
Qual è il prossimo passo?
Questo copre le basi della nuova funzionalità di backtesting in Workbench. Puoi farti conoscere e provare le tue idee. Puoi includere segnali brevi nella tua strategia se sei un trader avanzato.
Il backtesting non si esaurisce con la creazione di una curva NAV. Il NAV offre una panoramica di come un investimento si sarebbe comportato nel tempo. Ma non tiene conto del rischio di una strategia, né è possibile leggere direttamente la performance relativa su periodi diversi. Pertanto, introduciamo il seguente insieme di funzioni complementari, che ti permetteranno di ottenere una comprensione più profonda delle prestazioni del tuo backtest e ti permetteranno di confrontare quantitativamente diversi backtest:
drawdown(m1)
Questa funzione prende un risultato di backtest, o qualsiasi serie storica, come input e restituisce il drawdown relativo dal massimo storico per ogni punto nel tempo. Questo è analogo al Bitcoin: abbassamento del prezzo da ATH metrico.mean_return(m1, period)
Il rendimento medio mobile annualizzato di una serie temporale in un dato periodo (in giorni).realized_vol(m1, period)
La volatilità realizzata rolling annualizzata di una serie temporale in un dato periodo (in giorni). Guarda anche Volatilità realizzata annualizzata.sharpe_ratio(m1, period)
L'indice di Sharpe mobile annualizzato è il rapporto tra il rendimento medio mobile annualizzato e la volatilità realizzata mobile annualizzata. È uno dei metodi più utilizzati per misurare i rendimenti relativi aggiustati per il rischio.
Si noti che tutte le funzioni della suite di backtesting sono descritte nel Guida al banco da lavoro, pure. In questo preset Workbench, mostriamo il drawdown
ed realized_vol
funzioni. Confrontiamo la profondità dei drawdown dalla strategia HODL (esempio 0) alla strategia SOPR (esempio 2). Inoltre, confrontiamo la volatilità realizzata annualizzata delle due strategie. Troviamo che la strategia SOPR ha ridotto significativamente i prelievi rispetto a un semplice investimento HODL e anche la volatilità realizzata è notevolmente ridotta su base annuale.
Disclaimer: Il contenuto di questo articolo e le funzioni di backtest introdotte sono solo a scopo informativo, non è necessario interpretare tali informazioni o altro materiale come consulenza legale, fiscale, di investimento, finanziaria o di altro tipo. La performance passata è fittizia, solo a scopo illustrativo e non indica alcuna performance futura.
Le funzioni e le caratteristiche introdotte sono in uno stato di versione beta gratuita e sono soggette a modifiche.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://insights.glassnode.com/backtesting-in-workbench/
- :È
- $1000
- 1
- 2014
- 2020
- 7
- a
- Chi siamo
- sopra
- Il mio account
- Contabilità
- Action
- aggiuntivo
- Rettificato
- adottare
- Adottando
- Avanzate
- consigli
- Dopo shavasana, sedersi in silenzio; saluti;
- AL
- Tutti
- da solo
- sempre
- ed
- annualizzato
- APPLICA
- SONO
- argomento
- articolo
- AS
- attività
- At
- media
- media
- Backtest
- Backtesting
- bar
- basato
- Linea di base
- basic
- Nozioni di base
- base
- BE
- sotto
- MIGLIORE
- beta
- Versione beta
- fra
- Al di là di
- Maggiore
- Bitcoin
- Blu
- comprato
- Rompere
- Porta
- BTC
- prezzo BTC
- Bullish
- Acquistare
- Comprare bitcoin
- Acquisto
- by
- chiamata
- Materiale
- capitale
- casi
- Contanti
- possibilità
- il cambiamento
- Modifiche
- Grafico
- colore
- combinare
- combinato
- combinando
- Uncommon
- confrontare
- rispetto
- confronto
- confronto
- componente
- componenti
- condizione
- costante
- costituire
- costruzione
- contiene
- contenuto
- contrasto
- Corrispondente
- Costo
- Costi
- potuto
- Copertine
- Creazione
- creazione
- curva
- costume
- alle lezioni
- dati
- Data
- giorno
- Giorni
- diminuire
- più profondo
- definito
- definizione
- dimostrare
- Denominato
- Dipendente
- profondità
- descritta
- dettagli
- determina
- dettami
- diverso
- le difficoltà
- direttamente
- discutere
- Diviso
- documento
- non
- Dollaro
- Dont
- giù
- e
- ogni
- EMA
- incorporato
- emergenti del mondo
- Intero
- Ambiente
- Equivale
- Anche
- esempio
- Esempi
- exchange
- esistente
- espande
- previsto
- esperti
- Esplorazione
- esponenziale
- media mobile esponenziale
- Esposizione
- f1
- fiera
- familiare
- Caratteristiche
- Costi
- pochi
- immaginario
- Infine
- finanziario
- Trovare
- Nome
- flussi
- i seguenti
- segue
- Nel
- formula
- frazione
- Gratis
- da
- function
- funzionalità
- funzioni
- fondamentale
- futuro
- Generale
- generare
- genera
- ottenere
- dato
- in Glassno
- Green
- Avere
- pesante
- sollevamento pesante
- qui
- Alta
- vivamente
- storico
- HODL
- hodling
- tenere
- possesso
- cappuccio
- Come
- Tutorial
- Tuttavia
- HTTPS
- i
- idee
- identico
- identificazione
- in
- includere
- incluso
- Compreso
- indipendentemente
- indicazione
- individuale
- informazioni
- Informativo
- inizialmente
- ingresso
- intuizioni
- esempio
- invece
- interessante
- introdurre
- introdotto
- Introduce
- Introduzione
- Investire
- investito
- indagare
- investimento
- portafoglio di investimenti
- Strategia di investimento
- investitore
- IT
- SUO
- Gennaio
- Lavoro
- superiore, se assunto singolarmente.
- Cognome
- con i più recenti
- IMPARARE
- Ledger
- Legale
- Consente di
- di sollevamento
- probabile
- limiti
- linea
- vivere
- Lunghi
- più a lungo
- Guarda
- cerca
- spento
- M2
- make
- molti
- materiale
- di misura
- semplicemente
- metodi
- metrico
- Metrica
- forza
- errori
- miscela
- soldi
- Scopri di più
- Inoltre
- maggior parte
- Più popolare
- Motivazione
- in movimento
- media mobile
- medie mobili
- multiplo
- nav
- negativo.
- Nessuno dei due
- rete
- valore del patrimonio netto
- valore patrimoniale netto (NAV)
- New
- GENERAZIONE
- of
- offrire
- Offerte
- on
- In catena
- ONE
- Altro
- altrimenti
- contorno
- produzione
- panoramica
- pagato
- parametri
- particolare
- passato
- performance
- esecuzione
- periodo
- periodi
- pianura
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- Popolare
- lavori
- posizione
- posizioni
- possibile
- potenzialmente
- Pratico
- preferibile
- preparato
- presenti
- precedente
- in precedenza
- prezzo
- processi
- Prodotto
- Profitto
- la percezione
- Acquista
- fini
- quantitativo
- più veloce
- rapidamente
- gamma
- rapporto
- RE
- Reagire
- Leggi
- realizzato
- ragionevole
- ricapitolare
- Rosso
- ridurre
- Ridotto
- si riferisce
- rilasciare
- rimanere
- rappresentato
- che rappresenta
- rappresenta
- riparazioni
- colpevole
- risultante
- ritorno
- problemi
- Rischio
- aggiustato per il rischio
- rotolamento
- norme
- Correre
- running
- s
- sake
- stesso
- Risparmi
- venda
- vendere bitcoin
- Vendita
- Vende
- Serie
- servire
- serve
- set
- alcuni
- Corti
- dovrebbero
- vetrina
- Signal
- Segnali
- significativamente
- Un'espansione
- semplicemente
- simulazione
- da
- Taglia
- slittamento
- SMA
- SMA
- So
- venduto
- alcuni
- SOPR
- esaurito
- Standard
- si
- inizia a
- Di partenza
- Regione / Stato
- step
- lineare
- strategie
- Strategia
- soggetto
- successivo
- tale
- suite
- SOMMARIO
- sintassi
- Fai
- prende
- presa
- imposta
- Consulenza
- condizioni
- test
- che
- I
- Le nozioni di base
- loro
- Li
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- Attraverso
- tempo
- Serie storiche
- volte
- timestamp
- a
- insieme
- pure
- Totale
- verso
- commercio
- negoziate
- commerciante
- Traders
- mestieri
- Trading
- Strategie di Trading
- strategia di trading
- Trend
- tendenze
- in definitiva
- per
- sottostante
- e una comprensione reciproca
- inteso
- uptrend
- us
- USD
- uso
- utenti
- APPREZZIAMO
- Valori
- versione
- via
- Video
- Volatilità
- volume
- ricercato
- Modo..
- Che
- se
- quale
- while
- tutto
- ampiamente
- volere
- con
- entro
- sarebbe
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- youtube
- zefiro
- zero