Come fare backtesting di una strategia di trading: il metodo

Un metodo di backtesting manuale per forex e indici: replay onesto, costi in R, dimensione del campione, serie di perdite e controllo prop firm.

Per fare backtesting di una strategia di trading scrivi le sue regole in modo preciso, riproduci i dati storici dei prezzi candela per candela senza vedere cosa viene dopo, registri ogni operazione che le regole generano, costi inclusi, e giudichi il risultato in base a quante operazioni hai davvero. Per un trader manuale o discrezionale, come fare backtesting si riduce quindi a replay del grafico e un foglio di calcolo, non a scrivere codice.

La maggior parte dei backtest fallisce per motivi che con la strategia non c'entrano nulla: regole vaghe completate col senno di poi, costi dimenticati, trenta operazioni prese come prova, una sessione eliminata dopo sei operazioni andate male. Ognuno di questi errori produce un risultato migliore di qualsiasi cosa vedrai poi dal vivo.

Questa guida è per chi fa trading su forex e CFD su indici, su EUR/USD, XAU/USD, NAS100 e mercati simili, anche con conti di prop firm. Segue il metodo in ordine, con ogni numero calcolato passo dopo passo.

Cosa può dirti un backtest e cosa no?

Un backtest risponde a una sola domanda: se queste regole esatte fossero state seguite su questi dati, con questi costi, come sarebbero state le operazioni? Mostra se un setup (una situazione di ingresso definita) ha prodotto un'expectancy positiva in R, quanto sono stati profondi i drawdown e le serie di perdite, e se il risultato dipende da una sola sessione o da un solo mese.

Non può dirti che il vantaggio statistico (edge) continuerà: una strategia adattata a un periodo può fallire in quello successivo. Non può dirti se applicherai le regole sotto pressione: questo lo misurano il forward test e un diario dal vivo. E un backtest manuale riduce il tuo bias personale senza eliminarlo. Considera il risultato come un indizio con un margine di errore, non come una previsione.

Come scrivi regole che uno sconosciuto potrebbe applicare?

Il test di una regola è questo: qualcun altro, avendo solo il tuo documento e il grafico, prenderebbe le stesse operazioni? Se due persone fossero in disaccordo su un terzo dei setup, stai testando il tuo umore, non una strategia.

Usa un modello fisso:

Strategia:         Breakout di Londra con ritracciamento   Versione: 1.0
Mercato / TF:      EUR/USD, ingressi M15, contesto H1
Finestra oraria:   solo 07:00-11:00 UTC
Filtro contesto:   chiusura H1 sopra la 50 EMA per i long (sotto per gli short)
Trigger:           chiusura M15 oltre il massimo o il minimo del range asiatico
Ingresso:          limite sul livello rotto, valido per 4 candele
Stop:              2 pip oltre l'estremo opposto della candela trigger
Uscita:            2R fisso; chiusura alle 16:00 UTC se nessuno dei due viene toccato
Gestione:          nessuna nella v1.0
Size:              0.5% del saldo per operazione
Niente trade:      news ad alto impatto entro 30 min; massimo 2 operazioni al giorno

Ogni campo deve essere verificabile su una candela chiusa: "momentum forte" non è una regola, "corpo M15 più grande dei tre precedenti" sì.

Metti una versione alle tue regole. Se cambi qualcosa, anche solo il margine dello stop, diventa la versione 1.1; le operazioni prese con la 1.0 non contano per il campione della 1.1. Mescolare le versioni è il modo in cui un backtest scivola senza accorgersene nel curve fitting, cioè nell'adattamento eccessivo ai dati passati.

Come imposti il replay del grafico per non barare?

Il backtesting manuale ha due bias diversi, e richiedono rimedi diversi.

Il bias del senno di poi (hindsight bias) sta nella tua testa. Hai già visto il grafico o ricordi il periodo, quindi il setup che ha funzionato sembra ovvio e quello che è fallito sembra non avere i requisiti. Basta sapere che marzo 2020 è stato violento.

