I am working through this paper, http://www.nber.org/papers/w8922.pdf
I want to implement the portfolio weight constraints see page 6-7.
Here is the brief overview of my problem:
w be the set of weights representing a portfolio. Then, mean-variance problem is to find the portfolio weights that minimizes portfolio variance, argmin
w'Sw subject to
w'I = 1 which represents weights sum up to 1 and
S is the estimated covariance matrix.
In this framework, portfolio weights are constrained by lower and upper bounds such as:
Then, the authors show that the following proposition is for the symmetric and positive semi-definite covariance matrix for the minimum global variance portfolios:
Here new covariance matrix is the shrunk version of
S. I am trying to implement this in Matlab by
fmincon function. I also add an target return constraint such as
w'mean = rho where
mean is column vector expected return of the assets and
rho is the targetted return.
I create portrisk.m file for objective function:
function f = portrisk(w, covmat) f = w'* covmat * w; end
And nonlinear constraints are organized in constraint.m file file in matlab.
function [c,ceq] = constraint (w) c=[-w]; % nonlinear inequality constraints ceq = ; % nonlinear equality constraints end
Here is the codes:
% initialization x0=[ones(p,1)/p]; % initialiazed to 1/p % linear equality constraints (w'I=1, sum of the weights has to be 1 and target return) Aeq = [meanx; repmat(1, 1, p)]; % matrix for linear equality constraints rho = 0.0012 beq = [rho; 1]; % vector for linear equality constraint % upper and lower bound constraints lb = zeros(p,1); ub = ones(p,1); % constraints as both less or higher than a constant A = [repmat(1, 1, p); repmat(-1, 1, p) ]; b = [1; 0]; % options options = optimoptions('fmincon','Algorithm','interior-point','Display','iter'); % run optimization function, lambda is the langrange multipliers [w, fval, exitflag, output, lambda, grad, hessian] = fmincon(@portrisk, x0 , A, b, Aeq, beq, lb, ub,@constraint,options);
However, I could not get a solution. Could you help me where I am wrong? Thank you for any help.