Transparency is a feature. This page explains what Brinson attribution measures and why we compute it — in plain terms. The precise formulas and numeric conventions are documented in our internal methodology; the summary here is deliberate, not an omission.
Brinson attribution takes the difference between a portfolio's return and its benchmark's return — the active return — and explains where that difference came from, sector by sector. It splits the gap into three effects. Allocation asks whether the manager's decision to over- or under-weight each sector helped or hurt. Selection asks whether the specific holdings inside a sector beat the sector's own benchmark return. Interaction captures the joint cross-term where the two decisions reinforce or offset each other. Add all three effects across every sector and, by construction, you recover the total active return — nothing is left unexplained.
We support two conventions. Brinson–Hood–Beebower (BHB) credits an over-weight simply for being in a sector that had a positive return. Brinson–Fachler (BF), which is our default, judges an over-weight relative to how the whole benchmark did, so tilting toward a sector is only rewarded when that sector actually beat the overall benchmark. We treat that as the more defensible reading of an allocation decision.
The three effects, summed across all sectors, always reconcile exactly to the active return. This is guaranteed for BHB, and it holds for BF in the ordinary fully-invested case where the portfolio and benchmark weights each sum to the same total. Because the extra adjustment term disappears in that balanced case, both conventions report the same overall allocation figure — they differ only in how that total is split among individual sectors.
All four inputs — the portfolio and benchmark weights and returns — are organized by sector and must cover the same set of sectors, so that like is compared with like. A sector the portfolio does not hold is included with a weight of zero rather than being dropped. The engine here works on a single period at a time; chaining periods together so the effects compound over time (using established multi-period linking methods such as Carino, Frongello, or GRAP) builds on this single-period step.
There must be at least one sector to attribute, and the portfolio and benchmark inputs must describe the same sectors, or the result is rejected rather than guessed at. Only the two named conventions are accepted. When the portfolio exactly matches the benchmark there is no active bet, so every effect and the active return itself come out at zero.