Introduzione al Machine Learning per il Trading
Negli ultimi anni analisi tecnica e analisi fondamentale hanno visto crescere a loro fianco una terza metodologia di trading basata su algoritmi d'intelligenza artificiale. La capacità di elaborare previsioni sulla base di metodologie quantitative applicate ai Big Data, risorsa abbondante nei mercati finanziari, e’ stata anche favorita dall’aumento della potenza di calcolo dei nostri computer e la diffusione di linguaggi di programmazione come Python e R.
Machine Learning per il Trading e le resistenze del forno di trattamento
Cio’ che mi avvicino’ qualche anno fà all’intelligenza artificiale fu’ la mia irrefrenabile curiosità al modo delle previsioni, quella tentazione innata di provare a conoscere il futuro. L’oracolo Delphi, l’interpretazione dei sogni che ha guidato molteplici generali e antichi eserciti, storie di presage raccontate da scrittori di ogni epoca, gli studi di Doc del film Ritorno al Futuro, sono solo lontani tra loro esempi di come importante e accattivante era, é stato, é e sarà il problema.
Agli inizi della mia carriera all’interno di realtà industriali avevo il progetto d'implementare un sistema di manutenzione preventiva su un forno lungo 30 metri all’interno del quale scorrevano su un rullo a maglie metalliche, componenti meccanici che dovevano subire un trattamento termico. All’interno del forno a lungo tutta la sua lunghezza erano posizionate 54 resistenze elettriche della lunghezza di 2 metri che lo attraversavano trasversalmente. Il prezzo di ognuna di queste resistenze elettriche era di circa 1000€ e la frequenza dei guasti su queste resistenze creava continue interruzioni della linea di produzione, nonché notevoli costi di sostituzione.
Il mio compito era studiare la frequenza dei guasti ed implementare un sistema di previsione delle operazioni di sostituzione di quelle resistenze per cui si prevedeva un imminente guasto.
Allo stesso tempo bisognava garantire un minimo stock per garantire la funzionalità continua della Lina di produzione. Era il 2003 e i nostri metodi di previsione erano basati sull’osservazione e sulla semplice registrazione dei dati di guasto, interpretazioni soggettive e decisioni prese in riunione fatte a pie’ di macchina. Ecco, quello era un esempio di un nostro tentativo di predire il futuro senza il supporto di una metodologia scientifica che ci avrebbe permesso d'individuare oggettivamente le resistenze prossime ai guasti con un basso errore di previsione.
Chi avrebbe mai immaginato che solo qualche anno sarebbero esplosi in rete le varie apps di traduttori simultanei, riconoscimenti vocali e facciali. Chi avrebbe mai immaginato una cosi grande salto avanti nei sistemi a guida autonoma o nei sistemi a supporto dei processi decisionali. Ebbene questi ultimi sopra citati sono tutti sistemi basati su algoritmi previsionali. Non aspettatevi nulla di magico, qui si parla di statistica, di logica e di programmazione.
Machine Learning per il Trading : La Regressione
Facciamo un passo indietro, e cerchiamo di capire cosa significa analiticamente fare una previsione.
Ogni equazione fa una previsione.
Ogni formula di fisica classica fà una previsione.
Usando la prima legge della dinamica F=MxA sappiamo che se applichiamo una forza F a una massa M prevediamo che questa subirà una certa accelerazione.
La previsione in questo caso avrà un errore nullo per cui la previsione e’ anche certezza.
In molto altri campi, dove formule fisiche non sono ancora state trovate dovremmo accontentarci sempre di una previsione e di un errore a esso associato. Prendiamo un grafico a due variabili che riporti la relazione tre esse in diversi casi (F1).
Avremo uno scatter plot che mostrerà un certa tendenza, data per esempio dall’unione dei punti o dall’approssimazione della tendenza dei punti con semplici rappresentazioni geometriche.
Tale approssimazione può essere perfetta, nel caso la relazione delle due variabili segue una legge ben definita (una retta (F2) o un polinomio (F3)), l’approssimazione ha un errore nullo e la previsione della relazione tra altre due variabili del campione per quel fenomeno specifico e’ esatta. Ove l’approssimazione non e’ perfetta, dobbiamo accontentarci di una previsione con errore (F4).
Trovai in rete un indovinello per cui bisognava risolvere un problema logico del tipo :
9 = 90
8 = 72
7 = 56
6 = 42
3 = ?
Senza fare grandi calcoli avevo ipotizzato per il 3 due risposte :
a)12
b)18
Intuitivamente le due risposte avevano una loro assunzione di base, inconfutabile, per cui entrambe le risposte erano corrette con un errore del 50%.
Provai allora a trovare la soluzione matematicamente che era semplicemente una previsione assumendo che la migliore legge di rappresentazione di quei numeri fosse una retta di regressione. Avevo in quel periodo cominciato a studiare la programmazione in Python e mi ritrovai a risolvere il gioco facendo girare quelle relazioni su un sistema di reti neurali.
Ovviamente era come sparare alla mosca col cannone, ma mi aiuto’ a interiorizzare il concetto di previsione con Intelligenza Artificiale che era tanto in voga in quel periodo.
Per chi fosse curioso riporto il codice che avevo lanciato:
Come dicevo concetti fondamentali di previsione sono la Regressione e Classificazione.
Entrambe sono operazioni che servono a determinare (a prevedere) specifici output (valori numerici in regressione e valori discreti o binary in classificazione) vincolati ad una certa serie di inputs.
Guardiamo un esempio di Classificazione.
Quando parliamo di previsioni sulla base di un set di dati abbiamo uno schema del tipo:
I dati che vanno sotto gli Attributi sono variabili indipendenti.
I dati che vanno sotto l’Etichetta sono chiamati variabili dipendenti.
A partire da una serie di casi n con attributi n di n ed etichetta nota, la previsione consiste nel trovare l’etichetta di un nuovo caso x con una certa serie di attributi di x, sulla base dei principi della serie di dati (1, 2, 3, n) in cui l’etichetta era nota. Prendiamo per esempio un sistema che voglia classificare o prevedere l’appartenenza ad una classe di frutti a partire da determinate caratteristiche:
In questa limitata quantità di dati possiamo facilmente prevedere che sulla base dei dati esistenti il frutto che dobbiamo classificare e’ sicuramente un Limone.
Ora facciamo la previsione per un altro caso, cambiando una delle variabili indipendenti:
In questa limitata quantità di dati possiamo facilmente prevedere che sulla base dei dati esistenti il frutto che dobbiamo classificare e’ sicuramente un Ribes o una Ciliegia o Uva .
Il Sistema farà una previsione con un errore del 33.33%. Scalando il problema a migliaia di casi e migliaia di attributi e’ chiaro che la computazione umana qui mostrerebbe I suoi limiti. La macchina funziona in questo caso molto meglio.
Per la Regressione, come nell’esempio dell’indovinello in rete o della prima legge della dinamica, l’etichetta (o se vogliamo la previsione) e’ un numero.
Python e Machine Learning per il Trading
Python e’ un linguaggio di programmazione molto diffuso che ha delle vaste librerie e una grande community di supporto. Per un approccio ludico,si puo’ pensare di cominciare a programmare in Python trovando gli innumerevoli esempi disponibili in rete, adattarli alle proprie necessità e accumulare esperienza. Non e’ necessario avere grandi conoscenze informatiche per cominciare ma ovviamente lo sviluppo a livello professionale in questo campo richiede uno studio importante. Anche per chi comunque non è uno sviluppatore di codici, la ricerca di linee di codice e l’adattamento al nostro problema e’ in ogni caso interessante e puo’ regalare buone soddisfazioni. Python e’ open source, scaricabile gratuitamente e lo troverete spesso in combinazione con l’ambiente di programmazione Jupiter Notebook.
Machine Learning applicato al Trading
Con Python e’ possibile ad esempio recuperare direttamente dal web le quotazioni di strumenti finanziari e ricavare con semplici istruzioni grafici andamento prezzi, medie mobili, incroci ed individuare molto semplicemente informazioni per un trading basato sull’analisi tecnica. Non siamo ancora in ambito machine learning perche’ in questo caso il codice viene usato per una semplice elaborazione dati, senza previsioni, solo rappresentazioni.
Quando parliamo di Machine Learning, parliamo invece di una forma di intelligenza artificiale, che si basa su algoritmi che prevedono una fase di apprendimento del fenomeno descritto da dati esistenti (I casi e gli attributi nel problema di classificazione dei frutti) e elaborare una previsione per nuovi casi con specifici attributi.
Considero parte integrante del Machine Learning alcune altre discipline che hanno a loro volta una loro ben precisa trattazione : il Natural Language Processing e il Deep Learning (F5).
La programmazione di un sistema previsionale
La generica struttura concettuale di un sistema di Machine learning si compone dei seguenti passi fondamentali :
Importazione dati
Elaborazione e organizzazione dati
Definizione del modello da utilizzare
Addestramento del modello
Valutazione dell’affidabilità del modello
Previsioni
Nei prossimi giorni e settimane usciranno nuovi articoli dove vedremo come costruire con Python un Sistema Previsionale basato sul Machine Learning per il trading.
NON PERDERTI I PROSSIMI ARTICOLI
Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa.
E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale.
tempo fa avevo letto degli articoli in inglese su come creare sistemi predittivi per i mercati azionari, però ho lasciato perdere dopo veramente poco. Ho riniziato da poco a interessarmi a questo campo, ma con un grande dubbio : è davvero possibile avere dei piccoli rendimenti sui mercati semplicemente utilizzando dati, potenza di calcolo e modelli statistici ?
Fighissimo, complimenti davvero una lettura interessante e che mi ha preso fino alla fine. Trovo geniale risolvere quel tipo di quiz con delle reti neurali STUPENDO. Però ho un due dubbi, il primo è perché 12 ? Come ci sei arrivato ? e il secondo è che avendo provato il codice mi esce 20 e qualcosa, questo conferma la tesi del 18 ? Ho anche provato ad aumentare di molto le epoch di allenamento ma sono iniziati a uscire numeri negativi LOL. Grazie in caso di una risposta.
Buona introduzione a questo mondo, farete un articolo dove spiegate come creare una rete neurale o un modello statistico con python su dati finanziari ?
Articolo veramente interessante, utilissimo il file audio tipo podcast!! Perchè non lo mettete a tutti gli articoli? Comunque non vedo l'ora che esca il prossimo articolo della serie.
Tempo fa avevo partecipato a degli interventi in questo forum https://www.intelligenzaartificialeitalia.net/forum/deep-learning/previsioni-prezzo-azioni-con-deep-learning