Intelligenza artificiale: le reti neurali artificiali per il trading e gli investimenti

alt

Solitamente l’espressione “reti neurali artificiali” viene associata ai film di fantascienza, con cyborg amici o nemici dell’uomo, pronti ad aiutare la razza umana nei lavori domestici o in quelli pericolosi oppure aventi l’obiettivo di eliminarla; da alcuni anni però le RNA (ma non i cyborg) si stanno facendo avanti in settori come la finanza, la statistica, l’ingegneria, la fisica, la medicina, ecc.

Ora proviamo ad illustrare meglio l’argomento. Che cos’è una rete neurale artificiale?

Possiamo definirla come un sistema che simula l’apprendimento umano, ovvero che cerca di comportarsi come il cervello. Proprio come la mente, una RNA si compone di neuroni interconnessi con l’obiettivo di generare un output.

Quando diciamo anche solo una parola, essa è il frutto di una connessione di numerosi neuroni del nostro cervello, da cui poi è scaturita come output quella parola che abbiamo pronunciato; una RNA cerca di comportarsi in maniera assolutamente analoga.

Sono tutti uguali i neuroni di una rete neurale artificiale? Come sono connessi?

Iniziamo con il dire che una RNA si compone di tre strati:

 

–       input;

–       hidden;

–       output.

 

Solo quello hidden può avere più di uno strato.

Abbiamo vari tipi di architetture di rete che sono classificabili in due tipologie, quelle feed forward e quelle che non lo sono; le prime permettono connessioni tra i neuroni solo in avanti (strato input – strato hidden – strato output), le altre invece consentono che i neuroni possano anche avere retro-connessioni o tra neuroni dello stesso strato.

Illustrata in generale l’architettura, passiamo a vedere come lavora una RNA.

Dobbiamo innanzitutto avere un database composto da x input (x sarà anche il numero dei neuroni dello strato input) e y output (x sarà anche il numero dei neuroni dello strato output); sarà dunque chiaro che gli input sono le variabili utilizzate per l’apprendimento e gli output la variabile che dovrà essere prevista dalla rete. Per esempio, in termini di serie storiche finanziarie, si potrebbe cercare di prevedere le quotazioni di un titolo (quindi la variabile y) utilizzando gli indicatori (quindi le variabili x).

I record, le righe del DB (database), saranno dunque i valori delle serie storiche delle variabili x e y.

Il DB dovrà essere diviso in due set:

 

–       training

–       validation

 

Il primo servirà alla rete per apprendere, il secondo sarà quello in cui la rete fornirà un output a degli input che non ha mai visionato, dunque diciamo che la rete avrà assunto il potere di generalizzazione.

Per l’apprendimento, presenteremo alla rete degli esempi (i record costituiti dalle coppie input/output) e glieli ripresenteremo per n volte (epoche), finché raggiungeremo il target (o l’errore che fissiamo o le n epoche).

In maniera schematica, per ogni epoca:

–       forniamo gli esempi alla rete;

–       la RNA elabora l’output e calcola la differenza che intercorre con quello desiderato; quindi quantifica l’errore;

–       a RNA modificherà i pesi in base all’errore in modo tale da farlo diminuire;

–       si ripete la presentazione per n epoche finché si verificherà quello che si cerca: o si ottiene  il target error o si arriva al termine del numero di epoche prefissato.

 

La rete, al termine dell’apprendimento, dovrà essere in grado di riconoscere la relazione input/output e ciò potrà dimostrarlo nel validation set.

Esistono due tipi di apprendimento: supervisionato e non supervisionato; in questo articolo discutiamo solo del primo dei due.

 

Abbiamo parlato di “pesi” e penso che sia ormai chiaro di cosa si tratti: racchiudono la conoscenza della rete.

In base allo schema sopra elencato, è anche emerso un altro dettaglio che non sarà sfuggito al lettore, ovvero che gli strati decisionali sono due: hidden e output per il fatto che lo strato di input non ha pesi modificabili sugli ingressi in apprendimento.

Tutto questo processo di elaborazione come avviene?

Tramite un algoritmo e quello più utilizzato è la retro propagazione dell’errore (Back propagation) che si avvale della regola delta per la modifica dei pesi.

Per l’apprendimento della rete bisognerà fissare un learning rate, più lo si alza e più cresce il rischio di far perdere alla rete il “sentiero”; inoltre andranno scelte le funzioni di attivazioni per gli strati hidden e output.

Le reti neurali sono dunque delle black box, ovvero imparano le relazioni input-output, ma non ci dicono come hanno acquisito tale meccanismo; vanno comunque classificate come strumenti di analisi quantitativa.