Il look-ahead bias sta nei dati o negli strumenti: informazioni che al momento della decisione non esistevano. Per esempio una candela H4 o giornaliera non ancora chiusa, un indicatore di frattali o zigzag che conferma uno swing solo qualche candela dopo, o uno script che richiama in modo errato i dati del timeframe superiore. Nel Pine Script di TradingView, request.security con lookahead_on e senza offset [1] restituisce valori futuri sulle candele storiche.

I rimedi:

  1. Partenza casuale. Estrai le date di partenza a caso, per esempio con =RANDBETWEEN() (=CASUALE.TRA() in Excel in italiano) su un intervallo di date, invece di scegliere periodi che ricordi.
  2. Nascondi le date. Ignora la scala delle date durante il test e salta i periodi che hai tradato dal vivo.
  3. Decidi solo alla chiusura della candela. Avanza di una candela, poi decidi.
  4. Registra i setup scartati. Ogni volta che le regole danno un segnale e tu passi, annotalo con il motivo. Se i setup scartati sarebbero stati per lo più vincenti o per lo più perdenti, la tua discrezionalità fa parte della strategia e va testata anche lei.
  5. Risolvi in anticipo l'ambiguità della stessa candela. Se una candela tocca sia lo stop sia l'obiettivo, non puoi sapere quale è arrivato prima. Assumi lo stop, oppure controlla il timeframe inferiore, e scrivi quale convenzione usi.

Conosci i limiti del tuo strumento. Il centro assistenza di TradingView documenta fin dove arriva il Bar Replay sul grafico a 1 minuto: circa 6 mesi con Essential, 1 anno con Plus, tutto lo storico da Premium in su. Il replay al secondo parte da agosto 2022, il replay tick è limitato al piano più alto e a 7 giorni, e Renko, Kagi e tipi di grafico simili non sono supportati. TradingView specifica anche che gli ordini inseriti durante il replay vengono eseguiti ai prezzi in tempo reale, quindi il paper trading dentro il replay non è un registro di backtest valido. Tieni un tuo registro. Le pagine di assistenza sul Bar Replay riportano i dettagli aggiornati.

Fips ha nella sua web app un replay del grafico candela per candela con il futuro nascosto: avanti o indietro di una candela, riproduzione da 0.25× a 10×, salto a una data e un'ora, oppure clic destro per partire da qualsiasi punto. Gli ordini a mercato, limite e stop disegnano box di posizione sul grafico, la size si imposta in lotti o in % di rischio, e se SL e TP vengono toccati nella stessa candela, Fips assume lo stop. Il punto di partenza non viene scelto a caso, quindi estrai tu la data. L'app è in beta privata, con accesso tramite lista d'attesa.

Cosa deve registrare il log delle operazioni di un backtest?

Un log che contiene solo i risultati è un tabellone, non un test. Questi campi ti permettono di verificare e suddividere i dati in seguito:

CampoPerché conta
ID del setupRitrovare lo screenshot e ricontrollare l'operazione
Versione delle regoleTiene separate le versioni
Ora (UTC) e sessioneAnalisi per sessione senza errori di fuso orario
Stop in pip e in RLa base di ogni valore in R
Costo in RSpread, commissione, swap
MAE / MFE in RQuanto i vincenti sono andati vicini allo stop
Regola rispettataAnche nei backtest ci sono violazioni delle regole
News vicineVerifica se il tuo filtro news vale la pena
ScreenshotRicontrollare qualsiasi operazione più avanti
Setup scartato e motivoMisura la tua discrezionalità

Segna le news partendo da un calendario reale: il calendario economico mostra quali pubblicazioni ad alto impatto sono cadute nella tua finestra. Per cosa registrare quando la strategia è dal vivo, leggi cosa scrivere nel diario di trading.

Come includi spread, commissione e swap in R?

