Subscribe to our mailing list

How to Calculate Your Time-Weighted Rate of Return (TWRR)

The Holy Grail of portfolio performance benchmarking is the time-weighted rate of return (TWRR).  However, it requires daily portfolio valuations whenever an external cash flow (i.e. a contribution or withdrawal) occurs.  Periods in which external cash flows occur are divided into sub-periods, each with its own total return calculation.  These sub-period returns are then geometrically linked together to obtain the time-weighted rate of return over the measurement period (“geometric linking” is just a fancy way of saying “add 1 to each sub-period return, multiply the sub-period returns together, and then subtract 1 from the result”).  The daily valuation requirement makes it very difficult for the average investor to calculate their time-weighted rate of return without the help of computational software.


In our initial example (please refer to my blog post on How to Calculate Your Portfolio’s Rate of Return), Investor 1 initially invested $250,000 on December 31, 2013.  On September 15, 2014, their portfolio was worth $290,621.  They then added $25,000 to the portfolio, bringing the portfolio value up to $315,621.  By the end of 2014, the portfolio had decreased to $298,082.

Investor 1 would start by calculating their first sub-period return from December 31, 2013 to September 15, 2014 (using portfolio values before the cash flow occurred).  They would then calculate a second sub-period return from September 15, 2014 (using portfolio values after the cash flow occurred) to December 31, 2014.  After this was done, they would geometrically link the sub-period returns to obtain their time-weighted rate of return for the year.

Example:  Time-weighted rate of return for Investor 1


Investor 2 initially invested $250,000 on December 31, 2013 in the exact same portfolio as Investor 1.  On September 15, 2014, their portfolio was worth $290,621.  They then withdrew $25,000 from the portfolio, bringing the portfolio value down to $265,621.  By the end of 2014, the portfolio had decreased to $250,860.

Using the same process, Investor 2 ends up with the exact same time-weighted rate of return for the year.

Example:  Time-weighted rate of return for Investor 2


Regardless of the amounts both investors contributed or withdrew from the portfolio, they ended up with the exact same return. This is precisely the result that should be expected.  The time-weighted rate of return is not affected by contributions and withdrawals into and out of the portfolio, making it the ideal choice for benchmarking portfolio managers or strategies.  If we compare their return to the returns of the MSCI Canada IMI Index over the same period (which their portfolio manager was attempting to track), we also get the same result of 9.79%.

MSCI Index Performance as of December 31, 2014


Source:  MSCI

Before moving onto the next section, please take note of the relative difference in the sub-period returns; the first sub-period return was 16.25% before the cash flows occurred, and a relatively worse return of -5.56% after the cash flows occurred.  This difference in sub-period returns during the year is going to drive the return differences between the time-weighted rate of return and the Money-Weighted Rate of Return (MWRR).

