Tools › Investing › Saving and Planning › Personal Rate of Return


Personal Rate of Return

What did my account actually earn? Enter the opening and closing value of an account with their dates and paste the deposits and withdrawals in between; the page works out the gain in money and three rates of return step by step: the money-weighted return (the internal rate of return of the dated cash flows, the figure a spreadsheet calls XIRR), the time-weighted return when the account value at each deposit or withdrawal is given, and the Modified Dietz approximation, and it explains why they differ. Advanced mode adds the value the same deposits would have reached at a benchmark return and the effect of fees paid from outside the account. A calculator for education and analysis, not investment advice.

  • Gain in money: closing value less opening value less net deposits

  • Money-weighted return (XIRR) by a bracketed Newton solve with the trials tabulated, annualised on actual days / 365

  • Time-weighted return from the sub-periods between cash flows, linked and annualised

  • Modified Dietz approximation beside both, with its day weights

  • Chart of the account value against the money paid in; Advanced: a benchmark return and fees paid from outside the account

Personal Rate of Return


Unit System: /

/

Start of the Period (money in any one currency)



Deposits and Withdrawals


End of the Period



Advanced Options



×

Personal Rate of Return

Personal Rate of Return: How It Works

What it does

The page answers one question: what did an account actually earn between two dates, given that money was added or taken out along the way? It reports the gain in money and three rates of return. They answer slightly different questions, and seeing them side by side is the point of the tool. Every step is printed as formula, numbers put in, answer.

The method

Symbols. V0 is the account value at the end of the opening date and V1 at the end of the closing date. A cash flow Fk is money moved between you and the account on day tk (days counted from the opening date): a deposit is positive, a withdrawal negative. Dividends and interest that stay in the account are growth, not cash flows. T is the number of calendar days in the period. Time in years is days / 365 in every year (the actual / 365 convention of spreadsheet XIRR functions), so a leap year counts as 366 / 365 of a year.

Gain in money. Gain = V1 − V0 − Fnet, where Fnet is the sum of the cash flows. It is the change in value with your own money taken out.

Money-weighted return. The single yearly rate r at which the opening value and every cash flow, each growing for the time it was in the account, add up to the closing value:

V0 (1 + r)T / 365 + Σ Fk (1 + r)(T − tk) / 365 = V1

This is the internal rate of return of the dated cash flows (XIRR). r cannot be isolated, so the page finds it by trial: it first scans rates from −99.9 % to +10,000 % a year for the places where the left side crosses V1, then refines the crossing by Newton's method (each trial follows the slope toward the answer), never leaving the two rates known to lie on either side of it. The trials are tabulated. The performance standards define this return as one "that reflects the change in value and the timing and size of external cash flows".

Time-weighted return. The period is cut at each cash flow. In sub-period i no money moves, so its return is

Ri = Vb,i / Va,i − 1

with Va,i the value at its start (just after the previous flow) and Vb,i the value at its end (just before the next flow). The sub-period returns are linked by multiplying:

1 + R = (1 + R1) (1 + R2) … (1 + Rn)

Each sub-period counts the same whatever amount was invested in it, which is why the standards say this method "negates the effects of external cash flows". It needs the account value at every flow date; the page asks for the value just before the money moved.

Modified Dietz. An approximation that needs neither trials nor interim values. The gain is divided by the money at work on average, each cash flow weighted by the share of the period it was in the account (flows taken at the end of their day):

RMD = (V1 − V0 − Fnet) / (V0 + Σ wk Fk),   wk = (T − tk) / T

Per year. A return R over the whole period becomes a yearly rate by r = (1 + R)365 / T − 1. The money-weighted r is already yearly; its return over the period is (1 + r)T / 365 − 1.

Benchmark (Advanced). The value the same cash flows would have reached at a constant yearly rate rbm is the left side of the money-weighted equation with rbm in place of r. The money-weighted return is therefore the benchmark rate at which the account and the benchmark would end level.

Fees paid from outside (Advanced). A fee taken from the account is already in its value. A fee paid from other money is added to the cash flows as a deposit on its date, with the account values unchanged, and the money-weighted return is solved again.

What it assumes

  • The opening and closing values are complete and at market value, and every deposit and withdrawal in between is listed. A missing deposit shows up as gain.
  • Cash flows happen at the end of their day; several on one day are added together. A value entered on a row is the value before that day's flow.
  • Years are actual days / 365. Other conventions (actual / actual, 365.25) change a yearly rate in the second decimal at most.
  • The benchmark grows at one constant rate. A real index does not, so the comparison is approximate when cash flows are large.
  • Taxes are ignored, and so is inflation: these are nominal returns.

