How to calculate the real return of your portfolio (even if you add money every month)
You open your broker, see that your portfolio went from 0 to 2,600 in a year, and think: I'm doing well. But a big part of that growth is money you put in yourself, so the balance does not tell you how much you actually earned. To find out, you have to separate what you contributed from what you gained, and a spreadsheet is enough for that.
The problem: the balance mixes two things
When you look at your portfolio's value, you see the sum of:
- What you contributed (deposits, purchases made with new money).
- What you gained or lost on those investments.
If you contribute often (say, a fixed amount every month into an ETF), the balance almost always goes up, even when the market is flat. That is why the balance alone does not tell you whether you are investing well.
A concrete example
Anna invests $200 on the 1st of every month for a whole year: 12 contributions, $2,400 in total. On December 31 her portfolio is worth $2,600. There are three common ways to calculate "how much she earned":
| Method | Calculation | Result |
|---|---|---|
| Balance growth | from $200 (first contribution) to $2,600 | +1,200% ✗ |
| Gain over contributions | (2,600 − 2,400) ÷ 2,400 | +8.33% |
| Money-weighted return (XIRR) | see below | +15.75% a year ✓ |
- Balance growth is absurd: it counts your own contributions as if they were profit.
- Gain over contributions (+8.33%) is better, but it ignores when you put the money in. The December contribution was invested for one month; the January one for a whole year. On average, Anna's money was invested for about six months, so $200 earned in half a year is worth a lot more over a full year.
- XIRR takes into account how much money was invested and for how long. That is why it gives +15.75% per year: it is the rate that, applied to each contribution from its own date, explains exactly the final $2,600.
What XIRR is, in one sentence
XIRR (short for extended internal rate of return) is the annual rate of return that makes all of your cash flows, meaning what you put in, what you took out and what it is worth today, add up. It measures the result of one specific investor, with their own deposits and withdrawals.
How to calculate it in Excel or Google Sheets
- In one column, write each cash flow with its sign: contributions as negative numbers (money leaving your pocket) and withdrawals as positive.
- In the last row, enter the current value of the portfolio as a positive number, dated today.
- In the next column, put the date of each flow.
- Use the formula:
=XIRR(values, dates)
| Date | Cash flow |
|---|---|
| 2025-01-01 | −200 |
| 2025-02-01 | −200 |
| … | … |
| 2025-12-01 | −200 |
| 2025-12-31 | +2,600 |
Result: 15.75%.
What about the return my broker shows me?
It depends on the broker. Some show the gain over what you invested; others show a "time-weighted" return (TWR), which measures how your assets did regardless of when you contributed. Both are useful, but they answer different questions:
- TWR (time-weighted): how did my investments do? Useful to compare against an index.
- XIRR (money-weighted): how much did I earn, with my real contributions and withdrawals? It is your personal result.
If you want to know whether your decisions about when and how much to contribute worked, the answer is XIRR.
When there are several brokers and several currencies
A spreadsheet works well with a single account. It gets complicated when:
- You hold stocks at one broker, ETFs at another and crypto on an exchange, each with its own statement.
- You invest in more than one currency. Each contribution has to be converted at the exchange rate of its own day, not today's; otherwise XIRR comes out distorted.
- There are dividends, staking or interest, which are gains, not contributions.
- You make hundreds of trades, and keeping the sheet up to date becomes a job.
How Kore. handles it
- You upload your transactions file (CSV or Excel) from any broker or exchange, or enter trades by hand. No passwords and no API keys.
- Every trade keeps its own exchange rate; when you enter one by hand, the form suggests the rate for that date.
- Kore. separates the money you contributed from what you earned: dividends, interest and staking do not count as contributions.
- You see your XIRR next to everything you hold (stocks, ETFs, crypto, bonds and cash), compared in a single currency: dollars.
It is free to start. Try it in the demo, no account needed.
Frequently asked questions
Does a 15% XIRR mean I earned 15% of my money?
Not exactly. It is an annual rate weighted by how long each contribution was invested. In the example, Anna earned $200 on $2,400 contributed (8.33%), but since that money was invested for half a year on average, the equivalent annual rate is 15.75%.
Can XIRR be negative?
Yes, if the current value plus what you withdrew is lower than what you contributed.
Does it work for short periods?
With less than a few months of data, XIRR annualizes very small results and can show extreme figures. For short periods, look at the gain in money as well.
What counts as a "contribution"?
All the new money you put into your investments. Dividends or interest you reinvest are not contributions: they are gains.