• Non ci sono risultati.

Sviluppo di una strategia di trading su Matlab

4.2 Programmazione su Matlab dell’indicatore Westvol

Dopo aver verificato che effettivamente vi sia una correlazione tra i volumi di ricerca e i volumi di scambio del mercato azionario possiamo procedere ad analizzare come i volumi di ricerca possono essere utilizzati per prevedere i movimenti dei volumi azionari.

Per verificare se sussiste la possibilità di effettuare una tale previsione, il dottor Marcin Narloch, analista di origine polacca, ha ideato un indicatore denominato Westvol.38 Questo indicatore si basa sia sulle serie storiche dei volumi di ricerca che su quelle dei volumi azionari.

L’ideatore inizia il processo estraendo un valore per ogni volume alla stessa data. Dopo di ciò viene prodotto un numero, chiamato DIFF, pari alla differenza tra i volumi di ricerca e quelli azionari; sarà quindi positivo nel caso in cui i volumi di ricerca siano più alti di quelli azionari e positivo in caso contrario. Nel caso in cui DIFF sia positivo viene rappresentato con una barra verde nel nostro indicatore, mentre invece se DIFF è negativo viene rappresentato con una barra rossa. Per interpretare il Westvol vengono evidenziati alcuni segnali dal punto di vista grafico che vedremo in seguito.

Per la costruzione di questo indicatore usiamo il software Matlab che ci permette di creare una function dove poniamo come input i file csv dei volumi di ricerca scaricati da Google e delle serie storiche scaricate da Yahoo del titolo che prendiamo in considerazione per la nostra analisi. La function restituisce come output le date in cui avvengono i segnali del nostro indicatore, ovvero quando si ha un valore di DIFF positivo, seguito da un valore di DIFF negativo nella seduta successiva.39

function [datasignal] = WESTVOL(search,trading)

%pongo come input i file CSV dei volumi di ricerca e dei volumi azionari search=readtable(search);

trading=readtable(trading);

trading(1,:)=[];%cancello la prima riga dei volumi azionari perchè i dati

%di yahoo presentano una settimana in più rispetto a quelli di Google

SearchVolume=table2array(search(:,2));%prendo i volumi di ricerca

n=length(trading.Volume);%trovo la lunghezza del vettore dei volumi

maxval=-inf;

for k=1:n

38 Pubblicato sull’International Federation of Technical Analysts Journal del 2016.

39 Per questioni di significatività si prende un valore di DIFF superiore a 3 nel caso positivo e inferiore a -

98

if trading.Volume(k)>maxval

maxval=trading.Volume(k);

end

end %trovo il massimo dei volumi azionari

Volume100=zeros(n,1);

for i=1:n

Volume100(i)=(trading.Volume(i)/maxval)*100;

end %creo un vettore con i volumi azionari su base percentuale

DIFF=zeros(n,1);

for i=1:n

DIFF(i)=SearchVolume(i)-Volume100(i);

end %creo un vettore per la differenza tra i due volumi per ogni data

figure;

xmax=trading.Date(end)+1; %limite massimo grafico

xmin=trading.Date(1)-1; %limite minimo grafico

subplot(2,1,1); hold on for i=1:n if DIFF(i)<0 plot([trading.Date(i),trading.Date(i)],[0,DIFF(i)],'r-','LineWidth',1) elseif DIFF(i)>0 plot([trading.Date(i),trading.Date(i)],[0,DIFF(i)],'g-', 'LineWidth',1) end end xlim([xmin,xmax]);

title('Grafico WESTVOL');%titolo del grafico

xlabel('Settimane');%legenda asse ascisse

ylabel('Indicatore WESTVOL');%legenda asse ordinata

grid on;%applico griglia

grid minor;%aumento la precisione della griglia

hold off

%creo un grafico con barre rosse quando la differenza è negativa e barre %verdi quando è positiva

subplot(2,1,2) hold on for i=1:n plot([trading.Date(i),trading.Date(i)],[0,Volume100(i)],'b-','LineWidth',1) end xlim([xmin,xmax]);

title('Grafico dei volumi di scambio');%titolo del grafico

xlabel('Settimane');%legenda asse ascisse

ylabel('Volumi');%legenda asse ordinata

grid on;%applico griglia

grid minor;%aumento la precisione della griglia

hold off

%creo un grafico a barre per i volumi di scambio

datasignal=zeros(n,1);%creo un vettore per le date in cui avvengono i segnali

numelem=0;

for i=2:n

99

numelem=numelem+1; datasignal(numelem)=i;

end

end

%creo un ciclo for che prende le date in cui si ha una barra verde con %valore superiore a 3 e una rossa successiva con valore inferiore a -3 datasignal=datasignal(1:numelem);

end

Immagine 57: Codice indicatore Westvol. Fonte: Elaborazione personale

Come si può notare nel codice della funzione, inizialmente viene creato un vettore dove vengono inseriti i volumi azionari su base percentuale, in modo da poterli confrontare con i volumi di ricerca di Google che, come visto precedentemente, sono in base 100. Viene poi effettuata la differenza tra i due tipi di volume per ogni intervallo temporale e prende il nome di DIFF.

Tramite il comando subplot() creo entrambi i grafici nello stesso foglio, in modo tale da avere, sopra l’indicatore Westvol e sotto l’andamento dei volumi; questo risulterà fondamentale per valutare se effettivamente questo indicatore può prevedere l’andamento dei volumi.

La function restituisce infine come output le date in cui si ha un segnale di aumento dei volumi, ovvero quando si passa da una barra verde ad una rossa nella seduta successiva.

4.2.1 Verifica dell’efficienza previsionale dei volumi di ricerca sui volumi di scambio

Una volta creato il codice dell’indicatore Westvol si può procedere con la verifica dell’efficienza previsionale che i volumi di ricerca possono avere sui volumi di scambio.

Analizziamo tale capacità predittiva osservando il grafico dell’indicatore Westvol con quello dell’andamento dei volumi.

100

Immagine 58: Confronto Westvol e volumi azionari. Fonte: Elaborazione personale

L’immagine 58 è la dimostrazione che i volumi di ricerca hanno un potere predittivo per i volumi azionari dei titoli che abbiamo selezionato per la nostra ricerca. Infatti nel caso del titolo WFC notiamo che quando si susseguono una barra verde e una barra rossa, evidenziate nel grafico Westvol da un rettangolo blu, vi è un corrispondente aumento dei volumi nel grafico sottostante.

101

4.3 Definizione strategia di investimento basata su indicatore Westvol e RSI

Documenti correlati