let's assume I have a portfolio of two funds (call them F1 and F2), where, by convention, there is a monthly compounding of the returns.

On a monthly basis, the contribution of each fund will just be Weight_Fi*Return_Fi.

On an annual basis, though, since the assumption is that there is monthly compounding in the whole portfolio (in the sense that Return_portfolio_year = (1+Return_portfolio_jan)*(1+Return_portfolio_feb)...) I cannot think of any straightforward way to calculate the annual contribution of each fund.

  • 1
    $\begingroup$ Unless you are making monthly withdrawals above a high water mark from the funds you are invested in, the compounding is already occurring at the fund level unless I am missing something. $\endgroup$
    – amdopt
    Oct 19, 2017 at 13:26
  • $\begingroup$ @amdopt thanks for your comment. No, the funds are not sending compounded data - just net monthly returns. I need to compound these at a portfolio level. $\endgroup$
    – sen_saven
    Oct 19, 2017 at 13:32
  • $\begingroup$ I understand that they are sending monthly net returns. However, if you are not withdrawing profit from them, then they are compounding gains each month at the lower level. For example, if you invested 1M and made 10% in month 1, the start of month 2 has 1.1M. If it makes another 10% in month 2, you now have 1.21M at the start of month 3...sorry if I am missing the point of your question. $\endgroup$
    – amdopt
    Oct 19, 2017 at 13:48
  • $\begingroup$ I agree, the compounding does happen in the fund level too. However, if in the end of the year I sum up the compounded returns of the two funds it's not the same as the compounded return of the portfolio. For example, if we assume that both funds produce every month a positive return, then the portfolio return will be slightly higher than the sum of the two funds. $\endgroup$
    – sen_saven
    Oct 19, 2017 at 13:58

1 Answer 1


These problems arise when you compute arithmetic return contributions: in a given month, you want the sum of the funds' contributions to equal the portfolio return. The sum of these single-month contributions over more than one month will never equal the total portfolio returns over more than one month.

One way to include the compounding effect is to 'pretend' that a segment's return contribution in one period is reinvested in the overall portfolio in succeeding periods.

Here is an example, with R code. There are just two periods: first F1 makes 10%, then F2 makes 10%. The weights of F1/F2 are kept constant at 50% each.

weights <- rbind(c( 0.5, 0.5),
                 c( 0.5, 0.5))

R <- rbind(c( 10,   0),
           c( 0 , -10))/100

rc(R, weights, segment = c("F1", "F2"), timestamp = 1:2)

The output will be

  timestamp   F1   F2 total
1         1 0.05 0.00  0.05
2         2 0.00 0.05  0.05

    F1     F2  total 
0.0525 0.0500 0.1025 

F1 makes a higher overall contribution because its single-period contribution occured earlier and hence is compounded by the overall portfolio return.

(The PMwR package, of which I am the author, is available from GitHub https://github.com/enricoschumann/PMwR .)

  • $\begingroup$ I believe that a lot of the "mysteries" or "oddities" of arithmetic performance attribution disappear if you use geometric performance attribution. Would it help in this case? $\endgroup$
    – nbbo2
    Oct 20, 2017 at 12:39
  • 1
    $\begingroup$ yes & no: the numbers may 'add up' (multiply, actually), but are less intuitive. If F1 and F2 make 10% in a month, then their single-period contribution is not 5% but 4.89%, because (1.049)*(1.049)=1.1 $\endgroup$ Oct 20, 2017 at 13:31
  • 1
    $\begingroup$ thanks, this seems to be working - would it be possible to give a quick explanation of its logic? $\endgroup$
    – sen_saven
    Oct 20, 2017 at 14:19
  • $\begingroup$ The idea is that contributions in one period are, after that period, invested into the overall portfolio until the end of the investment horizon. In the example, F1 contributed 5% in period 1; these 5% are then compounded at 5% (=portfolio return in period 2) in period 2. So the overall contribution is 5*1.05 - 1 = 5.25%. $\endgroup$ Oct 20, 2017 at 19:13
  • 1
    $\begingroup$ No, I don't think so. It is described in a textbook by Bruce Feibel, but the author does not claim to have 'invented' it. If you look for 'multi-period contribution', you will find it in different sources. (Though most texts deal with 'multi-period attribution', not contribution.) $\endgroup$ Oct 24, 2018 at 7:21

Your Answer

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

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