I costi sono la riga che la maggior parte dei backtest dimentica, e con stop stretti decidono tutto. Scrivi il costo di ogni operazione in R, in una colonna dedicata.

Esempio pratico. Ipotesi: EUR/USD, 1.00 lotto, $10 per pip per lotto, uno stop di 10 pip, uno spread medio di 1.2 pip e una commissione andata e ritorno di $7 per lotto.

1R                 = 10 pip x $10    = $100
Spread             = 1.2 pip x $10   = $12
Commissione        = $7 andata e ritorno
Costo totale       = $12 + $7        = $19
Costo per trade    = $19 / $100      = 0.19R

La dimensione del lotto si semplifica: a 0.10 lotti ogni cifra è dieci volte più piccola e il costo resta 0.19R. Lo stop invece no. Gli stessi costi valgono 0.38R con uno stop di 5 pip, 0.095R con uno stop di 20 pip e 0.063R con uno stop di 30 pip. Il calcolatore del valore del pip ti dà il valore per pip su altri simboli e altre valute del conto.

Ora applichiamolo. Una strategia che vince il 40% delle operazioni a +2R e altrimenti perde −1R ha un'expectancy lorda di +0.20R. Con uno stop di 10 pip e questi costi, l'expectancy netta è +0.01R: in pratica niente. Con lo stesso profilo in R e uno stop di 30 pip, sopravvivono circa +0.14R.

Altri tre costi vanno nel log:

  • Slippage. Gli stop nei mercati veloci, soprattutto durante le news, vengono eseguiti a un prezzo peggiore di quello dello stop. Aggiungi una stima alle uscite in stop vicine alle pubblicazioni.
  • Swap. Le posizioni tenute oltre il rollover giornaliero pagano o ricevono lo swap. Sulla maggior parte dei simboli FX una notte, di solito quella del mercoledì, viene addebitata tripla per coprire il weekend; per i CFD su indici e metalli può essere diverso. Usa la specifica del simbolo del tuo broker.
  • Allargamento dello spread. Al rollover e intorno alle news gli spread possono arrivare a diverse volte la media. Se i tuoi ingressi si concentrano in quei momenti, usa il valore più ampio.

Quante operazioni servono per fare backtesting?

Non esiste un numero magico. Molte guide parlano di 30, 50 o 100 operazioni; la risposta onesta dipende da quanto è grande il vantaggio rispetto alla dispersione dei tuoi risultati. Le tabelle mostrano intervalli di confidenza al 95%: intervalli di Wilson per il win rate, approssimazione normale per l'expectancy.

Se il 55% delle tue operazioni in backtest è stato vincente:

OperazioniWin rate reale plausibile (95%)
3037.7% - 71.2%
10045.2% - 64.4%
20048.1% - 61.7%
40050.1% - 59.8%

Dopo 30 operazioni, il 55% è compatibile con qualsiasi cosa, da una strategia chiaramente perdente a una eccellente.

Il win rate non è il vantaggio, quindi fai lo stesso per l'expectancy. Per la strategia di sopra (40% di vincenti a +2R, perdenti a −1R), l'expectancy è +0.20R e la deviazione standard di una singola operazione è circa 1.47R. L'intervallo al 95% è expectancy ± 1.96 × 1.47 ÷ √n:

OperazioniIntervallo al 95% dell'expectancy
30da −0.33R a +0.73R
100da −0.09R a +0.49R
207da 0.00R a +0.40R
500da +0.07R a +0.33R

Servono circa 207 operazioni perché il limite inferiore superi lo zero, e questo prima dei costi. Se le operazioni non sono indipendenti, per esempio perché i setup si concentrano nelle settimane di trend, gli intervalli reali sono più ampi. Vantaggi più piccoli richiedono molte più operazioni: a +0.01R netti, decine di migliaia.

Quante operazioni per sessione prima di eliminarla?

