How to Calculate Portfolio Return: TWR, XIRR and Examples
Calculate portfolio return correctly in 2026: simple return, time-weighted (TWR) and money-weighted (XIRR), deposits, dividends, fees and FX, with examples.
· 6 min read
Contents
You cannot get an honest portfolio return from "value now ÷ money in − 1" once you have added or withdrawn money. There are two correct methods: time-weighted return (TWR) measures how well your investments performed, and money-weighted return (XIRR) measures what you personally earned, given when you put money in. Below we run both on the same example, then cover dividends, fees and the euro/dollar rate.
Simple return and why it misleads
For a period with no deposits or withdrawals, simple return is:
return = (end value − start value) / start value
Invest €10,000, a year later it is worth €11,000: a 10% return. As long as no money moves in or out, that is enough.
Trouble starts with the first deposit. If you add €10,000 mid-year and end at €21,000, a "110% gain" means nothing: most of it is your own new money. So people often use "profit ÷ total contributed". Better, but still off: money added in December worked for a month, money added in January worked all year, and the formula treats them the same.
One example, three answers
Take one year and see what each method says.
| Date | Event | Portfolio value |
|---|---|---|
| 1 January | Deposit €10,000 | €10,000 |
| 30 June | Market up 20% | €12,000 |
| 1 July | Deposit another €10,000 | €22,000 |
| 31 December | Market down 10% | €19,800 |
You contributed €20,000 and ended with €19,800. The results:
| Method | Result | What it tells you |
|---|---|---|
| Profit ÷ contributed | −1.0% | the money outcome: −€200 |
| TWR | +8.0% | how the investments themselves did |
| XIRR | ≈ −1.3% a year | your personal result, given the timing of deposits |
All three numbers are right. They answer different questions.
Time-weighted return (TWR)
TWR splits the period at every deposit or withdrawal, computes the return of each sub-period and chains them:
TWR = (1 + r₁) × (1 + r₂) × … − 1
In the example the first half returned +20%, the second −10%. TWR = 1.20 × 0.90 − 1 = +8%. Deposits do not affect it, which makes TWR the right number to compare with an index or a fund; it is how funds report their performance. If your TWR is 8% and the S&P 500 did 15% in the same year, your picks lagged the index.
The downside: you need the portfolio value on the date of every cash flow. In a spreadsheet that gets painful fast.
Money-weighted return (IRR / XIRR)
Money-weighted return, or internal rate of return (IRR), answers: at what annual rate would your deposits have had to grow to reach today's value? In the example you added a big amount right before the drop, so you are down personally even though the investments gained 8%. XIRR shows exactly that: about −1.3% a year.
XIRR uses exact dates, so it fits real life with irregular deposits. A simpler approximation is the Modified Dietz method: profit divided by the starting value plus each deposit weighted by the share of the period it was invested. Here: −200 / (10,000 + 10,000 × 0.5) = −1.33%, very close to XIRR.
XIRR in a spreadsheet
- Put dates in column A and amounts in column B.
- Enter each deposit as a negative number (money leaving your pocket), and each withdrawal or dividend you took out as positive.
- On the last row, put today's date and the current portfolio value as a positive number.
- Use
=XIRR(B2:B4, A2:A4)in Excel or Google Sheets.
For the example: −10,000 on 1 Jan, −10,000 on 1 Jul, +19,800 on 31 Dec. The answer is about −1.3%.
Which method to use
- To judge whether your picks beat an index or a fund, look at TWR.
- To know the yearly rate your own money actually earned, including the effect of buying more at peaks or dips, look at XIRR.
- To know how many euros you are up or down, profit in money is enough: current value + everything withdrawn − everything deposited.
If you never add money, or add small equal amounts regularly, the three numbers stay close. They split apart when large deposits coincide with big market moves, as in the example.
Annualising
To compare periods of different length, convert the return to a yearly figure:
annual = (1 + R)^(365 / days) − 1
+15% over 2.5 years is (1.15)^(1/2.5) − 1 ≈ 5.75% a year, not 6%. +40% over 3 years ≈ 11.9% a year. Do not annualise short periods: +3% in a month is not +42% a year, it is noise.
Dividends, fees and currency
Dividends and interest
Price change alone understates your return. Dividends, interest and staking rewards are income too: either add them to the value (if reinvested) or treat them as money received in XIRR. With a 3% yield, the difference over ten years is large.
Fees
Include broker and exchange fees in the purchase cost and subtract them from sale proceeds, so the return is already net. Watch fund running costs separately: 1% a year takes a visible bite over a long horizon.
FX for a euro-based investor
If you live in euros and hold dollar stocks, measure everything in euros at the rate on each trade date. Example: you buy 10 shares at $100 when EUR/USD is 1.10, that is €909. The share rises to $110 but the dollar weakens to 1.20. The position is now worth €917. In dollars that is +10%; in euros, just +0.8%. The second number is your real result.
Realised vs unrealised profit
- Unrealised: current value of open positions minus their cost. Profit on paper.
- Realised: the result of sales you have already made. This is what you pay tax on (see our guide to stock and dividend tax in Spain).
- Income: dividends, interest, staking.
Total result = unrealised + realised + income. If you only watch unrealised profit, selling a winner makes the portfolio look like it dropped, when the gain simply moved into realised.
Common mistakes
- Dividing current value by your first deposit and ignoring later ones.
- Leaving out dividends.
- Comparing your XIRR with an index's TWR and wondering about the gap.
- Measuring dollar stocks in dollars when you spend euros.
- Forgetting fees and closed positions.
- Annualising a two-week return.
- Counting a transfer between your own accounts as a sale or a new deposit.
Checklist
- Every trade, deposit and withdrawal from every broker and exchange in one table, with dates.
- Everything in one currency at the rate on the trade date.
- Fees inside purchase cost and sale proceeds.
- Dividends and interest included.
- TWR to compare with an index, XIRR to see your own result.
- Annual figures only for periods of a year or more.
If your holdings are spread over a broker, exchanges and wallets, start by tracking stocks and crypto in one place.
How Signae shows it
Signae pulls Bybit, Binance, Coinbase, Revolut statements, Ledger and MetaMask wallets and manual trades into one portfolio. Here is what you see:
- total result in euros: unrealised profit + realised profit + dividends, interest and staking;
- result as a percentage of the capital you put in. This is a simple return on invested money, not TWR or XIRR, so with large deposits mid-period it behaves like the first row of the table above;
- per asset: FIFO cost basis, unrealised profit in euros and percent, and realised profit;
- cost in euros at the rate on the trade date, so the dollar effect is already inside the result, and fees are inside purchase cost and proceeds;
- transfers between your own accounts are not counted as sales;
- a chart of portfolio value next to the amount invested, for a week, month, 3 months, a year or all time, plus the 24-hour change;
- separate stock and crypto views.
When a cost basis is estimated (for example, coins that arrived in a wallet with no purchase history), Signae flags it. And the AI investing assistant can explain the numbers in plain words.
The app is in closed beta: request an invite.
FAQ
How do I calculate portfolio return with deposits and withdrawals?
Use XIRR: deposits as negative amounts, withdrawals and current value as positive, each with its date. To compare with an index, use time-weighted return, which ignores the timing of deposits.
What is the difference between TWR and XIRR?
TWR measures how the investments performed regardless of cash flows. XIRR measures your personal result, taking into account when and how much you invested.
How do I annualise a portfolio return?
Use (1 + R)^(365 / days) − 1. For example, +15% over 2.5 years is about 5.75% a year. Do not annualise periods shorter than a year.
Should portfolio return include dividends?
Yes. Without dividends the return is understated. Add them to the portfolio value or count them as money received in XIRR.
Which currency should I use to measure returns on US stocks?
The currency you live and spend in, such as euros, converted at the rate on each trade date. A gain in dollars can shrink a lot once converted to euros.
Try Signae
Your exchanges and wallets in one portfolio, a tax report and signals with statistics in one app. Closed beta is open for sign-ups.
Get accessThis article is for information only and is not investment or tax advice.