
Un rolling window backtest adatta o valuta una strategia su un blocco di storico di lunghezza fissa, sposta quel blocco in avanti nel tempo, testa sul periodo subito successivo, e ripete finché i dati non si esauriscono. Invece di un singolo punteggio da una singola porzione di storico, ottieni una serie di punteggi. Quella serie ti dice se la strategia funziona in molte condizioni di mercato o solo in un periodo fortunato.
Questa guida copre la meccanica, l'aritmetica del conteggio delle finestre, come scegliere lunghezza della finestra e step, in cosa un rolling window differisce da uno expanding, e le falle che silenziosamente rovinano i risultati.
TL;DR
- Un rolling window backtest fa scorrere un blocco di training a lunghezza fissa lungo il tuo storico e testa sul periodo che segue ogni blocco, così vedi la performance su molti periodi, non uno solo.
- Scegli la lunghezza della finestra in base alla frequenza dei tuoi dati e alla dimensione del campione, rendi il periodo di test almeno lungo quanto l'orizzonte che effettivamente tradi, e mantieni lo step costante.
- Usa un rolling window quando i regimi di mercato cambiano e i dati vecchi possono fuorviare. Usa un expanding window quando più storico aiuta in modo affidabile.
- Le finestre si sovrappongono, quindi i risultati non sono evidenze indipendenti. Leggi la dispersione e le finestre peggiori, non solo la media.
- Barre minute pulite e senza gap contano più qui che in un singolo backtest, perché le barre errate vengono riutilizzate in ogni finestra che le contiene.
Indice
- Cosa fa davvero un rolling window backtest
- Rolling window vs. expanding window
- Scegliere lunghezza della finestra, step e orizzonte di test
- Impostarlo senza look-ahead bias
- Leggere i risultati attraverso finestre sovrapposte
- Dove i rolling window non bastano
- Perché la qualità dei dati conta di più in un test rolling
- Il nostro punto di vista
- Eseguirlo su dati minute puliti
- Una checklist pratica
- FAQ
- Fonti
Cosa fa davvero un rolling window backtest
La procedura ha quattro mosse. Prendi un blocco di osservazioni passate di lunghezza fissa. Adatta il modello, o imposta i parametri della strategia, su quel blocco. Eseguilo in avanti sul periodo di test successivo, che sono dati che il modello non ha mai visto. Poi sposta il blocco in avanti e ripeti.

