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 '15 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 '15 at 14:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.