【代码】基于超额收益的资产组合优化

基于《现代投资组合理论与投资分析 9th》第九章;

仅包含MATLAB代码,原理请查看原书;

输入:

  • Mean: 期望收益矩阵
  • Beta: 市场收益变动1%时,期望变动率矩阵
  • Sigma: 证券收益标准差
  • Sigma_m: 市场指数标准差
  • Rf: 无风险资产收益

输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
证券编号 收益均值 超额收益 贝塔 超额收益/贝塔 证券收益标准差 非系统风险 超额收益*贝塔/非系统风险2 8的累加 贝塔/非系统风险2 贝塔2/非系统风险2 11的累加 截止率候选值 未调整比率 调整后比率
$i$ $R_i$ $R_i-R_f$ $\beta_i$ $\frac{R_i-R_f}{\beta_i}$ $\sigma_i$ $\sigma_{ei}$ $\frac{(R_i-R_f)\beta_i}{\sigma_{ei}^2}$ sum(8) $\frac{\beta_i}{\sigma_{ei}^2}$ $\frac{\beta_i^2}{\sigma_{ei}^2}$ sum(11) $c_i$ $z_i$ $x_i$
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function [matrix] = portfolio_optimization_c(mean,beta,sigma,sigma_m,rf)
% mean|excess return|beta|excess return over beta|sigma_i|sigma_ei|(ri-rf)beta/sigma_ei^2|sum(8)|betai/sigma_ei^2|betai^2/sigma_ei^2|sum(11)|C*|Z|X
n = length(mean);
matrix = zeros(n,15);
matrix(:,1) = 1:1:n;
matrix(:,2) = mean;
matrix(:,3) = mean-rf;
matrix(:,4) = beta;
matrix(:,5) = matrix(:,3)./matrix(:,4);
matrix(:,6) = sigma;
matrix(:,7) = sqrt(matrix(:,6).^2-sigma_m^2*matrix(:,4).^2);
matrix(:,8) = matrix(:,3).*matrix(:,4)./matrix(:,7).^2;
matrix(:,10) = matrix(:,4)./matrix(:,7).^2;
matrix(:,11) = matrix(:,4).^2./matrix(:,7).^2;
matrix = sortrows(matrix,5,'descend');
for i = 1:1:n
matrix(i,9) = sum(matrix(1:i,8));
matrix(i,12) = sum(matrix(1:i,11));
end
matrix(:,13) = sigma_m^2*matrix(:,9)./(1+sigma_m^2*matrix(:,12));
C = matrix(1,13);
for i = 1:1:n
if matrix(i,13) > matrix(i,5)
break;
else
C = matrix(i,13);
end
end
matrix(:,14) = matrix(:,10).*(matrix(:,5)-C);
matrix(:,15) = matrix(:,14)/sum(matrix(:,14));
name = {'index','mean','excess_return','beta','excess_return_over_beta','sigma','sigma_e','excess_return_time_beta_by_sigma_e2','sum_of_8','beta_by_sigma_e2','beta2_by_sigma_e2','sum_of_11','C','Z','X'};
matrix = array2table(matrix, 'VariableNames', name);
end

【代码】基于超额收益的资产组合优化
http://achlier.github.io/2021/02/15/基于超额收益的资产组合优化/
Author
Hailey
Posted on
February 15, 2021
Licensed under