Come si può backtestare in modo responsabile il Rate Of Change?
Risposta diretta
Backtestare in modo responsabile il Rate Of Change (ROC) significa trattarlo come un esperimento: si specificano con precisione i dati e la formula ROC, si modellano i costi inevitabili, si controllano i bias e si valida poi la performance su dati che non sono stati utilizzati per ottimizzare il modello. L’obiettivo non è “dimostrare” risultati futuri, ma verificare se un’idea basata sul ROC rimane coerente sotto assunzioni ragionevoli e chiaramente dichiarate.
Meccanica: definire cosa si andrà a backtestare
Il Rate Of Change è un indicatore di tipo momentum che misura quanto un valore cambia in un determinato periodo di osservazione. Nelle forme più comuni, il ROC viene calcolato a partire da un prezzo (o un’altra serie) utilizzando una finestra temporale fissa. Per effettuare un backtest responsabile, è necessario definire chiaramente tutti i seguenti elementi in anticipo:
- Serie di input: quale valore si utilizza (ad esempio, variazioni da chiusura a chiusura) e se si usano prezzi grezzi o rendimenti.
- Periodo di osservazione (n): il numero di barre utilizzato per calcolare la variazione.
- Formula del ROC: ad esempio, variazione percentuale rispetto a variazione assoluta. Utilizzare una definizione in modo coerente.
- Campionamento e tempistica: decidere se il valore ROC viene calcolato alla chiusura della barra e quando si ipotizza l’ingresso nel trade (ad esempio, all’apertura della barra successiva).
Un backtest responsabile separa anche due livelli: (1) il calcolo dell’indicatore, che è deterministico una volta fissata la formula e i dati; e (2) la regola di trading e il modello di esecuzione, che devono rappresentare le reali frizioni operative.
Evidenza o esempio: costruire il backtest come un esperimento controllato
Un errore comune è che l’indicatore sembri “utile” solo all’interno del campione, semplicemente perché il backtester permette accidentalmente alla strategia di beneficiare di informazioni che non sarebbero state disponibili in tempo reale. Per ridurre questo rischio, includere i seguenti controlli:
-
Realismo dell’esecuzione (modellazione dei costi) Anche senza dati in tempo reale, è possibile modellare le frizioni. Come minimo, includere un costo generico simile allo spread per ogni entrata/uscita e una margine per lo slippage che rifletta riempimenti imperfetti. Specificare chiaramente se i costi vengono applicati a ogni azione di trading o solo quando cambia la posizione.
-
Tempistica delle decisioni Assicurarsi che il valore ROC utilizzato per decidere un trade sia calcolato solo a partire da barre passate. Questo previene il look-ahead bias.
-
Disciplina nella scelta dei parametri Se si sceglie la lunghezza del periodo di osservazione ROC, le soglie o altri parametri della regola ottimizzando i risultati sull’intero dataset, si rischia l’overfitting. Un approccio più responsabile consiste nel selezionare i parametri su una finestra di addestramento e poi valutarli su una finestra di validazione separata.
-
Test walk-forward o out-of-sample Invece di un singolo split tra training e test, utilizzare finestre mobili (walk-forward) per verificare se la performance peggiora quando cambia il regime di mercato.
-
Verifiche di stabilità Ripetere il test con variazioni minime: modificare leggermente il periodo di osservazione, spostare la finestra di validazione o testare definizioni alternative ma ragionevoli della serie di input (solo se questa esplorazione è stata predefinita). Se i risultati crollano con piccoli cambiamenti, il segnale originale è probabilmente fragile.
Limitazioni e rischi: cosa può andare storto
Diverse limitazioni concrete possono rendere fuorvianti i backtest del ROC:
- Non ripetibilità storica: le relazioni passate non garantiscono il comportamento futuro. Il ROC può rimanere matematicamente coerente mentre le dinamiche di mercato cambiano.
- Sensibilità ai costi: le strategie basate sul momentum spesso comportano un numero elevato di operazioni. Se i costi sono sottostimati, la performance può apparire più forte di quanto potrebbe essere in realtà.
- Overfitting e confronti multipli: testare molte soglie e valori di parametro aumenta la probabilità di trovare schemi che si adattano al rumore.
- Dipendenza dal regime: il ROC può comportarsi diversamente in condizioni di trend rispetto a quelle di mercato laterale, quindi mischiare regimi può nascondere debolezze.
- Qualità dei dati ed effetti di survivorship: se il dataset storico è incompleto o incoerente, i risultati possono riflettere artefatti dei dati.
Verifica o prossima domanda
Per verificare in modo indipendente i fatti principali, è possibile effettuare un controllo della progettazione del proprio backtest:
- Si riesce a scrivere esattamente il calcolo del ROC, inclusa la lunghezza del periodo di osservazione e la serie di input scelta?
- Ogni decisione di trading utilizza solo informazioni che sarebbero state disponibili al momento della decisione?
- Si stanno modellando i costi e applicandoli in modo coerente con la regola di trading?
- È stata mantenuta una porzione out-of-sample (o si è utilizzata una validazione walk-forward) che non è stata impiegata per scegliere i parametri?
- Se si ripete il test con piccole variazioni predefinite, i risultati rimangono sostanzialmente simili?
Una domanda utile successiva non è “il ROC prevede bene”, ma “sotto quali assunzioni e in quali regimi di mercato il comportamento basato sul ROC rimane stabile una volta applicati costi e controlli contro i bias?”