Giunti a questo punto, al lettore risulterà chiaro che per realizzare ed utilizzare una RNA non serve andare nella fantascienza tra i cyborg, ma aver un software e conoscenza dell’argomento.

È utile saper programmare? Beh, diciamo che può servire agli sviluppatori o a chi decidesse di cercare di creare delle proprie architetture di rete, altrimenti non è necessario.

Abbiamo detto che tra i settori di maggior impiego per le reti neurali artificiali c’è quello finanziario; qui bisogna dividersi in due ottiche:

 

–       trader

–       investitore

 

nel primo caso saremo maggiormente interessati ad un ottica di breve periodo e alla generazione di segnali operativi, nel secondo caso faremo invece attenzione all’ambito previsionale ed altrettanto farà un fondo di investimento.

 

Prendiamo il caso di un trader.

Abbiamo detto poc’anzi che un trader farà più attenzione all’ottica di breve periodo; dunque potrebbe avere più propensione ad impiegare le RNA nella pattern recognition, ovvero far sì che la rete riconosca i pattern del mercato oppure come trading system, ovvero che la rete generi dei segnali operativi buy/sell.

 

Prendiamo il caso dell’investitore o del fondo di investimento.

Abbiamo detto che in questo caso presteremo più attenzione all’ottica di un periodo temporale più lungo di quello di un trader, dunque cercheremo di comprare su minimi significativi e di vendere su massimi significativi, realizzando una RNA previsionale o con segnali operativi aventi un orizzonte temporale non speculativo.

Ma, sempre in termini finanziari, non è che forse ci possano essere altri attori attenti alle dinamiche finanziarie, sebbene non siano proprio operatori dei mercati finanziari?

Ebbene si, un direttore o un imprenditore di un’azienda che commercia con l’estero, magari con gli States, potrebbe essere interessato, ad esempio, alla previsione del valore del cambio EUR/USD  ad un mese, due mesi ecc.

Dunque anche chi non è un vero e proprio operatore dei mercati finanziari potrebbe essere interessato ad alcuni di essi per l’attività che svolge.

Operativamente, in generale, come si può procedere con i valori di output?

Se desideriamo generare dei segnali operativi con i trading system, possiamo utilizzare delle variabili dummy (0 o 1), 0 se il segnale è sell, 1 se è buy; se invece vogliamo prevedere il valore a x periodi futuri, in output dovremmo avere il valore da prevedere.

 

Di seguito vediamo un mio trading system a reti neurali artificiali sul future CRUDE OIL; tramite variabili dummy scatta il sell non appena la rete va a 0 e il segnale buy quando la rete raggiunge il valore 1.

In input ho utilizzato le seguenti variabili:

 

–       volumi

–       aroon up

–       arron down

–       cci

–       cmf

–       demand index

–       macd mcclennan oscillator

–       q stick

–       rsi

–       volatility chaikin’s

–       momentum

 

in output le variabili dummy 0 e 1

ho poi impostato tutti gli altri parametri tipo il learning rate, l’architettura di rete, il target error, le funzioni di trasferimento, il numero di neuroni per gli strati nascosti (ho scelto due strati hidden) ecc.

Quanti neuroni avranno gli strati input ed output?

Se ci ricordiamo quanto detto durante questo articolo, se in input ho inserito 11 variabili, avrò anche 11 neuroni di input e se l’output da prevedere è solo 1, ovvero la variabile contenente  i valori 0 e 1, avrò un solo neurone di output.

Quello sotto è il grafico riguardante il periodo del validation set, dunque quello riguardante il momento in cui abbiamo affidato l’operatività alla rete dopo averla addestrata e si può notare che a parte due segnali irrilevanti caratterizzati da gain di poco conto o di piccole perdite, ve ne sono tre che permettono di conseguire degli ottimi guadagni.

Ho prestato molta attenzione a non richiedere un target error eccessivamente basso, perché in tal modo si rischia di addestrare la rete in maniera così incisiva da farle perdere il potere di generalizzazione, ovvero imparerà talmente alla perfezione gli esempi del training set che non sarà più in grado di cimentarsi sulle coppie input/output al di fuori di esso.

Ovviamente gioca un ruolo fondamentale la conoscenza e l’esperienza dell’utilizzatore su questo argomento; ad esempio, scegliere il numero di strati hidden ed il numero di neuroni, come la selezione delle variabili di input e di tutti gli altri parametri, sono operazioni che richiedono una certa esperienza.

alt

Questa, come si può immaginare, è stata un’illustrazione generale sull’argomento reti neurali artificiali poiché tale tema è molto ampio.

Alessandro Perli

 

Il profilo professionale di Alessandro Perli è disponibile su Linkedin:

http://it.linkedin.com/pub/alessandro-perli/3a/659/575

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.