35 Responses to How to Calculate Your Time-Weighted Rate of Return (TWRR)

  1. Willy 26/05/2015 at 9:30 am #

    Good stuff. Re the daily tracking, while I completely agree in theory, I compute a time-weighted (and money-weighted) return for my portfolio on a monthly basis and find it to be “darn close enough” for average investor purposes. It can be especially close if your cash flows are (a) small relative to the size of the portfolio, and (b) can be timed to happen near the end of the month. Since in my personal case I can almost always guarantee those two to be true, I’m fairly sure computing this on a monthly basis is going to be accurate to within a few basis points. I made a spreadsheet that I just spend 20 mins at the end of every month entering a few market values, and it will calculate both this time-weighted and a dollar-weighted return for me.

  2. PHILIPPE MOUFFE 02/01/2016 at 6:40 am #

    Dear Sir,

    I have 2 questions:

    1) In de formula to calculate the TWRR, where is the Time Weighting factor ?
    All returns of the sub-periods have the same weight in the calculation …

    2) I agree that the TWRR is useful in case of comparaison ( i.e. between Portfolio’s managers or with Benchmarks ) because this method focuses on the result of the managers but is it the best method to measure the performance of a single portfolio?
    The TWRR doesn’t take into account the amounts in portfolio. For the TWRR, there is no difference if the return of a sub period is obtained on 5 USD, 50.000 USD or 5.000.000 USD …
    The return of sub periods with just a little money in portfolio are considered to have the same weight in the results.

    Example : New portfolio – Management Begin Date : 15/09/2015 – Cash Transfert/ Investment of 50.000 USD on 16/O9 – but for some technical reasons, the Security Transferts / investments ( 5.000.000 USD ) only start on 15/12/2015 ( delay not foreseen ).

    Sincerely Yours,

    ph. Mouffe

    • Justin 03/01/2016 at 11:10 am #

      Hi ph. Mouffe – I’m not sure if I understand your first question about the “Time Weighting factor” – could you please explain?

      Your second questions deals directly with why the TWRR may not accurately reflect how an investor’s portfolio has actually done – the Money Weighted Rate of Return may be more appropriate in this case:

      • Abs 12/04/2016 at 5:06 pm #

        Agree with Philippe Mouffe – where is the time-weighted factor in 1?
        Dec 2013-September 2014 is about 290 days, so presumably there should be a 290/365 calc in the formula somewhere?

  3. fguemara 24/02/2016 at 5:54 am #

    Hi Justin,
    I am looking for an indicator (I am not sure if it does exist to be honest).
    The one you describe here looks close but I would like to have your opinion :
    Let’s say I have an existing portfolio with three assets, for which I have predictible futur cash-flows and valuation (assumptions). I would like to know, based on the Rate of Return that I am looking for, which one I need to sell today if I needed to.
    Do you think the TWRR can apply ? Many thanks in advance

    F. Guemara

    • Justin 24/02/2016 at 8:03 am #

      @fguemara – calculating your portfolio’s TWRR unfortunately does not give any useful information on whether you should sell a certain security.

  4. Li 05/05/2016 at 11:05 pm #

    Hi Justin,

    Could we apply this TWRR on a security level within the portfolio? ie I would like to know the compounded return of the security.

    Could we still use the geometric return of the security’s daily return % over the period to determine it’s compounded return?

    And the summation of all the securities’ geometric return will = Portfolio’s TWRR?

    • Justin 06/05/2016 at 9:28 am #

      @Li – you can definitely apply the TWRR on a security level (this is normally how individual stock returns are calculated). Dividends are usually assumed to be reinvested on the ex-dividend date.

      Summing the securities’ geometric return will not equal the Portfolio’s TWRR (mainly because you would have to weight the securities return by their allocation within the portfolio).

      • Li 08/05/2016 at 9:48 pm #

        Hi Justin, Thank you for the reply and confirmation of understanding.

        If we are not able to sum each securities’ geometric return, is there a way to cross check the portfolio TWRR number?

        I am trying to find a cross check function. ie performing TWRR on the portfolio NAV will produce the same return when I sum each securities’ geometric return over the same period.

  5. Thananjeyan 01/07/2016 at 2:00 pm #

    Dear Mr.Justin,

    If there are irregular contributions and withdrawals present in a client’s portfolio, How do we calculate the TWRR?
    Do we calculate the Weighting Factor factor for each month? or can we calculate without the weignting factor?

  6. Thananjeyan 01/07/2016 at 2:12 pm #

    Dear Mr.Justin,

    What if there are irregular contributions and withdrawals present in a portfolio. How do we calculate TWRR?
    Do we calculate weighting factor for each contribution and withdrawals?
    or Can we calculate without the Weighting factor?

  7. Chuck 20/10/2016 at 10:10 am #

    Hi Justin, I think the formula above misses one very important element: the exponent/power. In examples of investment 1 and investment 2, the product of [(1+r1)*(1+r2)] has to be raised to the power of (1/N). In our examples, N=2 (2 time periods). So the TWRR = [1.0979^0.5] – 1 = 1.0478 – 1 = 4.78%. Hope it helps.

    • Justin 20/10/2016 at 10:19 am #

      @Chuck: The formula above is correct. If you are trying to annualize a rate of return for a period longer than one year, then you would have to adjust the formula. Since our measurement period in the example is one year, there is no need to do so.

      For a tutorial on how to annualize a rate of return (the measurement period should be longer than a year), please refer to this post:

  8. George 24/11/2016 at 1:53 am #

    What if there has been multiple cash movements through the month? Would you calculate the before and after values for each range?

    1st 10th 15th 20th
    Buy buy buy sell

    • Justin 24/11/2016 at 8:51 am #

      @George: You are correct – you would need to calculate the before and after values of each range, and then calculate the holding period returns during those times frames (chain-linking the returns together afterwards).

      This is why most investors don’t calculate a true time-weighted rate of return – they would need access to daily portfolio valuation figures. If the cash movements are relatively small (compared to the portfolio size), the Modified Dietz return is probably close enough for most purposes.

  9. George 27/11/2016 at 4:45 pm #

    Thanks Justin. I’ve just used your formula grammatically for calculating it on a security level and the end result is what I expect. However, the challenge is calculating it on a portfolio level. I attempted to chain-link the security % returns together but obviously that isn’t right.

    • Justin 27/11/2016 at 5:00 pm #

      @George: All month-end account values (securities + cash) must be manually added together, and then entered into the Modified Dietz calculator as a single total portfolio month-end figure.

  10. George 27/11/2016 at 4:50 pm #

    correction: programmatically, not grammatically

  11. George 14/12/2016 at 11:39 pm #

    I’ve come across an issue that I’m not sure about

    For simplistic calculation, let’s say we’ve got a portfolio holding just one single security and we’re calculating performance for each month

    Let’s say for the first 4 months, the security continued to make high percentage gains. In the 5th and 6th month, the stock dropped significantly but still at a higher price than the initial cost price. At this point in time, the stock is sold off.

    The issue is when I geometrically link all these months together (5 months). The final figure is that they’ve made a significant profit. In reality, the figure should be the difference between the initial buy market value and right before the sell market value as the months in between were “unrealised”.

    • Justin 15/12/2016 at 8:03 am #

      @George: Are you using the market value at the end of the sixth month to calculate your total return? (you mention 5 months, but you need to include 6 months of returns).

  12. George 15/12/2016 at 5:19 pm #

    Sorry that was a typo, it should be 6 months.

    I’ll put an example to make it clearer.

    Let’s say he bought prior to this period with a total MV of $50,000

    1st month: Start: $50,000 End: $60,000
    2nd month: Start: $62,000 End: $80,000
    3rd month: Start: $82,000 End: $88,000
    4th month: $90,000 End: $100,000
    5th month: $100,000 End: $70,000
    6th month: $70,0000 End: $60,000 <- At this point, portfolio is sold off

    Using the calculations:
    1st month: (60-50)/50 = 20%
    2nd month: (80-62)/62 = 29%
    3rd month: (88-82)/82 7.3%
    4th month: (100-90)/90 = 11.11%
    5th month: (70-100)/100 = -30%
    6th month: (60-70)/70 = -14%

    Geometrically linking them = 11.11%

    The portfolio started at 50k and ended 60k. If you perform a single calculation (60-50)/50, you get 20%. In this example, it's actually understated the performance. The portfolio I was testing with overstated the performance.

    • Justin 15/12/2016 at 5:47 pm #

      @George: Some of your month-end values are different than the next month’s beginning values – in some cases they are off by $2,000 (which doesn’t make sense, as they should be identical). If you fix these errors, the geometrically linked monthly returns will equal 20%.

  13. George 15/12/2016 at 6:00 pm #

    I think what I need to use is the money-weighted approach

    • Justin 18/12/2016 at 7:44 pm #

      @George: If there were no contributions or withdrawals to or from the portfolio, you money-weighted rate of return = your Modified Dietz rate of return = your time-weighted rate of return. This is not an issue with your methodology, but rather your inputs.

  14. George 18/12/2016 at 6:53 pm #

    Hi Justin,

    The reason they are different in my calculations as for each month, I’m using the 1st and end of month closing prices.

    • Justin 18/12/2016 at 7:51 pm #

      @George: Ignore any 1st of the month values. A March 31st month-end value should also be the figure used for your April 1st value.

      When calculating monthly rates of return, just use the last day of each month for portfolio market values.

  15. Lawrence 28/12/2016 at 1:59 am #

    Hi Justin,
    I have read your article with lots ofinterest and together with your insightful replies to the comments, I have a much clearer understanding of TWRR. I was hoping that you could help make one clarification for me. For a portfolio that holds Equity Securities (one illiquid counter only really) and cash:
    BMV is USD 107 (Security MV 107 + Cash 0)
    Dividend is paid out in cash and received same day Security goes ex dividend
    EMV of the portfolio is USD 107 (Security MV 100 + Cash 7)
    Will this portfolio have generated 0% portfolio Returns?
    Will this security have generated 0% Equity Asset Class Returns?

    I would appreciate this clarification or how to adjust my calculation because I would be expecting 7% return for both. Many thanks.

    • Justin 29/12/2016 at 9:52 am #

      @Lawrence: You are correct that the portfolio returns (and the equity asset class returns) would be 0% (a 7% cash distribution is not the same thing as a 7% total return). If you are calculating the rate of return in Canadian dollars, you would also be required to make some currency adjustments.

  16. George 10/01/2017 at 12:22 am #

    Hi Justin,

    Just revisiting my previous question, I’ll give you an actual example account that I’m using to show you the issue I’m experiencing with this formula. To summarize, this particular security that the account held made extraordinary gains for a number of months, then dramatically dropped within a month. Chain-linking all these months together over inflated their final portfolio value after they sold out because all those previous months were basically “unrealised gains”.

    If you get a chance, are you able to work out the return on this portfolio using the information provided below? I’ve doubled check everything and I get a figure of 70%+ return, when in fact this account made just under 20%.

    In my calculation, I’ve calcualted performance on a monthly basis and chain-linked the months all together

    *Dates are in dd/mm/yyyy format

    1st buy: 13,600 units, price: $0.22 Total consideration: $2992 date: 9/3/2016
    2nd buy: 7,140 units, price: 0.4175, total consideration: $2980.95 date: 21/4/2016
    3rd buy: 6,500 units, price = $0.46 total consideration: $2990.00 date: 21/4/2016
    Sell all: 27,240 units, price $0.39, consideration: $10,623.60 date: 12/8/2016

    secuirty prices:
    9/3/2016: 0.2150
    31/3/2016: 0.2550
    1/4/2016: 0.2550
    21/4/2016: 0.4500
    2/5/2016: 0.3650
    31/5/2016: 0.4650
    1/6/2016: 0.5000
    30/6/2016: 0.4950
    1/7/2016: 0.5000
    29/7/2016: 0.4700
    1/8/2016: 0.4750
    12/8/2016: 0.4100

  17. George 17/01/2017 at 10:11 pm #

    Hi Justin,

    My previous post was probably too long for you to bother reading, but as I was saying in my previous post, the unrealised gains made month to month will be factored into the final % return when you liquidate your holdings using the time weighted. This will in effect skew the final percentage return as those gains/loss made during the period between when you bought and sold are no longer relevent.

    • Justin 18/01/2017 at 12:25 pm #

      @George: Your comment about “gains/loss made during the period between when you bought and sold are no longer relevant” is a bit confusing. Honestly, I’m unsure what you’re really asking or what you would like me to agree with.

  18. George 19/01/2017 at 5:48 pm #

    Hi Justin,

    I believe that I need to use money weighted average. What I’m trying to say is the formula doesn’t take into account the sizing of the contributions, so you might have made 10% on one particular month, and then you add a sizable amount to the portfolio, the 10% is still “chain-linked” to the following months gains/losses without taking into the sizing.

    If you go to page4, the scenario they’ve given, it’s exactly the same issue I’m getting where using the time weighted average, I’m getting a big percentage performance when in fact, a small amount was made.

    • Justin 21/01/2017 at 11:08 am #

      @George: If you chain-link monthly money-weighted rates of return (I call this the “linked money-weighted rate of return”) or monthly Modified Dietz rates of return (which is what I do with my online calculator), the overall return will start to approximate the time-weighted rate of return.

Leave a Reply