Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Function utile per affronate l'esame, Schemi e mappe concettuali di Finanza Aziendale

Sintesi function per passare esame di metodi computazionali per la finanza

Tipologia: Schemi e mappe concettuali

2023/2024

Caricato il 02/12/2024

niccolo-vallini
niccolo-vallini 🇮🇹

1 documento

1 / 54

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Scrivere una function MATLAB che riceve come input due tabelle T1 e T2, i nomi dei
corrispondenti titoli, due date day1 e day2, con day1<day2, i prezzi di riferimento pr1
e pr2 dei corrispondenti titoli, e rappresenta nella figura ``Quotazioni'' per il periodo
[day1,day2] il grafico dei prezzi di chiusura normalizzati dei titoli di cui alle tabelle T1
e T2, evidenziando inoltre le massime e le minime quotazioni normalizzate raggiunte
dai titoli nel periodo considerato.
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);
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36

Anteprima parziale del testo

Scarica Function utile per affronate l'esame e più Schemi e mappe concettuali in PDF di Finanza Aziendale solo su Docsity!

Scrivere una function MATLAB che riceve come input due tabelle T1 e T2, i nomi dei

corrispondenti titoli, due date day1 e day2, con day1<day2, i prezzi di riferimento pr

e pr2 dei corrispondenti titoli, e rappresenta nella figura ``Quotazioni'' per il periodo

[day1,day2] il grafico dei prezzi di chiusura normalizzati dei titoli di cui alle tabelle T

e T2, evidenziando inoltre le massime e le minime quotazioni normalizzate raggiunte

dai titoli nel periodo considerato.

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

Scrivere una function MATLAB che riceve come input una tabella T, il nome del

corrispondente titolo, e due date day1 e day2, con day1<day2, e rappresenta nella

figura ``Massimi-Minimi'' per il periodo [day1,day2] il grafico dei prezzi massimi,

minimi, di chiusura, del titolo di cui alla tabella T, evidenziando inoltre il massimo ed il

minimo prezzo di chiusura raggiunto dal titolo nel periodo considerato.

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);

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo, e

due date day1 e day2 , con day1<day2 , e rappresenta nella figura ``Grafico OHLC'' per il periodo

[ day1,day2 ] il grafico ``OHLC'' (colorato) del titolo di cui alla tabella T.

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");

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo, e

due date day1 e day2 , con day1<day2 , e rappresenta nella figura ``Candlestick'' per il periodo

[ day1,day2 ] il grafico a ``candele giapponesi'' del titolo di cui alla tabella T.

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");

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo,

due date day1 e day2 , con day1<day2 , e rappresenta nella figura ``Prezzi Medi'' per il periodo

[ day1,day2 ] il grafico dei prezzi di chiusura del titolo di cui alla tabella T , con in evidenza il massimo e

minimo prezzo raggiunto nel periodo considerato, oltre ai corrispondenti prezzi medi MP (ovvero "HL")

e TP (ovvero "HLC").

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);

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo,

due date day1 e day2 , con day1<day2 , e rappresenta nella figura ``Prezzi Medi'' per il periodo

[ day1,day2 ] il grafico dei prezzi di chiusura del titolo di cui alla tabella T , con in evidenza il massimo e

minimo prezzo raggiunto nel periodo considerato, oltre ai corrispondenti prezzi medi OP (ovvero

"OHLC") e WP (ovvero "HLCC").

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

Scrivere una function MATLAB che riceve come input due tabelle T1 e T2 , i nomi dei corrispondenti

titoli, due date day1 e day2 , con day1<day2 , e rappresenta nella figura ``Variazioni Relative'' per il

periodo [ day1,day2 ] il grafico delle variazioni relative dei prezzi di chiusura dei titoli di cui alle tabelle

T1 e T2 , evidenziando inoltre le massime e le minime variazioni relative raggiunte dai titoli nel periodo

considerato.

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");

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo,

due date day1 e day2 , con day1<day2 , e tre valori interi p1>=5 , p2>=5 e p3>=5 , e rappresenta nella

figura ``Momentum'' per il periodo [ day1,day2 ] il grafico dei momentum a p1 , p2 e p3 giorni dei prezzi di

chiusura del titolo di cui alla tabella T , evidenziando inoltre i massimi ed i minimi momentum raggiunti

dai titoli nel periodo considerato.

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

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo,

due date day1 e day2 , con day1<day2 , e tre valori interi p1>=5 , p2>=5 e p3>=5 , e rappresenta nella

figura "Rate of Change'' per il periodo [ day1,day2 ] il grafico dei ROC a p1 , p2 e p3 giorni dei prezzi di

chiusura del titolo di cui alla tabella T , evidenziando inoltre i massimi ed i minimi ROC raggiunti dai titoli

nel periodo considerato.

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");

Scrivere una function MATLAB che riceve come input una tabella T , il nome del corrispondente titolo,

due date day1 e day2 , con day1<day2 , ed un intero p>=5 e rappresenta nella figura ``Medie Mobili'' per

il periodo [ day1,day2 ] il grafico dei prezzi di chiusura del titolo di cui alla tabella T , con in evidenza il

massimo e minimo prezzo raggiunto nel periodo considerato, oltre alle corrispondenti medie mobili

semplici, ponderate ed esponenziali (con fattore di smorzamento alpha=2/(p+1) ) a p giorni.

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);