Portfolio LabKnowledgeSign inCreate account

Performance attribution: Brinson decomposition, factors and linking over time

Advanced11 min read · updated 2 October 2026 · 11 sources

Performance attribution breaks down the difference in return between a portfolio and its benchmark into its causes. Was it down to the split across regions and asset classes (the allocation) or to the selection within the segments? The Brinson decomposition answers this with three effects, factor attribution with contributions from market, size and value. Here you will learn the formulas, work through an example step by step and see why monthly effects cannot simply be added up.

What it is about

A portfolio returned 8.05% over the year, its benchmark 6.80%. The active return of 1.25 percentage points is welcome, but it says nothing about where it came from. If you want to improve decisions, you have to separate them: the overweight in international equities, the choice of funds within the regions, the underweight in bonds. That is exactly what performance attribution does.

There are two broad families. Brinson attribution works with the weights and returns of segments, such as regions, sectors or asset classes, and requires the portfolio and benchmark to be broken down in the same way. Factor attribution explains the return through a regression on factors such as market, size and value, and needs only return series. Alongside these is risk attribution, which decomposes not the return but the risk.

Brinson, Hood and Beebower: allocation, selection, interaction

Brinson et al. (1986) split the returns of pension funds into three parts: investment policy, i.e. the long-term benchmark; deviations from its weights (market timing); and security selection within the asset classes. For each segment i with weights wᵢ in the portfolio and Wᵢ in the benchmark and returns rᵢ and bᵢ, there are three effects:

Allocation Aᵢ = (wᵢ − Wᵢ) × bᵢ Selection Sᵢ = Wᵢ × (rᵢ − bᵢ) Interaction Iᵢ = (wᵢ − Wᵢ) × (rᵢ − bᵢ) Σ (Aᵢ + Sᵢ + Iᵢ) = R − B
wᵢ, Wᵢ
weight of the segment in the portfolio and in the benchmark at the start of the period
rᵢ, bᵢ
return of the segment in the portfolio and in the benchmark
R = Σ wᵢrᵢ, B = Σ Wᵢbᵢ
return of the portfolio and the benchmark

The allocation effect measures what the deviation in weights would have delivered if each segment had earned only the benchmark return. The selection effect measures what better or worse selection delivered at the benchmark weight. The interaction effect is the remainder: if you overweight a segment in which you have also selected well, you gain twice. The three effects add up exactly to the active return.

Brinson decomposition as an area: weight times return

The international equities segment from the example below, contributions in percentage points, allocation according to Brinson, Hood and Beebower: (40% − 30%) × 8% = 0.80. Under Brinson-Fachler, only the part of the strip above the benchmark's total return of 6.8% counts: (40% − 30%) × (8% − 6.8%) = 0.12.

Brinson and Fachler: allocation against the total benchmark

The formula above has a flaw: an overweight in a segment with a positive return always counts as good, even if that segment did worse than the benchmark as a whole. Brinson and Fachler (1985) therefore measure allocation against the benchmark's total return:

Brinson-Fachler allocation Aᵢ = (wᵢ − Wᵢ) × (bᵢ − B)
B
return of the total benchmark

Because the weight deviations sum to zero, this does not change the sum of the allocation effects, but it does change how they are distributed across the segments. An overweight now pays off only if the segment beats the benchmark, and an underweight only if it lags behind it. This matches the question an investor actually asks: was it right to shift money from the rest of the portfolio into this segment? Many analyses calculate it this way today.

Example with three segments

SegmentBenchmark weightBenchmark returnPortfolio weightPortfolio return
International equities30%8.0%40%10.0%
US equities30%12.0%30%11.0%
Bonds40%2.0%30%2.5%
Total100%6.80%100%8.05%
SegmentAllocation (Brinson-Fachler)Allocation (Brinson, Hood, Beebower)SelectionInteractionSum
International equities0.120.800.600.200.92
US equities0.000.00−0.300.00−0.30
Bonds0.48−0.200.20−0.050.63
Total0.600.600.500.151.25

The Sum column uses the Brinson-Fachler allocation. The comparison shows the difference between the two variants: under Brinson, Hood and Beebower, the underweight in bonds would have cost 0.20 points because bonds had a positive return. Under Brinson-Fachler, it delivered 0.48 points because bonds, at 2%, lagged far behind the benchmark's 6.8%. The freed-up money flowed into better segments. In total, both variants are the same.

Linking over several periods

Attribution is calculated per period, usually per month, because weights change through price movements, purchases and rebalancing. Over several periods, however, the effects do not add up to the active return for the whole period, because returns compound multiplicatively (see time-weighted return). Add a second period in which the portfolio returns 9.10% and the benchmark 8.70%:

