Sparse Index Tracking
Replicate the return profile of a benchmark index using only a small subset of its constituents. The classical formulation is a regression of index returns on asset returns with an L1 penalty, solved iteratively by reweighted L1 minimisation; the result is a portfolio that hugs the benchmark with a small number of names.
Overview
A passively-managed index fund typically holds every constituent of its benchmark in cap-weighted proportions. For institutional investors with mandate-driven turnover or transaction-cost budgets, holding hundreds of names is impractical: the bottom of the cap-weight distribution contributes negligibly to index return but generates real trading cost. Sparse index tracking solves the same replication problem with a fraction of the constituents.
The original formulation by Brodie, Daubechies, De Mol, Giannone and Loris (2009) used an penalty on the weight vector to induce sparsity. Benidis, Feng and Palomar (2018) developed the high-dimensional theory and proposed the reweighted- iteration of Candes, Wakin and Boyd (2008) as the practical solver: the L1 penalty is updated at each iteration so that small weights are penalised more aggressively, which yields a tighter approximation to the sparsity ideal than a single L1 solve.
FolioLab implements the reweighted-L1 iteration with every setting fixed. There is no user cardinality field, no user field, no penalty sweep, and no tracking-error budget:
- Cardinality is derived from the universe size , as . A universe of 5 names or fewer keeps all of them.
- The penalty is fixed in one shot, not swept: , where is the benchmark return series. The multiplier 0.2 is a constant in the code.
- The support is chosen by rank: after the iteration, the top names by score are selected. It is not selected by meeting a tracking-error target.
- The iteration is capped at
max_iter = 8, and stops earlier when the weights settle.
No tracking-error budget is stated or enforced anywhere in this method. The tracking error is the objective it minimises, and it is an outcome you read off the result, not a ceiling you set.
Mathematical Formulation
Notation
- - matrix of asset returns over periods
- - benchmark return vector
- - portfolio weights, summing to 1, long-only
- - L1 penalty strength
- - per-coordinate weights at iteration
L1 sparse regression (Brodie et al., 2009)
The squared loss measures the in-sample tracking error of the portfolio against the benchmark; the L1 penalty drives small weights to zero. Larger means a sparser portfolio at the cost of higher tracking error.
Reweighted L1 (Candes, Wakin & Boyd, 2008)
Iterate
Each iteration solves a weighted L1 problem; the per-coordinate weight grows for small , accelerating their decay to zero. The fixed-point of this iteration approximates an sparsity solution far better than a single L1 fit. This implementation runs at most 8 iterations, and stops early when two successive weight vectors agree to a small tolerance.
Constrained refit step
The support set is not every name the iteration left positive. The names are ranked by their score, and the top are taken, where is the derived cardinality above. That support is then fixed and the weights are re-optimised on it without the L1 penalty. The refit holds the unselected names at zero. This step removes the shrinkage bias that L1 introduces while holding the cardinality, and gives the final tracking portfolio.
The score is normally the converged weight vector. Where every reweighted pass collapses to zero, the method falls back to ranking by the raw tracking correlation instead.
Practical use on Indian benchmarks
For Nifty 50 the cap-weighted top-10 names typically account for 60-65% of index weight; a sparse-tracker built on the top 15-20 names alone usually achieves an annualised tracking error of well under 1%, which is competitive with full replication once trading costs are accounted for. On Nifty 200 and Nifty 500 the trade-off is more interesting: a 30-50 name sparse portfolio captures most of the index return with materially lower turnover than holding all 200 or 500 names.
That trade-off is background for reading the result, not a dial. FolioLab's implementation takes neither nor a target cardinality from the user. The cardinality follows from the size of the universe you submit, so the way to change it is to change the universe. On a 500 name submission the cardinality is capped at 20, well below the 30 to 50 names this paragraph describes.
Advantages & Limitations
Advantages
- Holdings-cap aware: Targets a small number of positions natively.
- Approximates : Reweighted L1 is much closer to true sparsity than single L1.
- Convex per iteration: Each L1 step is a tractable QP.
- Cost aware: Lower cardinality means lower transaction costs and better fit on illiquid constituents.
Limitations
- Path sensitivity: Small changes in can flip individual names in the support.
- Out-of-sample drift: A support chosen on history may not track the benchmark equally well in regime breaks.
- No view on returns: Pure replication, no enhancement.
- Sample TE optimised: Future tracking error can exceed the in-sample objective.
References
- Benidis, K., Feng, Y., & Palomar, D. P. (2018). "Sparse Portfolios for High-Dimensional Financial Index Tracking." IEEE Transactions on Signal Processing, 66(1), 155-170.
- Candes, E. J., Wakin, M. B., & Boyd, S. P. (2008). "Enhancing Sparsity by Reweighted Minimization." Journal of Fourier Analysis and Applications, 14(5), 877-905.
- Brodie, J., Daubechies, I., De Mol, C., Giannone, D., & Loris, I. (2009). "Sparse and Stable Markowitz Portfolios." Proceedings of the National Academy of Sciences, 106(30), 12267-12272.
- Jansen, R., & van Dijk, R. (2002). "Optimal Benchmark Tracking with Small Portfolios." The Journal of Portfolio Management, 28(2), 33-39.
- Tibshirani, R. (1996). "Regression Shrinkage and Selection via the Lasso." Journal of the Royal Statistical Society: Series B, 58(1), 267-288.
- Palomar, D. P. (2025). Portfolio Optimization: Theory and Application. Cambridge University Press, Chapter 13 (Index Tracking Portfolios), Sections 13.3 and 13.5.
Not investment advice. Past performance is not indicative of future results.