Skip to content
TraderCalcs.io

Money-Weighted Return Calculator

Find the internal rate of return that accounts for when money was added and withdrawn, not just how it performed.

A money-weighted return — the dollar-weighted return in American usage — is the internal rate of return of an account's own cash flows, and this money-weighted return calculator finds it: the single constant rate at which every deposit, compounded over the days it was genuinely in the account, arrives exactly at the closing value. Because each amount is weighted by both its size and the time it spent invested, a large sum added late counts for far less than the same sum added at the outset — which is precisely the sensitivity a time-weighted return is built to discard.

Formula: solves for the rate where the net present value of every cash flow is zero

Your figures

Cash flows

One row per movement of money. Deposits positive, withdrawals negative, and the day counted from 0 at the start of the record.

Cash flow 1
Cash flow 2
Cash flow 3
Cash flow 4

What the account was worth on the day the record closed. If you closed the account out entirely, enter the closing balance here or the final withdrawal above — not both.

Optional — counted from 0 like the flows above. Defaults to the day of the last cash flow.

The basis the day numbers are annualised against. Whichever you choose, count the days the same way.

Results

Money-weighted return

+10.00%

a year, over a record of 365 days

Return over the whole recordThe rate above compounded over 1.000 years.
+10.00%
Cash gainThe value at the end plus everything taken out, less everything paid in. A cash figure with no account of timing, which is the part the rate adds.
+US$1,200.00
Total paid in
US$15,000.00
Total taken out
US$1,000.00
Net investedPaid in less taken out — the money still in at the end, before any gain.
+US$14,000.00
Cash flows countedBlank rows are ignored.
4
Length of the recordOn a 365-day year.
365 days · 1.000 years
Residual at the rate foundThe rate is the one that values every flow at zero, so this is what is left over. A residual materially away from zero would mean the search had not settled.
US$0.00 after 43 steps

What this means

The rate reported is the one that carries every cash flow forward over the days it was actually invested and lands on the US$15,200.00 closing value exactly: +10.00% a year, which is +10.00% over the 365 days of the record. Because each deposit is compounded only over the days it was in the account, a large one made late carries far less weight than the same amount at the start. That sensitivity to size and timing is exactly what a time-weighted return strips out, which is why the two figures disagree on the same account — the +US$1,200.00 of cash gain is the same under either, and only the rate attached to it differs.

  • Deposits are entered positive, withdrawals negative, and day 0 is the start of the record. A sign the wrong way round is the usual cause of a rate that looks absurd, or of no rate being found at all.
  • Where the flows change sign more than once, the net present value can cross zero at more than one rate and more than one answer is valid. The residual is reported so the rate found can be checked rather than taken on trust.
  • Annualised on a 365-day year, which is the basis chosen above rather than anything derived from the dates. A short record annualises into a large number either way: the shorter it is, the less the yearly rate describes.
  • This is the return on the money that was actually at work, not the return of the strategy that was running. For the second, which ignores when money arrived, use a time-weighted return.
  • Every valuation, cash flow and observation here is one you enter. Nothing is fetched and no benchmark, index level or rate is assumed, so the answer is only as good as the record it was copied from.

Money-weighted return: +10.00%

The link reopens this calculator with the same numbers. Nothing you enter is sent to a server.

About the Money-Weighted Return calculation

The inputs are the movements of money and nothing else. Enter each one as an amount and a day number counted from zero at the start of the record, deposits positive and withdrawals negative, then the value the account closed at and the day it was measured. The days-per-year basis is yours to choose — 365 calendar days, 360 on a bank basis, or 252 trading sessions — because it is a convention rather than a fact, and the same flows annualise to visibly different rates under each.

The figure that comes out is what the money earned, which is not always what the strategy returned. An investor who put a modest sum into a fund during its best stretch and a much larger one in just before its worst has a money-weighted return well below the fund's published number, and that gap is real rather than an artefact. It is the arithmetic consequence of when the money was there, and no amount of good management on the manager's part removes it.

