The Analyst's Path

Phase 12 · Finance Plus, AI and the quant-code track · free

Performance Measurement, Attribution & GIPS

AA1.03 · 18,782 words

A manager hands you a single number ("we returned 14.9% last year") and asks you to act on it. Hire, fire, allocate, defend. Almost every instinct you have about that number is wrong, and what follows rebuilds them.

Learning objectives

You can:

  1. Compute a time-weighted return (TWR) by chain-linking sub-period returns, state precisely what it measures (the return on one unit of currency left in the manager's hands throughout) and explain why external cash flows must be excluded rather than averaged away.
  2. Compute a money-weighted return (MWR) as an internal rate of return on the same cash-flow series, solve it by interpolation to a stated tolerance, annualise it correctly, and explain why it answers a different question than TWR: the investor's question, not the manager's.
  3. Compute a Modified Dietz return with day-weighted flows, say exactly what approximation it makes, and name the conditions under which it drifts from the true MWR.
  4. Decide which measure is required in a given situation, including the case where the manager controls the timing of the flows, which reverses the default.
  5. Run a full Brinson decomposition of active return into allocation, selection and interaction, sector by sector, and demonstrate that the three effects sum exactly to the active return: an identity, not an approximation.
  6. Distinguish Brinson-Hood-Beebower from Brinson-Fachler allocation, compute both on the same data, and explain why measuring a sector bet against the total benchmark return is the economically meaningful convention.
  7. Explain why single-period attribution effects do not add across periods, quantify the residual, and apply a Cariño-style smoothing coefficient that makes multi-period effects reconcile exactly to the compounded active return.
  8. Compute all five standard risk-adjusted measures (Sharpe, Treynor, Information Ratio, M², and Jensen's alpha) from one return series, and read their disagreement as information about what kind of risk the manager took.
  9. Test a benchmark for validity against the seven properties, decompose total active return into true active and misfit components, and quantify a benchmark defect (the India PRI-versus-TRI case) in basis points.
  10. Read a GIPS-compliant composite presentation line by line (verifying net from gross, recomputing the annualised figures, checking internal dispersion) and state which claims the presentation supports, which it does not, and which it deliberately leaves unverifiable.
  11. (Productivity objective: R10.) Reproduce every computation above in Python/pandas, know the two library defaults that silently change your answer, and use an AI assistant to draft and cross-check attribution code, while retaining the by-hand skill that the gate rewards and the verification step that no tool removes.

The duality, stated once (R10). The gated skill is the arithmetic done by hand: a chain-link, an IRR, a three-term decomposition that reconciles to the last decimal. The productivity payoff is doing it in fifteen lines of pandas over a thousand portfolios. But be warned in the strongest terms this program uses: performance attribution is the highest AI-over-trust risk region in the entire corpus. An assistant will produce a fluent, correctly formatted attribution table that does not reconcile to the active return; unlike a hallucinated citation, nothing about it looks wrong. There is no red squiggle under a wrong interaction term. The only defence is the reconciliation identity you are about to learn to run by hand, every time, on every table, no exceptions.


Prerequisites & connections

Builds on. M3.02 supplies the entire risk-pricing apparatus used here without re-deriving it: expected return and standard deviation, covariance, beta as covariance-with-the-market over market variance, the CAPM security market line, and the equity risk premium. When §7 computes Jensen's alpha as the gap between a realised return and the SML-required return, that SML is M3.02's. Go back there if Re = Rf + β × ERP is not automatic. M3.03 supplies the discount-rate machinery behind every IRR here. M3.01 supplies present value and the internal-rate-of-return solve; the MWR in §2 is an XIRR, nothing more. M9.01 and M9.02 supply the concentrated-investor lens that keeps what follows honest: they argue that tracking error is a feature of a high-conviction book and that risk is permanent capital loss rather than benchmark-relative wobble. Read what follows as the institutional dialect, not a replacement for that view. AA1.01 supplies the benchmark-as-policy-portfolio idea; AA1.02 supplies component risk contribution, which is the risk-side twin of the return attribution taught here. QM1.02 supplies the regression discipline behind style analysis and factor attribution.

This page is an excerpt

The full module runs to 18,782 words and carries the worked examples, the tables, the quiz that gates the next module and the spaced-repetition deck built from it. All of it is free and none of it needs an account.