Suddividere per sessione, coppia, giorno della settimana o setup è utile, ma ogni sottoinsieme è un campione piccolo. Alcune guide eliminano la sessione asiatica dopo sei operazioni in perdita: è overfitting allo stato puro.

Per la strategia di sopra, la banda al 95% su un sottoinsieme di 12 operazioni è di circa ±0.83R. Una sessione a −0.30R su 12 operazioni è statisticamente indistinguibile da una a +0.50R. Su 50 operazioni la banda è ancora di circa ±0.41R.

Fissa la regola prima di guardare: un numero minimo per sottoinsieme, per esempio 50 operazioni, sotto il quale non si elimina nulla. Quando un sottoinsieme sembra davvero negativo, toglierlo è una nuova versione delle regole, e il miglioramento deve reggere su dati che non hai ancora visto.

Come leggi i risultati di un backtest?

Calcola le stesse metriche di un conto reale, in R e al netto dei costi: expectancy netta, profit factor, payoff ratio, drawdown massimo in R, serie di perdite più lunga e recovery factor. La guida alle metriche di performance trading sviluppa ogni formula su operazioni in forex e oro, quindi qui non le ripetiamo.

Tre abitudini contano più di qualsiasi singola metrica:

  • Leggi l'expectancy insieme al suo intervallo. "+0.18R su 60 operazioni" significa "da qualche parte tra chiaramente negativo e molto buono".
  • Controlla la concentrazione. Togli le due operazioni migliori e ricalcola. Un risultato che senza di loro sparisce è fragile.
  • Confronta i setup scartati con quelli presi. Se i setup scartati sono andati meglio, il tuo filtro ti sta costando soldi.

Quanto può durare una serie di perdite?

Più a lungo di quanto suggerisca l'intuito, anche per una strategia profittevole. Una simulazione di operazioni indipendenti dà questi valori:

Strategia e campioneSerie di perdite più lunga tipica8+ perdite di fila10+ di fila
40% di vincenti, 100 operazionicirca 8circa 49%circa 20%
40% di vincenti, 200 operazionicirca 9circa 75%circa 38%
40% di vincenti, 500 operazionicirca 11circa 97%circa 70%
55% di vincenti, 100 operazionicirca 5circa 8%circa 2%

Se 200 operazioni in backtest di una strategia con il 40% di vincenti mostrano come serie peggiore cinque perdite, sei stato fortunato. Non dimensionare le posizioni come se cinque fosse il caso peggiore.

Serie di perdite e drawdown sono numeri diversi. La serie conta le perdite consecutive; il drawdown è il calo dal massimo al minimo dell'R cumulato, che può includere piccoli guadagni ed è di solito più ampio.

Come fai un rimescolamento Monte Carlo in un foglio di calcolo?

Il tuo backtest è solo uno dei possibili ordini delle sue operazioni. Un rimescolamento misura quanto il drawdown dipende da quell'ordine:

  1. Metti l'R netto di ogni operazione nella colonna A e =RAND() (=CASUALE() in Excel in italiano) nella colonna B.
  2. Ordina entrambe le colonne per B. In C calcola l'R cumulato; in D il massimo progressivo (=MAX(D1,C2)); in E il drawdown (=D2-C2).
  3. Annota il massimo di E e la serie di perdite più lunga nella colonna A.
  4. Ripeti 1,000 volte o più con una tabella dati (analisi di simulazione) o un breve script.
  5. Riporta il 95esimo percentile: il drawdown superato solo da 1 ordine su 20.

Su un log ipotetico di 200 operazioni, 80 vincenti a +2R e 120 perdenti a −1R, rimescolato 100,000 volte, il drawdown massimo mediano è stato di 12R e il 95esimo percentile di 20R. La serie di perdite più lunga aveva una mediana di 9 e un 95esimo percentile di 13. Pianifica sui 20R, non sui 12R.

Un rimescolamento presuppone operazioni indipendenti e non può inventare un regime di mercato che i tuoi dati non hanno mai contenuto.

