21 — Performance & Attribution

Return Attribution#

DecompositionStatistical1 min read
◆ The PatternBrinson decomposition — allocation, selection, interaction

Return attribution answers: "Where did excess return come from?" The Brinson-Fachler model splits active return into three effects:

Active Return = Allocation + Selection + Interaction
Allocation: over/underweighting sectors that outperform. Selection: picking better stocks within sectors. Interaction: the cross-term. Multi-period attribution chains single-period results.
// Return attribution — Brinson decomposition
Daily practice. Institutional managers report monthly attribution to explain why they beat (or missed) the benchmark.
Pattern bridge: Decomposing variance is explored in The Toolkit — Statistical Tests.
Worked example

Three sectors. The portfolio overweights tech (50% against 40%), which beat the benchmark, and picks better stocks in tech and energy. Brinson–Fachler splits the 1.2% active return into allocation 0.3%, selection 0.6% and interaction 0.3% — and the three add up exactly.

Where it misleads
  • Interaction has no natural owner; many reports fold it into selection, which changes the story.
  • Over several periods the effects do not add up without a linking method, and different methods give different splits (Bacon 2008).
  • Sectors are not the only way to slice; a factor tilt can show up as “selection” in a sector model.
In code
t = pd.DataFrame({'wp': [0.50, 0.30, 0.20], 'wb': [0.40, 0.40, 0.20],    # portfolio and benchmark weights
                  'rp': [0.10, 0.04, 0.02], 'rb': [0.08, 0.05, 0.01]},  # sector returns
                 index=['tech', 'finance', 'energy'])
Rb = (t.wb * t.rb).sum()
allocation = ((t.wp - t.wb) * (t.rb - Rb)).sum()           # Brinson-Fachler
selection = (t.wb * (t.rp - t.rb)).sum()
interaction = ((t.wp - t.wb) * (t.rp - t.rb)).sum()
active = (t.wp * t.rp).sum() - Rb
Python, in your browser — edit the code and run it again

Assumes import numpy as np and import pandas as pd. Each snippet carries its own example numbers; the comments say which are made up or simulated.

Sources
  • G. P. Brinson & N. Fachler, “Measuring Non-U.S. Equity Portfolio Performance”, Journal of Portfolio Management 11(3), 1985
  • G. P. Brinson, L. R. Hood & G. L. Beebower, “Determinants of Portfolio Performance”, Financial Analysts Journal 42(4), 1986
  • Practical Portfolio Performance Measurement and Attribution, C. R. Bacon, Wiley, 2nd ed. 2008

Last reviewed October 2026 · How this site checks its content · Report a mistake

Linked from 2
← Previous
Currency Hedging
Open in the full reader, with the topic sidebar