
L'out-of-sample testing consiste nel valutare una strategia di trading su dati che non ha mai "visto" durante la fase di sviluppo e ottimizzazione. Si sviluppa su una porzione di storico (in-sample), si bloccano le regole, e poi le si esegue una sola volta su una porzione mai toccata (out-of-sample). Se la performance regge, l'edge potrebbe essere reale. Se crolla, probabilmente avete adattato il rumore.
Questa guida spiega come suddividere i dati, quanto riservare al test, perché un singolo holdout è più debole di quanto la maggior parte dei trader pensi, e come eseguire il test su dati minute-bar in MT4 o MT5.
TL;DR
- I dati in-sample servono per progettare e ottimizzare. I dati out-of-sample servono per verificare, una sola volta, con le regole congelate.
- Una suddivisione di partenza comune è 80% per lo sviluppo e 20% per il test, ma per le serie temporali l'holdout deve essere il periodo più recente, mai uno shuffle casuale.
- Ogni configurazione aggiuntiva che provate aumenta la probabilità di trovare un falso vincitore. Contate i vostri tentativi e considerate il risultato out-of-sample "consumato" una volta visto.
- Test rolling o walk-forward su più periodi sono più affidabili di un singolo holdout fisso.
- Il test è onesto solo quanto lo sono i dati di prezzo sottostanti. Gap, tick errati e roll non aggiustati corrompono entrambe le metà.
Indice
- Cosa misura davvero l'out-of-sample testing
- In-sample vs. out-of-sample: la differenza pratica
- Perché il risultato in-sample vi inganna
- Come suddividere i dati
- Perché un solo holdout non basta
- Un workflow che regge
- Come leggere i risultati
- Dati scadenti rovinano entrambe le metà
- Il nostro punto di vista: cosa vediamo quando i trader testano
- Eseguire lo split su dati minute-bar puliti
- Errori comuni da evitare
- FAQ
- Fonti
Cosa misura davvero l'out-of-sample testing
L'idea viene dalla statistica: un modello dovrebbe essere giudicato su dati da cui non è stato costruito. I metodi di cross-validation, a volte chiamati out-of-sample testing, servono a stimare come un risultato si generalizzerà su un dataset indipendente. Il glossario Eurostat descrive la stessa suddivisione per il forecasting: un periodo in-sample viene usato per la stima iniziale dei parametri e la selezione del modello, mentre il periodo restante serve per testare la previsione.
Per un trader, questo si traduce in due numeri per la stessa strategia:
- Risultato in-sample: come si sono comportate le regole sui dati usati per scegliere la logica di entrata, i periodi degli indicatori, gli stop e i filtri.
- Risultato out-of-sample: come si sono comportate le medesime regole identiche su dati che non hanno avuto alcun ruolo in quelle scelte.
Il numero in-sample è lusinghiero per costruzione. Le dispense di Stanford descrivono l'obiettivo della validazione come una simulazione onesta di come un modello si comporta su dati non visti. Le stesse dispense sottolineano un punto utile: un certo calo dalla performance di training a quella di test è normale e non costituisce di per sé un fallimento. Il segnale d'allarme è un modello che sembra quasi perfetto sui dati su cui ha imparato e crolla su dati nuovi.
In-sample vs. out-of-sample: la differenza pratica
| In-sample | Out-of-sample | |
|---|---|---|
| Scopo | Costruire e ottimizzare la strategia | Verificarla su dati non visti |
| Quante volte potete guardarla | Quante volte volete | Idealmente una volta per candidato |
| Cosa potete modificare | Regole, parametri, filtri | Niente |
| Debolezza tipica | Cattura il rumore oltre al segnale | Si riduce non appena la sbirciate e ri-ottimizzate |
| Cosa significa un buon risultato | L'idea merita di essere testata | L'idea può sopravvivere a condizioni nuove |
La riga più importante è la terza. Nel momento in cui modificate una regola per via di ciò che il run out-of-sample ha mostrato, quei dati sono diventati in-sample. È il modo più comune in cui i trader si illudono da soli, ed è facile farlo senza accorgersene.
Perché il risultato in-sample vi inganna
Una strategia con diversi parametri liberi può piegarsi per adattarsi a quasi qualsiasi storico dei prezzi. La letteratura statistica è esplicita su questo: l'errore in-sample tipicamente sottostima l'errore di previsione reale, perché il modello cattura rumore casuale insieme al segnale genuino.
La velocità con cui ciò accade è la parte che molti trader sottovalutano. Bailey e Lopez de Prado dimostrano che dopo aver testato solo 7 configurazioni di strategia, un ricercatore può aspettarsi di trovare un backtest di 2 anni con uno Sharpe ratio annualizzato superiore a 1, anche quando il vero Sharpe ratio out-of-sample è zero. Sette. È il lavoro di un pomeriggio passato a modificare la lunghezza di una media mobile e una distanza di stop.
Un paper correlato di Bailey, Borwein, Lopez de Prado e Zhu sostiene che una performance simulata elevata è facilmente ottenibile dopo aver testato un numero relativamente piccolo di configurazioni alternative, una pratica che chiamano backtest overfitting. Notano anche che il numero di tentativi è la cifra più critica per giudicare un backtest, eppure viene raramente riportata.
La lezione pratica: tenete un registro di ogni variante testata. Se non sapete dire quante ne avete provate, non potete dire quanto fidarvi del vincitore.
Come suddividere i dati
Non esiste un rapporto universale, ma ci sono valori di default sensati e regole ferree.
Il punto di partenza 80/20
La validazione standard con holdout spesso usa circa l'80% dei dati per il training e il 20% per il test. Per una strategia costruita su barre a un minuto a partire dal 2014, ciò significherebbe sviluppare su circa i primi otto o nove anni e testare sugli ultimi due o tre. Trattate il rapporto come punto di partenza. Ciò che conta è che la finestra di test sia abbastanza lunga da contenere un numero significativo di trade e più di un "umore" di mercato.
Mantenete l'ordine temporale
Gli split k-fold casuali sono comuni nel machine learning, e la stessa fonte nota che la k-fold cross-validation usa solitamente 5 o 10 fold. Fate attenzione a trasportare questo approccio alle serie di prezzo. Mescolare le barre permette a informazioni dal futuro di infiltrarsi nel training, perché barre adiacenti sono correlate e molte strategie mantengono posizioni aperte attraverso di esse. Per il trading, il periodo out-of-sample deve venire dopo il periodo in-sample, in ordine cronologico.

