Tensorflow in borsa

Scopri di più >
artificial intelligence stock

Le reti neurali hanno cambiato radicalmente l’approccio alla soluzione dei problemi spostando l’attenzione sui dati piuttosto che sul modello da utilizzare per trattare gli stessi.
I problemi lineari, come quello che vogliamo affrontare, non hanno bisogno di reti neurali per essere risolti. Allora perché preferire questo approccio a quello tradizionale? Semplicemente per spostare l’attenzione sui dati lasciando alla macchina il compito di generare la funzione che dovrà risolvere problema.


Nessuna magia: è solo una previsione

stock forecast Il risultato del nostro lavoro sarà una previsione supportata da un grado di affidabilità indicativo per chi dovrà prendere decisioni operative.
Ricordiamo infatti che lo scopo delle reti predittive non è quello di sostituirsi all’operatore ma quello di supportare lo stesso nel prendere decisioni.
Le valutazioni operative confermate dal risultato fornito dalla rete hanno un grado di affidabilità molto alto. Risultati contraddittori spingono l’operatore a spendere qualche istante in più nel verificare le valutazioni fatte.
Un caso noto riguarda lo studio fatto con le reti neurali convoluzionali in riferimento alla diagnostica dei tumori. Siamo ancora lontani dal fidarci ciecamente della diagnosi di una rete neurale artificiale, ma l’operatore che verifica le radiografie può avere conferma o meno delle valutazioni fatte e riprendere lo studio dei casi sui quali i risultati non coincidono.


Un problema concreto: previsione del valore dei titoli

