The return the professionals use when there's no valuation at every flow.
A day-weighted Modified Dietz return — fully hand-checkable, and honest about how close it is to a true time-weighted return.
Once money moves in and out partway through a period, a plain (end − start) ÷ start stops meaning anything — it can't tell growth apart from deposits. The textbook fix is a valuation on the day of every cash flow, which most of us simply don't have. Modified Dietz is the practical answer: it weights each contribution and withdrawal by the slice of the period it was actually invested, so you get a defensible return from just an opening value, a closing value and your dated flows.
It's the building block of institutional time-weighted reporting and is permitted under the GIPS standards — but it's an approximation, and its quality is conditional. This calculator shows you the answer, lays out every intermediate number so you can reproduce it by hand, and tells you whether your inputs land it close to a true time-weighted return or well off it. Everything runs in your browser and never leaves this page.
A return that weights money by the time it was invested
The Modified Dietz method answers a practical problem. A true time-weighted return needs the portfolio's value on the day of every cash flow, so the period can be cut cleanly at each one. Outside an institution, you almost never have those interim valuations. Modified Dietz gives you a defensible single-period return without them, by weighting each flow for the fraction of the period it was actually invested.
R = (EMV − BMV − C) ÷ (BMV + Σ wᵢ·Cᵢ)
Reading the formula term by term: BMV is the beginning market value, EMV the ending market value. C is the net external cash flow over the period — every contribution (positive) and withdrawal (negative) added up. The numerator EMV − BMV − C is therefore the money the investment actually made: the growth in value once you strip out the cash you put in or took out.
The denominator is the clever part. Each flow gets a day-weight wᵢ = (TD − tᵢ) ÷ TD, where TD is the total days in the period and tᵢ is the number of days from the start to flow i. A contribution made on day one is invested almost the whole period, so its weight is close to 1; one made near the end barely counts. BMV + Σ wᵢ·Cᵢ is then the average capital employed — roughly, how much money was at work, on average, across the period. The return is simply the money made divided by the money at work.
wᵢ = (TD − tᵢ) ÷ TD (end-of-day) · wᵢ = (TD − tᵢ + 1) ÷ TD (start-of-day)
The two conventions differ only in whether a flow earns the day it lands. End-of-day is the common default; the difference is tiny in practice, but a serious tool should let you pick one and then state which it used — which this calculator does, locking the convention into the result.
Worked example (the figure this tool reproduces)
Start R500 000 on 28 Feb. Pay in R10 000 on the 1st of each month; in August a R200 000 bonus lands (just before a strong second half); in November you withdraw R80 000. Close at R897 014 a year later.
Net flow C = +310 000 − 80 000 = +R230 000
Weighted flow Σ wᵢ·Cᵢ = R150 603
Average capital = 500 000 + 150 603 = R650 603
Modified Dietz = (897 014 − 500 000 − 230 000) ÷ 650 603 = 167 014 ÷ 650 603 = 25.6707%
For context, a true time-weighted return on the same year is 19.43%, and the money-weighted XIRR is 25.90%. Notice the single-period Modified Dietz (25.67%) sits right next to the personal XIRR and well above the true time-weighted figure — that's the method's known behaviour over one long period with a big, well-timed flow, and exactly why the quality indicator below matters.
Its two jobs: TWR building block, or money-weighted-ish proxy
Modified Dietz wears two hats. Computed over each short sub-period — month by month, or between large flows — and then geometrically linked, it builds a return that is classed as time-weighted: this is how professional, GIPS-compliant performance is assembled in the real world. Run instead over a single long period, as in the example above, it bakes in the average capital employed and so drifts toward the money-weighted answer — it starts to reflect your timing, not just the investment. Same formula, two jobs. Which one you're getting depends entirely on how finely you chop the period.
When the approximation is good — and when it isn't
Because Modified Dietz uses a straight-line, simple-interest weighting, it tracks a true time-weighted return closely when two conditions hold: cash flows are small relative to the portfolio, and intra-period returns are low (calm markets, or short sub-periods). It diverges — sometimes dramatically — when a large flow coincides with a large market move. Two illustrations make the range vivid:
Good case — a small flow (+R10k on R100k) in a calm market (+2% then +3%): true TWR is 5.0600% and Modified Dietz is 5.1048%, a difference of just 0.0448 pp.
Poor case — a large flow (+R100k on R100k) in a volatile market (−20% then +30%): true TWR is 4.0000% but Modified Dietz reads 22.6667%, a difference of 18.6667 pp.
In the good case the two methods are within five-hundredths of a point — Modified Dietz is, for all practical purposes, exact. In the poor case a portfolio-doubling flow landing amid big swings throws the single-period figure out by more than eighteen points. That's not a flaw in the method; it's the method honestly telling you that a single-period approximation can't survive a large flow against a volatile market. The fix is to chop the period more finely (link sub-periods), or supply valuations so a true time-weighted return can be computed — which is what the optional "value before flow" column lets this calculator do.
The edge case the formula can't survive
The denominator — average capital — can in principle go to zero or negative if a large withdrawal lands early in the period. When it does, the formula produces a number that looks like a return but is meaningless (you'd be dividing the money made by roughly no capital at work). A responsible calculator refuses to print that figure and explains why, rather than handing you a confident-looking absurdity. This one does.
Common questions
After reading this section, if you still have questions, feel free to contact us however you want.
What is the Modified Dietz method, in one sentence?
It's a return that weights each cash flow by the fraction of the period it was invested, so you can compute a defensible figure from just an opening value, a closing value and your dated flows — without needing a portfolio valuation on every flow date.
How accurate is it compared with a true time-weighted return?
Very close when flows are small relative to the portfolio and markets are calm — often a fraction of a percentage point. It can diverge sharply when a large flow coincides with a big market move; on a deliberately adverse example, a single-period Modified Dietz overstated the true time-weighted return by about 18.7 points. The calculator tells you which case you're in.
Should I enter a fund switch or a reinvested dividend as a flow?
No. Only money that actually crossed your account boundary counts. Selling one fund to buy another, or a dividend reinvested inside the account, moves nothing in or out — entering it would corrupt the net-flow figure and the average-capital denominator and distort the return.
End of day or start of day — which convention should I use?
For most personal calculations the difference is negligible. End-of-day is the common default and is what this tool uses unless you switch it. What matters is stating which you used and being consistent — the calculator locks the chosen convention into your result.
Do my numbers leave my computer?
No. Every calculation runs in your browser. Nothing is uploaded, stored, or sent to a server — which also keeps it clean under POPIA.