In this post, I introduce an additive method to perturb the market index. This method takes a typically centered score vector and adds it to the vector of portfolio weights. Nothing guarantees that the perturbed vector lies in the simplex. To bring the perturbed vector back into the simplex, a simple method consists in projecting it on the simplex using the standard euclidean distance. As it turns out, euclidean orthogonal projection on the simplex can be efficiently carried out using a simple algorithm which consists in applying a specific translation to the original vector while thresholding short positions to zero. This classic result is proven. Finally the multiplicative and additive are contrasted using the example of stocks exclusions.


Additive Perturbation of the Market Index

Starting from the market index \(\mu\) and a vector \(s\) of perturbations, the additively perturbed portfolio weights are: \[\omega^{0}=\mu+s.\] Even if one imposes that the perturbation vector is centered: \[\sum_{i=1}^N s_i=0,\] in which case: \[\sum_{i=1}^N \omega^{0}_i=1,\] the vector \(\omega^0\) cannot be assumed to lie in the simplex as some of its components might be negative. To produce a long-only set of weights, one is tempted to project it on the simplex, for example using a standard euclidean projection. It turns out that this is quite practical given the simplicity of the solution to euclidean simplex projection.

Orthogonal Projection on the Simplex

Consider a vector \(\omega^{0}\). Its projection on the simplex is defined as: \[\omega^{\star}=\underset{\omega\in \Delta_N}{\text{argmin}} \; \|\omega-\omega^{0}\|^2,\] and I will note: \[\omega^{\star}=P_{\Delta_N}(\omega^{0}),\] (orthogonal projection on the simplex, which is convex and closed). This is a quadratic minimization problem with a convex criterion and a convex feasibility set. The feasibility set is described by an equality constraint: \[\sum_{i=1}^N \omega_i=1,\] and \(N\) positivity constraints: \[\forall i,\, 1\le i\le N,\omega_i\ge 0.\]

Remark: Suppose asset returns are stored in a vector \(r\) with covariance matrix \(\Sigma\), then the tracking error between portfolio \(\omega\) and portfolio \(\omega^{0}\) would be: \[(\omega-\omega^{0})'\Sigma (\omega-\omega^{0}).\] The Euclidean distance is therefore proportional to the tracking error between the two portfolios when \(\Sigma\) is proportional to the identity matrix, a quite unrealistic assumption. This can be interpreted as a simplifying assumption which circumvents the need of estimating a realistic covariance matrix (this is not an easy task for large investment universes).

In all cases, since: \[\omega^{\star}-\omega^{0}=(\omega^{\star}-\mu)-s,\] and \((\omega^{\star}-\mu)\) is the vector of active positions of the projected portfolio, the present method consists in looking for a target portfolio which as the same positions (strictly speaking in the case of simplex projections, or in a risk sense if a true covariance matrix is used) as the score vector \(s\).

\(\square\)

  

Step 1: KKT conditions

The Lagrangian of the problem can be written: \[{\cal L}(\omega,\lambda,\beta)=\frac{1}{2}\|\omega-\omega^0\|^2+\lambda\left(\sum_{i=1}^N \omega_i\right)-\sum_{i=1}^N \beta_i\omega_i,\] with \(\beta_i\ge 0,\,1\le i\le N.\) The necessary and sufficient Karush-Kuhn-Tucker (convex criterion, affine constraints) conditions read: \[\omega_i=\omega^0_i-\lambda+\beta_i,\] \[\sum_{i=1}^N \beta_i\omega_i=0,\] (the latter being the complementary slackness conditions) while: \[\omega_i\ge 0,\,1\le i\le N,\] \[\beta_i\ge 0,\,1\le i\le N.\]

Step 2: KKT conditions imply that the solution consists in ‘translating and thresholding’

Let: \[\tilde{\omega}_i=\omega^0_i-\lambda.\] These are a simple translation of the original weights. Now from the complementary slackness conditions we have: \[\omega^{\star}_i=\tilde{\omega}_i\ge 0\; \text{if} \;\beta_i=0,\] and: \[\omega^{\star}_i=0=\tilde{\omega}_i+\beta_i\; \text{if} \;\beta_i>0,\] in which case \(\tilde{\omega}_i<0\).

Thus we either have \(\tilde{\omega}_i\ge 0\) and \(\omega^{\star}_i=\tilde{\omega}_i\) or \(\tilde{\omega}_i<0\) and \(\omega^{\star}_i=0\). This can be summarized as: \[\omega^{\star}_i=\max(\tilde{\omega}_i,0)=\max(\omega^0_i-\lambda,0),\] (the multipliers are then recovered through \(\beta_i=\omega^{\star}_i-\tilde{\omega}_i\)).

Step 3: Identifying the translation As usual, the multiplier \(\lambda\) is found by solving the equality constraint: \[\sum_{i=1}^N \omega^{\star}_i=\sum_{i=1}^N \max(\omega^0_i-\lambda,0)=1.\] Consider the function: \[h(\lambda)=\sum_{i=1}^N \max(\omega^0_i-\lambda,0).\] It is continuous, piecewise linear, decreasing, tends to \(+\infty\) when \(\lambda\) goes to \(-\infty\) and is equal to \(0\) at \(\max\{\omega^0_i;1\le i\le N\}\). There is thus a solution to the equation: \[h(\lambda)=1.\] This solution is actually unique because \(h(\cdot)\) is strictly decreasing.

The Algorithm

To solve this equation in practice, we can choose indices such that \(\omega^0_i\) is decreasing: \[\omega^0_1\ge \omega^0_2 \ge \ldots \ge \omega^0_N,\] and explore the intervals \(]-\infty,\omega^0_N]\), \(]\omega^0_N,\omega^0_{N-1}]\),(note that on each interval, \(h(\cdot)\) is linear). This reduces to checking the values of \(h(\cdot)\) on the boundaries of the intervals. Once the interval on which \(h(\cdot)\) crosses the line \(y=1\) has been found, solving for \(\lambda\) is immediate (the equation is linear in \(\lambda\)). The solution is then fully determined.

