Come confrontare IS e OOS? Un T-Test per analizzare la Robustezza di un Trading System

Nello sviluppo e nella validazione di trading system è prassi suddividere i dati a disposizione in due blocchi: In Sample, anche detto Training Set, E Out of Sample, anche detto Test Set. Il fine di questa operazione è quello di creare le condizioni che ci permettano di misurare, in fase di validazione, la qualità dei segnali individuati dal modello.

Qual'è la maniera più corretta di effettuare questo confronto IS/OOS? E' sufficiente un esame "visivo" (qualitativo) della porzione di equity line In Sample rispetto a quella Out Of Sample o è possibile recuperare una certa oggettività di giudizio, misurando tale somiglianza?

Nel proseguo dell'articolo cerchiamo di rispondere a questa domanda, ma prima di spiegare il significato dell'analisi qui accanto, dobbiamo recuperare alcuni concetti chiave... 

Ritrovare consistenza fra il risultato In Sample e Out Of Sample dipende da quale componente dei movimenti del prezzo il sistema utilizza per generare i segnali; le due componenti in cui vogliamo scomporre il prezzo, nel caso in esame, sono il SEGNALE e il RUMORE.

In questo senso intendiamo che il prezzo si muove secondo due grandezze: un movimento di fondo chiamato segnale, che si ripresenta con una certa sistematicità, e un movimento casuale chiamato rumore. Un trading system deve cercare di individuare il primo, ignorando il secondo.

Sono numerosi gli esempi in cui osserviamo reazioni a un determinato scenario che sono statisticamente prevedibili: il riempimento dei gap di apertura sull’indice Standard & Poor’s 500, oppure i classici bias stagionali sulle commodities. Vale la pena, onde evitare fraintendimenti, definire la nozione di “statisticamente prevedibile”. Per statisticamente prevedibile intendiamo un sistema di scommesse il cui esito, associato a un payoff, offra un’opportunità di guadagno consistente nel tempo. Si tratta di ragionamenti che abbiamo già fatto in questo articolo e che vi invito a leggere se volete approfondire questo tema.  Il lancio di una moneta con associato un payoff di 1 a 1 è imprevedibile, in quanto non è possibile stabilire quale sia la scommessa che, in futuro sul lungo termine, ci permetterà di guadagnare di più. Il lancio di una moneta con associato un payoff di 1.20 a 1 su testa, e 1 a 1 su croce, è prevedibile, in quanto sappiamo che, scommettendo su testa, sul lungo termine otterremo un profitto. Si noti che il profitto viene ottenuto sebbene il 50% delle scommesse chiudano in perdita. 

Un trading system, per essere profittevole, deve cogliere una finestra di prevedibilità nel comportamento del mercato. Ovvero deve essere in grado di generare segnali il cui esito, associato a un payoff medio, sul lungo termine sviluppi un guadagno.

Si nota come la scommessa Browniana della moneta con payoff 1 a 1, indipendentemente da quando decidiamo di accettarla e quando no, non può generare reddito. Tuttavia, dato un set di scommesse passate, è possibile creare un trading system che ci dica, considerando le ultime N scommesse, se prendere o non prendere la prossima. Creando un trading system dipendente da un numero sufficientemente elevato di variabili, nella ricerca del set di parametri migliore da utilizzare si navigherà uno spazio abbastanza ampio da contenere almeno una combinazione in grado di mostrare un rendimento molto importante.

Tuttavia noi sappiamo che, per costruzione, la serie su cui il sistema interviene non è prevedibile, e abbiamo quindi l’assoluta certezza che il risultato ottenuto non sarà replicabile in futuro.

La componente di rumore dei prezzi è in tutto e per tutto assimilabile all’andamento di una scommessa su una moneta con payoff 1 a 1. Essa ha una distribuzione simmetrica gaussiana ed è quindi completamente inutile nello sviluppo di un modello volto all’estrazione di profitto dal mercato. Ma, come nel caso della moneta, è possibile e anzi estremamente facile creare un trading system che su un set di dati sia in grado di mostrare un alto tasso di predittività, sappiamo, tuttavia, che il rumore della serie non ha un sottostante prevedibile e quindi il sistema non ha possibilità di mostrare comportamenti analoghi su dati mai visti. In queste situazioni si parla di over-fitting (o sovra-ottimizzazione). 