There is no closed-form solution once there are more than a handful of flows, so the rate is found numerically by bisection and the leftover net present value is reported alongside it. That residual is the check: the rate reported is by definition the one that values everything at zero, so a residual sitting anywhere other than at zero would mean the search had not settled and the figure above it should not be relied on.

Money-Weighted Return formula

t_i = day_i ÷ days per year
T   = final day ÷ days per year

NPV(r) = final value × (1 + r)^(−T)
         − Σ amount_i × (1 + r)^(−t_i)

money-weighted return = the r at which NPV(r) = 0

return over the whole record = (1 + r)^T − 1
cash gain = final value + withdrawals − deposits
r
The annualised rate being solved for — the money-weighted return itself.
amount_i
A single movement of money: positive paid in, negative taken out.
t_i
How far into the record that movement happened, expressed in years.
T
The length of the whole record in years, from day zero to the closing valuation.
NPV(r)
Everything discounted back to the start at rate r. Zero means the rate exactly accounts for the record.

The equation says that at the correct rate the deposits and the closing value are worth the same amount today. Each deposit is dragged back to day zero by dividing out the growth it would have earned over the time it was invested, and the closing value is dragged back the same way; the rate that makes the two sides meet is the rate the account actually compounded at. Compounding every flow forwards to the closing date instead gives the identical answer — the equation is simply written in the more conventional direction.

Bisection is used rather than a faster method because it cannot fail in a way the reader would not notice. It needs only a sign change to start, halves its bracket on every step regardless of what the curve does inside it, and converges from a bracket running from −99% a year up to 1,000,000% a year. That upper bound looks absurd and is deliberate: a 10% gain over a week annualises into a four-figure rate, and a search that stopped at anything sensible would reject perfectly real short records.

Where every flow has the same sign until the closing valuation, the net present value crosses zero exactly once and the answer is unique. Where money goes in and out repeatedly the sign changes more than once, the curve can cross zero more than once, and more than one rate genuinely satisfies the equation. The calculator returns the crossing its bracket converges on and reports the residual so that answer can be checked, but it cannot tell you that a second one exists.

The days-per-year basis is asked because it changes the answer without changing a single figure entered. Day numbers are converted to years by dividing by whichever basis is chosen, so the same flows measured over the same calendar span annualise differently on a 365-day year than on a 252-day one. The rule is consistency: count the days the same way the divisor does, or the two halves of the calculation describe different calendars.

Money-Weighted Return: a worked example

An account opened with $10,000 on day 0, topped up by $2,500 on day 90 and $2,500 on day 270, with $1,000 taken out on day 180, worth $15,200 on day 365.

  1. Days as fractions of a year0 ÷ 365 = 0.0000, 90 ÷ 365 = 0.2466, 180 ÷ 365 = 0.4932, 270 ÷ 365 = 0.7397, 365 ÷ 365 = 1.0000
  2. $10,000 discounted10,000 × 1.100048^−0.0000 = $10,000.00
  3. $2,500 on day 90 discounted2,500 × 1.100048^−0.2466 = $2,441.91
  4. −$1,000 on day 180 discounted−1,000 × 1.100048^−0.4932 = −$954.06
  5. $2,500 on day 270 discounted2,500 × 1.100048^−0.7397 = $2,329.74
  6. Net flows, discounted10,000.00 + 2,441.91 − 954.06 + 2,329.74 = $13,817.58
  7. Closing value discounted15,200 × 1.100048^−1.0000 = $13,817.58
  8. Rate that makes the two equalr = +10.00% a year, leaving a residual of $0.00

+10.00% a year, and the same over the whole record because the record is exactly one year long. The cash gain is $15,200 + $1,000 − $15,000 = $1,200, which measured against the $14,000 net invested looks like 8.57%. The money-weighted rate is higher because the two top-ups were only present for part of the year, so the average capital genuinely at work was well below $14,000.

