














































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Sintesi function per passare esame di metodi computazionali per la finanza
Tipologia: Schemi e mappe concettuali
1 / 54
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!















































function es1_2_(T1,T2,day1,day2,pr1,pr2,nomeT1,nomeT2) %controllo input if not (day1<day2) error("la data day1 non precede la data day2") end %si tirano fuori i dati che servono D1=T1.Date; C1=T1.Close; D2=T2.Date; C2=T2.Close; % si cercano le righe corrispondenti al periodo [d1,d2] righeT1=find(D1>=day1 & D1<=day2); righeT2=find(D2>=day1 & D2<=day2); if isempty(righeT1) error("T1 non ha dati per il periodo [d1,d2]"); end if isempty(righeT2) error("T2 non ha dati per il periodo [d1,d2]"); end %si determinano le quoatazioni normalizzate N1=C1(100/pr1); N2=C2(100/pr2); %fare disegno figure(Name="Quotazioni Normalizzate"); % plot(D1(righeT1),N1(righeT1),"b"); hold on; plot(D2(righeT2),N2(righeT2),"m"); PlotMaxMin(D1(righeT1),N1(righeT1),"dr"); PlotMaxMin(D2(righeT2),N2(righeT2),"dr"); yline(100,"k"); hold off; % grid on; grid minor; MyAxisPadded; title("Grafico prezzi chiusura normalizzati di "+nomeT1+" e "+nomeT2); legend(nomeT1,nomeT2,Location="best"); xlabel("Date"); ylabel("Prezzi Chiusura Normalizzati"); end %%%%% Local function function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("I vettori x ed y non hanno la stessa lunghezza"); end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt);
end
function es1_3_(T,day1,day2,nomeT) %controllo if not(day1<day2) error("la data d1 non precede la data d2") end %tirare fuori i dati D=T.Date; C=T.Close; H=T.High; L=T.Low; %righe corrispondenti periodo d1,d righeT=find(D>=day1 & D<=day2); if isempty (righeT) error("non ci sono dati per [d1,d2]") end %si disegna la figura figure(Name="Massimi-Minimi"); % plot(D(righeT),C(righeT),"b"); hold on; plot(D(righeT),H(righeT),"g"); plot(D(righeT),L(righeT),"m"); PlotMaxMin(D(righeT),C(righeT),"dr"); hold off; grid on; grid minor; MyAxisPadded; title("Grafico prezzi massimi,minimi e di chiusura di "+nomeT); legend("Prezzi Chiusura","Prezzi Massimi","Prezzi Minmimi",Location="best"); xlabel("Date"); ylabel("Prezzi"); end %%%% Local function function PlotMaxMin(x,y,opt) if not (length(x)==length(y)) error("x e y non hanno la stessa lunghezza") end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt);
function es_1_5(T,day1,day2,nomeT) if not (day1<day2) error("la data day1 non precede la data day2"); end D=T.Date; C=T.Close; H=T.High; L=T.Low; O=T.Open; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("non ci sono dati per [d1,d2]") end figure(Name="Grafico OHLC"); hold on; for i=righeT(1):righeT(end) if i== opt="b"; elseif C(i)>C(i-1) opt="g"; elseif C(i)<C(i-1) opt="r"; else opt="b"; end plot([D(i),D(i)],[L(i),H(i)],opt); plot([D(i),D(i)+0.4],[C(i),C(i)],opt); plot([D(i),D(i)-0.4],[O(i),O(i)],opt); end hold off; grid on; grid minor; MyAxisPadded; title("Grafico OHLC di "+nomeT); xlabel("Date"); ylabel("Prezzi");
function es_1_6(T,day1,day2,NomeT) if not(day1<day2) error("la data day1 non precede la data day2") end D=T.Date; O=T.Open; H=T.High; L=T.Low; C=T.Close; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("T non ha dati per il periodo [d1,d2]") end figure(Name="Candlestick"); hold on; for i=righeT(1):righeT(end) plot([D(i),D(i)],[L(i),H(i)],"b") if C(i)<O(i) opt="r"; else opt="g"; end patch([D(i)-0.25,D(i)+0.25,D(i)+0.25,D(i)-0.25],[C(i),C(i),O(i),O(i)],opt); end hold off; grid on; grid minor; MyAxisPadded; title("Grafico candele Giapponesi di"+NomeT); xlabel("Date"); ylabel("Prezzi");
function es_1_1_1(T,day1,day2,NomeT) if not(day1<day2) error("la data day1 non precede la data day2"); end D=T.Date; C=T.Close; H=T.High; L=T.Low; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("T non ha dati per il periodo [d1,d2]"); end % si calcola l'MP(HL) e il TP(HLC) MP=(H+L)/2; TP=(H+L+C)/3; figure(Name="Prezzi Medi"); % plot(D(righeT),C(righeT),"b"); hold on; plot(D(righeT),MP(righeT),"m"); plot(D(righeT),TP(righeT),"c"); PlotMaxMin(D(righeT),C(righeT),"dr"); hold off; % grid on; grid minor; MyAxisPadded; title("Grafico prezzi chiusura, MP e TP di "+NomeT); legend("Prezzi Chiusura","MP","TP",Location="best"); xlabel("Date"); ylabel("Prezzi"); end %%% Local Functions %%% function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("I vettori x ed y non hanno la stessa lunghezza"); end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt);
function es1_1_2(T,day1,day2,NomeT) if not(day1<day2) error("la data day1 non precede la data day2"); end D=T.Date; C=T.Close; H=T.High; L=T.Low; O=T.Open; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("T non ha dati per il periodo [d1,d2]"); end % si calcola l'OP(OHLC) e WP(HLCC) OP=(O+H+L+C)/4; WP=(H+L+2*C)/4; figure(Name="Prezzi Medi"); % plot(D(righeT),C(righeT),"b"); hold on; plot(D(righeT),OP(righeT),"m"); plot(D(righeT),WP(righeT),"c"); PlotMaxMin(D(righeT),C(righeT),"dr"); hold off; % grid on; grid minor; MyAxisPadded; title("Grafico prezzi chiusura, OP e WP di "+NomeT); legend("Prezzi Chiusura","OP","WP",Location="best"); xlabel("Date"); ylabel("Prezzi"); end %%% Local Function function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("I vettori x ed y non hanno la stessa lunghezza"); end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt);
%%% Local Function function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("I vettori x ed y non hanno la stessa lunghezza"); end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt); end function M=Momentum(v,p) n=length(v); M=NaN(n,1); for h=(p+1):n M(h)=v(h)-v(h-p); end
function es1_2_2(T1,T2,day1,day2,nomeT1,nomeT2) if not(day1<day2) error("la data day1 non precede la data day2"); end D1=T1.Date; C1=T1.Close; D2=T2.Date; C2=T2.Close; righeT1=find(D1>=day1 & D1<=day2); righeT2=find(D2>=day1 & D2<=day2); if isempty(righeT1) error("T1 non ha dati per il periodo [d1,d2]"); end if isempty(righeT2) error("T2 non ha dati per il periodo [d1,d2]"); end % si calcolano le variazioni relative p=1; VR1=MomRel(C1,p); VR2=MomRel(C2,p); figure(Name="Variazioni Assolute"); % plot(D1(righeT1),VR1(righeT1),"b"); hold on; plot(D2(righeT2),VR2(righeT2),"m"); PlotMaxMin(D1(righeT1),VR1(righeT1),"dr"); PlotMaxMin(D2(righeT2),VR2(righeT2),"dr"); yline(0,"k"); hold off; % grid on; grid minor; MyAxisPadded; title("Grafico variazioni relative di "+nomeT1+" e "+nomeT2); legend(nomeT1,nomeT2,Location="best"); xlabel("Date"); ylabel("Variazioni Relative");
function es1_2_3(T,day1,day2,p1,p2,p3,nomeT) if not(day1<day2) error("la data day1 non precede la data day2"); end if not(p1>=5) error("il parametro p1 deve essere maggiore o uguale a 5") end if not(p2>=5) error("il parametro p2 deve essere maggiore o uguale a 5") end if not(p3>=5) error("il parametro p3 deve essere maggiore o uguale a 5") end D=T.Date; C=T.Close; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("T non ha dati per il periodo [d1,d2]") end %calcolo i momentum M1=Momentum(C,p1); M2=Momentum(C,p2); M3=Momentum(C,p3); figure(Name="Momentum"); plot(D(righeT),M1(righeT),"b"); hold on; plot(D(righeT),M2(righeT),"m"); plot(D(righeT),M3(righeT),"g"); PlotMaxMin(D(righeT),M1(righeT),"dr"); PlotMaxMin(D(righeT),M2(righeT),"dr"); PlotMaxMin(D(righeT),M3(righeT),"dr"); yline(0,"k"); hold off; grid on; grid minor; MyAxisPadded; title("Grafico Momentum a "+p1+", "+p2+", "+p3+" giorni di "+nomeT); legend("Momentum a "+p1+" gg","Momentum a "+p2+" gg","Momentum a "+p3+" gg",Location="best"); xlabel("Giorni"); ylabel("Momentum");
%%%%%Local function function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("I vettori x ed y non hanno la stessa lunghezza"); end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt); end function M=Momentum(v,p) n=length(v); M=NaN(n,1); for h=(p+1):n M(h)=v(h)-v(h-p); end
%%%%%Local function function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("x e y non hanno la stessa lunghezza") end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt); end function MR=MomRel(v,p) n=length(v); MR=NaN(n,1); for h=(p+1):n MR(h)=(v(h)-v(h-p))/v(h-p); end
function es1_2_9(T,day1,day2,p1,p2,p3,nomeT) if not(day1<day2) error("la data day1 non precede la data day2") end if not(p1>=5) error("p1 deve essere maggiore o uguale a 5") end if not(p2>=5) error("p2 deve essere maggiore o uguale a 5") end if not(p3>=5) error("p3 deve essere maggiore o uguale a 5") end D=T.Date; C=T.Close; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("T non ha dati per il periodo [d1,d2]") end %calcolo i Roc R1=Roc(C,p1); R2=Roc(C,p2); R3=Roc(C,p3); figure(Name="Rate of Change"); plot(D(righeT),R1(righeT),"b"); hold on; plot(D(righeT),R2(righeT),"m"); plot(D(righeT),R3(righeT),"g"); PlotMaxMin(D(righeT),R1(righeT),"dr"); PlotMaxMin(D(righeT),R2(righeT),"dr"); PlotMaxMin(D(righeT),R3(righeT),"dr"); yline(100,"k"); hold off; grid on; grid minor; MyAxisPadded; title("Grafico Roc a "+p1+", "+p2+", "+p3+", giorni di" +nomeT); legend("Roc a "+p1+", gg", "Roc a "+p2+", gg", "Roc a "+p3+", gg",Location="best"); xlabel("Date"); ylabel("Roc");
function es1_3_1(T,day1,day2,p,nomeT) if not(day1<day2) error("la data day1 non precede la data day2") end if not(p>=5) error("p deve essere maggiore o uguale a 5") end D=T.Date; C=T.Close; righeT=find(D>=day1 & D<=day2); if isempty(righeT) error("T non ha dati per il periodo [d1,d2]") end % cacolo la media mobile semplice(SMA), media mobile ponderata(WMA) e media % esponenziale (EMA) SMA=Sma(C,p); WMA=Wma(C,p); EMA=Ema(C,p); figure(Name="Medie Mobili"); plot(D(righeT),C(righeT),"b"); hold on; plot(D(righeT),SMA(righeT),"m"); plot(D(righeT),WMA(righeT),"c"); plot(D(righeT),EMA(righeT),"g"); PlotMaxMin(D(righeT),C(righeT),"dr"); hold off; grid on; grid minor; MyAxisPadded; title("Grafico Prezzi Chiusura, SMA, WMA, EMA a " +p+" giorni di "+nomeT); legend("Prezzi di chiusura","SMA","WMA","EMA",Location="best"); xlabel("Date"); ylabel("Prezzi");
%%%%Local function function PlotMaxMin(x,y,opt) if not(length(x)==length(y)) error("x e y non hanno la stessa lunghezza") end [valmin,posmin]=min(y); [valmax,posmax]=max(y); plot(x(posmin),valmin,opt,x(posmax),valmax,opt); end %%%function media mobile semplice function M=Sma(v,p) n=length(v); M=NaN(n,1); for k=p:n vals=v((k-p+1):k); M(k)=mean(vals,"omitnan"); end end %function media mobile ponderata function M=Wma(v,p) n=length(v); M=NaN(n,1); pesi=(1:p)'; for k=p:n vals=v((k-p+1):k); M(k)=mean(vals,pesi,"omitnan"); end end %function media mobile esponenziale generalizzata che serve per la media %esponenziale standard function M=EmaG(v,p,alpha) n=length(v); M=NaN(n,1); for k=p:n if isnan(M(k-1)) vals=v((k-p+1):k); M(k)=mean(vals,"omitnan"); elseif isnan(v(k)) M(k)=M(k-1); else M(k)=(1-alpha)M(k-1)+alphav(k); end end end %function media esponenziale (EMA) function M=Ema(v,p) alpha=2/(p+1); M=EmaG(v,p,alpha);