Ora, nel trading la situazione è un po’ più complessa, e a meno di commettere errori banali (esistono infatti numerose modalità con cui è possibile ridurre il rischio di overfitting, che presentiamo nel corso IntraDay Trading System) il comportamento del nostro trading system sarà sempre basato su un mix di rumore (la componente casuale) e segnale (la componente predittiva).

Per comprendere la natura e le proporzioni di questa mix, l’unico modo, è quello di verificare il comportamento del trading system su dati diversi da quelli di sviluppo, da qui la definizione dei due blocchi di dati, In Sample e Out of Sample, che si è data all’inizio di questo articolo.

Essendo la componente di rumore imprevedibile (come nella scommessa sull'esito del prossimo lancio della moneta con payoff 1 a 1), il profitto su di esso generato sui dati Out of Sample si trasformerà in un andamento erratico non direzionale a cui si sommerà l’andamento del segnale.

Se la componente di segnale è sufficientemente forte e presente nella mix del trading system, il sistema in esame mostrerà rendimenti in Out of Sample soddisfacenti.

Proviamo a scomporre e mostrare questa miscela.

Nella parte superiore, con le due linee verdi e una rossa, vediamo l’andamento In Sample del nostro sistema: a sinistra il profitto generato attraverso la componente di rumore, in centro quello attraverso il segnale, e in rosso a destra la somma delle due.

Nella parte inferiore, con le due linee blu e una rossa, mostriamo invece la scomposizione delle due componenti nella porzione Out of Sample. Guardando le due linee rosse, ovvero l’effettivo rendimento totale del sistema, notiamo chiaramente il degrado delle performance in Out of Sample a causa del venir meno della componente di fitting sul rumore. Qui si vede come il risultato generato nella porzione In Sample fosse interamente dovuto alla componente di rumore e non alla componente prevedibile e persistente di segnale. L’inevitabile incapacità di modellare il rumore su dati non visti in fase di sviluppo fa venir meno questa componente dominante di rumore (quella su cui si era fittato il sistema e che lo faceva guadagnare) e dunque ha provocato, in Out of Sample, questo degrado nelle performamce del sistema.

Questo è quello che viene definito un modello caratterizzato da forte overfitting.

Purtroppo è molto complesso creare un sistema capace di cogliere un segnale dai movimenti di uno strumento, si stima infatti che i prezzi si muovano per il 95% del tempo come Moti Browniani.

Individuare un edge sul mercato richiede una conoscenza approfondita dello strumento e la capacità e l’esperienza necessarie a evitare le trappole dell’overfitting. Al contrario è molto semplice creare un sistema che fitti il rumore (è un banale esercizio di forza computazionale), motivo per cui nei trader alle prime armi si sviluppa facilmente l’errata convinzione che non sia possibile sviluppare modelli (meccanici) profittevoli.

Il processo appena mostrato di scomposizione di un equity line nelle sue componenti di rumore e segnale, purtroppo, non può essere eseguito in maniera inversa: non è possibile, da un’equity line, risalire e separare le sue componenti di segnale e rumore. Se lo fosse il nostro lavoro sarebbe estremamente più semplice.

Come facciamo, dunque, a stabilire se i risultati Out of Sample sono "compatibili" con i risultati In Sample?

Esistono una moltitudine di approcci, qualitativi e quantitativi, volti a questo scopo. Essendo nel trading non note la stragrande maggioranza delle variabili, è difficile stabilire quali delle assunzioni di questi metodi siano più o meno forti, e determinare quindi quale approccio sia il più affidabile.

Questi approcci sono attrezzi in possesso del trader che, usati con cura e cognizione di causa, possono essere molto utili e permettono di stabilire in anticipo quale sistema sia degno di un effettivo tentativo di utilizzo e quale no. Di seguito presentiamo uno di questi possibili approcci.

Si considerino le due coppie di linee rosse (In Sample e Out of Sample) delle figure precedenti.

Si può dedurre che l’overfitting del sistema non è elevato qualora
non sia possibile rigettare l’ipotesi che i trade che hanno generato
le due equity line provengano dalla stessa popolazione.

Se infatti potessimo rigettare questa ipotesi, e potessimo concludere che la distribuzione di origine delle due linee fosse diversa, si potrebbe giungere alla conclusione, essendo la componente di segnale prevedibile, che la miscela dell’equity line In Sample era prevalentemente spostata verso il rumore, la mancanza del quale ha provocato quindi un importante cambiamento nell’andamento del sistema in Out of Sample. Da cui l’overfitting.

Si faccia attenzione sul fatto che non poter rigettare un’ipotesi non implica il poterla accettare.

Non possedere sufficiente evidenza statistica da poter dire con una certa confidenza che due distribuzioni sono diverse, non suggerisce che esse siano uguali.

Questo è importante perché ci conduce ad utilizzare questo test come in generale si usano i backtest:

i backtest non servono a stabilire se e quanto un sistema guadagnerà,
ma a stabilire se un sistema presenti criticità e se abbia o meno
il potenziale di guadagnare, e scartare chi non ce l'ha.

Detto questo, assumendo la normalità della distribuzione dei trade, si può fare un test d’ipotesi per verificare se, con un certo livello di confidenza si può rigettare l’ipotesi che i trade In Sample e i trade Out of Sample vengano dalla stessa popolazione.

Per questo esempio utilizzerò un trading system reale, che lavora break out su Gold Future, che è stato sviluppato alla fine del 2012. Dalla primavera del 2013 questo trading system è pubblico, dato che è una delle 5 strategie che mettiamo a disposizione (a codice aperto) nel corso “Trading Automatico(replicato 3 volte all’anno, da allora). Questa scelta, quindi, va nella direzione di dipanare ogni dubbio nel lettore sull’effettiva suddivisione delle porzioni di dati IS e OOS (in questo caso, quello che chiamiamo Out Of Sample sono più di 5 anni di operatività live).

Qui è possibile esaminare il fascio di equity line ottenute facendo variare i parametri liberi di questa strategia in un intorno dei valori che possono assumere, nel periodo che va dal 2003 al 2013 (In Sample).

Un primo esame visivo delle equity line relative ai diversi set di parametri indica che il sistema è pronto per un’analisi dei risultati sulla parte di dati Out of Sample, dal 2013 al 2018 (che qui sopra è la porzione con sfondo verde, dove, quindi, non so ancora come si sia effettivamente comportato il trading system).

Verifichiamo anzi tutto, qualitativamente, la tenuta dell’ipotesi di normalità. Sulla sinistra, nell'immagine qui sotto, vediamo gli istogrammi dei campioni di trade: quello colorato è l’istogramma del campione Out of Sample, quello posteriore con il solo contorno nero è l’istogramma dei trade In Sample.

Sulla destra vediamo invece il relativo fit gaussiano. Vediamo che i due fit si comportano in modo simile ai relativi istogrammi, e vediamo inoltre che l’errore dell’ipotesi di gaussianità è orientato verso una leggera sovrastima del rischio al ribasso, e a una sottostima del potenziale al rialzo. Ripetiamo questa analisi su altre equity ottenute facendo fluttuare i paremtri liberi del trading system in un intorno dei valori scelti nella fase di addestraento (In Sample). Stabiliamo dunque che l’ipotesi di fondo non è eccessivamente forte e che possiamo quindi proseguire. Il lettore, qualora lo ritenesse necessario, potrebbe proseguire con il disegno di un qq-plot o con un test di Shapiro come ulteriori forme di verifica di gaussianità. Già dagli istogrammi e dalle curve precedenti si intravede la somiglianza delle distribuzioni di origine, ma proseguiamo comunque nella ricerca di una risposta quantitativa.

Prima di allontanare il trader da quello che potrebbe sembrare un’analisi di difficile realizzazione, è meglio premettere che tutte queste immagini sono state prese dalla piattaforma StrategyLAB dove è possibile lanciare questi test con un semplice click. L’idea alla base di questa piattaforma è quella di rendere semplice e alla portata di tutti, delle analisi piuttosto sofisticate da realizzare ma altrettanto utili.

Fatta questa premessa, utilizziamo quindi un T-Test di Student per campioni indipendenti nel quale non si assume uguale varianza. Per questo test richiediamo una bassa confidenza (qui al 90%): questo significa che sarà sufficiente una minore evidenza statistica affinchè sia possibile rigettare l’ipotesi che i due set di trade provengano dalla stessa distribuzione. Se richiedessimo una confidenza maggiore, poniamo del 99.9%, sarebbe estremamente difficile rigettare questa ipotesi, producendo un test troppo semplice da passare. Si tratta quindi di una scelta conservativa e improntata alla cautela, ma scaricando la piattaforma StrategyLAB e aprendo l'analisi su questo trading system (che mettiamo a disposizione nel terzo pacchetto che è possibile scaricare liberamente per alimentare la piataforma), è possibile modificare questo intervallo di confidenza a proprio piacimento e esaminare il risultato del test.

Nella parte inferiore dell'immagine riportata qui sotto vediamo, per ognuno dei backtest relativi a ognuno dei possibili set di parametri del trading system (abbiamo fatto variare ogni parametro libero, su un intorno del valore scelto), la confidenza limite oltre cui è possibile rigettare l’ipotesi del T-Test. Solo per una ristretta parte dei backtest (quella con sfondo rosso) è possibile, con il 90% di confidenza, rigettare l’ipotesi di provenienza dalla medesima distribuzione.

Entro questo intervallo di confidenza (del 90%), possiamo quindi affermare che le operazioni effettuate dal trading system su dati In Sample e quelle effettuare su dati Out Of Sample, appartengano alla stessa famiglia, ovvero che la maggior parte delle combinazioni di parametri testate qui, abbia prodotto trading system che hanno intercettato una componente di segnale che continua a dare indicazioni corrette

Questa tendenza è riscontrabile anche nel comportamento del sistema nella parte Out of Sample dei dati, e nel suo rimanere, per la maggior parte dei valori su cui abbiamo fatto fluttuare i parametri della strategia, all’interno delle soglie di previsione costruite sui dati In Sample.

Lo specifico set di parametri scelto nel 2013 per questa strategia è quello scelto nella parte superiore del grafico, e che produce l'equity dell'immagine in alto, al centro, dove si vede l'andamento successivo e la proiezione, sulla porzione Out Of Sample, della "campana" che dovrebbe intercettare la futura evoluzione entro questo intervallo di confidenza del 90%.

Abbiamo qui mostrato come poter misurare con uno dei test che può effettuare la piattaforma StrategyLAB, se i trade prodotti dal sistema sui dati In Sample non siano troppo diversi da quelli prodotti sui dati Out of Sample. Abbiamo proposto un approccio quantitativo la cui unica assunzione è la gaussianità dei trade, assunzione che può essere più o meno forte a seconda del trading system e dello strumento su cui lo si è applicato, e che abbiamo mostrato come poter verificare.

Approfondiamo in dettaglio queste tematiche nel percorso Trading System Academy di QTLab, ed in particolare nella giornata  IntraDay Trading System , dove mettiamo a disposizione 5 Trading System (a codice aperto e che lavorano, ciascuno, su più mercati) ma sopratutto dove andiamo ad esaminare le tecniche più efficaci per misurare la robustezza di strategie intraday, dall'analisi di Persistenza, alla Noise/Signal Analysis (l'aggiunta di Rumore artificiale nella serie storica per validare il Trading System), all'uso del Walk Forward Optimizer, accanto ad altri concetti chiave che puoi esaminare in dettaglio qui, nel programma di questo corso.

Buon trading!