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?

  • 1
    $\begingroup$ 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. $\endgroup$ Jan 18, 2022 at 9:02
  • $\begingroup$ @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. $\endgroup$
    – mHelpMe
    Jan 18, 2022 at 9:18
  • 3
    $\begingroup$ 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$$. $\endgroup$ Jan 18, 2022 at 9:30
  • $\begingroup$ the number in the first table are assets A & B are contributions not returns, the sum of their contribution is the portfolio return $\endgroup$
    – mHelpMe
    Jan 18, 2022 at 10:27
  • 1
    $\begingroup$ This is a well-known problem; and there is no "correct" solution, only several workarounds. See for instance quant.stackexchange.com/questions/36520/… $\endgroup$ Jan 18, 2022 at 19:14

3 Answers 3


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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.