L'aritmetica è semplice. Nella documentazione di MathWorks sull'analisi rolling-window, una serie di T osservazioni con una finestra di m osservazioni, fatta avanzare di un'osservazione alla volta, produce T − m + 1 finestre: osservazioni da 1 a m, poi da 2 a m+1, e così via. Lo step non deve necessariamente essere di un periodo. Uno step più ampio dà meno finestre, meno sovrapposte, e un'esecuzione più veloce.
Un esempio rapido. Supponiamo di avere 10 anni di dati daily, circa 2.520 giorni di trading, e di usare una finestra di 504 giorni (circa due anni) con uno step di 21 giorni e un periodo di test di 21 giorni. Ottieni poco meno di 96 valutazioni, ognuna delle quali misura un mese di trading out-of-sample, ciascuna addestrata sui due anni precedenti. Unisci i periodi di test e ottieni un track record out-of-sample continuo in cui ogni giorno è stato tradato con parametri che conoscevano solo il passato.
Vale la pena tenere a mente una cosa: un rolling window backtest è uno strumento diagnostico, non un segnale di trading. Non genera rendimenti. Ti dice quanto è stabile la tua idea quando il campione di training continua a cambiare.
Rolling window vs. expanding window
I due schemi differiscono solo per ciò che accade all'inizio del blocco di training.
In un backtest expanding l'inizio resta fisso e il set di training cresce a ogni iterazione. In un backtest rolling l'inizio si sposta in avanti anch'esso, quindi il set di training mantiene la sua lunghezza. La documentazione della libreria di serie temporali Kats descrive esattamente questa distinzione.
| Rolling window | Expanding window | |
|---|---|---|
| Inizio training | Si sposta in avanti | Fisso alla prima osservazione |
| Dimensione training | Costante | Cresce a ogni step |
| Memoria | Dimentica i dati vecchi | Conserva tutto |
| Rumore nella stima | Maggiore, campione più piccolo | Minore, campione più ampio |
| Reazione al cambio di regime | Più rapida | Più lenta |
| Ideale quando | Il comportamento cambia nel tempo | Le relazioni sono stabili |
Il trade-off è quello che la nota di ricerca di SlackQuant su rolling vs expanding window descrive: gli expanding window riducono il rumore nella stima conservando più dati, mentre i rolling window rispondono più rapidamente ai cambiamenti strutturali scartando i regimi obsoleti, al prezzo di stime più rumorose da un campione più piccolo.
In pratica, esegui entrambi. Se i risultati rolling ed expanding concordano, hai imparato qualcosa di rassicurante sulla robustezza. Se divergono nettamente, la strategia dipende da quanto storico "vede", e questo è già un dato di fatto.
Scegliere lunghezza della finestra, step e orizzonte di test
Non esiste un numero universale. Ci sono tre decisioni, e ciascuna ha un modo difendibile per prenderla.
Lunghezza della finestra
L'indicazione di MathWorks è di scegliere la dimensione della finestra in base alla dimensione del campione e alla periodicità dei dati: intervalli più brevi possono usare finestre più brevi, intervalli più lunghi finestre più ampie, e finestre più ampie tendono a dare stime più lisce. Per una strategia costruita su barre a un minuto, una finestra di qualche mese può contenere milioni di osservazioni. Per un modello di rotazione macro mensile, una finestra di qualche mese ne contiene una manciata.
Un controllo utile è contare non le barre ma le decisioni indipendenti. Se la tua strategia opera due volte a settimana, una finestra di 6 mesi contiene circa 50 trade. È poco per adattare più di un paio di parametri. Allunga la finestra o riduci il numero di parametri.
Orizzonte di test
Fai in modo che il periodo di test corrisponda alla decisione con cui convivrai davvero. Le indicazioni di OpenForecast dicono che non esiste nessuna regola rigida per le dimensioni dei set di training e test: progetta l'esperimento in base alle esigenze operative e rendi il set di test almeno lungo quanto l'orizzonte di previsione. Se ri-ottimizzi mensilmente in live trading, testa un mese alla volta. Se tieni posizioni per un trimestre, un test di una settimana ti dice poco.
Dimensione dello step
Uno step uguale al periodo di test dà segmenti di test non sovrapposti che si concatenano in un'unica curva out-of-sample pulita. Uno step più piccolo dà più finestre e grafici più lisci, ma i test si sovrappongono e le finestre aggiuntive aggiungono meno informazione di quanto sembri. Inizia con uno step uguale alla lunghezza del test, e riducilo solo se hai bisogno di una risoluzione più fine su quando cambia la performance.
Impostarlo senza look-ahead bias
Un backtest rolling appare rigoroso, il che rende le sue falle più pericolose. Poche regole coprono la maggior parte dei danni.
- Rispetta il tempo di conoscenza. Usa solo dati che sarebbero stati noti al timestamp della decisione, e tieni conto dei ritardi di pubblicazione, dei tempi di elaborazione e delle revisioni. Questa è la disciplina dell'information set descritta nei riferimenti sul look-ahead bias.
- Adatta le trasformazioni all'interno di ogni finestra. Scaler, normalizzatori, selezione delle feature e ottimizzazione dei parametri devono essere adattati solo sul blocco di training. Adattare uno z-score sull'intera serie prima di suddividere in finestre fa trapelare la volatilità futura in ogni finestra.
- Allinea con cura le feature rolling. Una media mobile a 20 barre calcolata alla barra t deve usare le barre fino a t, non fino a t+1. Gli errori di off-by-one ai confini delle finestre sono la causa più comune.
- Lascia intatti i dati di test. Se guardi i risultati del test e poi ri-calibri la lunghezza della finestra, i dati di test sono diventati dati di training. Conserva un segmento finale da valutare una sola volta.
- Attenzione ai tempi di esecuzione. I segnali calcolati sulla chiusura di una barra non possono essere tradati all'apertura di quella stessa barra.
Il costo di sbagliare questo è reale. Nel 2014 la SEC ha accusato un gestore di investimenti di pubblicità ingannevole sulle performance, osservando che le decisioni di acquisto e vendita backtestate erano state spostate indietro di una settimana, gonfiando i risultati di circa il 350%. La nostra guida al look-ahead bias per quant elenca le falle da verificare prima di approvare un risultato.
Leggere i risultati attraverso finestre sovrapposte
Ora hai decine di numeri. Il modo in cui li leggi determina se l'esercizio è valso la pena.
Guarda la distribuzione, non la media
OpenForecast sottolinea che un periodo di test più lungo produce una distribuzione di misure di errore e mostra se la performance è coerente tra periodi diversi. Per il trading, traccia la metrica che ti interessa (Sharpe ratio, profit factor, drawdown, hit rate) per ogni finestra. Una strategia con un punteggio modesto ma costante in 90 finestre su 96 è un animale diverso da una con una media alta costruita su cinque finestre enormi.
Ricorda che le finestre non sono indipendenti
Con uno step di un mese su una finestra di due anni, i blocchi di training adiacenti condividono 23 mesi su 24. Le loro stime dei parametri saranno quasi identiche e i loro risultati fortemente correlati. Novantasei finestre non sono novantasei prove indipendenti. Considera il conteggio come risoluzione lungo l'asse temporale, non come dimensione del campione per un test di significatività.
Esamina le finestre peggiori
Ordina le finestre per performance e leggi il 10% inferiore. Quali date sono? Se si concentrano attorno a un evento o a un regime di volatilità specifico, chiediti se quel regime tornerà, e se potresti sopravvivergli. Una finestra che va male è un'informazione sulle condizioni della strategia, non rumore da scartare.
Osserva la stabilità dei parametri
Se i parametri ottimali saltano da una finestra all'altra, la strategia sta adattandosi al rumore. Parametri stabili tra le finestre sono un segnale più forte di qualsiasi singolo rendimento elevato.
Attenzione al risultato nullo
Il test rolling out-of-sample non trasforma un'idea debole in una buona. In uno studio che utilizza 155 anni di dati, Zakamulin non ha trovato evidenza statisticamente significativa che le strategie di market timing battano il mercato nella seconda metà del campione, e nessuno dei due schemi di stima out-of-sample ha migliorato le regole di timing. Un test onesto spesso dice di no. È il suo compito.
Dove i rolling window non bastano
- Scartano lo storico. Eliminare i dati vecchi aiuta quando il comportamento cambia, ma una crisi rara che è uscita dalla finestra non è più nel tuo test. Affianca il test rolling con uno stress test. La nostra guida al Monte Carlo backtesting mostra un modo per farlo.
- Le finestre brevi sono rumorose. I parametri stimati su pochi dati oscillano in modo marcato.
- La lunghezza della finestra stessa è un parametro. Provane dieci, scegli la migliore, e hai fatto di nuovo overfitting. Riporta un intervallo di lunghezze e mostra che i risultati sono simili.
- Non sono un holdout. Conserva comunque un segmento finale intatto.
Il metodo correlato della walk-forward analysis aggiunge l'ottimizzazione all'interno di ogni blocco di training e tradea il segmento successivo con i parametri vincenti. Il test a rolling window è uno stretto parente, e i due condividono la stessa disciplina.
Perché la qualità dei dati conta di più in un test rolling
In un singolo backtest, una barra errata influenza un solo tratto. In un rolling backtest, ogni finestra che contiene quella barra la riutilizza. Un'ora mancante, uno spike mai tradato o un roll non aggiustato in una serie future viene contato più e più volte, sia in training che in test, e può alterare le stime dei parametri in una dozzina di finestre contemporaneamente.
Tre proprietà dei dati meritano un controllo prima di eseguire qualsiasi cosa:
- Continuità. I gap nelle barre minute alterano i valori degli indicatori rolling e possono spostare i confini delle finestre.
- Fuso orario e definizioni di sessione coerenti. Uno slittamento di qualche ora a metà serie cambia il significato di una barra daily.
- Aggiustamenti documentati. Per serie derivate da future, è necessario sapere come sono stati cuciti i contratti, e se i prezzi sono stati back-adjusted.
La stessa logica si applica ai portafogli. Se combini più strategie, riproducile sugli stessi identici dati, come spieghiamo in portfolio backtesting in MT4.
Il nostro punto di vista
Forniamo dati, e vediamo lo stesso schema dal lato di chi li riceve. I trader passano settimane a perfezionare lunghezze delle finestre e dimensioni degli step, poi li eseguono su una serie con gap silenziosi, barre duplicate o aggiustamenti non documentati. Il metodo elegante eredita ogni difetto dell'input.
Il nostro punto di vista è che un rolling window backtest è onesto solo quanto le barre che lo sostengono. È per questo che dedichiamo impegno alla verifica barra per barra, alla documentazione degli aggiustamenti e a dataset pronti da importare in MT4 e MT5 senza pulizia. Ed è anche per questo che il nostro supporto arriva dagli ingegneri che raccolgono i dati, così una domanda su una barra sospetta riceve una risposta da qualcuno che può effettivamente esaminarla.
Il nostro consiglio pratico: blocca la logica della strategia prima di scegliere le finestre, esegui rolling ed expanding in parallelo, riporta prima le finestre peggiori, e non calibrare mai sull'holdout finale. Un risultato modesto di cui puoi fidarti batte uno brillante che non puoi riprodurre.
— Start
Eseguirlo su dati minute puliti
Se testi strategie intraday, hai bisogno di uno storico minute lungo e coerente, così che ogni finestra contenga abbastanza barre. I nostri set di dati storici coprono forex, metalli, indici azionari, obbligazioni e materie prime in barre minute dal 2014, forniti come download completo che puoi importare in MT4 o MT5. Se parti dalle valute, il Forex Major Full Pack è il punto di partenza. Il Piano Annuale costa 119€ all'anno.
Una checklist pratica
- Scrivi le regole della strategia e la metrica con cui la giudicherai prima di toccare i dati.
- Ispeziona i dati per gap, duplicati e slittamenti di sessione.
- Scegli la lunghezza della finestra in base alla frequenza dei dati e al numero di trade che conterrà.
- Imposta la lunghezza del test uguale all'orizzonte che tradi, e lo step uguale alla lunghezza del test.
- Adatta ogni trasformazione all'interno di ciascun blocco di training.
- Esegui le versioni rolling ed expanding.
- Traccia la metrica per finestra e leggi quelle peggiori.
- Controlla la stabilità dei parametri e la sensibilità alla lunghezza della finestra.
- Esegui uno stress test, poi valuta una sola volta su un segmento finale mai toccato.
FAQ
Qual è la differenza tra un rolling window e il walk-forward testing?
Sono parenti stretti. Un rolling window backtest fa scorrere un blocco a lunghezza fissa lungo lo storico e valuta ogni periodo successivo. La walk-forward analysis di solito ri-ottimizza anche i parametri su ogni blocco prima di tradare il segmento successivo.
Quanto dovrebbe essere lunga la finestra?
Non esiste una regola fissa. Basala sulla dimensione del campione e sulla frequenza dei dati, e assicurati che ogni finestra contenga abbastanza trade da supportare il numero di parametri che stai adattando. Testa diverse lunghezze e riporta l'intervallo anziché la migliore.
Quando è meglio un expanding window?
Quando più storico migliora in modo affidabile le tue stime e le relazioni che modelli sono stabili. Un rolling window è adatto quando i regimi cambiano e i dati vecchi potrebbero non essere più applicabili. Eseguire entrambi ti mostra in quale caso ti trovi.
Un rolling window backtest previene l'overfitting?
No. Riduce un tipo di rischio testando sempre su dati mai visti, ma puoi comunque fare overfitting calibrando lunghezza della finestra, step o regole dopo aver visto i risultati. Blocca prima la logica e conserva un holdout finale.
Fonti
- Rolling-Window Analysis of Time-Series Models, MathWorks
- kats.utils.backtesters module, Kats documentation
- Rolling vs Expanding Windows, SlackQuant Research
- What about the training/test sets?, OpenForecast
- Look-ahead bias in backtesting, python.financial
- SEC charges investment manager F-Squared
- A Comprehensive Look at the Empirical Performance of Moving Average Strategies, Zakamulin (SSRN)
Consigliati
- MT4 Portfolio Backtesting: Export Replay to Find Real Drawdowns
- Monte Carlo Backtesting: How to Stress-Test a Strategy
- Out-of-Sample Testing: How to Validate a Trading Strategy
- Three Ways to Run an MT5 Portfolio Backtest With Clean Minute Bars
Risorse correlate
Esplora i pacchetti di dati storici di BacktestMarket per mettere in pratica le idee di questo articolo.

