“Premesso che non sono un esperto di reti neurali – inizia Francesco Placci, direttore ricerca di Algoritmica.pro SRL –  tuttavia l’argomento mi ha sempre affascinato, ovviamente in relazione al trading.

Ma cosa sono le reti neurali?

Le reti neurali sono modelli non lineari che sì ispirano a quella che la struttura del cervello umano ed in particolare alla interconnessione di neuroni. Matematicamente sono un modo per adattare un modello non lineare ad un insieme di dati.

Se vuoi saperne di più sulle reti neurali ed il trading algoritmico visita www.algoritmica.pro

Pensiamo – continua Francesco Placci, direttore ricerca di Algoritmica.pro SRL – ad una serie storica di prezzi che rappresenta il nostro insieme di dati, ed ad un modello in grado di restituirci decisioni di trading.  Questo modello viene alimentato da alcuni input che vengono combinati e opportunamente pesati tra loro, allo scopo di restituirci un output che rappresenterà la nostra decisione di trading.

 

Ecco cosa è una rete neurale

Ecco cosa è una rete neurale

Per fare questo la rete  neurale deve essere opportunamente addestrata,  ossia deve utilizzare una parte dei nostri dati al fine di  combinare e pesare nella miglior maniera possibile gli input tra loro.

Facciamo un esempio.

Se riteniamo che alcuni indicatori, abbiano un valore predittivo, allora possiamo combinarli  tra loro, in modo tale che sia il modello stesso a decidere come utilizzarli.

Decidiamo di scegliere Momentum e RSI.

Assegniamo ad una variabile  value1 e  value3  i rispettivi indicatori.

Per normalizzare il risultato – continua Francesco Placci, direttore ricerca di Algoritmica.pro SRL –  utilizziamo la funzione fastpercentrank,  che restituisce un valore da 0 a 1.  Questa funzione altro non fa che ordinare, all’interno di un periodo da noi scelto, i valori dell’indicatore dal più piccolo,  a cui assegna valore di zero, al più grande, a cui assegna il valore di 1 e tutti gli altri valori nel mezzo.

Se vuoi saperne di più sulle reti neurali ed il trading algoritmico visita www.algoritmica.pro

Per dare flessibilità al modello,  moltiplichiamo per un input chiamato w_mom  per il momentum,  e w_rsi  per l’indicarore RSI.

Fatto questo sommiamo le variabili value4 e value2  e dividiamo per due risultato (value5) .

A questo punto il modello ci restituirà con la funzione value5  un valore numerico. Possiamo  stabilire un valore soglia al di sopra del quale prendere posizione long oppure, invertendo la regola,  al di sotto del quale prendere posizione long. Questo compito verrà svolto dall’input updown.

Infine per l’uscita dalla posizione – continua Francesco Placci, direttore ricerca di Algoritmica.pro SRL –  possiamo aggiungere una regola di tipo temporale, ossia chiudere la posizione dopo un determinato numero di giorni.

Di seguito vi mostro il codice del sistema :

input:period_rsi(2),fpr_rsi(50),w_rsi(0);

input:period_mom(2),fpr_mom(50),w_mom(0);

input:updown(0), trigger(0.5);

input: BarToExitOn(1);

 value1 = rsi(c,period_rsi);

value2 = fastpercentrank(value1,value1,fpr_rsi)*w_rsi;

 value3 = Momentum(c,period_mom);

value4 = fastpercentrank(value3,value3,fpr_mom)*w_mom;

 value5 = (value4+value2)*0.5;

 if updown = 0 then condition1 = value5 >trigger else condition1 = value5 <trigger;

 if condition1 then buy this bar on c;

 if BarsSinceEntry >= BarToExitOn then

 Sell ( “TimeBarsLX” ) next bar at market ;

 Nel caso in cui non aveste la funzione fastpercentrank, di  seguito trovate il codice;

inputs:

value(numericsimple),

dataSet(numericseries),

length(numericsimple);

variables:

r(0),

x(0);

r = 0;

for x = 1 to length begin

if dataSet[x-1] <= value then

r = r + 1;

end;

value1=r / (length-1);

if value1>1 then value1=1;

if value1<0 then value1=0;

fastpercentrank = value1;

 A questo  punto procediamo con l’ottimizzazione del modello che ha lo scopo di addestrare la rete neurale.

Di seguito vi mostro il range di ottimizzazione.

 

ottimizzazione rete neurale

ottimizzazione rete neurale

Assume ovviamente massima importanza la funzione obiettivo del processo di ottimizzazione.  Nel caso concreto  utilizzeremo il net profit/ max intraday drawdown  come funzione obiettivo ma forzando il processo affinché vengano generati almeno 100 trades.

Applichiamo il sistema sul futures E-mini SP500.

Di seguito vi mostro risultati del periodo in-sample e del periodo out-of-sample.

 

ottimizzazione rete neurale

ottimizzazione rete neurale

equity rete neurale

equity rete neurale

Il modello sembra aver continuato a performare bene anche nella fase out of sample tuttavia il nostro modello prende posizione long e sappiamo bene che negli ultimi anni i mercati azionari sono stati fortemente rialzisti, il modello avuto pertanto gioco facile.

Questa settimana – conclude Francesco Placci, direttore ricerca di Algoritmica.pro SRL –  ho voluto mostrarvi come possono essere combinati tra loro indicatori oppure prezzi o qualsiasi cosa riteniate abbia un valore predittivo nel trading, con un banale modello ispirato alle reti neurali (che sono qualcosa di più complesso e articolato).

E’  stato un divertissement,  un gioco,  il cui scopo è  stato quello di stimolare  la vostra fantasia e curiosità. Preciso che personalmente farei molta fatica a mettere a mercato un sistema di cui non comprendo appieno le regole.

Ovviamente easylanguage non è stato pensato per questo tipo di cose.  Anni fa  ho  utilizzato un software appositamente ideato Neuroshell, anche se non lo ho mai usato per i trading in realtime.

Per chi fosse interessato vi fornisco il link:

http://try.neuroshell.com/features/ ”

Se vuoi saperne di più sulle reti neurali ed il trading algoritmico visita www.algoritmica.pro