北太天元求解現(xiàn)代投資組合理論問題的代碼

證券在未來的某個時間點的收益率是一個隨機變量,我們用它的均值和方差來刻畫它,
均值被稱為期望收益率, 方差和風險相關。
多個證券在某個時間的收益率是一個隨機向量, 均值(r_i) 和協(xié)方差矩陣(sigma_ij)分別是期望收益率向量和 風險相關的矩陣。 針對下面的腳本,
MPT theory 給出的模型是下面的二次規(guī)劃問題:
? 找投資比例 x = (x_1, x_2, x_3)? 使得下面的目標函數(shù)
?lambda ( \sum_i \sum_j sigma_ij x_i x_j ) - (1-lambda) \sum_i r_i x_i
在滿足下面的約束下
\sum_i x_i? = 1
x_i >= 0 , i = 1,2,3
最小
%投資組合的計算 (使用北太天元軟件)
% 科普部分可以參考 https://www.creditdonkey.com/modern-portfolio-theory.html
% 總共有三個證券,
% 期望收益率 ExpectReturn
% 協(xié)方差矩陣 ExpCovariance
% 總的資金看成1,
% 投資三個不同的證券上比例是
%顯示的更加緊湊
format compact
format long e
% 假設等權重配置
% 組合中每個證券的預期收益率
ExpectReturn = [0.16 0.2 0.3];
% 組合中證券的協(xié)方差矩陣
ExpCovariance = ...
[ 0.1 0 0;
? 0??? 0.2? 0;
? 0??? 0???? 0.3];
%目標函數(shù) 1/2 (x.' * H? * x)? + f * x;
lambda = 0.7;
H = (2*lambda) * ExpCovariance;
H = sparse(H);
f = -(1-lambda)* ExpectReturn;
%約束
A = ones(1,3);
A = sparse(A);
rl = 1;
ru = 1;
cl = zeros(3,1);
cu = [];
% 相當于portstats 函數(shù) (待查實)
epsilon = 1e-8;
options = optimset('LargeScale', 'off', 'Display', 'off');
load_plugin("optimization");
[PortWts,~,~,output] = optimization::quadprog(H, f, A, rl, ru, cl, cu, options);
% 組合中每個證券的權重 PortWts
PortWts
%目標函數(shù)的值
output.fval