TWR (Time-Weighted Return)
The return your trading actually produced, with the effect of deposits and withdrawals stripped out.
Formula
More Details
What is TWR?
Time-Weighted Return answers one question that no other return metric answers cleanly: how well did you actually trade, ignoring how much money you moved in and out?
Say you start with $10,000 and make $2,000. That is a 20% return. Now you deposit another $50,000 and make another $2,000. Your total profit is $4,000 on $60,000 of deposits, which looks like a 6.7% return - but you did not get worse at trading. You just added capital that had less time to work.
TWR fixes this. It breaks your history into sub-periods at every deposit and withdrawal, measures the return inside each one, and compounds them together. The size and timing of your cash flows drop out completely.
Formula
TWR = [(1 + r1) x (1 + r2) x ... x (1 + rn)] - 1
Where each sub-period return is:
r = PnL during the period / account equity at the start of the period
TradesViz uses one sub-period per day. Deposits and withdrawals are treated as landing at the start of their day, since money deposited on a given day is available to trade that day.
TWR vs CAGR vs Total Return
| Metric | What it measures | Distorted by deposits? |
|---|---|---|
| Total Return | Raw profit over starting capital | Yes, badly |
| CAGR | Annualized growth of account value | Yes, mid-period deposits skew it |
| TWR | Return earned per dollar, per unit of time | No, that is the entire point |
TWR is a cumulative figure for the date range you have selected, not an annualized one. CAGR is the annualized number. Use them together: TWR tells you how good the trading was, CAGR tells you how fast the account is compounding.
This is the same metric fund managers are required to report, precisely because a manager cannot control when clients add or pull money.
A Practical Example
| Period | Start equity | Cash flow | PnL | Sub-period return |
|---|---|---|---|---|
| Month 1 | $10,000 | - | +$2,000 | +20.0% |
| Month 2 | $12,000 | +$50,000 deposit | +$2,000 | +3.2% |
Naive total return: $4,000 profit on $60,000 deposited = 6.7%
TWR = (1.20 x 1.032) - 1 = 23.8%
The naive number makes it look like a mediocre stretch. TWR shows the trading was strong in both months, and that the large deposit simply arrived late.
When TWR Is Most Useful
- You fund your account in stages. Adding capital as you gain confidence is common and it wrecks simple return math.
- You withdraw profits regularly. Taking money out shrinks the base and inflates later percentage returns.
- You are comparing yourself to a benchmark. Index returns are time-weighted, so TWR is the apples-to-apples comparison.
- You have auto-sync enabled. Broker sync records real dated transfers, so your TWR is built on accurate cash-flow dates with no manual work.
Prerequisites
TWR needs your deposits and withdrawals recorded in Summary > Money Transactions. Without them, TradesViz has no equity base to compute sub-period returns against and TWR shows N/A.
If you connect a broker via auto-sync, transfers are imported automatically. Otherwise add them manually:
- Go to Summary > Money Transactions
- Click "Add Transaction"
- Enter your initial deposit with its real date
- Add each later deposit or withdrawal, dated correctly
Dates matter more than they do for CAGR. TWR is built from the timing of your cash flows, so a deposit recorded on the wrong date moves the result.
Limitations
- Realized PnL basis: TradesViz builds the equity curve from closed trades, so open positions are not marked to market. Your TWR will differ slightly from a broker statement that revalues open positions daily.
- Needs recorded transactions: No money transactions means no TWR.
- Little benefit with a single deposit: If you funded once and never moved money again, TWR will be very close to your simple return. The metric earns its keep when there are multiple flows.
- Daily granularity: Sub-periods are days, not intraday. A deposit and a large trade on the same day are not ordered within that day.
- Total loss is absorbing: If a sub-period wipes out account equity, TWR reports -100%.
How TradesViz Calculates It
TradesViz determines your account equity at the start of the selected window (deposits minus withdrawals recorded before it, plus PnL already realized by then), then walks forward one day at a time. Each day's cash flows are applied first, then that day's realized PnL produces a sub-period return against the resulting equity. Days where the account held no capital are skipped, since a return on zero equity is undefined. The daily factors are compounded and 1 is subtracted to give the period TWR.
How TradesViz Does It Better
- Automatic cash flows: Broker auto-sync imports real dated transfers, so no manual bookkeeping
- Multi-currency safe: Transactions are converted to your base currency before the chain is built
- Filter-aware: Compute TWR for specific accounts or date ranges
- Sits beside CAGR, Sharpe and Sortino: Growth rate, risk-adjusted return, and flow-neutral return in one view
- Custom dashboard widget: Track TWR at a glance under Misc Stats
Where to find it in TradesViz
Example
A trader who made 20% on $10,000, then deposited $50,000 and made 3.2% more, has a TWR of 23.8% even though the naive return reads 6.7%.