Hi,
I am using cvxopt.solvers.lp() to construct portfolio which targets specific CVaR level. The mathematical formulation of LP is attached. Specifically, produce a vector of weights which yields the highest return without exceeding CVaR constraint on the portfolio.
However, i am always getting what looks like edge-case solution [0, 1, 0,0,0,0,0] weights regardless of the CVaR target level.
I use the same inputs for MatLab linprog function and it produces different weights. I wonder what might be the case. The interfaces in Python lp() and Matlab linprog() are a bit different in that Matlab has lb and ub as separate variables. I add lower bound (lb) and upper bound (ub) constraints as part of matrix G and column-vector h.
I am ok to share Python code with someone on cvxopt team.
Thank you in advance.