Cariño (1999) distributes this gap using logarithmic factors. Each period receives a weight that reflects its share of the logarithmic excess return; the weighted effects then add up exactly to the active return for the whole period:

kₜ = [ln(1 + Rₜ) − ln(1 + Bₜ)] / (Rₜ − Bₜ), k = [ln(1 + R) − ln(1 + B)] / (R − B) linked effect = Σₜ (kₜ / k) × effectₜ
Rₜ, Bₜ
returns of the portfolio and the benchmark in period t
R, B
returns over the whole period

A second widely used method comes from Menchero: a factor M that is the same for all periods plus the smallest possible correction per period, proportional to the period's active return. Menchero (2004) sets out properties that any linking method should satisfy and shows that methods violating them can produce spurious effects, i.e. effects that did not arise in any single period. For short periods with small returns, Carino and Menchero give almost the same result; for long series and large return differences, it is worth comparing the two.

Factor attribution

Factor attribution needs no segments. It uses a regression to estimate how strongly the portfolio's excess return over the risk-free rate moves with factors, for example with the market factor and the size and value factors of Fama and French (1993), extended by momentum following Carhart (1997). A factor's contribution is its loading times its return; what remains is alpha plus a residual.

Rₜ − r_f,t = α + Σₖ βₖ × fₖ,ₜ + εₜ contribution of factor k = βₖ × fₖ
βₖ
loading on factor k from the regression
fₖ
return of factor k over the period
α
intercept: return that the factors do not explain
ε
residual that averages to zero over the estimation period

The loadings are estimated either over the whole period (static) or on a rolling basis from a window before each month. The rolling variant avoids look-ahead: it uses only data that were known at the time, and it shows how a fund's style changes. How the regression works is described in the article on Fama-French factors; the related style analysis of Sharpe (1992) estimates weights on indices rather than loadings on factors (see Style analysis).

Risk attribution

Return attribution asks where the gain came from, risk attribution where the fluctuation comes from. It decomposes the portfolio's volatility or its tracking error relative to the benchmark into contributions per position or factor that add up exactly to the whole. It is based on the Euler decomposition, which the article Risk contribution explains in detail. The two views belong together: a segment that contributes a lot of tracking error but little active return is an expensive risk. Grinold and Kahn (2000) combine the two within the framework of active management.

What the research shows

The study by Brinson et al. (1986) examined 91 large US pension funds from 1974 to 1983. Investment policy explained on average 93.6% of the variation in total return over time; active management cost the average fund 1.10% a year, although it earned individual funds up to 3.69% a year. Ibbotson and Kaplan (2000) put this often oversimplified figure into context: investment policy explains around 90% of a fund's variation over time, but only around 40% of the differences between funds and, on average, about 100% of the level of return.

Two methodological extensions followed. For international portfolios, Ankrim and Hensel (1994) separate the contribution of currencies into the interest rate differential and the unexpected exchange rate movement. Otherwise, currency success goes unrecognized within allocation. And several methods emerged for linking; Cariño (1999) and Menchero's optimized method are among the most widely used, and Menchero (2004) compares different methods systematically. A handbook covering many variants, including geometric attribution, is Bacon (2008).

Advanced: variants and subtleties

  • Assigning interaction: many reports show only two effects and add the interaction to selection. Selection is then wᵢ × (rᵢ − bᵢ) with the portfolio weight; in the example, 0.65 instead of 0.50 points. This is a convention, not a new insight.
  • Geometric attribution: instead of the difference R − B, (1 + R) / (1 + B) − 1 is decomposed. The effects then link across periods without correction factors, but are less intuitive.
  • Multi-level segments: first regions, then sectors within the regions. The results depend on the order; what is allocation at the upper level becomes selection at the lower level.
  • Segments without a counterpart: if the benchmark does not hold a segment, bᵢ is missing. The usual approach is to set bᵢ = rᵢ. The entire deviation then counts as allocation.
  • Combining factors and segments: in factor models following Grinold and Kahn (2000), the active return can be decomposed into contributions from factor deviations and a specific remainder. This is the bridge between the two families.

Limitations and common mistakes

  • Choice of segments: with regions, the result looks different than with sectors. The segments should correspond to the decisions actually taken.
  • Positions as segments: if the portfolio and benchmark hold the same securities, every deviation is allocation; selection and interaction are then zero.
  • Currencies: without a separate currency effect, the success of a currency bet ends up in the region's allocation or selection.
  • Transactions within the period: the calculation uses the weights at the start of the period. Purchases in the middle of the month, fees and distributions create a residual that calls for shorter periods or a transaction-based calculation.
  • Luck or skill: a positive selection effect over three years does not prove skill. The uncertainty is large, and the alpha from factor attribution also has a standard error.
  • Mismatched benchmark: a benchmark with a different risk structure from the portfolio makes risk look like allocation success.

