Title | 6-Example Naive MV - Matematica finanziaria progredito (corso Finanza) |
---|---|
Author | Luca Zaffaina |
Course | Matematica finanziaria |
Institution | Università degli Studi di Trento |
Pages | 5 |
File Size | 231.2 KB |
File Type | |
Total Downloads | 377 |
Total Views | 441 |
Esempio NaiveMV - calcolo frontiera efficiente con la funzione"NaiveMV"clear;clf;close all;% Rendimento atteso dei 3 titoli ExpRet = [0,0,0];% Matrice di covarianza dei 3 titoli CovMat = [0,0,-0;0,0,0;-0,0,0];% Nomi dei titoli NameAssets{1}= 'A1'; NameAssets{2}= 'A2'; NameAssets{3}...
Esempio NaiveMV - calcolo frontiera efficiente con la funzione "NaiveMV" clear;clf;close all; % Rendimento atteso dei 3 titoli ExpRet = [0.15,0.2,0.08]; % Matrice di covarianza dei 3 titoli CovMat = [0.2,0.05,-0.01;0.05,0.3,0.015;-0.01,0.015,0.1]; % Nomi dei titoli NameAssets{1}= 'A1'; NameAssets{2}= 'A2'; NameAssets{3}= 'A3'; %Asset Bounds %vincoli per i pesi (devono essere compresi tra 0 e 1. w_min=0*ones(1,3); %vincolo sul peso minimo che deve essere zero w_max=1*ones(1,3); %vincolo sul peso massimo che deve essere 1. %Numero di Portafogli sulla frontiera efficiente NPts=10; % Numero di portafogli che voglio ottenere per rappresentare la frontiera verbose=1; % Calculate the efficient frontier with NaiveMV based on 10 points [PRisk, PRoR, PWts] = NaiveMV(ExpRet, CovMat, w_min, w_max, NPts,1); PRisk, PRoR, PWts, PRisk = 10×1 0.2411 0.2456 0.2588 0.2794 0.3060 0.3370 0.3714 0.4093 0.4682 0.5477 PRoR = 10×1 0.1143 0.1238 0.1333 0.1428 0.1524 0.1619 0.1714 0.1809 0.1905 0.2000 PWts = 10×3 0.2914 0.3117 0.3320 0.3524 0.3727 0.3930 0.4133
0.1155 0.1831 0.2506 0.3181 0.3857 0.4532 0.5207
0.5931 0.5052 0.4174 0.3295 0.2417 0.1538 0.0659
1
0.3811 0.1905 0.0000
0.6189 0.8095 1.0000
0.0000 0.0000 0.0000
%Input della funzione sono il rendimento atteso, la matrice di varianza-covarianza, % il vettore dei pesi minimi (tutti zero), il vettore dei pesi massimi (tutti 1); % 10 portafogli e l’1 finale è un input di cui non mi preoccupo. % % % % % % % % % % % % %
PRisk (portfolio risk) è un vettore 10x1 ed è la deviazione standard dei 10 portafogli. PRoR (portfolio return) è il vettore dei rendimenti attesi; PWts è matrice 10x3 dove in prima riga ho la composizione del portafoglio a minima varianza. In particolare ogni colonna rappresenta il peso di quel titolo (es. colonna 1 = primo titolo) in quel portafoglio. L'ultima riga (ultimo portafoglio) è il portafoglio a massimo rendimento atteso e vediamo che è totalmente investito nel titolo 2, questo perchè il portafoglio a massimo rendimento atteso è quello che mi da il massimo rendimento atteso tra i 3 titoli, sceglie quindi solo quel titolo con il rendimento atteso maggiore. Salvo che vi siano titoli con lo stesso rendimento atteso risulta sempre totalmente investito nel titolo a massimo rendimento atteso (in questo caso il titolo 2).
%Plot output expected rate of return and risk figure() plot(PRisk, PRoR) xlabel('Expected Risk') ylabel('Expected Return') title('Efficient Frontier')
2
% Lanciare fino a qui.
PARTE NON ANCORA FATTA - INVECE, QUELLA PIU' SOTTO E' STATA FATTA % Plot Weights of Portfolios on the Efficient Frontier figure() area(PWts) legend(NameAssets,'Location','southeast') title(' Portfolio Weights - Function NaiveMV')
% Plot Weights Minimum Variance Portfolio and Maximum Sharpe Ratio SharpeRatio=PRoR./PRisk; [a,b]=find(SharpeRatio==max(SharpeRatio)) a = 3 b = 1
PWts_SharpeRatio=PWts(a,:); PWts_MinVariance=PWts(1,:); figure() subplot(3,1,1) plot(PRisk,PRoR) hold
3
Current plot held
plot(PRisk(1),PRoR(1),'r*') plot(PRisk(a),PRoR(a),'g+') xlabel('Expected Risk') ylabel('Expected Return') title('Efficient Frontier') legend('Frontier','MinVariance','MaxSR','Location','southeast') subplot(3,1,2) bar(PWts_SharpeRatio) title('Max Sharpe Ratio - Asset Weights') subplot(3,1,3) bar(PWts_MinVariance) title('Minimum Variance - Asset Weights')
Quale è l'effetto sulla frontiera dell'introduzione di vincoli più forti sui pesi degli assets % Asset Bounds = limiti ai pesi tra 0 e 0.4->I pesi possono ora essere compresi solo tra 0 e 0 w_min_new=0*ones(1,3); %peso minimo 0 w_max_new=0.4*ones(1,3); %peso massimo 0.4 % Calcolo la frontiera efficiente con i nuovi vincoli [PRisk_new, PRoR_new, PWts] = NaiveMV(ExpRet, CovMat, w_min_new, w_max_new, NPts,1); PRisk_new,PRoR_new, PWts PRisk_new = 10×1 0.2592
4
0.2614 0.2667 0.2726 0.2790 0.2859 0.2932 0.3009 0.3089 0.3175 PRoR_new = 10×1 0.1320 0.1347 0.1373 0.1400 0.1427 0.1453 0.1480 0.1507 0.1533 0.1560 PWts = 10×3 0.3999 0.2001 0.3466 0.2534 0.3406 0.2791 0.3463 0.2980 0.3520 0.3169 0.3577 0.3358 0.3634 0.3547 0.3691 0.3736 0.3747 0.3925 0.4000 0.4000
0.4000 0.4000 0.3803 0.3557 0.3311 0.3065 0.2819 0.2573 0.2327 0.2000
figure() plot(PRisk,PRoR) % frontiera con vincolo sui pesi compresi tra 0 e 1 hold Current plot held
plot(PRisk_new,PRoR_new,'r-') % frontiera nuovi vincoli (pesi compresi tra 0 e 0.4) xlabel('Expected Risk') ylabel('Expected Return') title('Efficient Frontier') legend('0...