%% Esame MQF 24/05/2022 PARTE I % Il file missing2022.xlsx contiene i % rendimenti mensili di 5 titoli (variabili) nel periodo mar2008-ago 2019 % (l'ultima colonna è il rendimento dell'indice di mercato) % % 1) Caricare i dati presenti in questo file in una timetable. % 2) analizzare la presenza di valori % mancanti. Discutere se la distribuzione dei missing può essere ritenuta % casuale. % 3) Rimuovere le variabili che presentano più di 20 valori mancanti. % Sul dataset ridotto utilizzare solo le righe che non presentano % valori mancanti. % 4) Calcolare e discutere l'indice Beta. Mostrare il titolo con il più % alto valore dell'indice Beta % % % 5) Calcolare i rendimenti medi annuali dei titoli. Rappresentare % graficamente le serie dei rendimenti annuali % 6) Estrarre in una nuova timetable denominata con le prime tre lettere del % proprio cognome i rendimendi the vanno dal primo di marzo 2009 al 30 % aprile 2012. Calcolare la media e mediana dei rendimenti relativi al % periodo estratto. % 7) Rappresentare graficamente tramite la funzione plot la media e mediana % dei rendimenti % Soluzione %% 1) Caricare i dati presenti in questo file in una timetable. X=readtimetable('missing2022.xlsx'); %% Analisi dei valori mancanti (funzione mdpattern di FSDA toolbox) Ypat=mdpattern(X(:,2:end)); % Commento: La distribuzione dei missing è sicuramente non casuale. Il % titolo 3 è quello che presenta un numero di valori mancanti molto % superiore a quello delle altre variabili % Rimuovo la variabile che presenta più di 20 valori mancanti X(:,"titolo3")=[]; % Sul dataset ridotto utilizzare solo le righe che non presentano % valori mancanti. X1=rmmissing(X); %% % 4) Calcolare e discutere l'indice Beta. Mostrare il titolo con il più % alto valore dell'indice Beta % Indice Beta % E' la pendenza in una regressione semplice in cui la variabile % esplicativa X è il rendimento dell indice di mercato (𝑠_𝑚) e la % variabile dipendente Y è il rendimento del titolo j (𝑠_𝑗) % Indice Beta >1 (b>1) = Il titolo è più volatile (più rischioso) rispetto % all'indice di mercato nel suo complesso. % Indice Beta <1 (b<1) = Il titolo è meno volatile (meno rischioso) % rispetto all%indice di mercato nel suo complesso, ossia risente poco % delle fluttuazioni di mercato. % p=size(X1,2)-1; % Beta = inizializzo il vettore che conterrà i valori dell'indice beta Beta=zeros(p,1); for j=1:p outj=fitlm(X1{:,'Rendimento_mercato'},X1{:,j}); Beta(j)=outj.Coefficients.Estimate(2); end nomivar=X1.Properties.VariableNames(1:p); BetaT=array2table(Beta,"RowNames",nomivar,"VariableNames","Indici Beta"); disp(BetaT) % indmaxBeta= riga dove si trova il valore più grande dell'indice Beta [~,indmaxBeta]=max(Beta); disp('titolo con il valore più alto dell indice Beta') disp(BetaT(indmaxBeta,:)) %% Calcolo rendimenti annuali e rappresentazione grafica % 5) Calcolare i rendimenti medi annuali dei titoli. Rappresentare % graficamente le serie dei rendimenti annuali Yannuale= retime(X,'yearly','mean'); stackedplot(Yannuale) title('Rendimenti annuali'); %% 6) Estrarre in una nuova timetable denominata con le prime tre lettere del % proprio cognome i rendimendi the vanno dal primo di marzo 2009 al 30 % aprile 2012 seltime = timerange('2009-03-1','2012-04-30'); RIA=X1(seltime,:); % Media dei rendimenti nel periodo estratto RENDMEDI=mean(RIA{:,:}); % Mediana dei rendimenti nel periodo estratto RENDMEDIANI=median(RIA{:,:}); %% 7) Rappresentare graficamente la media e mediana dei rendimenti close all plot([RENDMEDI',RENDMEDIANI'],'o') legend(["Media" "Mediana"]) xlim([1 4]) xticks(gca,1:4); xticklabels(RIA.Properties.VariableNames); %% ESERCIZIO 1 PARTE II % Due titoli azionari al variare degli stati del mondo presentano i % seguenti rendimenti e probabilità (p): % % r_1 r_2 p % Rialzo: 10% 5% 40% % Constanza: 5% 1% 30% % Ribasso: 0% 8% 30% %1. Calcolare i rendimenti attesi dei due titoli e le lore varianze. % % 2. Calcolare il coefficiente di correlazione tra i rendimenti dei due % titoli. % % 3. Si suppone di voler costruire un portafoglio fatto dei due titoli. % Il peso del primo titolo è uguale a 30% e quello del secondo uguale a % 70%. Calcolare il rendimento atteso del portafogli e la sua deviazione % standard. %% Esercizio 1. punto 1. PARTE II %rendimento atteso del primo titolo %utilizzando le matrici r_1=[10/100 5/100 0/100]; p=[40/100; 30/100; 30/100]; mu_1=r_1*p; %rendimento atteso del secondo titolo %utilizzando le matrici r_2=[5/100 1/100 8/100]; p=[40/100; 30/100; 30/100]; mu_2=r_2*p; %varianza del primo titolo %utilizzando le matrici dev_12=(r_1-mu_1).^2; var_1=dev_12*p; %varianza del secondo titolo %utilizzando le matrici dev_22=(r_2-mu_2).^2; var_2=dev_22*p; %% Esercizio 1. punto 2. PARTE II %Bisogna prima calcolare la covarianza tra i due titoli. %utilizzando le matrici cov_12=(r_1-mu_1).*(r_2-mu_2)*p; %%Il coefficiente di correlazione è uguale rho_12=cov_12/(sqrt(var_1)*sqrt(var_2)); %% Esercizio 1. punto 3. PARTE II x_1=30/100; x_2=70/100; %%%%rendimento atteso del portafogli mu_p %vettore dei rendimenti attesi mu=[mu_1 mu_2]; %vettore dei pesi %utilizzando le matrici x=[x_1 x_2]; %%%%calcolo mu_p %utilizzando le matrici mu_p=mu*x'; %%matrice di varianze-covarianze V=[var_1 rho_12*var_1*var_2; rho_12*var_1*var_2 var_2]; %%Calcolo la deviazione standard del portafogli %utilizzando le matrici devst_p=sqrt(x*V*x'); %% ESERCIZIO 2 PARTE II % Si consideri un mercato finanziario nel quale vi sono tre titoli aleatori caratterizzati % da rendimenti medi uguale a mu_1 = 10%, mu_2 = 12%, mu_3 = 15% e deviazioni standard uguali, rispettivamente, a % 1%, 2% e 3%. Supponendo che i tre rendimenti non siano correlati (ovvero che la matrice delle varianze e covarianze sia % diagonale), i titoli si possano vendere allo scoperto e che il vincolo di budget sia soddisfatto: % % 1. Calcolare il portafoglio di minima varianza. % 2. Si calcoli la quota da investire nel secondo titolo per avere un %portafogli di rendimento atteso uguale a 0.2. %% Esercizio 2. punto 1. PARTE II mu=[10/100; 12/100; 15/100]; V=[1/100 0 0; 0 2/100 0 ; 0 0 3/100]; n=3; [Xmin, fvalmin] = fmincon(@(x) sqrt(x'*V*x), ... % fissa l'obiettivo ones(n,1)/n, ... % imposta i valori di ipotesi/partenza [], [], ... % nessun vincolo di disuguaglianza ones(1,n), ... % termine A -> vincolo di uguaglianza Aeq*x=beq 1, ... % termine b -> vincolo di uguaglianza Aeq*x=beq ... % vincolo : somma(pesi) = 1 zeros(n, 1), [],... % limite inferiore e limite superiore su x []); mu_min=Xmin'*mu;%rendimento atteso fvalmin; %deviazione standard Xmin; %quote del portafoglio %% Esercizio 2. punto 2. PARTE II [Xnew, fvalnew]=fmincon(@(x) sqrt(x'*V*x), ... % fissa l'obiettivo ones(n,1)/n, ... % imposta i valori di ipotesi/partenza [], [], ... % nessun vincolo di disuguaglianza [ones(1,n) ; mu'],.... [ 1 ; 0.2 ], ... ... % primo vincolo : somma(pesi) = 1 ... % secondo vincolo : valore atteso portafoglio = 0.4 [], [],... []); Xnew(2);%è la quota da investire nel primo titolo %% ESERCIZIO 3 PARTE II % Due titoli azionari hanno rendimenti medi del 10% e del 15%. Gli scarti quadratici % medi (deviazioni standard) sono 1% e 2% e il coefficiente di correlazione vale 1. % % 1. Si calcoli e si rappresenti graficamente la frontiera % efficiente dove le vendite allo scoperto siano possibili e il vincolo di bugdet è soddisfato. % 2.Supponete che il rendimento del titolo certo sia uguale rf=0.008. Calcolate la frontiera efficiente con il titolo non rischioso incluso. % Sovrapporre al grafico precedente il grafico della nuova frontiera efficiente. %% Esercizio 3 punto 1. PARTE II mu=[10/100; 15/100]; V=[1/100 1/100*2/100*1; 1/100*2/100*1 2/100]; %%1. %si calcoli prima il portafoglio di minima varianza n=2; [Xmin, fvalmin] = fmincon(@(x) sqrt(x'*V*x), ... % fissa l'obiettivo ones(n,1)/n, ... % imposta i valori di ipotesi/partenza [], [], ... % nessun vincolo di disuguaglianza ones(1,n), ... % termine A -> vincolo di uguaglianza Aeq*x=beq 1, ... % termine b -> vincolo di uguaglianza Aeq*x=beq ... % vincolo : somma(pesi) = 1 zeros(n, 1), [],... % limite inferiore e limite superiore su x []); mu_min=Xmin'*mu;%rendimento atteso fvalmin; %deviazione standard Xmin; %quote di portafogli % frontiera efficiente numberp = 40; % numero di punti della frontiera efficiente mu_in = linspace(mu_min,max(mu),numberp); % il valore atteso desiderato sigma_in = zeros(numberp,1); for i=1:numberp %%% per ciascun valore atteso calcola %%% la funzione di covarianza utilizzando fmincon [X, fval] = fmincon(@(x) sqrt(x'*V*x), ... % fissa l'obiettivo ones(n,1)/n, ... % imposta i valori di ipotesi/partenza [], [], ... % nessun vincolo di disuguaglianza [ones(1,n) ; mu'],.... [ 1 ; mu_in(i) ], ... % primo vincolo : somma(pesi) = 1 ... % secondo vincolo : valore atteso portafogli = mu_i ... zeros(n, 1), [],... []); sigma_in(i) = fval; % memorizzare la devizione standard end %% Esercizio 3 punto 2. PARTE II %frontiera con risk-free rate rf=0.008; mu_n = 50; % numero di punti della frontiera efficiente ER_i = linspace(min(mu),max(mu),mu_n); sigma_i = ones(mu_n,1); %la nostra guess valore_iniziale = ones(n,1)/n; for i=1:mu_n %%% per ciascun rendimento mu_n calcola %%% il portafoglio di min-var utilizzando la funzione fmincon [~, fval] = fmincon(@(x) sqrt(x'*V*x), ... % fissa l'obiettivo valore_iniziale, ... % imposta i valori di ipotesi/partenza [], [], ... % nessun vincolo di disuguaglianza mu'-rf*ones(1,n), ... % termine A -> vincolo di uguaglianza Aeq*x=beq ER_i(i)-rf, ... % termine b -> vincolo di uguaglianza Aeq*x=beq []); sigma_i(i) = fval; % memorizza i risultati end %fai il plotting plot(sigma_in,mu_in,'r') xlabel('Rischio (std)'); ylabel('Valore atteso'); legend('Frontiera Efficiente') hold on sigma_inew=[0;sigma_i]; ER_inew=[rf;ER_i']; plot(sigma_inew,ER_inew, 'k' ) ylim([0 0.155]) legend('Frontiera efficiente con soli titoli rischiosi','Frontiera efficiente con titoli rischiosi e il titolo risk-free', 'Location','northwest')