โ† lisson.co

Who made the return? โ€” contribution analysis

Constantin Lisson

A portfolio was up 6.3% this year. Which holdings did that? It sounds like bookkeeping, and for a single day it is: weight times return, summed. But as soon as the question spans more than one period, returns compound and contributions refuse to add up. Every performance report quietly picks one of several fixes for that, and they don't agree.

This page builds contribution analysis up from the one-period identity, shows exactly where the arithmetic breaks, compares the standard linking methods side by side, and then turns to the practical mess underneath every real report: trades in the middle of a period, cash flows, currencies, derivatives, and prices taken at the wrong moment.

One period โ€” weight times return

Over a single period, a portfolio's return is the weighted average of its holdings' returns, with weights $w_i$ that sum to one, fixed at the start of the period:

$$R \;=\; \sum_i w_i\, r_i .$$

So the natural contribution of holding $i$ is its term in that sum, $c_i = w_i r_i$. The contributions add up to $R$ exactly, with nothing left over. Geometrically, each holding is a rectangle: width = weight, height = return, and the contribution is its area. The portfolio return is the total area over a base of width one, which makes it the average height: the level the bars would settle at if you could pour them flat.

$R = \sum_i w_i r_i$ = โ€“  ยท  largest contributor โ€“
positive return, yet below R: โ€“

Drag a bar's top to change its return; drag the seam between two bars to move weight from one to the other.

Two things are already visible here. First, contribution mixes two decisions: how much you held and how well it did. A small position in a great performer can contribute less than a large position in a mediocre one; cash, with its near-zero return, contributes almost nothing however large it is. Second, contribution is not value added. A holding with a positive return below the dashed line contributed positively and still pulled the portfolio's return down: had that money sat in the rest of the portfolio, $R$ would have been higher. Judging decisions against an alternative is attribution's job (more on that at the end). Contribution only answers where the return came from.

The identity holds for any weights that sum to one, negative ones included. A short position has $w_i < 0$, so a falling price contributes positively, and a levered portfolio carries a negative cash weight whose contribution is the financing cost.

Two periods โ€” the corner nobody owns

Now chain two periods. Within each, contributions add up perfectly. But returns compound:

$$\begin{aligned} 1 + R &= (1 + R_1)(1 + R_2) \\ &= 1 + R_1 + R_2 \\ &\qquad {} + R_1 R_2 . \end{aligned}$$

Summing the per-period contributions gives $R_1 + R_2$; the true return has an extra cross term $R_1 R_2$, the return earned in period 2 on the gains of period 1. Draw $(1+R_1)(1+R_2)$ as a rectangle and the problem becomes a picture: the unit square is your starting capital, the strip on the right is period 1's gain split by holding, the strip on top is period 2's gain split by holding, and the corner $R_1R_2$ is the gain-on-gain. It's real money, but no single period's contributions own it.

holding A holding B starting capital
period 1 ยท A contributesโ€“
period 2 ยท A contributesโ€“
period 1 ยท B contributesโ€“
period 2 ยท B contributesโ€“
$R_1$ โ€“ ยท $R_2$ โ€“ ยท $R_1{+}R_2$ โ€“ ยท true $R$ โ€“ ยท corner $R_1R_2$ โ€“

Returns are exaggerated, and kept positive, so the corner is big enough to see and every area is an area. With real monthly returns the corner is tiny each month, but there are many months.

The buttons are the whole debate in miniature. Giving the corner to the period-2 contributors says period 2's gains were earned on a capital base that already included period 1's gains, so they scale up by $(1+R_1)$. That is literally how the money flowed. Giving it to period 1 is the mirror image, and as the right-hand bars show, it gives a different answer: the holding that did well in the period that gets the corner wins. Sharing the corner pro rata among everyone avoids picking a side, at the cost of no longer corresponding to any actual flow of money.

Many periods โ€” linking methods

