您的位置:首页 > 编程语言 > MATLAB

如何用matlab画出有效市场边缘

2016-10-23 22:56 387 查看
本文介绍如何利用matlab画出两个资产的有效边缘 (efficient frontier )

假设两项资产的期望收益率为 mu1 = 8%, mu2 = 5%

收益率方差为 sigma1 = 25%, sigma2 = 20%

分别画出两项资产相关系数rho = [1, 0.925,  0, -0.5, -1] 的efficcient frontier

先放上效果图:



代码如下:

<span style="font-family:Courier New;font-size:12px;">mu1 = .08; mu2 = .05;
sigma1 = .25; sigma2 = .2;
r0 = .02;
w1 = rand(1,100000)*10;
w2 = 1-w1;
wts1 = [w1,w2];
wts2 = [w2,w1];
mu = [mu1; mu2]; w = [wts1; wts2];
rho = [1, 0.925, 0, -0.5, -1];
col = ['y','b','r','g','k'];
h = figure;
axis([0,0.4,0,0.15])
hold all
for n = 1:length(rho)
cov = [sigma1^2, rho(n)*sigma1*sigma2; rho(n)*sigma1*sigma2, sigma2^2];
% 这里生成协方差矩阵其实也可以用corr2cov这个函数
ret = mu'*w;
var = zeros(size(w1));
for i = 1:size(w,2)
var(i) = w(:,i)'*cov*w(:,i);
end
scatter(sqrt(var),ret,3, col(n),'filled');
end
title('Expected Returns Against Standard Deviations');
legend('rho = 1', 'rho = 0.925', 'rho = 0', 'rho = -0.5', 'rho = 1','Location','northwest');
xlabel('Standard deviation');
ylabel('Expected return');</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息