TradeAlmanac
Sign in

Dating Every Cash Flow: How to Measure Your Portfolio's Return Honestly

· 7 min · beginner

Automated material · TradeAlmanac editorial deskDraft prepared by a language model from our stored data; not reviewed by an editor.

166 views
Dating Every Cash Flow: How to Measure Your Portfolio's Return Honestly — Investing basics

An honest portfolio return is the result left over once the influence of your own deposits and withdrawals has been subtracted out. As long as you keep carrying money into the account, it grows on its own, and the difference between "what it is now" and "what it was then" measures your saving discipline rather than the quality of your investments. The way to separate the one from the other is to run a pair of distinct calculations. The money-weighted return — usually computed with the XIRR function in a spreadsheet — answers the question "how much did I personally earn, given when I actually brought money in?" The time-weighted return (TWR) answers a different question: "how much did the strategy itself earn, once the timing of deposits is taken out of the picture?" For a private investor, XIRR gives the baseline answer; TWR is what you need when you compare yourself to an index or to somebody else's result.

Why "now minus then" measures nothing

Picture an account you funded in January and then topped up by the same amount in December. By the end of the year the capital has grown — but nearly all of that increase came from the deposit, not from the market. Divide the end result by everything you put in and you get an understated figure: the late money simply never had time to work. Withdraw part of the funds after a good quarter and the same formula does the opposite, flattering the result.

The root of the problem is that money spends different amounts of time inside the account. Any honest calculation has to account not only for the size of each movement but for its date. This is exactly why your broker's app and your own spreadsheet so often disagree: the app frequently shows the appreciation of positions while quietly ignoring the schedule on which funds arrived.

Money-weighted return: XIRR

Pull together, in a spreadsheet, every movement of cash between you and the broker: each deposit with a minus sign, each withdrawal with a plus sign, the date beside it. As the final row, enter the current value of the portfolio with a plus sign and today's date — as though you had sold everything. The XIRR function returns the annualised rate at which these cash flows net out to zero.

That rate is your personal return. It captures what ordinary formulas lose: you entered the market unevenly, and the timing of those entries is part of your result. If you routinely added on drawdowns, XIRR will reward you for it; if you brought large sums in at the peaks, it will penalise you.

The calculation is only valid when nothing is missing from the flows. A forgotten transfer between two of your own accounts, or a dividend payout to a card that never got recorded, distorts the rate far more than any error in valuing the positions does.

Time-weighted return: TWR

TWR slices the history into segments at the dates of cash movements, computes the return of each segment separately, and multiplies them together. Deposits drop out of the calculation by construction — what remains is the pure work of the assets.

This is how professional managers report results, and it is the only quantity you can legitimately place next to an index: an index, after all, makes no deposits. If you want to know whether you beat the market, compare on a TWR basis — there is a detailed treatment in the piece on benchmarks, The benchmark: what to compare your result against honestly. If you want to know what actually happened to your money, look at XIRR. A gap between the two is not an error but information: it tells you whether your choice of moments to bring funds in helped you or hurt you.

What must go into the calculation

Total return is more than the revaluation of securities. Everything that changes the capital belongs in it:

  • Dividends and coupons. They arrive as cash and frequently fall out of a home-made calculation. The dates of upcoming payments are easiest to check against the payout calendar: {{dividend_calendar|limit=5}}. If payouts are reinvested — say, you use them to buy more {{instrument:SBER}} — that is an internal movement, not a deposit, and it does not belong among the XIRR flows.
  • Fees. Brokerage, custody, per-trade charges and account maintenance. They are debited from the account and therefore reduce your return automatically — provided you take the portfolio value from the broker's statement rather than adding up security prices by hand.
  • Tax. Withheld personal income tax is an expense just like a fee; the rules for determining the base are set by 13%. As long as the securities remain unsold the tax is deferred, so the pre-tax return of a long-term portfolio is higher than whatever survives after profits are realised. Compute both versions, and never confuse one for the other.
  • Currency revaluation. For a multi-currency portfolio the result depends on the currency in which you keep the books. Pick a base currency and do not change it.

Annualising, and the trap of short periods

XIRR produces an annualised percentage straight away. If you are computing a period return by hand, remember that a short stretch cannot be stretched linearly across a year: a good month multiplied by the number of months in a year becomes fiction. Correct annualising goes through an exponent, not a multiplication. And the shorter the period, the less meaningful the operation is in the first place: a Nominal return earned over a couple of weeks and then annualised describes randomness, not return.

The return you didn't notice: inflation

A nominal figure is not yet an answer. The real return is what remains once money has lost purchasing power; Real return can turn out negative even while the account balance climbs. The mechanics of the conversion are worked through in a separate piece: real return and inflation.

The bond portion of a portfolio deserves separate handling. Bonds have their own family of measures — Current yield, Simple yield to maturity, Bond total return — and not one of them equals the return of your portfolio. Substituting yield to maturity for your actual result is incorrect: it describes the scenario in which you hold to the end of the term. The differences are unpacked in the piece on bond return, and the instruments themselves live in the bonds section.

The order of operations

First, download from your broker the full cash-movement statement covering the whole period. Next, write out every deposit and every withdrawal with its date. Then add the current portfolio valuation as the closing flow. Compute XIRR. Finally, compare yourself to the benchmark on a TWR basis and convert the figure to a real return.

The easiest place to rehearse this procedure is somewhere a mistake costs nothing: a demo account and portfolios keep the same history of movements, only without the money. Terms met along the way are collected in the glossary.

What this calculation will not show you

Return says nothing about risk. Two portfolios with identical XIRR can differ so sharply in the depth of their drawdowns that you would have held one calmly and bailed out of the other at the worst possible moment. That is why the figure to watch beside return is the maximum drawdown — along with the question of where the result came from. The Dividend yield of an individual security is sometimes high precisely because its price has fallen; that trap is worth keeping in mind when you review your results.

And an honest caveat: there is no single accepted methodology for the private investor. Brokers calculate differently, and a discrepancy between your spreadsheet and the number in the app more often means a different methodology than an error. What matters is that your own method stays unchanged from one period to the next — only then does comparing yourself to yourself mean anything.

Related instruments

Share
Was this useful?
How this material was prepared

Draft prepared by a language model from our stored data; not reviewed by an editor.

Model: claude-opus-5

How we use language models

Similar articles