Esempio pratico di backtesting (con ipotesi esplicite)
Risposta diretta: cos’è un esempio pratico di pratica di backtesting
Un esempio pratico di pratica di backtesting mostra, passo dopo passo, come applicheresti una regola chiaramente definita ai dati storici per stimare cosa sarebbe accaduto. Per “backtesting” si intende simulare decisioni utilizzando osservazioni passate, senza presupporre che i risultati futuri corrisponderanno alla storia. Per “pratica” si intende registrare ogni ipotesi in modo che un’altra persona possa riprodurre gli stessi calcoli e verificare l’origine del risultato.
Meccanismo e definizione: cosa si fa in un backtest
La pratica del backtesting include tipicamente cinque input:
- Una regola decisionale: esattamente quando entreresti/usciesti (o come calcoleresti una previsione/punteggio).
- Un dataset: serie temporale storica con timestamp coerenti.
- Un modello di trading: come vengono eseguiti gli ordini (es. utilizzando l’apertura della barra successiva) e come gestisci gli spread.
- Un modello di costi: commissioni, fee e ipotesi sugli spread.
- Una metrica: ciò che misuri (es. rendimento cumulativo, drawdown, tasso di successo o rendimento medio per trade).
Meccanica stabile: il flusso di lavoro (definire la regola → scegliere la finestra dati → simulare gli eseguiti → calcolare metriche → documentare) rimane lo stesso. Condizioni variabili: il regime di mercato, la qualità dei dati, i dettagli di esecuzione e i costi possono cambiare, e possono dominare i risultati.
Esempio pratico (scenario numerico) con ipotesi esplicite
Supponiamo che l’obiettivo sia valutare una regola semplice a scopo didattico. Questo non è un consiglio e utilizza semplificazioni simili a dati sintetici per mantenere esplicite le ipotesi.
Regola (l’“if-then”)
Per ogni giorno, tieni una posizione per esattamente 1 giorno. La posizione è o “long” (prendi esposizione) o “flat” (nessuna esposizione). La regola decisionale è:
- Se il prezzo di chiusura del giorno precedente è superiore a quello di due giorni prima, prendi esposizione long per il giorno successivo.
- Altrimenti, rimani flat per il giorno successivo.
Dataset (osservazioni storiche)
Utilizza sei osservazioni giornaliere consecutive (Giorno 0 a Giorno 5). Supponi che i prezzi di chiusura sottostanti siano i prezzi storici “noti” per il backtesting:
- Chiusura Giorno 0: 100
- Chiusura Giorno 1: 102
- Chiusura Giorno 2: 101
- Chiusura Giorno 3: 103
- Chiusura Giorno 4: 104
- Chiusura Giorno 5: 102
Calcoleremo le decisioni per i Giorni 2–5 poiché la regola richiede il dato del Giorno t-2.
Ipotesi di esecuzione e costi
Queste ipotesi determinano il rendimento simulato.
- Prezzo di entrata: l’apertura del giorno successivo è uguale alla chiusura di quel giorno (semplificazione). Ciò elimina l’incertezza intraday.
- Prezzo di uscita: la chiusura del giorno successivo è uguale alla chiusura del giorno dopo (poiché il periodo di detenzione è di 1 giorno).
- Spread e commissioni: il costo totale di trading è un fisso 0,1% del controvalore ogni giorno in cui sei long. Se flat, il costo è 0%.
- Nessun vincolo di leva, nessun interesse di margine e nessuno slippage oltre il modello di costo.
Definizione della metrica
Calcola un “rendimento netto giornaliero” sul controvalore:
- Se long al giorno t: rendimento netto = (Chiusura(t) / Chiusura(t-1)) − 1 − 0,001
- Se flat: rendimento netto = 0
Simulazione passo dopo passo
Decisioni:
- Per la decisione del Giorno 2: confronta la chiusura del Giorno 1 (102) con quella del Giorno 0 (100). 102 > 100 → vai long al Giorno 2.
- Per la decisione del Giorno 3: confronta la chiusura del Giorno 2 (101) con quella del Giorno 1 (102). 101 > 102 è falso → flat al Giorno 3.
- Per la decisione del Giorno 4: confronta la chiusura del Giorno 3 (103) con quella del Giorno 2 (101). 103 > 101 → long al Giorno 4.
- Per la decisione del Giorno 5: confronta la chiusura del Giorno 4 (104) con quella del Giorno 3 (103). 104 > 103 → long al Giorno 5.
Calcolo dei rendimenti netti:
- Giorno 2 (long): Chiusura(2)/Chiusura(1) − 1 − 0,001 = 101/102 − 1 − 0,001 ≈ −0,0098039 − 0,001 = −0,0108039 (≈ −1,08%)
- Giorno 3 (flat): netto = 0
- Giorno 4 (long): 104/101 − 1 − 0,001 = 0,0297029 − 0,001 ≈ 0,0287029 (≈ +2,87%)
- Giorno 5 (long): 102/104 − 1 − 0,001 = −0,0192308 − 0,001 ≈ −0,0202308 (≈ −2,02%)
Somma cumulativa semplice (poiché questo esempio utilizza numeri piccoli ed è illustrativo): rendimento netto totale ≈ −1,08% + 0% + 2,87% − 2,02% ≈ −0,23% nel periodo valutato.
Cosa insegna l’esempio pratico: l’esito è prodotto meccanicamente dalla tua regola, dai tuoi dati e dalle tue ipotesi esplicite di esecuzione/costo.
Limitazioni e modi di fallimento (cosa può andare storto)
- Overfitting: se la regola è troppo adattata ai dati passati (troppi parametri, troppi test), potrebbe sembrare buona storicamente ma fallire altrove. 2) Realismo dell’esecuzione: assumere esecuzioni perfette o prezzi semplificati può esagerare i risultati.