Real reports chain daily or monthly contributions over a year or more, so there isn't one corner but a whole lattice of cross terms, and $\sum_t \sum_i c_{i,t} = \sum_t R_t$ drifts away from $R = \prod_t (1+R_t) - 1$. Every linking method fixes this the same way: it multiplies each period's contributions by a period coefficient $\beta_t$, chosen so that the linked contributions add up to the compounded return:

$$\begin{aligned} C_i &= \sum_t \beta_t\, c_{i,t} , \\ \sum_i C_i &= \sum_t \beta_t R_t = R . \end{aligned}$$

Since all holdings in a period share one coefficient, the methods differ only in how they weight the periods against each other. The four you'll meet in practice:

Below, a simulated portfolio with five holdings, rebalanced monthly to fixed weights (35% US equities, 20% European equities, 30% bonds, 10% gold, 5% cash). Top: each month's contributions, stacked. Middle: each method's coefficients $\beta_t$. Bottom: the linked contributions per holding, plus the residual the naive sum leaves over.

months linked ยท T12
market turbulenceร—1.0
$\sum_t R_t$ โ€“ ยท $R$ โ€“ ยท residual โ€“
largest disagreement between methods: โ€“

Hover the bottom panel for the exact numbers. Turn up the turbulence and the residual grows roughly with the square of volatility; extend the window and it grows with its length. Then reverse the months: the naive sum, Cariรฑo and Menchero don't move at all. Only GRAP changes, because the same monthly return now lands on a different amount of capital.

At realistic volatility the methods agree to within a few basis points per holding, which is why the choice often goes unnoticed. The differences become material in volatile periods, over long windows, and for holdings whose contributions swing sign. A holding that made +5% of the portfolio in a strong first half and lost 5% in the second half nets to zero under the naive sum. If the portfolio as a whole rose in the first half, GRAP says it lost money, because the loss was taken on a larger base.

Rewriting history

Slide $T$ forward one month at a time and watch the middle panel: Cariรฑo's and Menchero's coefficients for all earlier months change, because they depend on the total return $R$ of the whole window. A report that showed US equities contributing 2.10% for January to June will show a different January to June figure once July is added. GRAP's coefficients for past months never change, because they only look backwards. That stability matters a lot once numbers reach clients, auditors and bonus committees.

The log alternative

One way out is to give up on reporting in arithmetic return units. Log returns add over time, so define log contributions $\ell_{i,t} = c_{i,t}\,\ln(1+R_t)/R_t$. They add up across holdings and across periods, with no normalization, to $\ln(1+R)$, and they never restate history. This is Cariรฑo without the final rescaling by $k$. The price is that the total is a log return: 6.11 log-points instead of 6.30%, a unit clients don't recognize.

Within the period โ€” trading breaks the identity

Everything above assumed weights fixed at the start of each period. Real portfolios trade. If you sell a position halfway through a month, the holdings-based contribution $w_{\text{start}}\,r_{\text{month}}$ credits you with the whole month's move of a position you only held for half of it. The gap between the holdings-based figure and the actual profit is called the trading effect or, less charitably, the attribution residual.

actual, daily linked holdings-based, monthly
trade after day10
actual โ€“ ยท holdings-based โ€“ ยท trading effect โ€“

The position starts at 10% of the portfolio, and the rest is cash earning nothing, so every cent of profit comes from this one stock. Contributions are shown in basis points (0.01%) of starting capital.

The standard fixes, from cheapest to most accurate:

The empirical mess

The arithmetic is the easy part. Most of the effort in a production contribution system goes into the inputs.

External cash flows

Client deposits and withdrawals change the capital base without being returns. With a flow mid-period, โ€œweightโ€ is no longer well defined. The usual approach, Modified Dietz, divides each holding's profit by an average capital base,

$$c_i \;=\; \frac{\Pi_i}{\text{BMV} + \sum_f \omega_f\,\text{CF}_f} ,$$

