---
title: "Compare your portfolio with an index fund or ETF"
description: "Pick an ETF as the Benchmark instrument on Performance and read its return and your excess over it. One catch: the benchmark counts price only, not dividends."
url: "https://stonqs.app/guides/compare-portfolio-with-index-etf/"
lang: "en"
updated: "2026-10-25"
---

Compared with the alternatives · Guide 10 of 10

# Compare your portfolio with an index fund or ETF

[By Vladimir Varvorkin](https://stonqs.app/about/) Updated October 14, 2026 10 min read

Choose an ETF or fund as the Benchmark instrument on the Performance screen and Stonqs shows its return over your period, and your excess over it in percentage points. About ten minutes. The benchmark counts price only, so a fund that pays out dividends is understated.

## On this page

1. [Before you start](https://stonqs.app/guides/compare-portfolio-with-index-etf/#before-you-start)
2. [Add the benchmark as an instrument](https://stonqs.app/guides/compare-portfolio-with-index-etf/#add-the-benchmark-as-an-instrument)
3. [Pick it on Performance](https://stonqs.app/guides/compare-portfolio-with-index-etf/#pick-it-on-performance)
4. [Read the two figures](https://stonqs.app/guides/compare-portfolio-with-index-etf/#read-the-two-figures)
5. [Draw up to five benchmarks on the dashboard](https://stonqs.app/guides/compare-portfolio-with-index-etf/#draw-up-to-five-benchmarks-on-the-dashboard)
6. [If something goes wrong](https://stonqs.app/guides/compare-portfolio-with-index-etf/#if-something-goes-wrong)

Suppose, with made-up numbers over one calendar year, your portfolio returned 24 % and the ETF 18.5 %. Did you beat it by 5.5 points? Not yet. The app’s benchmark figure is the ETF’s price change, converted into your currency, with no dividends added. Yours includes the dividends you were paid. If the ETF distributes its income, the benchmark is understated by about what it paid out, and your “win” shrinks or disappears.

This guide sets up the comparison and shows what each figure on screen is made of. Market data comes from free third-party sources, without warranty. Your broker’s statement is what counts, and nothing here is advice on what to hold.

## Before you start

You need a portfolio with its transactions imported ( [the import guide](https://stonqs.app/guides/import-broker-csv/)) and sources of prices and exchange rates turned on ( [choose price and exchange rate sources](https://stonqs.app/guides/choose-price-and-exchange-rate-sources/)). Have the ticker or ISIN of the fund you want to measure against. A fund is not an index: you compare against the fund’s price, which tracks an index like MSCI World with its own costs, and the app sees only the price.

## Add the benchmark as an instrument

The Benchmark instrument list on Performance offers every instrument in the directory, so the fund has to be there first. [The Performance guide](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/performance.md) says any instrument in the directory can be the benchmark, and you do not have to own it.

1. Open Instruments and press `Add instrument`.
2. Fill `Ticker`, `Name` and `Currency` (the currency the fund trades in), and set `Quote provider` to a source that has it. Leave it at `— manual —` and no prices are fetched. Use `Provider symbol` if the source spells the ticker differently.
3. Save, then press `Refresh quotes`.

You should see the row with a price history. A red quote history means the source returned too little: [open Venues and pick another listing](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/securities.md). An instrument identified only by ISIN has no prices until a listing is chosen for it.

An ETF already in your portfolio is in the directory and needs none of this.

## Pick it on Performance

Open Performance. Set the period control (`1M` to `5Y`, `YTD`, `All`) and choose the fund in `Benchmark instrument`. The default is `No benchmark`.

Two tiles appear in the figures: `Benchmark`, the fund’s return, and `Excess`, captioned “portfolio minus benchmark”. If the fund is younger than the period, the Benchmark tile’s caption reads “since” a date: that is where the comparison really starts.

## Read the two figures

Take the portfolio’s [time-weighted return](https://stonqs.app/blog/time-weighted-vs-money-weighted-return/) over the same window, `TWR (portfolio return)`. Never compare an index with the money-weighted `XIRR (investor return)`: [the index has no deposits to be timed](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/ai-reference/benchmark.md). In the code, the benchmark is the price on the last day over the price on the first day, minus one, converted to your currency on both days, and the excess is a plain subtraction ( [benchmark.rs](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/core/src/calc/benchmark.rs)).

An invented example, to rerun by hand, in EUR over one calendar year:

| Step                  | Figure                                 | Where it comes from                             |
| --------------------- | -------------------------------------- | ----------------------------------------------- |
| Fund price, first day | 100.00 EUR                             | assumed                                         |
| Fund price, last day  | 118.50 EUR                             | assumed                                         |
| Benchmark             | 118.50 / 100.00 - 1 = +18.5 %          | the app’s formula                               |
| Portfolio TWR         | +24.0 %                                | assumed, dividends included                     |
| Excess                | 24.0 % - 18.5 % = +5.5 points          | the app’s formula                               |
| Fund’s distributions  | 1.80 EUR a share                       | assumed                                         |
| Benchmark with them   | (118.50 + 1.80) / 100.00 - 1 = +20.3 % | by hand, payouts not reinvested, not in the app |
| Excess against that   | 24.0 % - 20.3 % = +3.7 points          | by hand                                         |

### Price only

The code comment says it: “no dividends are invented because providers expose prices”. A fund that pays its income out shows it nowhere in the price. The portfolio side includes income: its [calculation sheet](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/ai-reference/calculation-sheet.md) splits the result into market, income and costs, with dividends stated gross. Whether your fund pays income out or keeps it inside the price is in its own factsheet, which Stonqs does not read.

### One window

If the fund’s prices start after the period does, both sides are cut to the overlap and the Benchmark tile says from when. Excess is never two different windows subtracted.

### Totals, not per year

The large `TWR (portfolio return)` figure is the total over the window. Under it, the hint “a year” is the same return rescaled to a year, `(1 + TWR)^(365 / days) - 1` ( [twr.rs](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/core/src/calc/twr.rs)); it appears for a one-month window too, where it extrapolates. `Benchmark` and `Excess` are totals over the window, so compare them with the large figure, not the hint.

### Currency

A fund quoted in another currency than your portfolio’s carries that currency’s movement into the benchmark, as your own foreign holdings do. If the gap is puzzling, [check the exchange rate before the choice of fund](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/ai-reference/benchmark.md).

## Draw up to five benchmarks on the dashboard

For a picture rather than two numbers, add the `Portfolio and benchmark` chart from the dashboard palette in edit mode. In its settings, each `Benchmark` field adds a dashed line, up to five; emptying a field removes it. Every line is the growth of one invested unit from the start of the period. A fund younger than the period starts later, and one with no prices at all is named above the chart. [Draw inflation](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/dashboard.md) adds the price-index step line.

The chart shows relative growth only. For a number, use Performance.

## If something goes wrong

**The fund is not in the Benchmark instrument list.** It is not in Instruments yet. Add it above.

**An error banner appears on Performance.** The fund has no prices in the window or no exchange rate to your currency. The comparison needs a price on the first and last day it uses, and a rate for the fund’s currency. Open Settings, Market data and read the coverage table.

**`TWR (portfolio return)` reads `—`.** The ledger has trades without the deposits behind them, so there is no stretch with capital at work ( [why](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/performance.md)). Import the deposits first; the benchmark tile cannot fix it.

## Sources

- [Stonqs: Performance screen](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/performance.md)  · The Benchmark instrument control, the Benchmark and Excess figures, the shared window.
- [Stonqs: benchmarks](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/ai-reference/benchmark.md)  · Time-weighted return only, excess in percentage points, the overlap window, foreign currency.
- [Stonqs: dashboard](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/dashboard.md)  · The Portfolio and benchmark chart, up to five benchmark lines.
- [Stonqs: benchmark calculation](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/core/src/calc/benchmark.rs)  · Price in, price out, converted to the portfolio's currency; no dividends added.
- [Stonqs: returns, time-weighted and money-weighted](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/ai-reference/returns-twr-xirr.md)  · Why the comparison uses the time-weighted return.

[  Previous Read your portfolio's risk](https://stonqs.app/guides/read-portfolio-risk-volatility-drawdown-sharpe/)

## Read next

- [Read your returns ](https://stonqs.app/guides/read-your-returns-twr-xirr/)
- [Choose where prices and exchange rates come from ](https://stonqs.app/guides/choose-price-and-exchange-rate-sources/)
- [All guides ](https://stonqs.app/guides/)

---

[ Stonqs](https://stonqs.app/)

A portfolio tracker that runs on your own computer. Free, open source, no account.

## Product

[Download](https://stonqs.app/download/) [Privacy](https://stonqs.app/privacy/)

## Learn

[Guides](https://stonqs.app/guides/) [Blog](https://stonqs.app/blog/) [FAQ](https://stonqs.app/faq/)

## Project

[About](https://stonqs.app/about/) [Source code](https://github.com/vvvlladimir/stonqs) [Changelog](https://github.com/vvvlladimir/stonqs/blob/main/CHANGELOG.md) [Discussions](https://github.com/vvvlladimir/stonqs/discussions) [Report a bug](https://github.com/vvvlladimir/stonqs/issues)

Stonqs is a tool for recording and analysing your own investments. It is not financial, tax or legal advice, and neither are the answers of its assistant. Market data comes from free third-party sources with no guarantee of accuracy. This site sets no cookies and loads nothing from other servers; the only thing it keeps in your browser is the language you pick.

[Legal notice](https://stonqs.app/legal-notice/) [Privacy policy](https://stonqs.app/privacy-policy/)
