构建投资组合有效边界matlab
时间: 2023-07-20 15:41:54 浏览: 159
Efficient Frontier using different risk return measure:用于寻找最佳投资组合和绘制差异的有效边界的代码。 风险回报措施-matlab开发
要构建投资组合有效边界,你需要进行以下步骤:
1. 收集资产的历史数据,并计算每个资产的平均收益率和标准差。
2. 构建一个资产收益率的协方差矩阵。
3. 在MATLAB中使用“fmincon”函数进行投资组合优化,以最小化预期风险为目标,同时满足一定的预期收益率。
4. 通过调整投资组合中每个资产的权重,可以得到不同风险水平下的最优投资组合。
5. 使用“plot”函数绘制有效边界图,该图显示了不同风险水平下的最优投资组合。
以下是一个简单的MATLAB代码示例,用于构建投资组合有效边界:
```matlab
% 收集资产历史数据
returns = [0.1 0.2 0.15; 0.05 0.25 0.3; 0.12 0.18 0.22];
% 计算每个资产的平均收益率和标准差
avg_returns = mean(returns);
std_devs = std(returns);
% 构建协方差矩阵
cov_matrix = cov(returns);
% 设置预期收益率
target_returns = linspace(min(avg_returns), max(avg_returns), 20);
% 使用“fmincon”函数进行投资组合优化
portfolios = zeros(length(target_returns), 3);
for i = 1:length(target_returns)
fun = @(x) portfolio_var(x, cov_matrix);
A = [avg_returns; -eye(3)];
b = [target_returns(i); zeros(3,1)];
portfolios(i,:) = fmincon(fun, [0.33 0.33 0.33], A, b);
end
% 绘制有效边界图
figure
plot(std_devs, avg_returns, 'o')
hold on
plot(sqrt(diag(cov_matrix)), avg_returns, '--')
plot(sqrt(diag(portfolios*cov_matrix*portfolios')), target_returns, '-')
xlabel('标准差')
ylabel('平均收益率')
legend('单个资产', '无风险投资组合', '有效边界')
```
请注意,以上代码仅为示例,您需要根据您的具体投资组合数据进行相应的调整。
阅读全文