When it misleads

  • Comparing the wrong pair. A fund's published return is time-weighted. Setting your money-weighted return beside it mixes the fund's result with your timing. Compare time-weighted with time-weighted, or use the benchmark option, which gives the benchmark your cash flows.
  • Annualising a short period. A yearly rate from a few months assumes the same pace for a whole year. The performance standards forbid firms to annualise periods under one year; the page shows the figure with that warning and leads with the return over the period.
  • More than one answer. When large withdrawals and deposits alternate, several rates can satisfy the money-weighted equation, or none. The page says so when it happens; the figure then means little.
  • Modified Dietz over a long period with large flows. It is accurate when flows are small against the account or returns are steady. In the standards it is used on short periods (a month) that are then linked. Over one long period it tracks the money-weighted return, not the time-weighted one.
  • Interim values that are not at the flow. A value taken a few days before or after the cash flow, in a volatile market, moves return from one sub-period to the next and distorts the time-weighted figure.
  • A return is not a judgment. A low money-weighted return beside a high time-weighted one describes when money happened to be in the account. It does not show that the timing could have been known in advance.

Worked example

The default case, an illustrative account (made-up values, not market data). Opening value 10,000 on 2023-12-31. Deposit 2,000 on 2024-06-28 when the account stood at 11,200; deposit 30,000 on 2024-12-31 at 14,520; withdrawal 5,000 on 2025-06-30 at 38,733. Closing value 36,094 on 2025-12-31. T = 731 days (2024 has a 29 February) = 2.0027 years.

Gain. Fnet = 2,000 + 30,000 − 5,000 = 27,000. Gain = 36,094 − 10,000 − 27,000 = −906.

Time-weighted. Sub-periods: 11,200 / 10,000 − 1 = +12.00 %; 14,520 / 13,200 − 1 = +10.00 %; 38,733 / 44,520 − 1 = −13.00 %; 36,094 / 33,733 − 1 = +7.00 %. Linked: 1.12 × 1.10 × 0.87 × 1.07 = 1.1469, a return of +14.69 % over the period, or 1.1469365 / 731 − 1 = +7.08 % a year.

Modified Dietz. The flows were made 180, 366 and 547 days in, so w = 551 / 731 = 0.7538, 365 / 731 = 0.4993 and 184 / 731 = 0.2517. Σ w F = 1,507.52 + 14,979.48 − 1,258.55 = 15,228.45. RMD = −906 / (10,000 + 15,228.45) = −3.59 % over the period, −1.81 % a year.

Money-weighted. Starting from −1.8096 % a year, the left side of the equation is 36,089.45, short by 4.55; the next trial, −1.8005 %, gives 36,094.00. So r = −1.80 % a year (−3.57 % over the period).

Reading it. The investments returned +7.08 % a year, yet the account lost money, −1.80 % a year on the money in it. The largest deposit arrived just before the one sub-period that fell 13 %, so most of the money was present for the fall and little of it for the two gains before. Both numbers are correct; they answer different questions.

In Advanced mode, the same cash flows at a constant 7 % a year would have reached 11,451.12 + 2,215.07 + 32,100.00 − 5,173.48 = 40,592.71, which is 4,498.71 more than the account's 36,094. Fees of 150 and 400 paid from outside lower the gain to −1,456 and the money-weighted return to −2.89 % a year.

A calculator for education and analysis, not investment advice.




References

CFA Institute (2019). Global Investment Performance Standards (GIPS) for Firms 2020. CFA Institute, Charlottesville, VA.

CFA Institute (2010). GIPS Guidance Statement on Calculation Methodology. CFA Institute, Charlottesville, VA.

Dietz, P. O. (1966). Pension Funds: Measuring Investment Performance. Free Press, New York.

Worked Examples

Published examples this tool reproduces; each page lists the inputs to enter and the printed answers.

All worked examples


DISCLAIMER: The methods and calculation on aNOWysis.com are provided as means to educate the reader. There is no warranty, expessed or implied, as to the relevance or accuracy of the methods or calculations. All calculations should be checked by a qualified analyst for appropriateness and accuracy. We will not be held liable for any damages, injuries or deaths caused by using methods or calculations from this site.