Capitolo 3
Calibrazione dei parametri delle Bande di Bollinger per lo sviluppo di una Strategia di Trading
3.1 MATLAB e Yahoo Finanza: come reperire i dati storici delle quotazioni dei titoli azionari
Prima di procedere alla calibrazione dei parametri delle bande di Bollinger con il software MATLAB, bisogna vedere come inserire i dati delle quotazioni dei titoli all’interno del programma. Esistono diversi metodi per fare ciò, in ogni caso si devono scaricare tali dati da alcuni siti internet, come Bloomberg, Reuters o Yahoo Finanza (che utilizzeremo) e successivamente caricarli in MATLAB. Lo stesso programma, attraverso alcuni toolbox ed una connessione ad internet, agevola tale operazione; infatti ci si può connettere direttamente da esso (senza l’utilizzo di un browser) a tali siti, per scaricare i dati ed immetterli rapidamente nel workspace. Infine, avendo questi dati raccolti in un foglio di calcolo elettronico (ad esempio in un file Excel) si possono importare in MATLAB con una semplice operazione.
3.1.1 Ottenere i dati storici dal sito Yahoo Finanza e caricarli su MATLAB
Il sito web Yahoo Finanza (http://it.finance.yahoo.com) offre gratuitamente i dati storici delle quotazioni dei titoli azionari. Per accedere alla quotazioni bisogna cercare il titolo desiderato nel menù del sito alla voce "Quotazioni". Ogni titolo azionario ha un codice identificativo ben preciso ed unico a livello mondiale. Ad esempio il titolo della società “Eni S.p.A.” quotata in Borsa Italiana ha come codice: ENI.MI; inserendolo si arriva alle pagine contenenti tutti i dati storici relativo ad esso (https://it.finance.yahoo.com/q?s=ENI.MI). Il principale indice azionario delle Borsa Italiana è il FTSE MIB (Financial Times Stock Exchange Milano Indice di Borsa), il quale racchiude le azioni delle società italiane ed estere maggiormente
!69
capitalizzate sui mercati gestiti da Borsa Italiana S.p.A, arrivando a rappresentare circa l’80% della capitalizzazione del mercato azionario italiano. Questo indice è operativo dal 1 giugno 2009, dopo la fusione di Borsa Italiana (S&P MIB) con il London Stock Exchange, che ha dato vita al London Stock Exchange Group. I titoli componenti tale indice sono:
Componenti indice FTSE MIB - Marzo 2016
Nome società Simbolo
1 A2A S.p.A A2A.MI
2 ANIMA Holding S.p.A. ANIM.MI
3 Atlantia S.p.A. ATL.MI
4 Azimut Holding S.p.A. AZM.MI
5 Banca Mediolanum S.p.A. BMED.MI
6 Banca Monte dei Paschi di Siena S.p.A. BMPS.MI 7 Banca Popolare dell’Emilia Romagna Società
cooperativa a r.l.
BPE.MI
8 Banca Popolare di Milano Società cooperativa a r.l.
PMI.MI
9 Banca Popolare Società Cooperativa a r.l. BP.MI
10 Buzzi Unicem S.p.A. BZU.MI
11 Campari-Milano S.p.A. CPR.MI
12 CNH Industrial N.V. CNHI.MI
13 Enel S.p.A. ENEL.MI
14 Enel Green Power S.p.A. EGPW.MI
15 Eni S.p.A. ENI.MI
16 Exor S.p.A. EXO.MI
17 Ferrari N.V. RACE.MI
18 Fiat Chrysler Automobiles N.V. FCA.MI
19 Finmeccanica S.p.A. FNC.MI
20 Generali S.p.A. G.MI
21 Intesa Sanpaolo S.p.A. ISP.MI
22 Italcementi S.p.A. IT.MI
23 Luxottica S.p.A. LUX.MI
24 Mediaset S.p.A. MS.MI
È possibile avere i dati giornalieri, settimanali e mensili, basta selezionare il pulsante desiderato e premere su “Ottieni i Dati”; inoltre si può selezionare anche la data iniziale e quella finale della ricerca.
Dopo che si sono ottenuti a video i dati storici di proprio interesse è possibile scaricarli sul proprio computer o pendrive. Per fare ciò si deve andare in fondo alla pagina e cliccare su “Scarica in foglio di calcolo”, successivamente si apre una finestra pop-up che chiede dove salvare il file in formato “.csv”. Esso contiene tutti i dati storici ricercati, salvati in un formato standard opensource, in modo tale da poterli importare in qualsiasi software capace di gestire tabelle.
Supponiamo di aver ottenuto dal sito Yahoo Finanza dei dati storici relativi al titolo azionario “ENI.MI”, e che siano salvati nel file
“ENI.csv”; per importarli in MATLAB come prima cosa occorre copiare questo file nella Current Folder. A questo punto, per caricare in MATLAB la tabella basta utilizzare il comando “readtable()”. Non
25 Mediobanca S.p.A. MB.MI
26 Moncler S.p.A. MONC.MI
27 Poste Italiane S.p.A. PST.MI
28 Prysmian S.p.A. PRY.MI
29 Saipem S.p.A. SPM.MI
30 Salvatore Ferragamo S.p.A. SFER.MI
31 Snam S.p.A. SRG.MI
32 STMicroelectronics N.V. STM.MI
33 Telecom Italia S.p.A. TIT.MI
34 Tenaris S.A. TEN.MI
35 Terna - Rete Elettrica Nazionale S.p.A. TRN.MI
36 UBI Banca S.p.A. UBI.MI
37 UniCredit S.p.A. UCG.MI
38 Unipol S.p.A. UNI.MI
39 UnipolSai Assicurazioni S.p.A. US.MI 40 Yoox Net-A-Porter Group S.p.A. YNAP.MI
Nome società Simbolo
!71
ci si deve preoccupare del “Warning” prodotto da MATLAB; esso è causato dal fatto che il nome dell’ultima colonna della tabella è stato salvato nel file .csv come “Adj Close” mentre MATLAB non accetta né spazi né punteggiature nei nomi delle colonne.
Il comando “readtable()” permette di caricare tabelle salvate in un file di testo (formato: .txt, .dat, .csv) oppure in un foglio di calcolo elettronico (formato: .xls, .xlsx, .xlsb, .xlsm, .xltm, .xltx, .ods). In questi ultimi caso, si deve far attenzione all’uso di file in formato proprietario commerciale, in quanto essi possono dare problemi nella corretta importazione dei dati. Perciò si consiglia di utilizzare file in formato standard opensource (.csv). Ad esempio, se si prende il file
“ENI.csv” ottenuto da Yahoo Finanza, lo si importa in Microsoft Excel e lo si salva nel formato .xlsx, è sempre possibile caricare i dati in MATLAB, ma l’esito potrebbe non essere quello desiderato. I problemi principali sono dovuti al formato applicato da Excel alle varie celle ed al separatore utilizzato per le cifre decimali (in Italia si usa la “,” mentre nei paesi anglosassoni il “.”).
Inoltre MATLAB utilizza vari formati per la visualizzazione delle
date; di default le date vengono scaricati in formato numerico. Se
invece abbiamo delle date in formato letterale e vogliamo ricavare
l’equivalente in formato numerico, basta utilizzare il comando
datenum().Se il formato delle date non è di proprio gradimento è
possibile cambiarlo con il comando “datetime()”; esso permette di
esprimere le date nel formato desiderato. Però, se le date sono espresse in formato standard numerico, occorre allora utilizzare anche l’opzione ‘ConvertFrom’.
3.1.2 Caricare in MATLAB i dati storici tramite il Datafeed Toolbox
Nel caso in cui in MATLAB sia installato il Datafeed Toolbox ed il computer sia collegato alla rete internet, è possibile attraverso il programma collegarsi direttamente al sito Yahoo Finanza e scaricare i dati storici delle quotazioni dei titoli.
Per caricare i dati online occorre aprire una connessione con Yahoo e poi utilizzare il comando “fetch()”.
!73
Come si vede i dati sono scaricati in formato numerico in una matrice e non in una tabella. Le sette colonne corrispondono rispettivamente a: Data, Apertura, Massimo, Minimo, Chiusura, Volume, Chiusura Aggiustata (cioè il prezzo di chiusura aggiustato, quindi sottratto, per dividendi e split). È utile ricordare che è possibile scaricare i dati di solamente una, o alcune, delle colonne 2-6.
Il comando “array2table()” permette di trasformare un intero array in una tabella. Si osservi che occorre convertire opportunamente le date della prima colonna, essendo esse espresse in formato numerico;
inoltre, bisogna eseguire il comando “format long g” per visualizzare
in modo più chiaro i Volumi.
Comunque si possono creare delle tabelle anche con il comando standard “table()”, però preliminarmente bisogna definire come vettori le singole colonne della tabella. Successivamente, per ottenere la tabella basterà quindi usare il comando “table()”.
In alternativa, è possibile mettere le date come nomi delle righe invece che come prima colonna. Si osservi che in tal caso occorre convertire le date come stringhe di testo con il comando “cellstr()”.
Come esempio potremmo scrivere nell’editor di MATLAB una function che, dato il codice identificativo di un titolo azionario, riesca
!75
a scaricare i dati storici in formato tabellare, così da poterla lanciare nella “Command Window” attraverso un solo comando:
Quindi per eseguire la function bisognerà scrivere nella “Command Window” il seguente comando, il quale si riferisce ai dati storici del titolo scelto (in questo caso le azioni ENI):
Con questa function si ottengono tutti i dati della serie storica del titolo scelto, dal primo giorno di quotazione in borsa fino alla data corrente. Per limitare il periodo temporale, per esempio al solo primo trimestre del 2016, si modifica il codice inserendo nella stringa
“datainizio” e “datafine” con le date desiderate.
3.1.3 Scaricare i dati delle quotazioni dei titoli attraverso l’applicazione Financial Time Series di MATLAB
Un ulteriore metodo per ottenere i dati delle quotazioni dei titoli attraverso il software MATLAB, è quello di utilizzare un’app, che è presente nel Financial Time Series Toolbox, la quale permette di creare e gestire i fints object. In aggiunta, con il Datafeed Toolbox ed il Database Toolbox è possibile scaricare i dati da sorgenti esterne (es.
Yahoo Finanza, Bloomberg, ecc.). Per scaricare i dati esterni bisogna innanzitutto aprire la Financial Time Series app, selezionare il percorso File->Load->Datafeed Toolbox per aprire il toolbox.
Successivamente per connettersi al server esterno si clicca il tab Connection, in questo caso si seleziona Yahoo!, e ci si connette per caricare i dati nell’app. Per scaricare i dati del titolo desiderato, bisogna cliccare il tab Data, immettere il codice identificativo, in seguito si spunta il tipo di dati da scaricare: correnti o storici; e successivamente si scegli il dato che si vuole ottenere (es. prezzi di apertura,chiusura,massimo e minimo ecc.). Infine, si immette il nome della variabile che sarà caricata nel Workspace di MATLAB e si clicca sul pulsante Get Data. Questo è un modo molto semplice e veloce per ottenere i dati delle quotazioni in quanto non bisogna scrivere alcun comando in MATLAB, ma bisogna solamente selezione i dati che si vogliono scaricare tramite una finestra.
!77
3.1.4 Costruire un Financial Time Series Object in MATLAB
Il Financial Time Series Object (fints) è un particolare tipo di file di MATLAB che contiene una serie di date e di dati per uno specifico titolo, cioè rappresenta la serie storica. Utilizzando i fints MATLAB può essere molto utile, infatti il programma consente di effettuare grafici finanziari o calcolare i vari indicatori tecnici, immettendo come input del comando questa tipologia di file. Per creare un Financial Time Series Object si utilizza il comando fints inserendo come input il vettore data della serie storica (esso deve essere sempre espresso in formato numerico, sarà MATLAB a convertire le date in formato letterale), il vettore (o i vettori) delle quotazioni del titolo, la frequenza delle stesse e infine una descrizione dell’oggetto.
Questa function permette di creare un fints per un qualsiasi titolo:
Per far partire la function basterà il codice del titolo di cui si
vogliono scaricare i dati ed immettere nel Workspace un comando:
3.2 Disegnare i grafici delle serie storiche dei dati azionari tramite il Financial Toolbox
Dopo aver scaricato e caricato i dati delle serie storiche delle quotazioni dei titoli, MATLAB, attraverso il Financial Toolbox, permette di rappresentarle in modo diretto nei grafici. A tal fine occorre preliminarmente creare un cosiddetto “Financial Time Series (fints) object” che poi può essere rappresentato tramite il comando
“plot()”, il quale permette di creare disegnare i grafici. Si osservi che le date devono essere convertite in formato numerico tramite il comando “datenum()”.
!79
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Tempo 10.5
11 11.5 12 12.5 13 13.5
14 Quotazioni ENI
ENI
È possibile tracciare il grafico anche di serie storiche di altri titoli in un unico grafico, così da poterle confrontare facilmente.
MATLAB permette di creare vari tipi di grafici finanziari; dal semplice grafico lineare, il quale necessita di un solo input (es. prezzo di chiusura/apertura), ma anche i grafici a barre o quelli a candela, che hanno bisogno di quattro input: prezzi di apertura, chiusura, massimo e minimo.
3.2.1 Disegnare i grafici a barre dei dati storici delle quotazioni dei titoli in MATLAB
I grafici a barre sono tra i più utilizzati dagli analisti poiché danno una serie di informazioni, non visualizzatili in un semplice grafico lineare. Infatti, come sappiamo, per realizzare un barchart bisogna avere come input prezzi di apertura e chiusura, prezzo massimo e minimo.
Se in MATLAB è installato il Financial Toolbox possiamo creare i diversi tipi di grafici finanziari, quindi anche un barchart, attraverso l’uso di alcuni comandi. Preliminarmente, si devono scaricare e
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Tempo 2
4 6 8 10 12
14 Quotazioni ENI - ENEL - FCA
ENI ENEL FCA
caricare in una tabella o in un vettore colonna i prezzi di apertura, massimo, minimo e di chiusura, per ciascuna data del periodo da noi considerato. Si faccia attenzione che le date devono essere convertite in formato numerico, utilizzando il comando “datenum()”, altrimenti si ha uno sfasamento temporale sull’asse delle ascisse.
Per realizzare un grafico a barre, bisogna utilizzare il comando
“highlow()” e come input si immettono, nell’ordine, i vettori colonna o le colonne della tabella (attraverso il comando generico NomeTabella.NomeColonna) del prezzo massimo, minimo, chiusura, ed in opzione anche i prezzi di apertura, il colore del grafico, il vettore e il formato della data:
3.2.2 Disegnare i grafici a candela dei dati storici delle quotazioni dei titoli in MATLAB
Un’altra tipologia di rappresentazione grafica dei dati dei titoli finanziari è la candlestick. Essa si è rapidamente diffusa nel mondo degli analisti, poiché come i grafici a barre rappresenta sul grafico un numero maggiore di informazioni rispetto ad un semplice grafico
!81
01-Jan-2016 01-Feb-2016 01-Mar-2016 01-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5
14 Grafico a barre azioni ENI I trim. 2016
lineare. Inoltre, è visivamente più apprezzabile ed intuitiva, in quanto al variare del colore delle candele, l’analista riesce subito a capire l’andamento dei prezzi della giornata di borsa: infatti come sappiamo, se il colore della candela è bianco il prezzo di chiusura della seduta è stato maggiore rispetto a quello di apertura, viceversa, se la candela è nera il primo è stato minore del secondo.
Sempre con il Financial Toolbox installato in MATLAB, e dopo aver scaricato ed importato nel Workspace i dati storici del titolo desiderato (si ricordi che le date devono essere sempre espresse in forma numerica), è possibile attraverso il comando candle() rappresentare i prezzi del titolo della serie storica in un grafico a candela. Gli input da immettere nel comando devono essere nell’ordine i vettori colonna del: prezzo massimo, prezzo minimo, prezzo di chiusura e prezzo di apertura; in aggiunta si può specificare il colore, il vettore e il formato delle date:
In questo caso, si è scelto il colore nero (comando ‘k’) per il grafico:
se la candela è piena, cioè nera, allora il prezzo di chiusura è stato
01-Jan-2016 01-Feb-2016 01-Mar-2016 01-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5
14 Candlestick azioni ENI I trim. 2016
minore di quello di apertura, viceversa se la candela non è colorata, e quindi bianca.
3.2.3 Esempio di function che permette di ottenere il grafico a barre e il candlestick di un qualsiasi titolo
Un altro esempio molto utile può essere quello di scrivere nell’editor di MATLAB una function che permetta, una volta ottenuti i dati di un qualsiasi titolo e per un periodo di tempo determinato, di ottenere il grafico a barre e quello a candela. Inoltre, tale operazione ci consente di risparmiare del tempo, soprattutto se dobbiamo lavorare su grafici di diversi titoli, in quanto con un unico comando potremmo disegnarli, poiché basta solamente ottenere ed immettere come input della function il codice identificativo dei vari titoli. In questo caso, consideriamo le azioni ENEL S.p.A., tenendo come periodo di riferimento sempre il primo trimestre del 2016:
Lanciando la function nella Command Window utilizzando il codice identificativo delle azioni ENEL, cioè ‘ENEL.MI’, avremo subito su schermo i grafici dei prezzi delle azioni per il periodo considerato su
!83
due diverse finestre; la prima figura sarà il barchart, mentre la seconda sarà il candlestick:
>> grafici(‘ENEL.MI’)
3.3 Calcolare le bande di Bollinger dal vettore colonna dei prezzi di chiusura di un titolo con MATLAB
Dopo aver scaricato ed importato nel Workspace di MATLAB i dati delle serie storiche relativi ai prezzi di chiusura di un titolo, per un
12/27 01/03 01/10 01/17 01/24 01/31 02/07 02/14 02/21 02/28 03/06 03/13 03/20 03/27 04/03 Giorni
3.3 3.4 3.5 3.6 3.7 3.8 3.9 4
4.1 Grafico a Barre Titolo ENEL.MI
12/27 01/03 01/10 01/17 01/24 01/31 02/07 02/14 02/21 02/28 03/06 03/13 03/20 03/27 04/03 Giorni
3.3 3.4 3.5 3.6 3.7 3.8 3.9 4
4.1 Grafico a Candela Titolo ENEL.MI
determinato periodo temporale, procederemo al calcolo delle bande mediana, superiore ed inferiore di Bollinger. Infatti il software da come output i livelli di queste tre bande attraverso l’utilizzo del comando bollinger(). Tale comando prende come input un vettore colonna con i prezzi del titolo scelto (in questo caso utilizzeremo i prezzi di chiusura), e poi in aggiunta si possono specificare i giorni utilizzati per il calcolo della media mobile, il tipo di media mobile e infine il numero di deviazioni standard per la banda superiore e inferiore. Se questi tre input non vengono immessi nel comando, MATLAB procederà al calcolo delle bande attraverso delle impostazioni default: utilizzerà 20 giorni per il calcolo della media, questa sarà una media mobile semplice ed il numero di deviazioni standard di distanza della bande superiore ed inferiore sarà 2.
Come esempio utilizzeremo sempre le azioni di ENI S.p.A., però in questo caso poiché per il calcolo standard delle bande si utilizza una media mobile semplice a 20 giorni, per ottenere i dati di esse nel periodo considerato, cioè il primo trimestre del 2016, dovremmo scaricare anche i dati delle quotazioni relativi a dicembre 2015.
Invece che lavorare con le tabelle, possiamo creare ed utilizzare un fints relativo alle quotazioni dei prezzi di chiusura del titolo in esame, ed inserirlo come input del comando bollinger(). In tal caso MATLAB darà come risultato 3 nuovi fints con il calcolo dei valori delle bande di Bollinger (rispettivamente mediana, superiore ed inferiore) relativi ai prezzi del titolo e nel periodo considerato.
!85
Un esempio di function che permette di calcolare i valori standard
delle bande di Bollinger per i prezzi di chiusura di un qualsiasi titolo
(relativi al periodo preso in considerazione, cioè dal 1/12/15 al
31/3/16), è:
Come sempre per far partire la function bisognerà solamente inserire, come input, il simbolo del titolo scelto:
3.3.1 Costruire il grafico relativo ai prezzi di chiusura e alle bande di Bollinger con MATLAB
Un primo modo per costruire in MATLAB il grafico delle bande di Bollinger è quello dell’utilizzo del comando plot(). Preliminarmente, però, dopo aver scaricato i dati da Yahoo Finanza ed averli importati nel Workspace, dobbiamo creare i fints relativi ai prezzi di chiusura del titolo scelto per il periodo di tempo preso in considerazione, e quello relativo alle bande mediana, superiore ed inferiore.
Successivamente inseriremo nel comando plot questi due input, così potremmo creare il grafico e visualizzare su schermo i valori dei prezzi di chiusura e delle tre bande di Bollinger. In questo caso i parametri utilizzati nel calcolo delle bande sono quelli standard e cioè una media mobile semplice a 20 giorni e la distanza delle bande superiore ed inferiore da quella mediana è uguale rispettivamente a +/- 2 deviazioni standard.
!87
In MATLAB, è presente un comando specifico per disegnare graficamente le bande di Bollinger e i prezzi di chiusura di un titolo.
Tale comando è bolling() che prende come input il vettore dei prezzi del titolo (in questo caso utilizzeremo le quotazioni di chiusura) ed il numero di giorni utilizzati per il calcolo della media mobile. In opzione si possono aggiungere altri parametri come input: l’esponente utilizzato per calcolare i pesi degli elementi della media mobile(per la media mobile semplice si usa lo 0, che è il valore di default); il numero di deviazioni standard di distanza delle bande, cioè un fattore moltiplicativo che ci specifica come dovrebbero essere strette le bande intorno alla media (di default questo valore è 2). Con questo comando MATLAB procede ad effettuare il grafico delle bande di Bollinger, senza darne i valori (quindi non vengono inserite altre variabili nel Workspace). Inoltre, se scarichiamo i dati da Yahoo Finanza con il comando fetch(), ottenendoli dal più recente al più remoto, dovremmo riordinare i vettori delle date e dei prezzi in ordine cronologico, in quanto il comando bolling() traccerà il grafico partendo dal primo valore del vettore colonna; si può utilizzare il comando flipud() che crea un nuovo vettore con gli elementi invertiti (dall’ultimo al primo).
10-Jan-2016 20-Feb-2016 01-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14 14.5 15
15.5 Grafico Bande di Bollinger e prezzi di chiusura azioni ENI
Prezzi di chiusura BandaMed BandaSup BandaInf
Se invece specifico gli output che voglio ottenere, cioè la media mobile e le bande superiore ed inferiore, allora si può sempre utilizzare il comando []=bolling(), che ha come input sempre le stesse variabili, però in questo caso MATLAB, non traccerà nessun grafico delle bande, ma calcolerà tali valori e darà come risultato dei vettori.
La differenza rispetto al comando bollinger() è che, i vettori delle tre bande partiranno direttamente dal primo valore utile, cioè dopo il numero di giorni scelti per il calcolo della media mobile. Quindi i vettori risultanti saranno di dimensioni minori (diminuiti in base ai giorni necessari al calcolo della media mobile) rispetto a quello scelto come input.
Se si vuole ottenere il grafico delle bande di Bollinger dati i prezzi di chiusura di un qualsiasi titolo è utile creare una function così da poterla lanciare immettendo come input il codice del titolo scelto.
!89
01-Jan-2016 25-Jan-2016 22-Feb-2016 07-Mar-2016 31-Mar-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14
14.5 Bande di Bollinger azioni ENI
>> bollgrafico(‘ENEL.MI’)
Nell’esempio il periodo di riferimento è sempre il primo trimestre del 2016, se si vuole cambiare l’arco temporale basterà modificare la stringa della data di inizio e di fine nel codice della function.
01-Jan-2016 20-Jan-2016 10-Feb-2016 11-Mar-2016 31-Mar-2016
Giorni 3.3
3.4 3.5 3.6 3.7 3.8 3.9 4
4.1 Bande di Bollinger titolo ENEL.MI
Chiusura BandaM BandaS BandaI
3.3.2 Esempio di function che permette di tracciare il grafico a candele dei prezzi insieme alle bande di Bollinger
Per un’analista interessato alla volatilità storica dei prezzi di un titolo, può essere utile evidenziare graficamente il comportamento passato dei prezzi (apertura, massimo, minimo e chiusura) con quello delle bande di Bollinger. In questo caso, è utile scrivere una function su MATLAB, la quale consenta di ottenere in un unico grafico, per un qualsiasi titolo e un qualsiasi arco temporale prescelto, sia un candlestick che le bande mediana, superiore ed inferiore di Bollinger.
>> Bollcandele(‘ENI.MI’,’12/1/15’,’3/31/16’)
!91
10-Jan-2016 20-Feb-2016 01-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14
14.5 Grafico a candela e bande di Bollinger titolo ENI.MI
3.3.3 Calcolare i valori degli indicatori %b e BandWidth in MATLAB
Come detto in precedenza, esistono due indicatori basati sulle bande di Bollinger; essi forniscono informazioni aggiuntive quando si effettuano decisioni di investimento, e verranno utilizzati nell’analisi.
L’indicatore %b dice dove i prezzi si trovano in relazione alle fasce di trading: quando i prezzi toccano la banda superiore, esso è uguale ad 1; viceversa quando essi toccano quella inferiore, esso è 0.
Riprendendo la formula:
Il BandWidth invece indica l’ampiezza delle bande: quando è estremamente piccolo, esiste un’alta probabilità di vedere cambiamenti radicali nella direzione del prezzo. Riprendendo la formula:
Per calcolare il valore di questi due indicatori su MATLAB, è necessario, innanzitutto scaricare le quotazioni dei prezzi di chiusura del titolo desiderato, dal sito Yahoo Finanza con il comando fetch().
Successivamente, poiché tali valori vengono inseriti in un vettore
colonna, dal più recente al più remoto, si dovrà rovesciarli per averli
in ordine cronologico; tale operazione si effettua con il comando
flipud(). Dopo si procederà al calcolo delle bande di Bollinger relative
ai prezzi di chiusura del titolo con il comando bollinger() e
successivamente si calcoleranno tali valori applicando le formule di
cui sopra. Si noti che i vettori relativi ai valori delle bande avranno i
primi elementi senza un valore numerico, poiché vengono calcolati
dopo N giorni di tempo (dove N è uguale al numero di giorni utilizzati
nel calcolo della media mobile). Quindi, per effettuare il calcolo dei
valori di tali indicatori bisognerà partire dal primo valore delle bande
di cui è possibile ottenere un risultato numerico.
Tale function permette di calcolare i valori di questi indicatori per un qualsiasi titolo e per un qualsiasi periodo temporale considerato. Le bande di Bollinger sono calcolate con i parametri standard, cioè con l’utilizzo di una media mobile semplice a 20 giorni e la distanza dalle bande è uguale a +/- 2 deviazioni standard.
Per lanciare la function bisognerà scrivere nella CommandWindow i due output e immettere come input: il codice identificativo del titolo desiderato e la data di inizio e fine dell’arco temporale analizzato. I valori di questi due indicatori, soprattutto quelli del %b, verranno utilizzati per disegnare un grafico secondario, rispetto a quello dei prezzi, che sarà di supporto per le decisioni di investimento dell’investitore.
!93
Infatti, per realizzare in un unico grafico quello principale dei prezzi e quello secondario, con l’indicatore %b, si utilizza il comando subplot(), che suddivide in due blocchi la finestra per poter disegnare le due figure.
!94
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14
14.5 Grafico a candela e bande di Bollinger ENI
0 0.5 1
1.5 %b
%b
3.4 Ottimizzazione dei parametri delle bande di Bollinger È essenziale per un investitore avere possibilità di aggiustare i parametri di un qualsiasi metodo, non solo per un singolo titolo ma anche per un indice azionario, ecc. Questi parametri possono variare anche tenendo conto del fatto che il periodo analizzato può essere di lungo termine, così come di breve termine. Come già detto, si sa che le bande di Bollinger generano i migliori risultati analizzando i dati a breve termine con una parametrizzazione, tuttavia, è necessaria un’altra per analizzare i dati di lungo termine.
In questo lavoro di tesi si cerca di stabilire quale parametrizzazione e in quale situazione dovrebbe essere usata. Il lavoro di ricerca è basato su un investitore che è interessato ad un investimento di breve termine. Per l’analisi sono utilizzati due titoli azionari del mercato di borsa italiano. I grafici delle bande di Bollinger sono disegnati usando tre differenti tipi di parametri per ognuna delle azioni. Si assume che l’investitore osserverà il prezzo azionario e, secondo i segnali generati, istantaneamente prenderà una decisione; il tempo minimo per il processo decisionale è di un giorno. Così, ogni giorno l’investitore decide se comprare, vendere, o mantenere la sua posizione nel mercato. Alla fine del periodo di tempo determinato, i rendimenti sono calcolati per ciascun insieme di parametri. Come sappiamo, le bande di Bollinger hanno alcuni parametri che possono essere modificati: innanzitutto il tipo di media mobile utilizzata per il calcolo della banda mediana (in questo caso si utilizza una media mobile semplice); una seconda possibile modifica riguarda la distanza tra banda mediana e le bande superiore ed inferiore, di solito essa è descritta in numeri di deviazioni standard (il valore di default è uguale a 2); infine, si può modificare la lunghezza della media mobile misurata in giorni.
I parametri ottimali delle bande di Bollinger sono calibrati utilizzando i dati storici, in modo da poter avere fiducia dei segnali generati, solo nel caso in cui il processo del prezzo delle azioni è
!95
fermo e stabile. Tuttavia, per un investimento di breve periodo questi requisiti non sono necessari.
Nell’esempio analizzato useremo i dati storici di ENI S.p.A.
(ENI.MI) e ENEL S.p.A. (ENEL.MI), società quotate, e tra le più capitalizzate, nel mercato azionario italiano.
3.4.1 Calibrazione dei parametri delle bande di Bollinger
Applicando l’analisi grafica per un investimento a breve termine, si è capito che nella maggioranza dei casi le bande di Bollinger sono distanti e il prezzo attraversa il canale di trading solo dopo estreme variazioni dello stesso. In aggiunta, la media mobile calcolata per 20 giorni, è in ritardo rispetto l’oscillazione dei prezzi. Assorbendo le variazioni di prezzo estreme, la media mobile può solo indicare le tendenze a lungo termine e perdere i movimenti a breve. A causa di questo, un investitore di breve periodo fa molto meno decisioni di investimento rispetto ad uno di lungo termine; in quanto può essere dedotto che, utilizzando gli stessi parametri per le bande di trading, ad un investitore a breve vengono generati meno segnali rispetto a quelli che ha uno a lungo termine. Questi problemi ci portano a concludere che i parametri delle bande di Bollinger (lunghezza e metodo di calcolo della media mobile, distanza tra le bande), dovrebbero essere selezionati individualmente per gli investitori a breve e lungo termine.
La nostra ricerca si focalizza sui parametri ottimi per un investitore a breve termine.
L’analisi grafica delle azioni di ENI S.p.A. (ENI.MI) e di ENEL S.p.A. (ENEL.MI) è stata eseguita seguendo tre gruppi di parametri:
1) N=20, K=2;
2) N=10, K=1,5;
3) N=5, K=1,6;
dove N sono i giorni utilizzati per il calcolo della media mobile
semplice, e K è il numero di +/- deviazioni standard di distanza della
banda superiore ed inferiore da quella mediana.
Inoltre sono stati utilizzati nella ricerca i due indicatori che derivano dalle bande di Bollinger: il %b e il BandWidth. Il periodo di tempo della ricerca va dal 1/1/2016 al 31/3/2016.
3.4.1.1 Le bande di Bollinger con i parametri N=20 e K=2
Iniziamo la nostra analisi nel calcolare e disegnare il grafico delle bande di Bollinger utilizzando una media mobile semplice a 20 giorni e una distanza di +/- 2 deviazioni standard come distanza tra le bande superiore ed inferiore e da quella mediana. Per quanto riguarda le azioni ENI con questi parametri abbiamo già precedentemente effettuato tutti i calcoli e disegnato il grafico:
Per quanto riguarda le azioni ENEL, invece, in precedenza avevamo calcolato i valori delle bande di Bollinger con questi parametri, a questo punto dobbiamo calcolare i valori dell’indicatore
%b ed effettuare i due grafici. Utilizzeremo delle function, precedentemente create ed analizzate, per velocizzare e semplificare lo scaricamento dei dati storici e le procedure di calcolo.
!97
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14
14.5 ENI N=20, K=2
31-Dec-2015-0.5 31-Jan-2016 02-Mar-2016 02-Apr-2016
0 0.5 1
1.5 %b
%b
Avendo a disposizione tutti i dati utili, si procede al disegno dei grafici, utilizzando i seguenti comandi:
I due grafici (quello di ENI e di ENEL) rappresentano i segnali di vendita (contrassegnati in rosso) e di acquisto (contrassegnati in verde) generati dalle bande di Bollinger. Il canale di trading con i parametri N=20 e K=2 è piuttosto ampio, quindi solo i segnali rari vengono generati.
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 3.3
3.4 3.5 3.6 3.7 3.8 3.9 4
4.1 ENEL N=20, K=2
31-Dec-2015-0.5 31-Jan-2016 02-Mar-2016 02-Apr-2016
0 0.5 1
1.5 %b
%b
3.4.1.2 Le bande di Bollinger con i parametri N=10 e K=1,5 Per modificare i parametri utilizzati per il calcolo delle bande modificheremo le function, già utilizzate in precedenza, inserendo i nuovi valori: una media mobile semplice di 10 giorni (N=10) e una distanza tra banda superiore/inferiore rispetto a quella mediana di +/- 1,5 deviazioni standard (K=1,5).
La function per calcolare, con questi parametri, le bande di Bollinger dati i prezzi di chiusura del I trimestre 2016 per un generico titolo sarà:
Mentre quella per il calcolo dei valori degli indicatori derivanti dalle bande, sarà:
Scaricando i dati storici delle quotazioni del I trimestre 2016 sul Workspace, ed utilizzando la function “SerieStorica” che crea il fints,
!99
procederemo al calcolo delle bande e degli indicatori e nella loro rappresentazione grafica così come fatto in precedenza.
Per quanto riguarda le azioni ENI i nuovi valori delle bande e dell’indicatore %b saranno:
Invece, i nuovi valori delle bande e dell’indicatore %b per le azioni ENEL, sono:
Ottenuti i nuovi valori delle bande e dell’indicatore, dobbiamo
tracciare i due grafici. Per fare ciò si immettono i medesimi comandi
utilizzati in precedenza, solamente che ora essi avranno come input
questi nuovi valori. Disegnati i grafici si evidenzieranno i segnali di
acquisto e di vendita dati dall’intersezione dei prezzi con le bande e
dall’indicatore %b: quelli verdi saranno i segnali di acquisto, mentre i
rossi saranno segnali di vendita.
Il grafico delle azioni ENI è:
Invece, il grafico delle azioni ENEL è:
Il canale di trading con i parametri N=10 e K=1,5 si adatta bene ai movimenti del prezzo nel periodo di tempo selezionato, poiché li segue più dai vicino.
!101
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 3.3
3.4 3.5 3.6 3.7 3.8 3.9 4
4.1 ENEL N=10, K=1,5
31-Dec-2015-0.5 31-Jan-2016 02-Mar-2016 02-Apr-2016
0 0.5 1
1.5 %b
%b
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14
14.5 ENI N=10, K=1,5
31-Dec-2015-0.5 31-Jan-2016 02-Mar-2016 02-Apr-2016
0 0.5 1
1.5 %b
%b
3.4.1.3 Le bande di Bollinger con i parametri N=5 e K=1,25 Anche in questo caso modificheremo le precedenti function, con i nuovi parametri utilizzati nel calcolo delle bande di Bollinger: una media mobile semplice di 5 giorni (N=5) e una distanza tra banda superiore/inferiore rispetto a quella mediana di +/- 1,25 deviazioni standard (K=1,25).
La function per calcolare, con questi parametri, le bande di Bollinger dati i prezzi di chiusura del I trimestre 2016 per un generico titolo sarà:
Invece quella per calcolare gli indicatori %b e BandWidth sarà così modificata:
Dopo aver scaricato la serie storica dei dati delle quotazioni dei due
titoli azionari, possiamo calcolare i rispettivi valori delle bande e degli
indicatori attraverso l’utilizzo di queste due function. Successivamente
si tracceranno i grafici, così come fatto precedentemente.
Per le azioni ENI i valori delle bande di Bollinger e dell’indicatore
%b con i nuovi parametri N=5 e K=1,25 saranno:
Mentre, i nuovi valori delle bande e dell’indicatore %b per le azioni ENEL, sono:
Calcolati i nuovi valori delle bande di Bollinger e dell’indicatore
%b con i nuovi parametri, immettendo i comandi per effettuare i grafici, analizzati in precedenza, MATLAB procederà al loro tracciamento; successivamente si evidenzieranno i segnali di acquisto, in verde, e di vendita, in rosso, rispettivamente dati dal contatto dei prezzi di chiusura con la banda inferiore o con quella superiore.
Inoltre tali segnali sono confermati dall’andamento dell’indicatore
%b, infatti se esso è uguale o minore di 0, questo sarà un segnale di acquisto; se, invece, esso è uguale o maggiore di 1, sarà di vendita.
!103
Il nuovo grafico per le azioni ENI è:
Quello, invece, delle azioni ENEL è:
Con i parametri impostati a N=5 giorni utilizzati per il calcolo della media mobile semplice e, K=+/- 1,25 deviazioni standard di distanza tra bande superiore e inferiore rispetto alla mediana, il canale di
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 3.3
3.4 3.5 3.6 3.7 3.8 3.9 4
4.1 ENEL N=5, K=1,25
31-Dec-2015-0.5 31-Jan-2016 02-Mar-2016 02-Apr-2016
0 0.5 1
1.5 %b
%b
31-Dec-2015 31-Jan-2016 02-Mar-2016 02-Apr-2016
Giorni 10.5
11 11.5 12 12.5 13 13.5 14
14.5 ENI N=5, K=1,25
31-Dec-2015-0.5 31-Jan-2016 02-Mar-2016 02-Apr-2016
0 0.5 1
1.5 %b
%b