Come eviti l'overfitting con test out-of-sample e walk-forward?

Ogni regola che ritocchi dopo aver visto i risultati consuma una parte dei tuoi dati. Bailey, Borwein, López de Prado e Zhu hanno mostrato nel 2014 che, con cinque anni di dati giornalieri, provare circa 45 varianti indipendenti basta per aspettarsi che almeno una sembri forte in-sample anche se nessuna ha un vantaggio reale. Una dozzina di margini di stop per tre finestre orarie fa già 36.

Separa la scoperta dalla validazione:

  • Scoperta. Esplora, aggiusta e fermati su una versione 1.x.
  • Congelamento. Scrivi le regole e smetti di cambiarle.
  • Validazione. Testa una sola volta su dati successivi che non hai guardato. Se il risultato crolla, quello precedente era soprattutto adattamento.
  • Walk-forward. Scopri su una finestra, valida sulla successiva, sposta avanti entrambe e giudica solo i risultati di validazione messi in fila.

Dichiara quante varianti hai provato.

Il tuo backtest regge le regole di una prop firm?

Un'expectancy positiva può comunque fallire una challenge, perché le regole delle prop firm puniscono il percorso. Converti serie e drawdown nei limiti del conto, misurati sull'equity e costi inclusi.

Esempio: FTMO Challenge 2-Step (Standard), $100,000. L'equity non può scendere sotto il saldo delle 00:00 CE(S)T meno il 5% del capitale iniziale ($5,000), né sotto il capitale iniziale meno il 10% ($10,000, statico). La FTMO Challenge 1-Step ha un limite di perdita giornaliera del 3% calcolato dal saldo delle 00:00 CE(S)T. Questi valori sono stati verificati sulle regole ufficiali di FTMO il 26 settembre 2026; confermali sulla pagina della società e confronta le altre società nella pagina delle regole delle prop firm.

Rischio per operazioneMargine giornaliero (2-Step)Margine fino alla perdita massimaTre perdite in un giorno
1% ($1,000)5R10R3% più i costi: viola il limite giornaliero della 1-Step
0.5% ($500)10R20R1.5% più i costi: dentro entrambi

Simulando la strategia con il 40% di vincenti a costo zero su 200 operazioni, le perdite cumulate hanno raggiunto 10R dall'inizio in circa il 14% delle simulazioni e 20R in circa il 2%. Con un rischio dell'1%, significa una violazione della perdita massima statica in circa una challenge su sette, con una strategia profittevole. I costi fanno salire entrambi i valori in modo netto. Sulla FTMO Challenge 1-Step, tre operazioni al giorno all'1% finiscono tutte in perdita in circa il 22% dei giorni, quindi una violazione giornaliera nel giro di poche settimane è molto probabile.

Dimensiona partendo dal drawdown al 95esimo percentile, non dalla media. Il calcolatore di lotti trasforma % di rischio e stop in lotti, e l'articolo drawdown giornaliero prop firm spiegato mostra come ogni società fissa la soglia giornaliera.

Come usi lo Strategy Tester di MT5?

Lo Strategy Tester di MT5 esegue strategie programmate (Expert Advisor), quindi è adatto ai sistemi basati su regole, e la modalità di test cambia i risultati più di quanto la maggior parte delle persone si aspetti. Il confronto tra le modalità pubblicato da MetaQuotes ha fatto girare un EA su EUR/USD H1 nel primo semestre del 2016:

ModalitàProfitto nettoOperazioni
1 minute OHLC+169.4696
Every tick−466.81158
Every tick based on real ticks−97.24156

