Time-Weighted Return
Time-Weighted Return (TWR) is a return measure that breaks the reporting period into sub-periods at every external cash flow, computes a per-sub-period return, and geometrically links them. The result is the return a hypothetical $1 invested at the start would have earned, independent of when contributions or withdrawals occurred.
TWR exists because money-weighted return (IRR) commingles two different things — what the investments did and what the investor did with their cash flows. A manager whose portfolio earned 10% in a year despite the client withdrawing $100,000 mid-year deserves the same performance number as a manager whose portfolio earned 10% with no withdrawals; otherwise, every benchmark comparison becomes a comparison of cash-flow timing. TWR isolates the investment performance by re-pricing the portfolio at each cash flow and treating each segment between flows as its own period.
The canonical computation is: at each cash flow, mark the portfolio to market, divide by the previous-period ending value to get a sub-period return factor, then chain the factors. For a year with no cash flows, TWR equals the simple total return. For a year with three deposits, TWR is the geometrically-linked return of the four sub-periods between flows. The math is straightforward; the implementation difficulty is in the data — a TWR computation needs the portfolio's mark-to-market value on the date of every external cash flow, and synthetic data that doesn't include these intra-period valuations cannot exercise the TWR engine.
TWR is the GIPS-mandated return measure for performance reporting precisely because it produces an apples-to-apples comparison across managers and across periods. A platform that wants to certify against GIPS has to compute TWR correctly, which means handling the same edge cases that production wealth-tech platforms struggle with: same-day cash flows (which need a sub-day or transaction-level convention), partial-period valuations on illiquid assets, and the linking residual when daily TWR is rolled up to monthly or annual.
TWR = ∏ᵢ (Vᵢ / Vᵢ₋₁) − 1- Vᵢ
- = portfolio value at end of sub-period i (after any cash flow at i)
- Vᵢ₋₁
- = portfolio value at start of sub-period i (after any cash flow at i−1)
Three sub-periods with return factors 1.04, 0.97, 1.06. TWR = 1.04 × 0.97 × 1.06 - 1 = 6.94%.TWR computation needs a portfolio valuation on the date of every external cash flow. Synthetic datasets that produce only end-of-month snapshots cannot exercise the TWR engine on any household with mid-month deposits or withdrawals. Realistic test data needs cash-flow-anchored valuations: a deposit on the 14th produces a snapshot on the 14th, not just the 30th. Our 96-month longitudinal generation produces month-end snapshots by default; cash-flow-anchored sub-snapshots are available in the institutional bundles where TWR testing is the use case.
Common pitfalls
- Treating same-day cash flows as a single net flow when computing the sub-period factor — produces small but compounding errors in daily TWR.
- Using the previous-day's closing value instead of the cash-flow-day opening value as the denominator for the sub-period return factor.
- Ignoring the fee accrual: a fee charged at the end of the period should reduce the period's TWR; a fee charged at the start changes the denominator.
- Reporting TWR alongside an IRR-based 'rate of return' from the planning side without disclosing the difference — produces confused clients.
Examples
Portfolio starts the year at $100,000. On June 1, client deposits $50,000; portfolio is $108,000 just before the deposit, $158,000 just after. End of year, portfolio is $172,000. Sub-period 1 return factor: 108,000 / 100,000 = 1.080. Sub-period 2 return factor: 172,000 / 158,000 = 1.0886. TWR = 1.080 × 1.0886 - 1 = 17.6%. (The simple-return calculation would give (172,000 − 100,000 − 50,000) / 100,000 = 22%, which conflates the manager's performance with the client's good timing.)