The whole process amounts to translating the original positions scalar \(\lambda\), thresholding them to satisfy the long-only condition, and then ensuring \(h(\lambda)=1\).

The Example of Stock Exclusions

In this section, I contrast the multiplicative method and the additive method in the particular case of stock exclusions. I assume there is a subset of stock indices \(J,\, J\subset I=\{1,2,\ldots,N\}\) we wish to exclude, while ‘preserving’ as much as possible other positions. This requires to extend somewhat the framework above by allowing some scores to take the value \(-\infty\) in the additive case (\(0\) in the multiplicative case), as well as relaxing the assumption made above that the score vector is centered.

The Multiplicative Case

In the multiplicative setup, we wish to set: \[s_j=0,\, \forall j\in J,\] \[s_i=s>0,\, \forall i\in I\setminus J.\] A straightforward application of the formulas leads to the following weights: \[\omega_j=0,\, \forall j\in J,\] \[\omega_i=\frac{\mu_i}{\sum_{k \in I\setminus J}\mu_k},\, \forall i\in I\setminus J.\] This is just a (geometrically) rescaled capitalization index, where the rescaling is calibrated to exclude the stock in \(J\). This construction is applied by most if not all capitalization indices in the industry.

The Additive Case

We first need to establish the following result:

Lemma: Suppose \(\omega^1\) is a translation of \(\omega^0\), i.e. for a scalar \(\tau\): \[\omega^1_i=\omega^0_i+\tau,\, \forall i\in I.\] Then: \[P_{\Delta_N}(\omega^{0})=P_{\Delta_N}(\omega^{1}).\]

\(\square\)

   The Lemma is easily proved by showing that if \((\omega^{\star},\lambda,\beta)\) solves the KKT conditions for \(\omega^0\), then \((\omega^{\star},\lambda+\tau,\beta)\) solves the KKT conditions for \(\omega^1\).

Now taking: \[s_j=-\infty,\, \forall j\in J,\] \[s_i=s>0,\, \forall i\in I\setminus J,\] leads to the following solution (one might wish to formally pass to the limit \(\lim s_j=-\infty,\, \forall j\in J\) for a formal proof): \[\omega_j=0,\, \forall j \in J,\] \[\omega_i=\mu_i+\frac{1}{N-\#{J}}\sum_{k \in I\setminus J}\mu_k,\, \forall i\in I\setminus J,\] where \(\#{J}\) denotes the cardinal of \(J\).

Thus in the additive case, the capitalization weight of the excluded stocks are spread uniformaly across remaining stocks.

References

Condat[2016]: Condat, L., ‘Fast Projection onto the Simplex and the l1 Ball’, Mathematical Programming Series A, vol. 158, no. 1, pp. 575-585, July 2016.