La guida di MetaTrader 5 sulla generazione dei tick spiega il motivo: le modalità generate costruiscono i tick a partire dalle candele con uno spread fisso per ogni candela M1, mentre la modalità con tick reali usa tick registrati con spread variabile.

  • Usa "Every tick based on real ticks" con stop stretti, e controlla la scheda Journal per verificare che i tick reali siano stati caricati. Un articolo della community su MQL5 fa notare che "History Quality 100%" da solo non lo dimostra.
  • Usa l'opzione Forward. Tiene da parte 1/2, 1/3, 1/4 o una quota personalizzata del periodo come dati out-of-sample, sempre la parte più recente.
  • Attiva il ritardo casuale. La guida di MetaTrader 5 descrive da 0 a 8 secondi con probabilità del 90% e da 9 a 18 secondi con probabilità del 10%, un'approssimazione grezza dell'esecuzione reale.

Come passi dal backtest al forward test e poi al conto reale?

Un backtest superato è un motivo per continuare a testare, non per aumentare la size.

  1. Forward test. Opera con le regole congelate su un conto demo, in tempo reale, per un numero fisso di operazioni. Così testi ciò che il replay non può testare: se riesci a riconoscere e prendere i setup dal vivo.
  2. Reale piccolo. Opera con le stesse regole e soldi veri a rischio ridotto, per esempio un quarto della size prevista.
  3. Confronta con l'intervallo. Chiediti se l'expectancy dal vivo rientra nell'intervallo del backtest e se i costi di esecuzione corrispondono alle tue ipotesi.

Tieni separate, o etichettate in modo chiaro, le operazioni di backtest, forward test e conto reale nel tuo diario di trading, così la differenza resta visibile. Le sessioni di replay di Fips riportano risultato netto, win rate, profit factor, drawdown massimo, expectancy, R medio e una curva di equity. Non modellano i costi, quindi sottrai la tua colonna dei costi prima di confrontare.

Come fare backtesting: la checklist

PassaggioFatto quando
RegoleSu modello, con versione, verificabili su candele chiuse
ReplayPartenza casuale, date nascoste, decisioni alla chiusura
LogTutti i campi compilati, setup scartati registrati
CostiSpread, commissione, slippage e swap in R
CampioneExpectancy riportata con il suo intervallo
RimescolamentoDrawdown e serie al 95esimo percentile noti
ValidazioneRegole congelate testate una volta su dati successivi mai visti
Controllo propDrawdown al 95esimo percentile dentro i margini giornaliero e massimo
ForwardDemo, poi reale piccolo, confrontati con l'intervallo

Domande frequenti

Quante operazioni devo testare in backtest?

Abbastanza perché l'intervallo dell'expectancy, al netto dei costi, escluda lo zero. Per una strategia a +0.20R come quella dell'esempio sono circa 200 operazioni; vantaggi più piccoli ne richiedono molte di più. Trenta operazioni descrivono un campione ma non confermano un vantaggio.

Il backtesting manuale è affidabile?

È utile se tieni sotto controllo i bias e includi i costi in R. Non è mai pulito quanto un test programmato, perché sai comunque, a grandi linee, cosa hanno fatto i mercati; il forward test copre parte di questa distanza.

Si può fare backtesting su TradingView?

Sì, con il Bar Replay, entro lo storico che il tuo piano consente. TradingView specifica che gli ordini del replay vengono eseguiti ai prezzi in tempo reale, quindi tieni le operazioni del replay in un tuo registro.

Qual è un buon risultato di backtest?

Non esiste una soglia universale. Un risultato utile mostra un'expectancy positiva al netto dei costi con un intervallo sopra lo zero, un drawdown al 95esimo percentile che le regole del tuo conto possono assorbire e un comportamento simile fuori campione.

Qual è la differenza tra backtesting e forward testing?

Il backtesting applica le regole ai dati storici. Il forward testing applica le regole congelate in tempo reale, su demo o con una piccola size reale, e verifica se sai eseguirle e se il vantaggio regge su dati mai visti.

Disponibile anche in: English, Türkçe, Deutsch, Français, Español

Icona dell’app Fips

Pronti quando lo sei tu.

Annota, analizza e dimensiona le tue operazioni con precisione, velocità e chiarezza.