Active share portfolio constraint

I was reading a paper from Cremers and Petajisto, called

How Active is Your Fund Manager? A New Measure That Predicts Performance

In the original paper from 2009 they have the following measure for active share

1-sum(min(w_pfo, w_bench))

which they later revised to


where in my understanding, the only difference is basically how you treat underweighting the benchmark, i.e. negative cancels out positive.

So now to my problem, I want to implement this in my portfolio optimisation code and I am struggling how to formulate the constraint in a DCP conform way. How can I get a convex formulation with a lower limit threshold. I basically want to ensure that my portfolio has a minimum % of active positions outside the benchmark. In CVXPY I am trying like

sum_entries(abs(w_pfo - w_bench))*0.5 >= 0.8


1-sum_entries(min_elemwise(w_pfo,w_bench)) >= 0.8

where w_pfo is my solver variable, I know that it will be a convex problem when I flip the inequality to <= 0.8.

I am using CVXPY at the moment but I am more interested in how I could break the constraint up so I can go from instead of having a sufficiently similar active weight from a benchmark portfolio, to a sufficiently dissimilar active weight. thanks a lot.

I think the only utility you’ll get for this from CVX is tracking Chevron.

Your constraint appears to be non-convex. If you wish to use CVX, then it is incumbent on you to formulate a convex optimization problem. This forum can provide help on how to use CVX on a convex optimization problem, but it is your responsibility to come up with the convex optimization problem. The only exception being if CVX’;s MIDCP capability can be employed to handle the non-convexities.