Why end value minus start value does not work
Say your portfolio is worth €10,000 at the start of the year and €20,900 at the end. End value minus start value gives +€10,900. But halfway through the year you added €10,000 yourself. You did not earn that money, it came from your own account.
A deposit raises your value and your contributions by exactly the same amount. So a deposit is never profit and a withdrawal is never a loss. They are cash flows, not result.
Step 1: your result in euros
Your result in euros is the value at the end, minus the value at the start, minus what you deposited net. Net means deposits minus withdrawals.
In the example: €20,900 minus €10,000 minus €10,000 is +€900. That is what your investments really earned. If you take money out it works the other way round: a withdrawal lowers your value and so does not count as a loss.
Dividend received (after withholding tax), interest and costs do count in this result. They change your value without you depositing or withdrawing anything.
Step 2: money-weighted return (Modified Dietz)
To turn euros into a percentage, divide your result by the capital you had invested on average. A deposit at the start of the period counts for the whole period, a deposit just before the end barely counts. That is the money-weighted return. The method StockQuarters uses for it is Modified Dietz.
In words: result divided by (start value plus each deposit, multiplied by the share of the period that money was in). The percentage is cumulative: it covers the whole period, not a single year.
In the example the deposit was in your portfolio for about half the year. The result of +€900 divided by the average invested capital gives about +6.0%. The sign of this percentage always matches the sign of your euro result. If the average invested capital is zero or negative, the percentage does not exist and StockQuarters shows a dash (—).
| Date | Value at close | Deposit |
|---|---|---|
| Jan 1, 2025 (start) | €10,000 | none |
| Jun 30, 2025 | €9,000 | none |
| Jul 1, 2025 | €19,000 | +€10,000 |
| Dec 31, 2025 | €20,900 | none |
| End value minus start value (wrong) | +€10,900 |
|---|---|
| Result in euros | +€900 |
| Money-weighted return | +6.0% |
| Time-weighted return | -1.0% |
Time-weighted return (TWR) and why its sign can differ
Time-weighted return measures the investments themselves, regardless of when you added money. Each day you compute the return on the previous day's value plus that day's deposit, then multiply those daily returns together.
In the example the value first fell from €10,000 to €9,000. Then you added €10,000 and the total rose from €19,000 to €20,900. The fall applied to a smaller amount than the rise, but time-weighted counts every period equally. The return comes out at -1.0%.
Your euro result is positive and the time-weighted return is negative. Both are right: they answer different questions. Money-weighted tells you what you earned on your own money. Time-weighted tells you how the investments performed, and that is what you compare with an index.
Return per year: XIRR
If you want a yearly return over a longer period, use XIRR. It is the annual rate at which every deposit, withdrawal and the end value line up on their own dates. It uses the exact dates, not averages.
In Excel the function is XIRR (in Dutch Excel: IR.SCHEMA). You give it a row of values and a row of dates. Enter your start value and your deposits as negative numbers, and withdrawals and the end value as positive numbers. The series needs at least one positive and one negative value, or Excel returns an error.
Do not scale the return of a few weeks or months up to a year. That turns one lucky month into a yearly figure you will never get. A yearly percentage only means something after about a year.
How StockQuarters calculates it
The euro result in StockQuarters is the value minus net deposits, so deposits and withdrawals never show up in your result. The percentage beside it is money-weighted (Modified Dietz) and cumulative. On the chart you switch between Money-weighted and Time-weighted. Time-weighted is what you compare with an index, and it also appears on the Analyse page with benchmarks.
With at least a year of history, and looking at your return since the start, you also see ‘average per year’. That is XIRR over your deposits and withdrawals. With the chart on time-weighted you see a compound annual growth rate (CAGR) in that place.
The day result divides a day's move by the total value at the end of the previous trading day. Deposits do not count in it. You can see how that looks in the demo.