where $\Pi_i = \text{EMV}_i - \text{BMV}_i - \text{CF}_i$ is holding $i$'s profit (end value, minus start value, minus net purchases), BMV is the portfolio's value at the start, and $\omega_f$ is the fraction of the period remaining after flow $f$. That makes contributions depend on when the client moved money, which the manager didn't control. Daily valuation with flows booked at day boundaries (true time-weighting) avoids most of this, but needs daily prices for everything.

Currencies โ€” the corner again

A foreign holding's return in base currency compounds its local return with the currency's:

$$\begin{aligned} r &= (1+r^{\text{loc}})(1+r^{\text{fx}}) - 1 \\ &= r^{\text{loc}} + r^{\text{fx}} + r^{\text{loc}}\, r^{\text{fx}} . \end{aligned}$$

That is the same cross term as in Figure 2, now between market and currency rather than between periods. Splitting a holding's contribution into โ€œmarketโ€ and โ€œcurrencyโ€ runs into the same choice of who owns the corner. A common convention computes the currency part on the full local value, i.e. $(1+r^{\text{loc}})\,r^{\text{fx}}$, which matches how the money moves. Hedges complicate this further: the forward's contribution belongs with the currency, and its carry (the interest rate differential) is often reported separately.

Derivatives, leverage and the meaning of โ€œweightโ€

A futures position costs nearly nothing to hold, so its market-value weight is about zero, while its exposure may be 20% of the portfolio. Contribution has to be computed as P&L divided by portfolio value, not weight times return; or as notional weight times the underlying's return, with the cash backing it reported separately. Weights no longer sum to one in any sense that means something. Options are worse: their exposure (delta) changes daily, so even daily holdings-based numbers need care.

Prices taken at the wrong time

Everything that isn't a price move

Dividends and coupons (on the ex-date or the pay date?), accrued interest, withholding tax, transaction costs, management fees, securities lending income, and the return on cash itself all have to be assigned somewhere. Common practice: income goes to the holding that generated it, costs go to the holding traded, and fees and anything unexplained go to a separate line. These choices alone can move a holding's contribution by more than the difference between linking methods.

Which method, then?

method adds up to R history stable order matters money meaning main drawback
naive sum noyesnono residual grows with volatility and horizon
Cariรฑo yesnonono restates past periods when the window grows
Menchero yesnonono same; coefficients can misbehave when $\sum_t R_t \approx 0$
GRAP / Frongello yesyesyesyes later periods weigh more in rising markets; asymmetric by design
log contributions to ln(1+R)yesnono reports in log-points, which nobody outside the desk reads

The table hides the more important choice: the frequency of the underlying periods. Daily contributions with any reasonable linking beat monthly holdings-based contributions with the most elegant linking, because the trading effect in Figure 4 is usually far larger than the disagreement in Figure 3. After that, a defensible default for a portfolio that reports money to clients is GRAP: it adds up, it never rewrites history, and every number can be traced to a profit. Cariรฑo and Menchero suit cases where symmetry across periods matters more than following the money, such as comparing managers over the same window.

Neighbours: attribution and risk

Contribution is the first of three related questions, and it's easy to answer one while thinking you've answered another.

Further reading

The linking methods are in D. Cariรฑo, โ€œCombining attribution effects over time,โ€ Journal of Performance Measurement 3(4), 1999; J. Menchero, โ€œAn optimized approach to linking attribution effects over time,โ€ JPM 5(1), 2000; and A. Frongello, โ€œLinking single period attribution results,โ€ JPM 6(3), 2002, which also establishes its equivalence with the earlier GRAP proposal. The book-length treatment of the whole field, including cash flows, currencies and derivatives, is C. Bacon, Practical Portfolio Performance Measurement and Attribution (Wiley, 2nd ed. 2008). For attribution proper, start with Brinson, Hood & Beebower (1986).