Rete neurale
“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.
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.
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.
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