Verificate che l'holdout sia sufficientemente diverso
Un holdout di due anni interamente collocato in un mercato calmo e in trend vi dice poco su come si comportano le regole durante un picco di volatilità. Prima di fidarvi del risultato, guardate cosa conteneva la finestra di test: fasi di trend e di range, almeno un drawdown marcato nello strumento, e una gamma di livelli di volatilità. Se non ne conteneva nessuno, allargatela o aggiungete una seconda finestra.
Decidete le regole prima di eseguire il test
Scrivete, prima del test, cosa costituisce un superamento. Esempi: il profit factor out-of-sample resta sopra una soglia prefissata, il drawdown massimo non supera quanto eravate disposti ad accettare in-sample oltre un margine dichiarato, e il numero di trade è abbastanza grande da avere un significato. Le regole stabilite dopo aver visto il risultato sono razionalizzazioni.
Perché un solo holdout non basta
Uno split fisso singolo vi dà un'unica estrazione da un processo molto rumoroso. Lopez de Prado e colleghi sostengono che provare molte configurazioni finché un risultato non sembra buono rende inaffidabili tecniche standard come un singolo hold-out set. Se ottimizzate sull'in-sample, guardate l'holdout, modificate, e guardate di nuovo, avete di fatto ottimizzato anche sull'holdout.
C'è un secondo problema: un unico periodo di test può non essere rappresentativo. Una rassegna sulla valutazione delle previsioni di Tashman raccomanda valutazioni rolling-origin e periodi di test multipli piuttosto che un singolo split fisso, perché ciò riduce la sensibilità a particolari fasi del ciclo economico e a eventi speciali.