How to use the Money-Weighted Return calculator

  1. Fix day 0 at the start of the record and count every other day forward from it. The day numbers only have to be consistent with each other, so any start date works as long as everything is measured against it.
  2. Enter the opening balance as a deposit on day 0. Money has to be shown going in before there is a rate to earn on it, and omitting the opening balance is the most common reason a record cannot be solved.
  3. Enter each later movement as an amount and a day, deposits positive and withdrawals negative. Several movements on the same day can be netted into one row or entered as separate rows on the same day — the arithmetic treats them identically.
  4. Enter the value the account closed at and, if it differs from the last cash flow, the day it was measured. If you emptied the account at the end, enter that balance either as the closing value or as a final withdrawal, never as both.
  5. Choose the days-per-year basis and count your day numbers on the same footing. Calendar days against a 365-day year is the usual pairing for an investment account.
  6. Check the residual before reading the rate, and compare the result against the cash gain shown beside it. A rate that looks impossible next to a small cash gain almost always means a sign or a day number is wrong.

Limitations of the Money-Weighted Return calculator

Every calculation makes assumptions. These are the ones that matter here.

  • Where the flows change sign more than once, several rates can satisfy the equation and only one is returned. The residual confirms the rate found is a solution; it cannot tell you whether it is the only one.
  • Annualising a short record magnifies it enormously. A 3% gain over 30 days annualises to roughly 43% a year, and that figure is arithmetic rather than evidence about anything that follows.
  • Day numbers are whole days, so anything that happened intraday is placed at the start of its day. On a record measured in months this is invisible; on one measured in days it is not.
  • The rate is a single constant summarising the whole record. The account did not actually compound smoothly at it, and the figure says nothing about the path taken to get there or about the falls along the way.
  • Fees, tax and interest only affect the result to the extent they show up in the closing value or as entered withdrawals. Costs settled outside the account are invisible to the calculation.
  • It measures the money, not the strategy running it. A poor figure here on a good strategy is a statement about deposit timing, and the time-weighted return is where that separation is made.

Frequently asked questions about Money-Weighted Return

MWR vs TWR — how is this different from a time-weighted return?

A time-weighted return removes the effect of when money arrived and describes the strategy; this keeps that effect in and describes what the investor earned. Run the same account through both and the cash gain is identical under either — only the rate attached to it differs, and the size of that difference is a measure of how much the timing of deposits helped or hurt.

Can I use this as an IRR calculator for investment cash flows?

Yes — it is an internal rate of return calculator working on a dated series of flows and reporting the rate annualised, which is what a spreadsheet's XIRR function computes; plain IRR usually assumes evenly spaced periods instead. Small differences against a spreadsheet normally come down to the day-count basis, since XIRR fixes a 365-day year while this lets you choose.

Why does the calculator say no rate can be found?

Because the net present value has the same sign at both ends of the search, so there is no crossing to converge on. In practice this nearly always means a sign is reversed — a deposit entered negative, or a withdrawal entered positive — or that the opening balance was left out entirely, leaving no money going in for a return to be earned on.

What does the residual at the rate found mean?

It is the net present value left over once the solved rate is substituted back in. The definition of the answer is that this comes to zero, so a figure indistinguishable from zero means the search converged; anything materially away from zero would mean it had not, and the rate above it should be treated as unreliable rather than approximate.

Should the opening balance be entered as a cash flow?

Yes, as a deposit on day 0. The calculation has no concept of a balance that was already there — it only knows about money entering and leaving — so an opening balance is modelled as a payment in at the start of the record. Leaving it out makes the record unsolvable or, worse, solvable at a wildly wrong rate.

Why is my annualised return so much larger than my cash gain suggests?

Almost always because the record is short. Annualising asks what rate would produce that result if it repeated for a full year, and over a few weeks that question has an extreme answer by construction. The return over the whole record, shown directly beneath the annualised figure, is the one that describes what actually happened.

Last reviewed . See our methodology and editorial policy.

More performance calculators