I'm optimizing a portfolio of n assets and my optimization variable is of the form $$x = [t,w,w_L,w_S]$$ where $$t:= \text{slack variable for turning my QP objective into SOCP constraint}$$ $$w:=\text{n-length vector of net weights}$$ $$w_L:=\text{n-length vector of gross long positions}$$ $$w_L:=\text{n-length vector of gross short positions}$$

I have constraints which ensure that $w = w_L - w_S$, and am controlling for maximum leverage by $w_L + w_S \le M$. This all works perfectly well.

I want to implement some form of fully-invested constraint. So, I (naively) inserted a minimum leverage constraint that $w_L + w_S \ge m.$ I soon realized that my optimization is generating boxed positions such that $\|w\|_1 \ne w_L + w_s$ and that the results with and without minimum leverage are the same.

I then tried to formulate the constraint as $x^TAx \le 0$ where $x^TAx = w_L^Tw_S$, but $A$ wouldn't be positive semi-definite in this case, so I can't turn this into a cone constraint.

I then thought briefly about setting minimum risk, but this resolves into the complement of a second-order cone which is non-convex: $\|\Sigma^{1/2}w\| \ge \sigma.$

Is there a way to implement this minimum leverage constraint and/or minimum risk constraint, or something very similar?

I'm using python with $\verb |cvxopt.solvers.socp|$ as my solver, in case this further informs any comments. If you need any other info to provide a meaningful response, please let me know.

  • $\begingroup$ maybe we can implement a no-box constraint working with the constraint $\|w_L + w_S\|^2 - \|w\|^2 \le 0$? $\endgroup$
    – erbian
    Apr 17, 2015 at 15:03
  • $\begingroup$ is the fact that i'm not achieving my maximum leverage constraint a sign that there is some sort of scaling issue in my objective function (e.g., risk aversion too large, t_costs on wrong basis, etc?) $\endgroup$
    – erbian
    Apr 22, 2015 at 14:13


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.