Per i sistemi di trading, la risposta abituale è l'analisi walk-forward: ottimizzare su una finestra, testare sulla successiva, far scorrere in avanti, ripetere, e unire i segmenti out-of-sample in un'unica equity curve. Spieghiamo i meccanismi e gli errori comuni nel nostro articolo su walk-forward analysis e buone pratiche di backtesting.
Un workflow che regge
- Sistemate prima i dati. Verificate lo storico dei prezzi prima di qualsiasi test. Il nostro audit dei dati in 7 passi copre gap, outlier e problemi di timestamp.
- Riservate l'holdout. Tagliate il blocco di dati più recente prima ancora di aprire un grafico. Non guardatelo.
- Sviluppate in-sample. Costruite l'idea, con il minor numero di parametri liberi che la logica consente. Registrate ogni variante provata.
- Stressate i parametri. Verificate che valori di parametro vicini performino in modo simile. Un singolo picco netto circondato da perdite è un fitting, non un edge. La nostra guida su come gestire l'overfitting nei sistemi di trading approfondisce l'argomento.
- Congelate le regole. Scrivetele con parametri esatti, costi e position sizing.
- Eseguite il test out-of-sample una sola volta. Registrate il risultato, superato o fallito, rispetto ai criteri stabiliti in anticipo.
- Ripetete su più finestre. Usate il walk-forward o diverse finestre rolling per vedere se il risultato è stabile.
- Procedete in demo o con size ridotta. I dati live successivi al vostro ultimo punto dati sono l'unico vero out-of-sample pulito.
Come leggere i risultati
Aspettatevi che i numeri out-of-sample siano peggiori di quelli in-sample. La domanda è di quanto, e in che modo.
- Decadimento moderato, forma simile: rendimenti più bassi, drawdown leggermente più profondi, frequenza dei trade simile. È tipico di un edge reale ma imperfetto.
- Collasso: profit factor vicino a 1 o inferiore, oppure una equity curve che diventa piatta o negativa allo split. Indica overfitting.
- Out-of-sample migliore dell'in-sample: non festeggiate. Controllate se c'è stata una finestra fortunata, un regime di volatilità diverso, o troppo pochi trade.
Su quali metriche osservare, uno studio su 888 strategie algoritmiche di Wiecki e colleghi ha scoperto che lo Sharpe ratio da backtest aveva un potere predittivo trascurabile per i risultati live, con un R² inferiore a 0,025. Lo stesso paper ha rilevato che le strategie sottoposte a backtesting più estensivo mostravano divari maggiori tra risultati di backtest e out-of-sample. Il loro suggerimento è di prestare più attenzione alla volatilità, al drawdown massimo e a caratteristiche di portafoglio come l'hedging piuttosto che allo Sharpe ratio da titolo. Consideratelo un motivo per leggere il report intero, non solo un singolo rapporto.
Dati scadenti rovinano entrambe le metà
L'out-of-sample testing presuppone che lo storico sia una registrazione fedele. Se non lo è, il test può fallire per il motivo sbagliato, o superare la prova per il motivo sbagliato.
Problemi tipici per il lavoro su minute-bar:
- Barre mancanti e gap che modificano il riscaldamento degli indicatori e il modo in cui gli stop vengono eseguiti.
- Spike e tick errati che innescano stop-out o vincite fantasma.
- Storico incoerente tra i due periodi, ad esempio un feed che ha cambiato la quotazione o gli orari di sessione a metà percorso.
- Roll dei futures non aggiustati che introducono salti artificiali in una serie continua. Vedete la nostra spiegazione sulle regole di roll per i contratti futures.
Se la metà in-sample proviene da una fonte e la metà out-of-sample da un'altra, le differenze nei dati da sole possono sembrare un fallimento della strategia. Usate un dataset unico, coerente e documentato lungo tutto l'arco temporale.
Il nostro punto di vista: cosa vediamo quando i trader testano
Forniamo storici minute-bar e parliamo con chi li usa, quindi vediamo ripetersi gli stessi pattern. La maggior parte delle validazioni fallite non è causata dal metodo out-of-sample in sé. Derivano da tre abitudini a monte.
Primo, i trader eseguono l'holdout troppo presto. Sbirciano durante lo sviluppo, e l'holdout si trasforma silenziosamente in un secondo set in-sample. Tagliatelo all'inizio e consideratelo consumato dopo un'unica occhiata.
Secondo, si fidano di un backtest prima di controllare i dati. Una strategia che sembra fallire out-of-sample a volte sta fallendo per via di un gap, un roll errato o uno slittamento del timestamp. Ecco perché verifichiamo i nostri dataset barra per barra e documentiamo gli aggiustamenti: dovreste poter escludere i dati prima di escludere l'idea.
Terzo, testano su un solo simbolo e un solo periodo e considerano la cosa conclusa. Anche un risultato pulito merita una seconda verifica su altre finestre e, dove la logica lo consente, su altri strumenti. I nostri articoli su backtesting multi-simbolo e portfolio backtesting in MT4 mostrano come farlo senza illudersi sul drawdown.
Se cercate una sequenza MetaTrader dettagliata per la progressione in-sample, walk-forward, out-of-sample, consultate il nostro articolo sui dati di backtesting MT5. Per le basi del tester, leggete come fare il backtest di un Expert Advisor in MetaTrader 4.
— Start
Eseguire lo split su dati minute-bar puliti
Una configurazione pratica per MT4 o MT5:
- Importate un unico storico minute-bar continuo che copra l'intero periodo, in modo che le metà in-sample e out-of-sample condividano la stessa fonte e le stesse convenzioni.
- Impostate l'intervallo di date del tester sulla finestra in-sample per lo sviluppo e l'ottimizzazione.
- Salvate il file di impostazioni esatto per la versione congelata.
- Modificate solo l'intervallo di date sulla finestra holdout ed eseguite una sola volta, con le stesse ipotesi di spread, commissioni e lot sizing.
- Esportate la lista dei trade e confrontate numero di trade, trade medio, drawdown e forma dell'equity tra i due run.
La nostra pagina Historical Data elenca i dataset minute-bar che offriamo, che partono dal 2014 e si importano direttamente in MT4 e MT5. Se volete testare su più mercati, l'Annual Plan costa 119€ all'anno. Per domande su quale dataset si adatti al vostro split, rivolgetevi ai nostri ingegneri, che raccolgono i dati e rispondono direttamente alle richieste di supporto.
Errori comuni da evitare
- Ri-ottimizzare dopo un holdout negativo. Se modificate i parametri e testate di nuovo lo stesso holdout, non è più out-of-sample.
- Ignorare i costi. Spread, commissioni e slippage spesso decidono se un edge sottile sopravvive. Applicate gli stessi costi realistici in entrambe le metà.
- Troppo pochi trade. Un holdout con poche decine di trade non può separare l'abilità dalla fortuna.
- Testare solo il vincitore. Riportate quante varianti avete provato. Un vincitore scelto tra centinaia è meno credibile di uno scelto tra una manciata.
- Usare l'holdout per selezionare il modello tra molte strategie. Scegliere il migliore tra venti candidati in base ai loro risultati sull'holdout ripropone il problema dell'overfitting a un livello superiore.
- Trattare un risultato positivo come una prova. Il successo out-of-sample riduce il rischio di un risultato adattato artificialmente. Non lo elimina, e le performance passate non garantiscono mai rendimenti futuri.
FAQ
Qual è la differenza tra test in-sample e out-of-sample?
Il test in-sample misura la performance sui dati usati per costruire e ottimizzare la strategia. Il test out-of-sample misura le stesse regole congelate su dati che non hanno avuto alcun ruolo in quelle decisioni. Il primo vi dice se un'idea merita di essere approfondita, il secondo se si generalizza.
Quanti dati dovrei riservare per l'holdout?
Un punto di partenza comune è circa il 20% dello storico, preso dal periodo più recente. Il test migliore è se la finestra è abbastanza lunga da contenere molti trade e diverse condizioni di mercato. Se non lo è, usate il walk-forward testing con più finestre invece di un unico blocco grande.
La validazione out-of-sample è la stessa cosa dell'analisi walk-forward?
Non proprio. Un holdout è un singolo split. L'analisi walk-forward ripete il ciclo ottimizza-poi-testa su finestre rolling, quindi ottenete molti segmenti out-of-sample invece di uno solo. È generalmente la più affidabile delle due per i sistemi di trading.
Posso riutilizzare i dati out-of-sample dopo aver visto il risultato?
Solo come dati in-sample. Una volta che avete modificato qualcosa in base a ciò che l'holdout ha mostrato, questo ha influenzato la strategia e non può più dare un verdetto onesto. Riservate un periodo nuovo, oppure fate forward-test su dati live successivi alla vostra ultima barra.
Fonti
- Cross-validation (statistics), Wikipedia
- In-sample vs. out-of-sample forecasts, Eurostat Statistics Explained
- Validation, Stanford EE104 lecture notes
- Model Validation, Introduction to Statistical Modeling
- What to Look for in a Backtest, Lopez de Prado, SSRN
- Pseudo-Mathematics and Financial Charlatanism, Bailey, Borwein, Lopez de Prado, Zhu, SSRN
- All that Glitters Is Not Gold, Wiecki et al., SSRN
- Out-of-sample tests of forecasting accuracy: an analysis and review, ScienceDirect
Consigliati
- MT4 Portfolio Backtesting: Export Replay to Find Real Drawdowns
- Run This 7 Step Data Audit Before Backtesting on MT4/MT5
- Stop Fake Alpha: 5 Checks Quants Need for Hedging Backtesting Data
- 99% Modeling Quality for Quants: MT5 Backtesting Data IS to WFA to OOS
Risorse correlate
Esplorate i robot Expert Advisor di BacktestMarket per mettere in pratica le idee di questo articolo.

