How to implement a nonlinear constraint?
Show older comments
hello i would appreciate some help to implement a nonlinear inequality in my fmincon program. I am trying to maximize Sharpe ratio under two constraints. First that the sum of the weights equal one and the second one is that (((w-w0).^2).^1/2) -0.005 >= 0 (tracking error constraint where w0 is set to be the benchmark weights vector). I am getting errors when trying to programme the tracking error constraint. Thank you!
for i=1:T-M
objective = @(w) -(zbarA3(:,i)'*w - rf)/(sqrt(w'*covmatA3{1,i}*w));
w0 = Wi_AQ2;
Aeq = ones(1,n);
beq = 1;
W_Q3(:,i) = fmincon(objective,w0,[],[],Aeq,beq,[],[],nonling);
end
%where nonling is
function [c,ceq]=nonling(w)
c= sqrt((w(1) - Wi_AQ2)^2) -0.005;
ceq=w*0;
end
6 Comments
Matt J
on 9 Feb 2018
Please indent your code (but not your text) to make it more readable.
Mohamad Moussa
on 9 Feb 2018
Matt J
on 9 Feb 2018
Is this
(((w-w0).^2).^1/2)
really in fact supposed to be
norm(w-w0)
?
Mohamad Moussa
on 9 Feb 2018
w and w0 are length-n vectors. Do you therefore have n contraints?
abs(w(i)-w0(i))>=0.005, i=1...,n
Mohamad Moussa
on 9 Feb 2018
Edited: Mohamad Moussa
on 9 Feb 2018
Accepted Answer
More Answers (0)
Categories
Find more on Linear Programming and Mixed-Integer Linear Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!