Title | 2-Esercitazione 202010 05 |
---|---|
Author | Luca Zaffaina |
Course | Matematica finanziaria |
Institution | Università degli Studi di Trento |
Pages | 8 |
File Size | 476.5 KB |
File Type | |
Total Downloads | 15 |
Total Views | 61 |
2 - Esercitazione MATLABcancella tutte le variabili in ambiente MATLAB e chiudi tutte le finestre(figure)clear; close all;Carica dati da daset formato MATLABload databaseControlla quali variabili sono nel workspacewhosName Size Bytes Class Attributesdatabase 1x1 97401634 structAttribusci a SP100 e S...
2 - Esercitazione MATLAB cancella tutte le variabili in ambiente MATLAB e chiudi tutte le finestre (figure) clear; close all;
Carica dati da daset formato MATLAB load database.mat
Controlla quali variabili sono nel workspace whos Name
Size
database
1x1
Bytes 97401634
Class
Attributes
struct
Attribusci a SP100 e SP500 le serie storiche dei prezzi dello S&P100 e S&P500 SP100=database.SP100.index_prices; SP500=database.SP500.index_prices;
Plot/Rappresenta le serie storiche dei prezzi figure plot(SP100) hold Current plot held
plot(SP500,'r') xlabel('Time') ylabel('Prezzi') title('Grafico delle serie storiche dei prezzi') legend('SP100','SP500')
1
Rappresenta le serie storiche dei prezzi nella medesima figura ma in due subplots Utilizza il comando subplot figure() subplot(2,1,1) plot(SP100) xlabel('Time') ylabel('Prezzi') title('SP100') legend('SP100') grid subplot(2,1,2) plot(SP500,'r:') xlabel('Time') ylabel('Prezzi') title('SP500') legend('SP500') grid
2
Calcola le serie storiche dei rendimenti logaritmici rt=log(Pt/Pt-1) esempio con vettore: i rendimenti sono uguali al logaritmo del prezzo di oggi (end) diviso il prezzo di ieri (end-1). Domani sarà il prezzo di domani diviso il prezzo di oggi. Estraggo dal vettore tutti gli elementi da domani alla fine x=1:6; x(2:end); x(1:end-1); % Estraggo tutti gli elementi da oggi a quello prima della fine. % per trovare il rendimento logaritmico devo dividere il prezzo al tempo % uno per il prezzo al tempo due; il prezzo al tempo due per il prezzo al % tempo tre e così via. Posso fare questo usando la divisione elemento per % elemento con l'operatore "./" (x(2:end))./(x(1:end-1)) ans = 1×5 2.0000
1.5000
1.3333
1.2500
1.2000
% prezzo successivo diviso il prezzo al tempo precedente questo perchè % le serie storiche sono ordinate dal più vecchio al più recente quindi end % equivale al più recente. SP100Ret=log(SP100(2:end)./SP100(1:end-1)); SP500Ret=log(SP500(2:end)./SP500(1:end-1));
3
Plot Grafici Rendimenti figure subplot(2,1,1) plot(SP100Ret) xlabel('Time') ylabel('Log-Returns') title('SP100') subplot(2,1,2) plot(SP500Ret) xlabel('Time') ylabel('Log-Returns') title('SP500')
Disegnare Histfit con normale e tlocationscale per SP100 figure subplot(2,1,1) histfit(SP100Ret,100) subplot(2,1,2) histfit(SP100Ret,100,'tlocationscale')
4
% % % %
possibile domanda da esame: quale dei due approssima meglio la distribuzione dei rendimenti? La distribuzione t-student rispetto alla normale perchè ha le code più pesante ed + più concentrata attorno al valore atteso
Effettuare Jarque-Bera test [hSP100,pSP100]=jbtest(SP100Ret) Warning: P is less than the smallest tabulated value, returning 0.001. hSP100 = 1 pSP100 = 1.0000e-03
[hSP500,pSP500]=jbtest(SP500Ret) Warning: P is less than the smallest tabulated value, returning 0.001. hSP500 = 1 pSP500 = 1.0000e-03
Disegna i qqplot: mostra un grafico quantile su quantile. se non specifico il metro di paragone in qqplot (SP100Ret,'Normal'), la normale è la distribuzione di default. Se i dati provengono da una normale i dati osservati dovrebbero giacere sulla retta che osservo rossa. figure() subplot(2,1,1) qqplot(SP100Ret) subplot(2,1,2) 5
qqplot(SP500Ret)
% qui osservo che la distribuzione normale non approssima bene questi dati.
Disegna i normplot. Qui sull'asse y abbiamo le probabilità: figure() subplot(2,1,1) normplot(SP100Ret) subplot(2,1,2) normplot(SP500Ret)
6
% osservo che i dati si distanziano da una normale (se non esprimo la % distribuzione normplot utilizza la normale).
Paragoniamo qqplot rispetto a normale e tlocationscale figure() pd=makedist('tlocationscale') pd = tLocationScaleDistribution t Location-Scale distribution mu = 0 sigma = 1 nu = 5
subplot(2,1,1) qqplot(SP100Ret) title('Normal') subplot(2,1,2) qqplot(SP100Ret,pd) %faccio il qqplot rispetto ad una t-student. title('t-Student')
7
% Notiamo che qui la distribuzione dei dati è meglio approssimata da una % t-student rispetto che a una Normale.
8...