How Portfolio Lab calculates

On the Risk page, Portfolio Lab calculates the Brinson-Fachler decomposition monthly against a benchmark: another portfolio from your Grid or a single security. Both run as a backtest without costs with the chosen rebalancing (monthly by default); the weights used are the actual weights at the start of each month, after drift and rebalancing. This way, the portfolio and benchmark returns match the backtest returns exactly. Segments are, as you choose, the positions, the asset classes of the taxonomy (default) or asset class and main category. If the benchmark does not hold a segment, the deviation counts as allocation. The monthly effects are linked using Carino (default) or Menchero, for the whole period, per calendar year and cumulatively; at least 12 common months are required.

Factor attribution regresses the portfolio's monthly returns in US dollars, reset to the target weights each month, on a selectable factor model and decomposes the excess return into factor contributions, alpha and a residual, both statically over the period and on a rolling basis with loadings from a window of 24 to 120 months before each month (36 by default), i.e. without look-ahead. The t-statistics are Newey-West corrected. The same page also decomposes risk by positions and factors. More in the risk and attribution methodology.

Frequently asked questions

What is performance attribution?

The decomposition of the difference in return between a portfolio and its benchmark into its causes, usually allocation, selection and interaction following Brinson, or contributions from factors.

What is the difference between Brinson-Hood-Beebower and Brinson-Fachler?

Both give the same total. Brinson-Fachler measures allocation against the benchmark's total return, so that an overweight only counts as positive if the segment beats the benchmark.

How do you calculate the allocation effect?

The segment's weight deviation times the difference between the benchmark's segment return and the benchmark's total return: (wᵢ − Wᵢ) × (bᵢ − B).

Why don't monthly attribution effects add up?

Because returns compound multiplicatively. Methods such as Carino or Menchero weight the monthly effects so that they give exactly the active return for the whole period.

What is the interaction effect?

The part of the active return that arises from the combination of weight deviation and better or worse selection in the same segment. It is often added to selection.

What does a factor attribution show?

How much of the excess return is due to factors such as market, size, value or momentum, and how much remains as alpha.

Literature

  1. Ankrim, Ernest M.; Hensel, Chris R. (1994): Multicurrency Performance Attribution. Financial Analysts Journal 50 (2), pp. 29–35. doi:10.2469/faj.v50.n2.29
  2. Bacon, Carl R. (2008): Practical Portfolio Performance Measurement and Attribution. Wiley, 2nd edition.
  3. Brinson, Gary P.; Fachler, Nimrod (1985): Measuring non-US. equity portfolio performance. The Journal of Portfolio Management 11 (3), pp. 73–76. doi:10.3905/jpm.1985.409005
  4. Brinson, Gary P.; Hood, L. Randolph; Beebower, Gilbert L. (1986): Determinants of Portfolio Performance. Financial Analysts Journal 42 (4), pp. 39–44. doi:10.2469/faj.v42.n4.39
  5. Carhart, Mark M. (1997): On Persistence in Mutual Fund Performance. The Journal of Finance 52 (1), pp. 57–82. doi:10.1111/j.1540-6261.1997.tb03808.x
  6. Cariño, David R. (1999): Combining Attribution Effects Over Time. The Journal of Performance Measurement, pp. 5–14. Source
  7. Fama, Eugene F.; French, Kenneth R. (1993): Common risk factors in the returns on stocks and bonds. Journal of Financial Economics 33 (1), pp. 3–56. doi:10.1016/0304-405x(93)90023-5
  8. Grinold, Richard C.; Kahn, Ronald N. (2000): Active Portfolio Management. McGraw-Hill, 2nd edition.
  9. Ibbotson, Roger G.; Kaplan, Paul D. (2000): Does Asset Allocation Policy Explain 40, 90, or 100 Percent of Performance?. Financial Analysts Journal 56 (1), pp. 26–33. doi:10.2469/faj.v56.n1.2327
  10. Menchero, Jose (2004): Multiperiod Arithmetic Attribution. Financial Analysts Journal 60 (4), pp. 76–91. doi:10.2469/faj.v60.n4.2638
  11. Sharpe, William F. (1992): Asset allocation. The Journal of Portfolio Management 18 (2), pp. 7–19. doi:10.3905/jpm.1992.409394

Full bibliography

This article explains a method; it is not investment or tax advice. Worked examples are simplified and rounded. All terms in the glossary.