%% ESAME METODI QUANTITATIVI PER I MERCATI FINANZIARI 04/06/2025 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% DURATA: 1 ora e 30 minuti %%% Il file Matlab (script), formato m oppure mlx, %%% va salvato con il vostro nome e cognome e va %%% caricato nella pagina che viene comunicata. %%% La votazione finale terrà conto della qualità del codice e della %%% sua chiara presentazione. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% MODULO I (15 punti) % Caricare in memoria il dataset delle città italiane 2024 tramite % l'istruzione load citiesItaly2024.mat % Creare la matrice degli scostamenti standardizzati robusti (sottraendo % la mediana e dividendo per il MAD normalizzato) in formato table. % L'output deve essere in formato table e deve essere denominato con le % prime 3 lettere del proprio cognome (punti 3). RIA=zscoreFS(citiesItaly2024); % Mostrare nella Command Window (in formato table) il valore dello % scostamento standardizzato robusto per la città di Torino della % variabile Deposit (punti 2) disp(RIA("Torino","Deposit")) % Interpretare il numero ottenuto (punti 3) % Torino presenta un valore dei depositi superiore a quello mediano e % presenta uno scostamento dal MAD normalizzato di 0.385 volte. % Mostrare nella Command window il numero di città che presentano un % valore superiore alla mediana della variabile Deposit. % Motivare il numero ottenuto (punti 3) disp(sum(RIA.Deposit>0)) disp('Dato che n è dispari il numero ottenuto è pari a (n-1)/2') % Ci sono (n-1)/2 città con valore superiore a quello della mediana % Ci sono (n-1)/2 città con valore inferiore a quello della mediana % Creare in un'unica finestra grafica il boxplot di tutte le variabili del % dataset aggiungendo in corrispondenza di ogni boxplot il nome della % rispettiva variabile ed in corrispondenza degli outliers i nomi delle % città anomale (punti 4) boxplot(RIA{:,:},'Labels',RIA.Properties.VariableNames) add2boxplot(RIA) %% MODULO II (15 punti) %% ESERCIZIO 1 (6 punti) % Si consideri un mercato in cui sono presenti tre titoli con le seguenti % caratteristiche: % 1. Vettore dei rendimenti attesi uguale a: mu = [0.14 0.10 0.11]; % 2. Matrice delle varianze-covarianze uguale a: % V = diag([0.18 0.19 0.3]). % Si supponga che il tasso privo di rischio sia dell'1%. Ipotizzando che la % vendita allo scoperto non sia consentita, si calcolino i pesi del portafoglio % di tangenza. Infine, utilizzando "solo" il portafoglio di tangenza % precedentemente calcolato e il titolo privo di rischio, si tracci la % frontiera efficiente nello spazio rischio-rendimento, ipotizzando che non % sia possibile indebitarsi al tasso privo di rischio. Si mostri sullo % stesso grafico della frontiera efficiente anche il portafoglio di tangenza. %% Soluzione mu = [0.14 0.10 0.11]; V = diag([0.18 0.19 0.3]); % calcolo del portafoglio di tangenza n = length(mu); % numero dei titoli options = optimoptions('fmincon','Display','off');% ulteriori opzioni rf = 1/100; % tasso privo di rischi sharpe_ratio_opp = @(x) -(mu*x-rf)/(sqrt(x'*V*x)); % l'opposto dell'indice di Sharpe [X_tangency, fval] = fmincon(sharpe_ratio_opp, ... % la funzione da minimizzare ones(n,1)/n, ... % imposta i valori di ipotesi/partenza [], [], ... % il vincolo di disuguaglianza ones(1,n) , ... % termine Aeq -> vincolo di uguaglianza Aeq*x=beq 1, ... % termine beq -> vincolo di uguaglianza Aeq*x=beq zeros(n,1),[],[],options); % altri vincoli % calcolo del rendimento atteso e della deviazione standard del portafoglio di tangenza mu_tangency = mu*X_tangency; % il rendimento atteso fval_tangency = sqrt(X_tangency'*V*X_tangency); % la deviazione standard % la frontiera efficiente richiesta dev = linspace(0,fval_tangency, 50); % la deviazione standard line_n = rf+dev*((mu_tangency-rf)/fval_tangency); % rendimento atteso figure('Name', 'Frontiera Efficiente', NumberTitle='off'); plot(dev,line_n); title('Frontiera Efficiente con un titolo non rischioso'); % aggiungi titolo al grafico xlabel('Rischio (std)'); % titolo dell'asse x ylabel('Rendimento atteso'); % titolo dell'asse y hold on; scatter(fval_tangency,mu_tangency, 'filled'); % aggiungi il portafoglio di tangenza %% ESERCIZIO 2 (5 punti) % Si considerino gli stessi input dell'esercizio precedente. Ipotizzando % ancora che la vendita allo scoperto non sia consentita e il vincolo: % x_1 + x_2 >= 0.7, dove x_1 e x_2 sono, rispettivamente, i pesi del titolo % 1 e 2, si determini utilizzando la funzione "fmincon" il portafoglio % efficiente con un rendimento atteso in eccesso pari a 0.1. Si registri il % rendimento atteso di questo portafoglio e il peso del titolo privo di rischio. % Infine, si mostri questo portafoglio sullo stesso grafico della % frontiera efficiente disegnata in precedenza. %% Soluzione k_rf = 0.1; % il rendimento atteso in eccesso [X_ob, fval_ob] = fmincon(@(x) sqrt(x'*V*x), ... % la funzione da minimizzare ones(n,1)/n,[-1 -1 0], -0.7, ... % il vincolo di disuguaglianza mu-rf*ones(1,n), ... % termine Aeq -> vincolo di uguaglianza Aeq*x=beq k_rf, ... % termine beq -> vincolo di uguaglianza Aeq*x=beq zeros(n,1),[],[],options); % altri vincoli sigma_ob = fval_ob; % la deviazione standard corrispondente X_rf = 1-sum(X_ob); % il peso del titolo privo di rischio mu_pn = k_rf + rf; % il rendimento atteso del portafoglio richiesto sigma_pn = sqrt(X_ob'*V*X_ob); % la deviazione standard del portafoglio richiesto hold on; % aggiungi grafici al grafico esistente scatter(sigma_pn,mu_pn,50, 'k', 'filled'); % visualizza il portafoglio richiesto % aggiungi legenda al grafico legend({sprintf('Frontiera Efficiente'), sprintf('Portafoglio efficiente con rendimento atteso pari a %4.2f', mu_pn')}, 'Location','northwest'); hold off; %% ESERCIZIO 3 (4 punti) % Si determini il peso del titolo privo di rischio in un portafoglio con una % deviazione standard del 10%. Questo portafoglio è composto da un portafoglio % efficiente con solo titolo rischiosi, con un rendimento atteso del 18% e % una deviazione standard del 15%, e dal titolo privo di rischio, con un % rendimento atteso del 3%. Si calcoli inoltre il rendimento atteso % del portafoglio. %% Soluzione dev_port = 10/100; % volatilità del portafoglio dev_port_ris = 15/100; % volatilità del portafoglio con solo titoli rischiosi rend_port_ris = 18/100; % rendimento attteso del portafoglio con solo titoli rischiosi rf = 3/100; % rendimento attteso del titolo privo di rischio x = dev_port/dev_port_ris; % peso nel portafoglio con solo titoli rischiosi display(1-x); % peso nel titolo privo di rischio rend_att = x*rend_port_ris +(1-x)*rf; display(rend_att); % il rendimento atteso richiesto