Back to the future

Come ha spiegato Luca nel primo articolo siamo davanti a un rischio di selection bias. Se vogliamo comprendere come questo bias possa o meno impattare le performance della nostra strategia dobbiamo percorrere alcuni step:

  1. Definire il bias
  2. Recuperare i dati necessari a individuare il bias
  3. Verificare l’esistenza del bias nei nostri test
  4. Preparare i dati
  5. Creare una procedura di test che ci permetta di escludere/isolare il bias
  6. Misurare l’impatto del bias sui nostri test

Definire il bias

La nostra ipotesi è che i risultati dei test sulla strategia applicata al Nasdaq 100 siano affetti da selection bias. Stiamo infatti effettuando test sul passato utilizzando come campione dei nostri test non la composizione del listino Nasdaq 100 nel 2000, 2001, 2002 e così via, ma stiamo proiettando nel passato la composizione attuale del 2021. E’ un problema? Non lo sappiamo, per ora questa è solo una ipotesi che va verificata (allo stesso modo in cui si ha un’idea per un trading system e si vuole capire se l’idea sia buona o meno).

Lo base fondamentale per avere test che producano risultati attendibili è: buona qualità della base dati. Senza buoni dati, tutto il lavoro successivo non è affidabile o significativo.

Recuperare i dati

La prima cosa che ho fatto è stata cercare su Google più informazioni sulla composizione del listino Nasdaq. Wikipedia ha una pagina con i dettagli di tutti i cambiamenti avvenuti nel listino dal 2008 ad oggi. Purtroppo la lista è testuale, non contiene i ticker e sarebbe molto oneroso trasformare tutto in una tabella che possa essere letta da un software. Ho quindi continuato la ricerca e ho trovato alcuni siti che offrono (a pagamento) tutti i cambiamenti e la composizione per anno del listino in formato csv.

Dopo qualche scambio di email con alcuni fornitori ho scelto la soluzione che mi sembrava meglio strutturata e affidabile e ho pagato $100.

Ho menzionato il costo perchè mi sembra importante fare una considerazione: la qualità dei dati è la base di tutto, senza questa qualunque altra analisi che farete usando dati non di qualità sarà fallace. I soldi per acquistare dati non si spendono, si investono con un ritorno dell’investimento quasi sempre positivo.

Verificare l’esistenza del selection bias

Lo step di verifica è fondamentale per evitare di perdere tempo prezioso. Esiste un modo veloce per fare una verifica empirica sull’esistenza o meno del bias? Perchè se con la prova empirica mi dovessi accorgere che questo bias non esiste, non ha senso continuare con tutta l’analisi.

Nel nostro caso andiamo ad analizzare la composizone del Nasdaq 100 negli anni. Il listino contiene sempre circa 100 titoli. Dall’analisi emerge che:

  • Dal 1994 al 2021 il numero totale di titoli comparsi almeno una volta nel listino è 402
  • Dei 102 titoli che compongono il listino oggi, solo 16 erano presenti nel 1994: il 16%
  • Nel 2000 solo 24 erano presenti: il 24%
  • Nel 2010 solo 44 erano presenti: il 43%

Questa veloce analisi ci fornisce un responso chiaro: il selection bias esiste, eccome se esiste! Se ci limitiamo anche solo agli ultimi 11 anni, il listino è cambiato per più del 50% del suo elenco titoli. Un effetto sicuramente non trascurabile.

Cosa vuol dire questo per il nostro trading system e soprattutto per le sue performance? Non lo sappiamo ancora, ma abbbiamo capito che sicuramente dobbiamo rimboccarci le maniche per misurare questo selection bias.

Preparare i dati

Dobbiamo rendere i dati fruibili per le nostre analisi, nello specifico per TradeStation. Il file con i 402 titoli contiene anche i ticker ma preferisco chiamarli “pseudo-ticker” perchè non corrispondono esattamente ai ticker presenti in TS.

Sfruttando le Optimization API di TS ho programmato uno script che va a verificare l’esistenza di un ticker e sue variazioni (ad esempio alcuni titoli sono memorizzati con un “!” finale, altri con un “Q!” finale).

Rimangono fuori circa 50 titoli che non ho trovato in maniera “automatizzata”. Per questi ho usato un approccio di forza bruta: li ho verificati a mano uno per uno. Se pensate che questa sia una follia, vi rimando al punto sopra in cui spiego perchè una buona base dati sia fondamentale e soprattutto il passato non cambia, quindi una volta fatto questo lavoro potrò poi utilizzarlo per tutti i test futuri.

Ora siamo pronti a testare.

Creare una procedura di test

Certo, ma come testiamo?

L’idea è questa: ogni anno io applico la mia strategia solo ai titoli presenti nel Nasdaq 100 quell’anno. Questo perchè, non avendo a disposizione una Delorean e un flusso canalizzatore, non posso sapere nel 1998 quali titoli sarebbero rimasti nel listino fino al 2021. Devo ricreare in maniera fedele quello che avrei fatto se avessi deciso di lanciare il trading system nel 1995, nel 1996 e così via.

Tecnicamente quello che ho fatto è stato:

  • Lanciare la strategia su ognuno dei 402 titoli dal 1990 ad oggi e produrre tutti i trade nel formato poi utilizzabile da Porftolio Builder
  • Utilizzare uno script Python da me creato per costruire N panieri con i risultati aggregati anno per anno in base alla composizione del listino di quello specifico anno

Prendiamo ad esempio la cartella “2005”, questa contiene i file delle circa 100 azioni presenti nel listino Nasdaq 100 all’inizio del 2005.

Ogni singolo ticker è un file per Portfolio Builder che contiene tutti i trade del trading system su quella azione dal 1990 ad oggi.

Perchè non limitare lo storico solo a quell’anno? Perchè io voglio simulare esattamente cosa avrei fatto nel 2005. All’inizio del 2005 io avrei lanciato un backtest e utilizzato a livello di portafoglio dei criteri di rotazione per selezionare un sottoinsieme di titoli su cui operare nel 2005, quindi mi servono i dati prima del 2005 per poter utilizzare i criteri di rotazione. I dati dopo il 2005 non vengono utilizzati in quanto tramite Portfolio Builder limitiamo il periodo di “trading” al solo 2005.

Misurare l’impatto del bias

Siamo finalmente arrivati allo step finale. Come facciamo a misurare l’impatto del bias? Confrontiamo l’equity con bias (quindi proiettando nel passato il listino Nasdaq 100 del 2021 come è stato fatto sempre) con l’equity senza bias.

Ma dove trovo l’equity senza bias? E’ la somma delle varie equity di ogni anno.

Vado a sommare l’equity del 1995 che corrisponde alla somma dei trade effettuati solo nell’anno 1995 sulle azioni che ho selezionato tramite il mio criterio di rotazione sul listino Nasdaq 100 del 1995; e così via per 1996, 1997 fino al 2021. Unendo le varie equity di portafoglio tramite Portfolio Builder ottengo finalmente l’equity senza bias.

Cosa abbiamo scoperto? Lascio a Marco trarre le conclusioni nel prossimo articolo.

Facebook
Twitter
LinkedIn
Telegram

Lo studio dei mercati è un cammino senza un punto di arrivo: l’ingenuità degli esordi si arricchisce, prima di consapevolezza e conoscenza, poi di confusione e complessità. Solo il ritorno alla semplicità degli inizi, impreziosita dall’esperienza vissuta, consente di proseguire il percorso, consapevoli di non poter sapere mai del tutto cosa sia giusto fare, ma con la certezza di aver capito cosa sia sbagliato.

POST RELATIVI

Lascia un commento