# compounding component contributions

Say I have a portfolio which contains two components, A & B.

Below are the daily contributions to performance (0.02 equals 2%), where the overall portfolio return is equal to the sum of component contributions (A & B).

A     B     Overall portfolio
0.03  0.01  0.04
0.02  0.01  0.03
0.04  0.03  0.07


I want to show the compounded contribution for the two components & overall portfolio.

Row number          A         B         Overall portfolio   portfolio - sum(a+b)
0                   1         1         1
1                   1.03      1.01      1.04                0
2                   1.0506    1.0201    1.0712              0.0005
3                   1.092624  1.050703  1.146184            0.002857


I am confused as to why (excluding row 1) the compounded component contributions do not equal the overall portfolio compounded returns?

• What are the weights of the two components in the portfolio? Also, what doesn't make sense to me is that in the first table (second row), the return of A is 2% and return of B is 1%, but overall portfolio is 5%: that's only possible with leverage. Jan 18, 2022 at 9:02
• @JanStuller I don't have the weights of A & B just their contributions, so their weight multiplied by their return. Apologies that was a typo, have fixed now. Jan 18, 2022 at 9:18
• If you have a portfolio of two assets, and one asset returns 2% and the other returns 1%, it is not correct to say that the overall portfolio return is 3%. Imagine you have 100 dollars and you invest 50 into IBM and 50 into Google: IBM returns 2%, so you made USD 1 on IBM, whilst Google returns 1%, so you made 50 cents on Google: overall, you made USD 1.50, which is 1.5% on your 100. In other words, your return is $$0.5 * 0.02 + 0.5 * 0.01 = 0.015$$. Jan 18, 2022 at 9:30
• the number in the first table are assets A & B are contributions not returns, the sum of their contribution is the portfolio return Jan 18, 2022 at 10:27
• This is a well-known problem; and there is no "correct" solution, only several workarounds. See for instance quant.stackexchange.com/questions/36520/… Jan 18, 2022 at 19:14

## 3 Answers

If the numbers are contributions and not returns you should not calculate interest on interest but just add the contributions together.

Contributions are not returns - they are breaking out the total gain for a portfolio into the gains associated with each component.

So in your example, the portfolio goes up by 0.04 on day 1, 0.01 of which came from the gain in stock B and 0.03 came form the changes in stock A. On day 2, the portfolio goes up by 0.03, etc. Everything sums nicely horizontally and vertically.

But, the contributions don't compound like returns do - your conversion to returns assumes that the stocks are equally weighted and valued, which makes the math nice on the first day, but does not work for the second day because the stocks are no longer equally weighted. Stock B increased in value, which means that its performance accounts for a larger portion of the overall performance. Plus, the change on the second day is not a percent return because the denominators are no longer 1 after the first day, so the traditional compounding rules are not valid.

There is no exact answer to this problem, but there are a few different ways to approximate it.

Here is my preferred approximation method:

$$k_i = log(1 + r_{p,i}) / r_{p,i}$$

$$c_i = \prod_{j=1}^i1 + r_{p,j}$$

$$t_i = log(c_i)/(c_i-1)$$

where $$r_{p,i}$$ is the return on the portfolio and $$i$$ is time.

The time series of contributions to returns is then given by:

$$rc_{s,i} = r_{s,i} w_{s,i}$$

$$adj\_rc_{s,i} = \frac{\sum_{j=1}^i { rc_{s,j} * k_j }} {t_i}$$

where $$rc_{s,i}$$ is the return contribution of security $$s$$ at time $$t$$, and $$adj\_rc_{s,i}$$ is the adjusted return contribution such that $$\sum_{i=1}^n {adj\_rc_{s,i}} = c_i$$

Here is an example calculation for your problem:

A        B      c       k       t       rc A    rc B    adjrc A   adjrc B  adj rc A + B
1.000   1.000   1.000   1.0000  1.000   0.000   0.000   0.000     0.000    0.000
1.030   1.010   1.040   0.4258  0.4258  0.030   0.010   0.030     0.010    0.040
1.051   1.020   1.071   0.4279  0.4195  0.020   0.010   0.051     0.020    0.071
1.093   1.051   1.146   0.4198  0.4053  0.040   0.030   0.094     0.052    0.146