Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
INDICE
1. Introduzione a Matlab
Premessa
1.2 Interfaccia di Matlab
1.3 Script di Matlab
2. Come importare i dati su Matlab
2.1 Introduzione
2.2 Importare dati con “copia-incolla”
2.3 Importare dati da foglio Excel
2.4 Importare dati da un file di testo
2.5 Importare dati in formato .csv
2.6 Importare quotazioni storiche dal sito Yahoo
3. Analisi della Statistica descrittiva con Matlab Statistica descrittiva con Matlab Grafici con Matlab
4. Analisi delle Serie Storiche Introduzione Trend
5. Valutazione del Trading System
Introduzione
Calcolo delle Medie Mobili
Esempio di Operatività
Calcolo delle Utilità
Indici di performance
Appendice
Bibliografia
Scarica il lavoro in pdf Valutazione di trading system con Matlab
scarica il file di Matlab
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
enel.m
Dalle due immagini si nota che il file riportato è una matrice; si è già
evidenziato in precedenza che il lavoro in oggetto ha l’obiettivo di analizzare un
vettore. Cosa bisogna fare per scomporre la matrice? È semplicissimo:
>>N=A(1,:);
>>B=A(2,:);
>>C=A(3,:);
>>D=A(4,:);
>>E=A(5,:);
dove N è la prima colonna della matrice A; B è la seconda; C la terza e così via.
10
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
2.3 Importare dati da un file di testo
Cosa si può fare se i dati sono riportati in un file di testo e non in un foglio
elettronico excel? Anche in questo caso Matlab fornisce delle soluzioni. Si supponga
che il nome sia “file.txt” generato ovviamente con un programma esterno.
Innanzitutto si apre il file assegnandogli un nome interno, ad esempio nomefile, in
lettura (‘r’ che sta per “read”); il nome del file esterno deve essere posto entro apici
perché è una stinga.
Nomefile= fopen (‘file.txt’,’r’);
Si preleva dall’archivio nomefile la matrice A leggendo, ad esempio, due
colonne di numeri in formato “%g”.
A=fscanf(nomefile, “%g %g”, [2 inf];
A=A’;
Si può notare che si utilizza il nome interno (nomefile); poi il formato(“%g
%g”); e infine il numero di elementi per riga (2) e, non sapendo quante righe ci siano,
si mette inf, il tutto entro parentesi quadre per indicare la matrice da prelevare.
Per ultimo si chiude il file:
fclose (nomefile);
Si riportano, di seguito, i comandi ritenuti più utili:
Æ
aprire fopen(…)
Æ
chiudere fclose(…)
Æ
scrivere fprint(…)
Æ
leggere fscanf(…) 11
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
2.4 Importare dati in formato csv
Per importare ingenti quantità di dati da elaborare su Matlab spesso vengono
utilizzati file con estensione “.csv” (comma separated value). Questi file sono semplici
file di testo con una caratteristica particolare; i loro elementi sono separati da una
virgola o da un punto e virgola. Inoltre i numeri decimali sono inseriti con carattere di
separazione tra la parte intera e la parte decimale, utilizzando il carattere virgola, al
posto dell’anglosassone punto; mentre il carattere di separazione tra gli elementi
risulta essere il punto e virgola.
Potrebbe non sembrare un problema a prima vista, ma immediatamente si
scopre che per Matlab, il punto e virgola e la virgola vengono considerate al pari per
quanto riguarda il formato di file “.csv”, per cui è necessario sostituire tutti i caratteri
virgola con il carattere punto. Aprire i file con un editor di testo e provvedere alla
sostituzione è alquanto scomodo e richiede tempi lunghi soprattutto quando i dati sono
numerosi. Si è ritento opportuno allora creare un breve e semplice script, contenente
una funzione da far eseguire in Matlab, che provvedesse “da solo” a sostituire alla
virgola il punto. Lo script è stato realizzato in linguaggio Java, esso altro non fa che
copiare carattere per carattere un file di un altro file sostituendo la virgola con il punto.
function replaceCommaWithDot(inputFile, outputFile)
fin=java.io.FileInputStream(inputFile)
fout=java.io.FileOutputStream(outputFile)
ii=0;
punto=’.’;
while ii<1
ch=fin.read();
if ch==-1
ii=1;
end
if (ii<1) & ch≈=44
fout.write(ch);
end
if(ii<1) & ch==44 12
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
fout.write (46);
end
end
fin.close();
fout.close();
Occorre precisare che il nome è lo stesso.
Si è visto come sostituire la virgola con il punto, ma non si è ancora in grando
di importare un file “.csv”. Per l’acquisizione di tale file è stata realizzata una funzione
“acqusisci_da_file” che restituisce una struttura di Matlab prendendo in ingresso un
file. Questa struttura, chiamata ad esempio quotazioni (se si ipotizza che i dati da
importare e analizzare siano delle quotazioni), è definita con i seguenti campi, ottenuti
da una selezione di quelli a disposizione nel file scaricato dal sito www.borsaedati.it:
Quotazioni
Tempo datenum tempo in valore assoluto (numero double)
Titolo char nome del titolo quotato in borsa
Valore double valore della quotazione del titolo
Volume double quantità di scambi del titolo
una volta aperto il file sono stati acquisiti i dati con la funzione “textscan” di Matlab in
seguito sono stati inseriti nei campi della struttura quotazioni, grazie ad un ciclo for
che itera per tuta la lunghezza dei dati a disposizione. La funzione è realizzata con lo
script visualizzabile qui:
function quotazioni=acquisisci_da_file(file)
fd=fopen(file);
dati=textscan(fd,’%s%n%s%n%n%n%n%n’,’delimiter’.’;’);
for I=1:size(dati(1),1)
quotazioni(i).tempo=detenum([char(dati{3}(i),’‘,char(dati{4}(i))],’dd/mm/yy
yy HH:MM’);
quotazioni (i).titolo=(char(dati{1}(i));
quotazioni (i).valore=(dati{2}(i));
quotazioni (i).volume=(dati{9}(i));
end
fclose(fd); 13
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
2.5 Importare quotazioni storiche da yahoo
Matlab, con la collaborazione del portale Yahoo, fornisce un’opportunità
importantissima e che velocizza gli operatori che operano sul trading system: è
possibile l’acquisizione dei dati dal web attraverso un sevizio gratuito. Ci si può
facilmente interfacciare con Yahoo utilizzando il seguente script su Matlab:
Connect = yahoo
con tale script si effettua la connessione al server dati di quote.yahoo.com, e si ha la
possibilità di interfacciarsi con il portale per ottenere le quotazioni dei titoli richiesti.
Lo script da utilizzare per disconnettersi è, invece, il seguente:
close(connect)
L’importazione dei dati da internet non conviene se l’acquisizione delle
quotazioni avviene a frequenza di un minuto con ampiezza temporale un giorno.
Bisognerebbe infatti a ogni minuto inviare una richiesta per ogni titolo e durante tutta
la giornata, quindi sarebbero approssimativamente 40 richieste al minuto, per 8 ore.
Nel caso in cui si volesse, però, considerare un altro tipo di analisi di dati queste
funzioni potrebbero essere tenute in considerazione. 14
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
3 Capitolo
Analisi della Statistica descrittiva su Matlab
3.1 Statistica descrittiva su Matlab
Questo capitolo affronta le problematiche relative al calcolo della statistica
descrittiva, sempre attraverso Matlab, della osservazioni storiche scaricate dal sito
internet di Yahoo; si farà, qui, riferimento alle quotazioni della società Enel spa, ma il
discorso è, ovviamente, analogo per qualsiasi altra società.
La statistica descrittiva comprende una serie di calcoli tra cui la media. Come
calcolarla su Matlab? È semplicissimo, caricata la serie di dati in uno dei modi visti in
precedenza, si scrive, per esempio, sul Command Window (in quanto ci fornisce
direttamente il risultato, ma potremmo anche utilizzare l’Editor):
>>mean(enel)
ans =
7.1819
Ma la statistica descrittiva si compone di una serie di valori. Tenendo presente
che il procedimento è il medesimo e l’unica particella che si modifica è “mean”, si
riporta di seguito una tabella con gli indici della statistica descrittiva con la particella
per poterle calcolare; inoltre, la tabella contiene anche i valori scaturiti dall’analisi sui
dati Enel scaricati:
Statistica descrittiva Comando su Matlab Risultato
Media Mean 7.1819
Mediana Median 7.0600
Moda Mode 6.9700 15
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
Deviazione Standard Std 0.4182
Varianza Var 0.1749
Covarianza Cov 0.1749
Valore minimo Min 6.5000
Valore massimo Max 8.3900
2
Kurtosis Kurtosis 3.2292
3
Skewness Skewness 0.9661
3.2 Grafici su Maltab
L’analisi statistica però non si ferma ad individuare gli indici suddetti, ma è
importante anche analizzare il grafico della serie storica. Matlab permette, con un
semplice comando, di creare un diagramma cartesiano che viene visualizzato in una
nuova finestra:
>>plot(enel)
2 L’indice di Kurtosis fornisce informazioni sull’appiattimento, cioè misura la concentrazione o dispersione dei
dati attorno al valore centrale. Se l’indice assume il valore zero, la distribuzione è mesocurtica, se i valori sono
inferiore al valore –3 la distribuzione è detta platicurtica e presenta una forma appiattiva con valori
maggiormente concentrati nelle code, se, infine, l’indice assume i valori maggiori di 3 la distribuzione è
leptocurtica con picco accentuato data dalla concentrazione dei dati intono al valore massimo
3 L’indice di Skewness, o di Pearson, se pari a zero, indica che le osservazioni sono distribuite come una curva
normale di Gauss, dunque c’è simmetria. Se l’indice è minore di zero significa che la serie storica è asimmetrica
negativamente (il valore medio è minore della moda); se invece, è maggiore di zero la serie è asimmetrica
positivamente (il valore medio è maggiore della moda). 16
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
Figura 1: Diagramma cartesiano della serie storica dei prezzi di chiusura della società quotata
Enel spa
Come in quasi tutti i programmi che forniscono grafici, anche in Matlab è
possibile personalizzare la figura inserendo il titolo e il nome degli assi cartesiani. Il
programma consente di fare ciò in due metodi differenti:
♦ Attraverso il “menù” dopo che la figura è stata realizzata. I passaggi
sono: “insert”, “X label” (per inserire il nome dell’ascissa) “Y label” (per
il nome dell’ordinata) e “title” (per il titolo).
♦ Oppure, attraverso il Command Window, o l’Editor, in contemporanea
con la richiesta della creazione del diagramma cartesiano. Si riportano di
seguito alcuni esempi:
o nomeTitolo=Enel
ky=1;
for k=1:size(quotazioni, 2)
if strcmq(Enel, quotazioni(k).titolo)
yy(ky)=quotazioni(k).valore; 17
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
ky=ky+1;
end
end
plot(yy,’-bp’,’MarkerFaceColor’,’r’),
ylabel(‘Valre del titolo(Euro)’),
xlabel(‘Tempo(giorni)’)
title(‘Valore del titolo Enel spa’),
grid on
nel caso in cui si voglia creare un grafico prendendo i valori di un vettore
o che sono inseriti in una matrice:
tit=’inserisci nome titolo’;
ii=4; %riga del titolo
tit=quotazioni (ii).titolo;
ww=QuotMatrix(ii, :) ;
plot(ww,’r’) ;
title([‘Quotazioni del titolo’,tit);
è, inoltre, possibile stampare più titoli in un’unica figura:
o tit=’inserisci nome titolo’;
for ii=1:40 %se i titoli sono 40
tit=quotazioni(ii).titolo;
ww=QuotMatrix(ii,;) ;
subplot(10,4,ii) ;
plot(ww) ;
grid on;
title([‘Quotazioni del titotlo’,tit]);
end
Matlab ti permette, ancora, di inserire alcuni valori della statistica descrittiva
sul diagramma cartesiano. Una volta richiamato il grafico, come è possibile notare
nella figura 1, esiste un menù, cliccando su “tools”, “data statistics” otterremo: 18
Angela Petrosillo Valutazione di trading system con Matlab
…………………………………………………………………………………………………
Figura 2: Diagramma cartesiano della serie storica dei prezzi di chiusura della società quotata
Enel spa con la visualizzazione del Data Statistics