L’ intelligenza artificiale viene utilizzata per risolvere problemi concreti come quello che vogliamo affrontare.
Conoscere una previsione sull’andamento di un certo titolo può aiutare l’operatore a prendere decisioni in merito la linea da tenere.
L’idea è quella di allenare la rete a riconoscere il valore di chiusura di un certo titolo in funzione del valore di apertura del titolo stesso. Si può anche pensare di spostare la previsione indietro di un giorno e quindi ottenere una rete in grado di prevedere il valore di chiusura del giorno successivo.
Questo può essere scalato all’infinito, ma da prove fatte il grado di affidabilità è inversamente proporzionale al numero di giorni di previsione. Ad esempio su un titolo abbiamo ottenuto un grado di affidabilità del 99,5% per previsioni ad un giorno e 99,1% per previsioni a 2 giorni. Sui risultati ottenuti ci torneremo più tardi, quindi non facciamoci impressionare dalle percentuali e soprattutto ricordiamo sempre che si tratta di una previsione riferita ad elementi il cui valori dipende da fattori di vario tipo (compresi quelli legati all'umore generale).


I dati

artificial intelligence big data

Quanti dati servono per allenare una rete? Questa domanda, come tante altre riguardanti le reti neurali, non ha una risposta precisa.
In genere si utilizzano tutti quelli disponibili cercando di indovinare la percentuale di campioni da destinare all’allenamento e quelli da utilizzare in fase di test.
Nel nostro caso i dati utilizzati per allenare e testare la rete sono stati presi da yahoo finanza, dall'anno 2000 fino ad oggi, direttamente in formato csv. I campioni sono circa 5000, uno per ogni giorno, e comprendono:

  • data di rilevamento
  • apertura
  • chiusura
  • valore massimo
  • valore minimo
  • volume

Per poter allenare adeguatamente la rete avremmo avuto bisogno di circa 10000 campioni. In questo caso avremmo potuto destinare una parte dei dati ad un “allenamento di rinforzo” chiamato “validazione”. Abbiamo quindi proceduto utilizzando circa il 60% dei campioni per l’allenamento ed il restante per i test.
Tensorflow lavora bene con dati uniformi e nel campo [0, 1].
Il problema nel nostro caso ha riguardato la disomogeneità di scala tra il volume e il resto dei valori. Nell’esempio che segue abbiamo un valore di apertura di 7,95E associato ad un volume di scambio di 361.172 unità.
E’ stato portato tutto nel campo [0, 1] per poi essere riconvertito in fase di valutazione dei risultati.
L'operazione di preparazione dei dati è stata la più onerosa in termini di tempo nell'ambito del progetto.


La struttura della rete

I problemi lineari spesso non richiedono reti complesse. Nel nostro caso è stato sufficiente utilizzare una rete senza strati intermedi e con ingresso ed uscita interamente connessi.
In ingresso troviamo 5 nodi rispettivamente per i valori apertura, chiusura, massimo, minimo, volume ed in uscita un unico nodo contenente la previsione attesa.
La definizione della rete richiede altri parametri la cui comprensione esula dallo scopo di questo articolo. I valori definitivi sono stati ottenuti dopo varie prove conseguenti la fase di test.


Allenamento e test

artificial intelligence stock

Allenamento e test vengono eseguiti da routine sostanzialmente simili con la differenza che nel primo caso i dati sono accompagnati dal risultato mentre nel secondo caso il risultato deve essere previsto (si parla di dati non etichettati) e confrontato con il valore reale al fine di verificare la qualità della previsione.
La fase di allenamento ha lo scopo di calcolare i valori da associare a ciascun collegamento presente tra uno strato e il successivo. Questi valori serviranno ad attivare o meno i percorsi che consentono di raggiungere il risultato.
La fase di test ha lo scopo di verificare l’affidabilità dei risultati calcolando lo scarto tra il valore atteso e quello previsto. A fronte di questo è possibile definire un indice di affidabilità che identifica la qualità della rete e quindi della previsione. Come anticipato, con alcuni titoli è stato possibile raggiungere un grado di affidabilità del 99,5% il che significa che la previsione commette un errore medio dello 0,5%.
Durante le fasi di allenamento e test è stato creato un log di report utilizzato da Tensorboard per visualizzare in tempo reale i parametri caratteristici della rete.


Interpretazione dei risultati

I valori ottenuti possono fare pensare a previsioni infallibili, ma purtroppo non è così. Vediamo cosa succede realmente basandoci sugli ultimi dati rilevati:

AperturaPrevisione chiusuraChiusura realeScarto
7,957,8747,780,094
7,857,9577,840,117
7,887,9277,990,063
7,947,9367,930,006

Risulta evidente da questi dati che scarti molto bassi mascherano il comportamento della previsione dando la percezione di un errore medio più elevato.
Questo conferma le considerazioni iniziali riguardo il ruolo della rete come efficace strumento di supporto.


Checkpoint

tensorflow checkpoints Le reti neurali richiedono lunghi tempi di allenamento in base alla mole di dati e alla loro complessità. Elaborare un batch di immagini richiede un tempo notevolmente superiore rispetto ad elaborare dati per un problema lineare. Per questo è consigliato l’uso di schede grafiche (gpu) che implementano unità di calcolo parallele in hardware e quindi permettono di ottenere i risultati in tempi molto più brevi rispetto ad una cpu (anche se multicore).
Tutto questo sforzo viene condensato in un file che rappresenta la rete allenata e che ha il grande vantaggio di poter fornire risultati in tempi brevissimi.
Se ci pensiamo questo aspetto è straordinario: è come se ci allenassimo per acquisire una specifica abilità e potessimo trasferire in un istante, ad un altro individuo, l’abilità appresa.
I checkpoint (così vengono chiamati in Tensorflow) sono file e come tali possono essere duplicati. La rete quindi viene allenata una volta sola e successivamente può essere utilizzata in diversi ambiti per aumentare, ad esempio, le potenzialità di un’applicazione software esistente. Calandoci nel concreto, una volta allenata la rete in grado di prevedere l’andamento dei titoli di borsa, è possibile integrarla in un software di analisi tecnica preesistente.
Inoltre i checkpoint possono evolvere quindi, partendo da una rete allenata, è possibile acquisire nuovi dati ed aumentare il livello di affidabilità della stessa. Il risultato sarà un nuovo checkpoint e quindi una rete “più capace” della precedente.


Considerazioni finali

Il caso presentato ha evidenziato l’utilità delle Reti Neurali Artificiali nella soluzione di problemi lineari e le possibilità ancora inesplorate che offre questo nuovo paradigma.
Nonostante la semplicità della rete i risultati ottenuti sono sbalorditivi e invitano ad approfondire un argomento di estrema attualità che promette sviluppi oltre le nostre aspettative.
Allo stato attuale sono stati sviluppati diversi progetti e le reti neurali sono in grado di svolgere lavori cognitivi, visivi e linguistici molto importanti.
Stiamo lavorando per combinare gli strumenti di computer vision con l’analisi dei contenuti partendo da progetti esistenti come ad esempio il riconoscimento e la classificazione di oggetti.


28 Agosto 2019
Scopri di più >

Questo sito utilizza cookies tecnici al fine di migliorare la tua esperienza di navigazione   HO CAPITO

Maggiori informazioni sono disponibili   QUI