Benchmark Tracker

Long-only enhanced indexing that maximises expected excess return subject to a tracking-error budget against a benchmark (Nifty, Sensex, or any of the mid/small-cap families). The portfolio seeks excess return over the index while its tracking error stays under a ceiling.

Overview

Roll (1992) gave the canonical mean-tracking-error decomposition: an active portfolio's deviation from a benchmark can be summarised by its expected excess return and the volatility of that excess return (the tracking error). For a manager with a benchmark mandate, the natural objective is to maximise information ratio - expected excess return per unit of tracking error - subject to a tracking-error budget set by the client.

Jorion (2003) studied tracking-error-constrained portfolios and showed that the resulting frontier is well-defined when the tracking-error budget is interpreted as a hard constraint rather than as a target. Rudolf, Wolter and Zimmermann (1999) gave the linear-programming formulation that allows a symmetric absolute-deviation tracking error to be embedded directly in the optimiser.

FolioLab implements the convex tracking-error-constrained problem via skfolio's MeanRisk estimator, with the tracking-error budget added as its own second-order cone constraint. The portfolio is long-only.

This is an enhanced tracker, not a passive one. It maximises expected return inside an active-risk budget. A passive index fund minimises its tracking error and its costs instead, which is a different objective.

The benchmark enters as a return series, not as a weight vector. The optimiser is fitted against the chosen index's own historical returns, aligned date by date with the asset returns. No benchmark constituent weights are read, stored, or required anywhere in this method. That is worth stating plainly, because the classical exposition of tracking error is written in weight space and this implementation is not. If the benchmark series cannot be fetched, or does not overlap the optimization window, this method does not run and the run states why.

The tracking-error budget is not a user input. It is 3% a year, with one relaxation to 5% a year that the result discloses. See "Setting the tracking-error budget" below.

Mathematical Formulation

Notation

  • - portfolio weights, summing to 1, long-only
  • - the asset return matrix over the aligned window
  • - the benchmark return series (Nifty, Sensex, etc.), one value per date
  • - expected-return vector
  • - tracking-error budget, 3% a year, so on daily returns

There is no in this formulation. The benchmark is , a series of returns.

Tracking error

The tracking error is the annualised standard deviation of the daily difference between the portfolio's return and the benchmark's return. The SEBI mutual-fund master circular uses the same definition. It is also the tracking_error figure on every result.

It is not the root-mean-square difference, which is what skfolio's own max_tracking_error parameter bounds. The two are related by , so the root mean square also charges a portfolio for beating the benchmark by a steady margin. Runs before November 2026 used that definition at 0.01 a day, about 15.9% a year. Their spec_version is absent or 1. Runs on the present definition record spec_version 2.

The classical weight-space form of Roll (1992), , is the same quantity when the benchmark return series is exactly and the covariance is the sample covariance of the same window. That does not hold here. The benchmark index return series is taken as given, its constituents are not restricted to the assets in the portfolio, and no weight vector for it is constructed. Read the form above as the definition, and the weight-space form as background.

Optimisation problem

The first constraint is the tracking-error budget. The second is the long-only simplex constraint. The third (optional) is a per-name weight bound from the constraints you submit with the run, which is useful for liquidity or single-issuer limits in regulated mandates. It bounds the weight itself, not the active weight against a benchmark holding: this method never forms a benchmark holding to measure an active weight against.

Information ratio

At the optimum the portfolio sits on the frontier of expected excess return versus tracking error; the slope of that frontier at any point is the information ratio. Increasing always weakly improves expected excess return but at the cost of larger possible underperformance in any given period.

Setting the tracking-error budget

The budget is fixed, not chosen. Every run of this method uses a budget of 3% a year. The request has no field for it. The optimiser works on daily returns, so the program bounds the daily figure at . An Indian run reports its tracking error on its own trading calendar, about 246 sessions, so the reported figure sits slightly under 3% when the budget binds.

An unconstrained run can relax the budget once, to 5% a year. It does so only when a solver reports that no long-only portfolio meets 3%. A solver that fails for a numerical reason is not proof of that, so a numerical failure on every solver fails the method rather than loosening the budget. The result records tracking_error_budget_annual, applied_tracking_error_budget_annual and tracking_error_relaxed, so a relaxed solve is visible in the output. Read those fields before you report the tracking error of a portfolio from this method. The per-day figures stay on requested_max_tracking_error and applied_max_tracking_error.

Some universes cannot meet 5%. A few names from one sector, or a book far from the index, can have no long-only portfolio within 5% of the benchmark. The method then does not run, and the run states why. Add names closer to the benchmark, or choose another method.

A run that carries constraints does not relax anything. It has one rung. If the requested tracking error cannot be met under your constraints, the run fails with that reason rather than returning a wider portfolio.

What the budget does not mean.

  • A 3% tracking error does not hold the year's return within 3 points of the benchmark. It is one standard deviation of the daily active return, annualised. A steady margin over the benchmark adds nothing to it.
  • The budget holds on the window the optimiser was fitted on. It does not guarantee the same tracking error out of sample.
  • A tighter budget does not guarantee more holdings. Read the weights and effective_n for concentration.
  • SEBI's normal 2% ceiling applies to non-debt ETFs and index funds. It is not a standard for this method, and 3% or 5% is not an Indian passive-fund figure.

Advantages & Limitations

Advantages

  • Mandate aligned: Speaks the language of benchmarked institutional investors.
  • Ceiling on drift: Tracking error is a constraint, not a penalty term. On a constrained run it is a hard ceiling. On an unconstrained run it can be relaxed from 3% to 5% a year when a solver reports 3% infeasible, and the result says so.
  • Convex program: The tracking-error ceiling is a second-order cone constraint, solved with CLARABEL, then SCS, then ECOS.
  • Composable constraints: Per-name weight bounds, asset exclusions, and group sum limits such as sector caps all add as extra rows on the same program. Turnover budgets are not available on this or any method.

Limitations

  • Symmetric in TE: Variable outperformance counts against the budget as much as variable underperformance.
  • Can refuse: A narrow universe can have no portfolio within 5% of the benchmark, and the method then does not run.
  • Not validated out of sample: The budget is a design choice, not a claim that the method performs better than another.
  • Requires expected-return inputs: All the usual MVO sensitivity to applies.
  • Benchmark dependence: The portfolio is anchored to whatever the benchmark is, including its concentration risks.
  • TE is variance-based: A linear-programming MAD formulation may better match certain mandates.

References

  • SEBI (2026). Master Circular for Mutual Funds, March 2026, section 4.5.4 (tracking error of index funds and ETFs).
  • Roll, R. (1992). "A Mean/Variance Analysis of Tracking Error." The Journal of Portfolio Management, 18(4), 13-22.
  • Jorion, P. (2003). "Portfolio Optimization with Tracking-Error Constraints." Financial Analysts Journal, 59(5), 70-82.
  • Rudolf, M., Wolter, H.-J., & Zimmermann, H. (1999). "A Linear Model for Tracking Error Minimization." Journal of Banking & Finance, 23(1), 85-103.
  • Grinold, R. C., & Kahn, R. N. (2000). Active Portfolio Management (2nd ed.). McGraw-Hill.
  • Goodwin, T. H. (1998). "The Information Ratio." Financial Analysts Journal, 54(4), 34-43.
  • Palomar, D. P. (2025). Portfolio Optimization: Theory and Application. Cambridge University Press, Chapter 13 (Index Tracking Portfolios), Section 13.4 (Enhanced Index Tracking).
  • skfolio documentation - skfolio.optimization.MeanRisk with a tracking-error constraint.

Not investment advice. Past performance is not indicative of future results.