The quadratic optimization (min variance) wTΣw→min,
Setting ˆw=wPf−wBM as the vector of active weights of the portfolio relative to a benchmark, the above formula describes minimizing the (squared) tracking error.
The difficult binary constraints lead to mixed integer programming (MIP). Commercial solvers solve this by methods such as branch and bound which are very time consuming for large problems (e.g. 1000+ assets).
I heard of an approach to formulate such problems as second order cone programs (SOCP) and that such problems are usually solved more efficiently.
I have plenty of experience with branche and bound and I would like to switch to SOCP. Do you know of any good refernce of SOCP and portfolio/TE optimization with hard real world constraints (especially with binary variables)? Do you have any experiences whether switching is worth the efforts?
PS: Let us assume that Σ is well estimated and that variance makes sense. I know that this is debatable ...
EDIT: This paper Applications of second-order cone programming describes the formulation of a quadratically constrainted quadratic program as SOCP. Will also have a look here.
EDIT 2: To formulate every detail. I have the mixed-inter quadratic program (I formulate the TE case): wTΣw+wTc→min,
If I follow the link above then this can be formulated as mixed SOCP with t→min.
Is there a chance that the mixed-integer SOCP problem as formulated above can be solved more efficiently than the mixed-integer quadratic program (with linear and binary but no quadratic constraints)?
Answer
Without the discrete constraints, the minimum tracking error/variance problem is a quadratic program. If you constrain the tracking error, you have a convex quadratically-constrained problem which is solved as an SOCP by modern commercial solvers. SOCP does not address discrete constraints like cardinality of assets or minimum investment levels. SOCP deals with continuous convex constraints. Those constraints make the feasible region non-convex. As an example, a portfolio of 50% A and 50% B has just 2 assets, and a portfolio of 50% B and 50% C has two assets, but any convex combination of those two portfolios will have 3 assets.
Linear vs. SOCP and continuous vs mixed-integer are orthogonal concepts. Mixed-integer solvers usually require search trees. The linear vs. SOCP determines what problem is solved at each node in the search tree. With the commercial solvers cplex, and Gurobi you can have continuous linear, mixed-integer linear, quadratic/SOCP continuous and quadratic/SOCP mixed-integer. There's a video by Gurobi on SOCP that has an aside on the futility of trying to make names for all the combinations.
It is possible for a good commercial solver to reliably solve problems like you describe with 1000's of assets in a reasonable amount of time (seconds to a few minutes), which combine sophisticated heuristics and branch-and-cut algorithms. The actual performance you will observe is very dependent on how you formulate the constraints and the quality of the solver. There are a lot of ways to improve a formulation. For example, the cardinality constraints are usually modeled with indicator variables yi={1if wi>00otherwise
which is enforced with constraints wi≤yi∀i∈{1,…,n}n∑i=1yi≤k
If you are actually trying to explicitly minimize wTΣw for 1000's of assets, that means Σ has over 1,000,000 entries and you have explicitly estimated the covariance of every pair of assets. This is both difficult or impossible to do reliably and inefficient from a computation standpoint. It would be better to make a factor model, where the returns on asset i would be given by ri=ϵi+∑jβijrj. Where j indexes the factors, and σi would be the variance of ϵi. If Σf was the variance/covariance of the factor returns, then you would have an objective minimizefTΣff+∑iσ2iw2i
No comments:
Post a Comment