Back to blog
methodology

How to chart a performance attribution waterfall

12 August 2026 8 min read

Quick answer

A performance attribution waterfall starts at the benchmark return, adds one floating bar for each Brinson effect, allocation, selection and interaction, and lands on the portfolio return, so the bars sum to the active return by construction. The check that matters is arithmetic: if the bars do not close the gap exactly, the decomposition is wrong or a segment is missing. The choice between the Brinson-Hood-Beebower and Brinson-Fachler allocation conventions leaves the total unchanged but can flip the sign of individual sector bars, so the convention belongs in the caption.

An attribution waterfall answers one question for a client reading a quarterly letter: you beat the benchmark by 38 basis points, so where did they come from. It starts at the benchmark return, steps through one floating bar per effect, and lands on the portfolio return. If the bars do not close that gap to the basis point, the chart is wrong, and unlike most charts, you can prove that before you publish it.

The Brinson decomposition behind it is well covered elsewhere. The chart is not, which is odd, because the chart is the part your readers actually see.

The three effects, in the form the chart needs

Split the portfolio and the benchmark into the same segments, usually sectors, sometimes regions or asset classes. For each segment you have a portfolio weight and return, and a benchmark weight and return. Write them wP, rP, wB and rB, and write the total benchmark return as RB.

Allocation, in the Brinson-Hood-Beebower form, is (wP minus wB) multiplied by rB. It measures the decision to hold more or less of a segment than the benchmark did, valued at the benchmark's own return for that segment.

Selection is wB multiplied by (rP minus rB). It measures stock picking inside the segment, valued at the benchmark weight so that the weighting decision is not double counted.

Interaction is (wP minus wB) multiplied by (rP minus rB). It is the cross term, and it exists because overweighting a segment in which you also picked well earns more than either decision alone. Sum the three across segments and they equal the portfolio return minus the benchmark return, exactly. That identity is what makes the waterfall a legitimate bridge rather than a stack of loosely related bars.

A worked example

The portfolio below is illustrative, so the numbers are arithmetic you can reproduce rather than a claim about a real fund. Five segments, one quarter, weights in percent and returns in percent, portfolio first and benchmark second.

Technology: weights 32 and 24, returns 11.2 and 9.4

Financials: weights 18 and 22, returns 4.1 and 5.5

Health care: weights 25 and 20, returns 1.9 and 2.8

Industrials: weights 15 and 19, returns -0.7 and 1.2

Cash: weights 10 and 15, returns 1.1 and 1.1

The portfolio returns 4.802 percent and the benchmark 4.419 percent, so active return is 38.3 basis points. Allocation contributes 56.9 basis points, selection subtracts 41.7, and interaction adds 23.1. Those three sum to 38.3, and the waterfall has four bars: a starting column at 4.419, three floating bars, and a closing column at 4.802.

The story the chart tells is worth noticing, because it is the story most funds actually have. The manager was right about which sectors to own and wrong about what to own inside them. A single active-return number hides that completely, and so does a bar chart of contribution by sector.

Two conventions, the same total, different bars

The Brinson-Fachler convention changes allocation to (wP minus wB) multiplied by (rB minus RB), that is, the segment's benchmark return measured against the total benchmark return rather than against zero. In aggregate this changes nothing, because active weights sum to zero and so the extra term cancels. Allocation still totals 56.9 basis points in the example above.

Per segment it changes a great deal. Health care allocation moves from plus 14.0 basis points to minus 8.1. Industrials moves from minus 4.8 to plus 12.9. Cash moves from minus 5.5 to plus 16.6. Under one convention, underweighting cash looks like a mistake; under the other it looks like one of the quarter's better calls.

Neither is wrong. Brinson-Fachler asks whether you overweighted segments that beat the overall benchmark, which is the question most people think they are asking. Brinson-Hood-Beebower asks whether you overweighted segments with a positive return. The consequence for the chart is direct: if your waterfall breaks allocation out by sector, the convention determines which sector bars point up, so name it in the caption. If it shows one combined allocation bar, the two conventions produce an identical chart and the caption can stay short.

Do not hide interaction

Interaction is the bar that gets quietly folded into selection, usually because it is hard to explain to a client. Folding it is a defensible choice and a common one, and there is a two-effect presentation built on exactly that. What is not defensible is folding it silently. In the example it is 23.1 basis points, more than half the active return, so a reader comparing your report to another manager's would be comparing different things without knowing it.

If you fold it, say so in the axis label: selection including interaction. Two extra words, and the chart stays reproducible.

Building the chart

Anchor both ends. The first and last columns are absolute totals resting on the axis, benchmark return and portfolio return. Everything between them floats, each bar starting where the previous one ended. Connector lines between the bars are not decoration; without them the eye cannot tell a floating bar from an absolute one.

Use one unit throughout. Basis points beat percent for the effect bars, because the numbers are small and a chart mixing 4.42 percent with 0.231 percent forces the reader to do mental arithmetic on every bar. Label the two anchor columns in percent and the floating bars in basis points, and say which is which.

Color by sign, not by category. A waterfall has exactly two kinds of floating bar, the ones that helped and the ones that hurt, and a rainbow of sector colors destroys that read. Keep the anchors in a neutral tone so they are visibly a different kind of object.

Order deliberately. Effect-level waterfalls read best in the conventional order, allocation then selection then interaction, because that is how the decomposition is taught. Sector-level waterfalls read best sorted by magnitude, largest positive to largest negative, because alphabetical order is a random walk through the thing your reader wants ranked.

Then check the arithmetic in the chart itself, not in the spreadsheet behind it. Sum the plotted bars and confirm they land on the plotted endpoint. Rounding to one decimal in basis points is usually enough to make a genuine residual visible, and a residual almost always means a segment whose weights do not sum to one, or a cash line that was left out of one side.

The multi-period trap

Everything above holds for a single period. Returns compound and these effects are arithmetic, so quarterly effects do not add up to the annual effect, and a waterfall built by summing four quarters will not reconcile to the year's active return. The gap is small over a quarter and embarrassing over five years.

There is a family of linking methods that redistribute the compounding residual across periods so the effects do reconcile, and the practitioner literature on multi-period attribution covers the trade-offs between them. Whichever you use, the honest chart names it, and a chart covering more than one period without naming one is showing a total that cannot be rebuilt from its parts.

[QUADESTO-EMBED: attribution waterfall, benchmark return anchor to portfolio return anchor, floating bars for allocation, selection and interaction in basis points, connector lines, sign-based coloring, sector-level breakout available on toggle]

Putting it in the letter

Attribution is the chart in a client letter most likely to be rebuilt from scratch every quarter in a spreadsheet, exported as an image, and pasted in. That is fine until someone asks for the sector breakout, or the same quarter on the other convention, and the answer is another manual rebuild.

The alternative is a chart driven by the weights-and-returns table itself, so next quarter is a new upload rather than a new build. Quadesto does that from a CSV and gives you an embed for the letter or the site, free with attribution or on Pro at 149 pounds a month without it. If the letter goes out by email, the chart has to be a static image with a link to the live version, for the reasons set out in how to put a chart in an email that survives Outlook and Gmail.

The waterfall pairs naturally with the other two charts a performance pack usually needs: a monthly returns heatmap for the pattern of results over time, and an underwater drawdown curve for the risk taken to get them. Attribution explains the quarter; those two explain the record.

Ready to try Quadesto?

Connect your data. AI builds the charts. Embed anywhere.

Get Started Free
attributionBrinsonwaterfall chartperformanceclient reporting