15 May 2026
TWR isn't one number: why your YTD and five-year returns don't line up
Photo: William Warby / Unsplash
You look at your dashboard: up 9 percent year to date, up 74 percent over five years, up 12 percent last month. Then you try to make those numbers agree with each other and they refuse. That's not a bug. It's how returns work, and understanding it will stop you from mistrusting perfectly correct figures.
If you're new to time-weighted return itself, start with true TWR vs MWR. This piece is about a subtler trap: comparing TWR figures across different windows.
Returns chain, they don't add
Time-weighted return works by slicing your history at every cash flow (every deposit or withdrawal), measuring the pure investment return of each slice, and then multiplying those slices together. Multiplying, not adding.
Two months of +10 percent and then -10 percent don't cancel to zero. They chain: 1.10 times 0.90 equals 0.99, so you're down about 1 percent. This is just compounding, and it's why you can never sanity-check a multi-period return by adding up the pieces in your head. A year that's +50 percent then -50 percent leaves you down 25 percent, not flat.
Why the windows can't be reconciled by eye
Your YTD number covers January to today. Your one-year number covers a rolling twelve months that started last summer. Your five-year number starts half a decade ago. These windows overlap and start at different points, each anchored to a different beginning value.
So a strong month can lift your YTD sharply while barely moving your five-year figure, because in the five-year chain that month is one link among sixty. A brutal year that's now rolling out of the trailing-twelve-month window can make your one-year number jump even though nothing good happened recently, the bad period simply left the frame. None of these numbers is wrong. They're answers to different questions: "how am I doing this calendar year," "over the last twelve months," "over five years." Expecting them to reconcile is like expecting your speed over the last mile to match your average speed for the whole trip.
The practical takeaways
- Never add or average period returns. Chain them (multiply the growth factors) or let the tool do it.
- Always know the window. A return with no date range attached is close to meaningless.
- A single percentage hides the path. +30 percent over a year could be a smooth climb or a terrifying round trip. The number is the same; the experience, and the risk, are not.
What Cresori does
Cresori computes time-weighted return by properly chaining sub-period returns across every cash flow, for any window you choose, and shows the periods side by side so you can see how each one is built rather than trusting a lone figure. Because it chains correctly, your monthly, YTD, and multi-year numbers are internally consistent even when they look like they shouldn't be, and you can drill into any range to see the path behind the percentage.
More from Learn
29 Jun 2026
Talking to Interactive Brokers from Python: the API, the libraries, and how to actually use it
A practical map of the IBKR API: which Python library to use in 2026 (and which to avoid), with a working example to pull positions and price history.
22 Jun 2026
The Wheel, explained: covered calls, cash-secured puts, and where the risk hides
The wheel is an income strategy that sells options for premium instead of buying them. Simpler than it sounds, and the risk isn't where beginners think.
15 Jun 2026
Is your dividend income sustainable? Payout, debt, and the yield trap
A high yield is often a dividend cut the market already priced in. Three checks, payout ratio, balance sheet, and the yield itself, spot durable income.