Backtesting e realtà: quell'aspettativa perfetta ti sta mentendo
Il tuo backtest: aspettativa 8R. Fattore di profitto 3,5. 50.000 $ di utile su un conto da 10.000 $.
Passi al reale. Prima settimana: aspettativa -2R. Fattore di profitto 0,4. Conto giù del 12 %.
Che cosa è successo? Il tuo backtest ha mentito.
🚨 Parliamoci chiaro
La maggior parte dei backtest è pura fantasia. Dà per scontate esecuzioni perfette, zero slippage, nessuno spread ed entrate magiche che nel mercato reale non esistono.
Se il tuo backtest sembra troppo bello per essere vero, lo è. Ti sei adattato al rumore, non al segnale.
In questa lezione imparerai:
- Perché il 90 % dei backtest fallisce una volta portato in reale
- I 4 peccati capitali: sovradattamento, bias di anticipazione, costi irrealistici, bias del sopravvissuto
- Come modellare lo slippage e gli spread in modo che rispecchino davvero la realtà
- In-sample contro out-of-sample (l'unica validazione che conta)
⚡ Risultati rapidi per domani (clicca per aprire)
- Aggiungi costi realistici al tuo backtest — Metti in conto uno slippage dello 0,03-0,05 % per operazione più lo spread effettivo. Se i risultati crollano, il tuo vantaggio era finto.
- Dividi i dati 70/30 — Ottimizza sul 70 % dei dati e valida sul 30 % che non hai mai visto. Se l'out-of-sample non tiene, hai sovradattato.
- Fai 30 giorni di carta prima del reale — Se i risultati su carta si discostano parecchio dal backtest, qualcosa non va. Non passare al reale finché non coincidono.
Esempio reale: come un backtest «perfetto» con aspettativa 1,3R è diventato un disastro da -0,45R in reale
Contesto: Nel marzo 2024 Chris (esempio composito) ha messo a punto una strategia sui breakout dopo 6 mesi di ottimizzazione. Il backtest sembrava incredibile: aspettativa 1,3R, fattore di profitto 4,9, 67 % di operazioni vincenti, testato su 2 anni di dati SPY (2022-2023). Ad aprile 2024 sono stati messi in campo 50.000 $. A giugno 2024 il conto era in perdita di 8.400 $ (-16,8 %). Ecco l'autopsia completa.
Il backtest «perfetto» (dati 2022-2023)
| Metrica | Valore | Che cosa pensava Chris |
|---|---|---|
| Operazioni totali | 156 | Campione di buone dimensioni |
| Percentuale di successo | 67.3% (105W / 51L) | «Incredibile! Ben sopra la media.» |
| Vincita media / perdita media | +2.4R / -1R | «Ottimo R:R, i vincenti valgono 2,4× i perdenti.» |
| Fattore di profitto | 4.9 | «Un numero da professionista.» |
| Aspettativa | +1,3R per operazione | «Territorio da Sacro Graal.» |
| drawdown massimo | -8.2% | «Un drawdown minuscolo. Sicurissimo.» |
| Rendimento totale (2 anni) | +$40,600 (+406%) | «È questa. Mi licenzio.» |
Il processo di ottimizzazione di Chris:
- Ha provato 50 periodi di EMA diversi (ha trovato che EMA(34) era «perfetta»)
- Ha provato 20 moltiplicatori di ATR per gli stop (ha trovato che 1,47× ATR era «ottimale»)
- Ha provato 15 livelli di obiettivo (ha trovato che 2,8R era «il migliore»)
- Strategia finale: incrocio di EMA(34) + stop a 1,47× ATR + obiettivo 2,8R
- Combinazioni provate in tutto: 50 × 20 × 15 = 15.000 varianti
Che cosa Chris non ha messo nel backtest:
- Lo slippage (esecuzioni perfette ai prezzi esatti date per scontate)
- Il denaro-lettera (spread pari a zero dato per scontato)
- Le commissioni (dimenticate)
- Il rifiuto degli ordini (100 % di esecuzione dato per scontato)
- Il test out-of-sample (mai provato su dati mai visti)
La realtà in reale (aprile-giugno 2024, 10 settimane)
| Metrica | Backtest | Realtà in reale | Differenza |
|---|---|---|---|
| Percentuale di successo | 67.3% | 51.4% (19W / 18L) | -15,9 punti peggio |
| Vincita media | +2.4R (+$1,200) | +1.8R (+$900) | -25 % più piccola |
| Perdita media | -1R (-$500) | -1.3R (-$650) | -30 % più grande |
| Fattore di profitto | 4.9 | 1.46 | -70 % di crollo |
| Aspettativa | +1.3R | -0,45R al netto dei costi | -1,75R NEGATIVO |
| drawdown massimo | -8.2% | -21.4% | 2,6× peggio |
| Rendimento totale (10 settimane) | +9.600 $ previsti | -$8,400 (-16.8%) | 18.000 $ di scarto |
La contabilità completa: dove sono finiti i 18.000 $
| Voce di costo | Descrizione | Impatto |
|---|---|---|
| 1. Sovradattamento (curva adattata) | EMA(34) + 1,47× ATR funzionava alla perfezione sui dati 2022-2023, ma era ottimizzato sul rumore storico. Le condizioni del 2024 = un altro rumore. | -$6,200 |
| 2. Slippage (non modellato) | Slippage medio dello 0,08 % per operazione × 25.000 $ di posizione media × 37 andate e ritorni = 1.480 $ di costi di slippage | -$1,480 |
| 3. Denaro-lettera | Spread dello SPY 0,01 $ × 500 azioni in media × 37 operazioni = 185 $. Opzioni (usate per la leva) spread = 0,03 $ per azione × 100 azioni per contratto × 20 contratti × 37 operazioni = 2.220 $ di costo totale di spread | -$2,405 |
| 4. Commissioni | Opzioni: 0,65 $ per contratto × 20 contratti × 37 operazioni × 2 (andata e ritorno) = 962 $ | -$962 |
| 5. Rifiuto degli ordini | In 8 operazioni gli ordini limite non sono mai stati eseguiti (5 vincenti mancate, 3 perdenti mancate). Costo opportunità netto: 5 vincenti a +1,8R mancate (-9R) meno 3 perdenti a -1,3R evitate (+3,9R) = -5,1R = 2.550 $ | -$2,550 |
| 6. Bias di anticipazione | Il codice del backtest usava close[0] per calcolare l'entrata ed entrava sulla chiusura di quella stessa candela (in reale impossibile). In reale si entra all'apertura della candela successiva. Un'entrata peggiore dello 0,3 % in media = 2.775 $ di degrado | -$2,775 |
| 7. Ritardi di esecuzione | Latenza della piattaforma + tempo di controllo dell'ordine = 2-8 secondi di ritardo. I breakout veloci si spostavano in media dello 0,15 % prima dell'esecuzione = 1.387 $ di slippage dovuto ai ritardi | -$1,387 |
| DEGRADO TOTALE RISPETTO AL BACKTEST: | -$17,759 | |
I conti:
- Utile previsto dal backtest (10 settimane): +9.600 $
- Meno i costi di degrado: -17.759 $
- Risultato atteso in reale: -8.159 $
- Risultato effettivo in reale: -8.400 $ — la contabilità arriva a 250 $ da ciò che è davvero successo
Che cosa si sarebbe dovuto fare: la validazione fatta bene
| Passo | Che cosa ha fatto Chris (sbagliato) | Che cosa si dovrebbe fare (giusto) |
|---|---|---|
| 1. Divisione dei dati | Ha usato tutti i dati 2022-2023 per ottimizzare | Ottimizzare sul 2022 e tenere da parte il 2023 per il test out-of-sample |
| 2. Ottimizzazione | Ha provato 15.000 combinazioni di parametri | Usare parametri standard (EMA 20/50, stop a 2× ATR). Limitare le prove a meno di 10 varianti |
| 3. Modellazione dei costi | Ha dato per scontati costi pari a zero | Modellare 0,10 % di slippage + 0,01 $ di spread + 2 $ di commissione per operazione = almeno -30 $ a operazione |
| 4. Controllo dell'anticipazione | Ha usato la chiusura della stessa candela per segnale ed esecuzione | Segnale su close[0], esecuzione su open[1] (candela successiva). Tempi realistici. |
| 5. Test out-of-sample | Non ha mai provato su dati mai visti | Provare sui dati del 2023 (intatti). Se il rendimento peggiora di oltre il 30 %, la strategia è sovradattata |
| 6. Walk-forward | Un solo periodo di backtest | Finestre di ottimizzazione di 6 mesi, prova sui 3 mesi successivi. Ripetere avanzando. Controllare la coerenza. |
Il test out-of-sample che Chris avrebbe dovuto fare
Il metodo corretto:
- Periodo in-sample: Ottimizzare solo sui dati del 2022 (non toccare il 2023)
- Trovare i parametri: EMA(34) + 1,47× ATR (stesso risultato, ma ottenuto solo con il 2022)
- Congelare i parametri: NESSUN ALTRO CAMBIAMENTO. I parametri sono fissati.
- Test out-of-sample: Far girare esattamente quei parametri sui dati del 2023
- Confrontare i risultati: Se il rendimento del 2023 scende sotto il 70 % di quello del 2022, la strategia è sovradattata
Che cosa sarebbe successo:
| Periodo | Aspettativa | Fattore di profitto | Verdetto |
|---|---|---|---|
| 2022 (in-sample) | +1.4R | 3.1 | Rendimento ottimizzato |
| 2023 (out-of-sample) | +0.4R | 1.4 | ⚠️ 71 % di degrado |
| Conclusione: La strategia è gravemente sovradattata. L'aspettativa del 2023 è il 29 % di quella del 2022. Con costi realistici (-30 $ a operazione = -0,15R) l'aspettativa netta resta a +0,25R (appena sopra lo zero). NON METTERE IN PRODUZIONE. | |||
La lezione: il backtest di Chris era una fantasia. Provare 15.000 combinazioni di parametri garantisce che ne troverai una che si incastra alla perfezione con il rumore storico. Quell'aspettativa «perfetta» da 1,3R era spazzatura adattata alla curva. Un test out-of-sample lo avrebbe rivelato prima di perdere 8.400 $. Il backtesting non serve a trovare il miglior rendimento passato, ma a trovare ciò che funzionerà d'ora in avanti. E per questo servono dati mai visti, costi realistici e zero bias di anticipazione.
Perché la tua strategia perfetta fallirà in reale
Partiamo dalla verità scomoda: se hai ottimizzato una strategia perché si incastrasse con i dati storici, non hai trovato un vantaggio. Hai trovato rumore.
Adattare la curva al rumore casuale
Che cos'è: Ottimizzare i parametri finché il backtest non sembra perfetto
Esempio:
- Provi 100 periodi di EMA diversi (10, 11, 12… 110)
- EMA(47) dà 4,2R di aspettativa nel backtest
- Credi di aver trovato il «numero magico»
Realtà: EMA(47) si incastrava per puro caso con quel preciso insieme di dati. E nel test in avanti? Aspettativa -0,8R. Hai imparato il rumore, non il segnale.
Meglio: Limita l'ottimizzazione. Usa parametri standard. Prova su dati mai visti.
Usare dati futuri (in reale è impossibile)
Che cos'è: Codice che «sbircia» le candele future per decidere adesso
Esempio:
if close[0] > high[5]: # usa le 5 candele FUTURE
enter_long()
Il problema: Nel backtesting hai i dati futuri. In reale no.
Realtà: Questo codice in reale semplicemente non può essere eseguito. Il tuo backtest sta provando una strategia che non esiste.
Meglio: Usa solo i dati disponibili nel momento in cui decidi.
Dare per scontate esecuzioni perfette a prezzi perfetti
Ipotesi del backtest: «Compro esattamente a 100,00 $»
Realtà: L'ordine a mercato viene eseguito a 100,12 $ (spread + slippage)
Impatto su 100 operazioni:
- Utile del backtest: 5.000 $
- Costo dello spread (0,10 $ a operazione): -1.000 $
- Slippage (0,05 $ a operazione): -500 $
- Commissioni (2 $ a operazione): -200 $
Realtà: Utile vero = 3.300 $ (il 34 % in meno rispetto al backtest)
Provare solo sui sopravvissuti
Che cos'è: Fare backtesting solo sui titoli che compongono oggi l'S&P 500
Il problema: Stai escludendo oltre 200 titoli usciti dal listino o falliti
Esempio:
- Backtest sull'elenco S&P 500 del 2024: aspettativa 1,8R, fattore di profitto 2,1
- Ma in quell'arco di tempo saresti stato lungo su Hertz (fallita nel 2020), su SVB Financial (crollata nel 2023) e su ogni altro nome finito a zero.
Realtà: La tua aspettativa lascia fuori le perdite catastrofiche delle uscite dal listino. Aspettativa vera: -0,2R (un sistema in perdita).
💡 il momento della verità
Un backtest non è la realtà. È una simulazione. E se la tua simulazione contiene ipotesi impossibili, anche i tuoi risultati in reale lo saranno.
I costi nascosti che uccidono le strategie
Ecco che cosa la maggior parte dei backtest ignora, ed ecco perché il tuo è probabilmente ottimista del 20-40 %:
Passo 1: modellare il denaro-lettera
Che cos'è: La differenza fra prezzo di acquisto e prezzo di vendita
Esempio:
- SPY denaro: 450,00 $ / lettera: 450,01 $ → spread = 0,01 $
- Compri: paghi 450,01 $ (mezzo spread = 0,005 $)
- Vendi: incassi 450,00 $ (mezzo spread = 0,005 $)
Costo per andata e ritorno: $0.01
Per 1.000 azioni: 0,01 $ × 1.000 = 10 $ a operazione
100 operazioni: 1.000 $ di costi di spread
Passo 2: modellare lo slippage
Che cos'è: Differenza fra il prezzo voluto e l'esecuzione effettiva
Slippage realistico secondo le condizioni:
- Liquidità normale: 0.01-0.02%
- Mercati volatili: 0.05-0.10%
- Liquidità scarsa: 0.10-0.30%
- Posizione di grandi dimensioni: 0.20-0.50%
Ipotesi prudente: 0,05 % a operazione
Posizione da 10.000 $ × 0,05 % = 5 $ di slippage per lato = 10 $ andata e ritorno
Passo 3: modellare le commissioni
Esempio: Interactive Brokers
- 0,005 $ per azione, minimo 1 $
- 200 azioni × 0,005 $ = 1 $ per lato
- Andata e ritorno = 2 $
100 operazioni: 200 $ di commissioni
Passo 4: costo realistico totale
Per operazione (andata e ritorno):
- Spread: 10 $
- Slippage: 10 $
- Commissione: 2 $
Totale: 22 $ a operazione
Se la tua strategia rende 50 $ lordi a operazione → 28 $ netti (il 44 % in meno!)
Esempio di correzione del backtest
Prima e dopo i costi realistici
Strategia: 100 operazioni, 50 $ di utile medio a operazione
Backtest (fantasia):
100 operazioni × 50 $ = 5.000 $ di utile
Dopo i costi realistici:
- Lordo: 5.000 $
- Spread: -1.000 $
- Slippage: -1.000 $
- Commissioni: -200 $
Utile netto: 2.800 $ (il 44 % in meno)
L'unica validazione che conta
Ecco come validano una strategia i professionisti:
Dividi i dati in due periodi.
- In-sample (60-70 %): Qui sviluppi e ottimizzi la tua strategia
- Out-of-sample (30-40 %): Validazione su dati MAI VISTI
🎯 Esempio: 6 anni di dati (2018-2024)
In-sample: 2018-2022 (ottimizza qui)
- Prova parametri diversi
- Trova le regole che rendono di più
- Affina la logica di entrata e uscita
Out-of-sample: 2023-2024 (valida qui)
- Fai girare la strategia senza NESSUNA modifica
- Confronta il rendimento con quello in-sample
- Se è simile → non è sovradattata!
- Se è molto peggiore → sovradattata al rumore in-sample
Campanelli d'allarme del sovradattamento
🚩 Segnali che la tua strategia è adattata alla curva
- Sharpe sopra 3,0: Troppo bello per essere vero
- Aspettativa sopra 5R: Estremamente raro (verifica le tue ipotesi di esecuzione)
- Solo 20-30 operazioni: Campione troppo piccolo (statisticamente privo di senso)
- Curva del capitale perfetta: Una linea liscia senza drawdown (impossibile)
- Provata su un solo strumento: Probabilmente adattata a quel preciso regime
- 10 o più parametri ottimizzati: Hai adattato il rumore, non il segnale
Il metodo di validazione professionale
In-sample contro out-of-sample va bene. Walk-forward va meglio.
Come funziona:
📊 Lo schema walk-forward
Periodo 1: Addestra sul 2018-2019 → prova sul 2020
Periodo 2: Addestra sul 2019-2020 → prova sul 2021
Periodo 3: Addestra sul 2020-2021 → prova sul 2022
Periodo 4: Addestra sul 2021-2022 → prova sul 2023
Se è coerente su tutti i periodi: Strategia robusta
Se il rendimento peggiora: Sovradattata o dipendente dal regime
🎓 Punti chiave
- Modella costi realistici: Spread, slippage, commissioni (20-40 % di utile in meno)
- Evita il sovradattamento: Limita i parametri, prova su più mercati
- In-sample contro out-of-sample: Sviluppa sul 60-70 %, valida sul 30-40 %
- Prova walk-forward: Verifica la coerenza nel tempo
- Campanelli d'allarme: Sharpe sopra 3,0, aspettativa sopra 5R, meno di 30 operazioni
- Prova in avanti prima del reale: Almeno 3-6 mesi su carta
🎯 Esercizio di validazione del backtest
Esercizio: valida la tua strategia con il rilevatore di campanelli d'allarme
Prendi la tua strategia attuale (o una che stai valutando) e passala per la validazione:
- Fai il backtest sul 60 % dei tuoi dati (in-sample). Annota: operazioni, aspettativa, Sharpe, DD massimo
- Individua i parametri usati (EMA, soglie ecc.). Li hai ottimizzati provando più valori?
- Prova sul restante 40 % dei dati (out-of-sample). Confronta con l'in-sample.
- Usa la scheda di validazione del modello (8 categorie, 60 punti al massimo)
- Calcola il punteggio: 50-60 = si procede, 40-49 = da rivedere, sotto 40 = da buttare
- Se il punteggio arriva a 50: fai da 30 a 60 operazioni su carta prima di passare al reale
Obiettivo: Individua l'adattamento alla curva, il bias di anticipazione e le ipotesi irrealistiche PRIMA che ti distruggano il conto reale. Meglio buttare una strategia scadente nel backtesting che perdere soldi veri.
🎮 Verifica veloce
D: Fai il backtest di una strategia: aspettativa 5,2R, indice di Sharpe 4,2, provata su 25 operazioni, con EMA(47) perché è quella che ha dato il risultato migliore dopo aver provato 100 periodi diversi. Che cosa non va?
Fai il backtest di una strategia di ritorno alla media sullo SPY dal 2010 al 2024. Risultati: aspettativa 2,8R, 68 % di operazioni vincenti, 120.000 $ di utile. I dati contengono solo i titoli che compongono oggi l'S&P 500 (quelli presenti nell'indice adesso). Passi al reale nel 2025 e fallisce. Che cosa è andato storto?
Fai una prova walk-forward della tua strategia: addestri sul 2018-2020 e provi sul 2021 (passa). Addestri sul 2018-2021 e provi sul 2022 (passa). Addestri sul 2018-2022 e provi sul 2023 (passa). Non hai modellato né lo slippage né le commissioni. Dovresti operare questa strategia in reale?
Nel backtesting la perfezione è sospetta. Il realismo è il vantaggio. Modella i costi, evita il sovradattamento, prova in avanti — oppure fallisci in reale.
Lezioni correlate
Padroneggiare il diario di trading
Segui il rendimento in reale e confrontalo con i risultati del backtest.
Leggi la lezione →Dimensionamento della posizione
Applica un dimensionamento corretto nei backtest, per risultati realistici.
Leggi la lezione →Riconoscimento del regime
Prova la tua strategia su tutti i regimi per verificarne la robustezza.
Leggi la lezione →⏭️ Prossimamente
Lezione #33: gestione avanzata del rischio — gli schemi professionali — Impara il criterio di Kelly, il dimensionamento dinamico e i protocolli per il drawdown.
Solo a scopo educativo. Il trading comporta un rischio sostanziale di perdita. I risultati passati non garantiscono risultati futuri.
💬 Discussione (0 commenti)
Caricamento dei commenti…
Pronto a operare con Signal Pilot?
Metti in pratica la tua formazione con indicatori professionali e strumenti di analisi di mercato in tempo reale.
Torna a Signal Pilot →Solo a scopo educativo. Il trading comporta un rischio sostanziale di perdita. Non è una consulenza finanziaria. I risultati passati non garantiscono risultati futuri.