A Google Sheets ETF portfolio tracker is the simplest, most flexible way to keep an eye on your investments — and you can build one for free in an afternoon. After years of testing apps and broker dashboards, I keep coming back to a plain spreadsheet because it is free, private, and entirely under my control. This 2026 guide shows you how to build a tracker with live prices using the built-in GOOGLEFINANCE function, plus the column layout that actually helps you make decisions rather than just admire numbers. (GOOGLEFINANCE coverage varies by ticker — verify your funds work before you trust the figures.)
My own tracker is a Google Sheet, not an app, and it has survived three broker switches and a house move without me ever paying a cent for it. And to save you the afternoon of building it from scratch, I have made my template free to copy — grab it below, then read on to understand how every formula works so you can adapt it to your own portfolio.
📊 Get the free ETF & dividend tracker — ready to use
The formulas are already wired in, with sample UCITS holdings and live prices pulling straight from GOOGLEFINANCE. Two ways to grab it:
Want the whole path in one place? — The Masterclass takes you from zero to a running, tax-aware portfolio — 55 text lessons, one weekend to read.
See the full curriculum — €147, 30-day guarantee →▸ Make your own copy in Google Sheets — opens a live, editable copy in your own Drive (recommended; prices work instantly).
▸ Download the CSV — then import it into Google Sheets (File ▸ Import) or open it in Excel.
Replace the four sample rows with your own holdings. If a ticker shows #N/A, swap the exchange prefix or type the price in by hand — the guide below explains why.
Why a spreadsheet beats most apps
Portfolio apps look slick, but most of them ask you to connect your accounts, accept a subscription, or both. A spreadsheet sidesteps all of that. Here is why I have never moved off one:
For the bigger picture, see our portfolio construction & FIRE hub.
- Free and private. No subscription, no sharing your full portfolio with a third-party app, no wondering who else can see your net worth.
- Fully customisable. Track exactly the columns you care about — allocation, cost basis, dividends, target weights — and ignore everything you do not.
- Broker-agnostic. Consolidate holdings across multiple brokers in one place — genuinely useful if you use several (see the broker hub). No app I have tried handles three brokers as cleanly as one sheet does.
The trade-off is honest: a sheet will not auto-import every transaction the way a paid app does. You type in your buys. In exchange you get a tool that does exactly what you want, never sends you an upsell email, and works the same way in ten years as it does today.
The key function: GOOGLEFINANCE
The reason a Google Sheet can act like a live dashboard is one built-in function that pulls market data straight from Google’s own feed. The basic form is:
=GOOGLEFINANCE("TICKER")returns the current price. For European UCITS ETFs you usually need the exchange-prefixed ticker — for example an exchange code plus the ticker — for it to resolve at all.- Check coverage first. GOOGLEFINANCE does not cover every UCITS listing reliably — test each fund’s ticker before you build your whole sheet around it. If a ticker does not resolve, you can enter prices manually or use the ISIN to find a working symbol on a different exchange.
- Combine with arithmetic. Multiply live price by units held to get current value, and compare against your cost basis for gain or loss. Everything else in the tracker is just this idea repeated.
This patchy coverage is the single thing that trips up most first-time builders, so it is worth dwelling on. The same fund — the same ISIN — can be listed on Xetra, Euronext Amsterdam, Borsa Italiana and the London Stock Exchange, and GOOGLEFINANCE may recognise one listing and shrug at another. When a price comes back as #N/A, the fund is almost never the problem; the exchange symbol is. Try the same ISIN on a different venue before you give up. I keep a short note in my sheet recording which exchange symbol works for each holding, because Google occasionally changes what it covers and a formula that worked last year can quietly break.
The formulas that do the work
You only need a handful of formulas, and they all build on one another. Here are the illustrative versions I use — adapt the cell references to your own layout.
| Column | Formula / purpose |
|---|---|
| Live price | =GOOGLEFINANCE("EXCHANGE:TICKER") — pulls the current market price. Use the exchange-prefixed symbol for UCITS ETFs. |
| Current value | =B2*E2 — units held (B2) multiplied by live price (E2) gives the value of the position. |
| Gain / loss (€) | =F2-(B2*C2) — current value (F2) minus cost basis (units × average cost). |
| Gain / loss (%) | =(F2-(B2*C2))/(B2*C2) — the same figure as a percentage of what you paid. |
| Current weight | =F2/$F$20 — this position’s value divided by the portfolio total (summary cell F20). |
| Target vs actual | =H2-G2 — target weight (H2) minus current weight (G2); shows how far each holding has drifted. |
Keep these formulas illustrative — your column letters will differ. The principle that matters is that price flows into value, value into gain/loss and weight, and weight into your rebalancing decisions.
A worked example
Say I hold 120 units of a developed-world ETF, bought at an average cost of €82.50, and the fund trades on Xetra. My live-price cell might read =GOOGLEFINANCE("ETR:EUNL") and return, for argument’s sake, 91.30. The current-value cell =120*91.30 returns 10,956. My cost basis is 120*82.50 = 9,900, so the gain/loss cell =10956-9900 returns 1,056, and the percentage cell returns 0.1067 — a 10.67% gain. If my portfolio total is €40,000, the weight cell =10956/40000 returns 0.274, or 27.4%. Against a target of 25%, my drift cell returns -0.024: I am about two and a half points overweight and might trim on the next rebalance. That is the whole loop, and once one row works you copy it down for every holding.
A practical tracker layout
Build columns for each holding, left to right, so the data flows naturally:
- Fund / ticker / ISIN — identify the holding unambiguously. The ISIN is your fallback when a ticker stops resolving.
- Units held and average cost — your cost basis, the anchor for every gain/loss figure.
- Live price (GOOGLEFINANCE) and current value (units × price).
- Gain/loss (value − cost) in € and %.
- Current weight vs target weight — the most useful column for rebalancing decisions; see the rebalancing strategy for how to act on the numbers.
- Dividends received — track income if you hold distributing funds, and feed it into the dividend calculator.
Add a summary row totalling portfolio value and a small pie chart of allocation — that single view drives most decisions, and it pairs well with a structured performance review. To build the chart, select your fund-name column and your current-value column, then insert a pie chart; Sheets does the rest. Glancing at that pie tells me in a second whether one position has quietly grown to dominate the portfolio, which is exactly the kind of drift the weight columns are there to catch.
How my own tracker is built
My live sheet is deliberately plain. The top block is the holdings table described above — one row per fund, regardless of which broker it sits in. Below it, a summary row sums the current-value column into a single portfolio total, and a second small table groups holdings by region and by equity-versus-bond split, which is where my real asset-allocation decisions get made. A pie chart hangs off to the right.
I update it once a month, not daily — the GOOGLEFINANCE prices refresh on their own, so the only manual work is logging new purchases and dividends. Two habits keep it reliable. First, I freeze the header row and lock the formula columns so I cannot fat-finger a calculation while typing in a new buy. Second, I keep that note of which exchange symbol resolves for each fund, because the moment a price breaks I want to fix it in thirty seconds rather than re-research the whole holding. It is not fancy, but it has outlasted every app I ever trialled.
Common mistakes
- Trusting a bare ticker. For UCITS ETFs a plain symbol usually returns nothing. Use the exchange-prefixed form and test it before building the row.
- Ignoring currency. If a fund is priced in a different currency from the rest of your sheet, GOOGLEFINANCE returns the local-currency price — convert it, or your totals will be quietly wrong.
- Hard-coding a price into a formula. If you fall back to a manual price because a ticker will not resolve, put it in its own clearly labelled cell, not buried inside a calculation where you will forget it is stale.
- Forgetting dividends. Leaving income out understates your real return, especially on distributing funds held for years.
- Never checking drift. A tracker that you never read against your targets is just a scoreboard. The current-versus-target column is the point.
Key takeaways
- A free Google Sheets tracker is private, customisable, and broker-agnostic — it consolidates multiple brokers in one place.
- GOOGLEFINANCE pulls live prices, but UCITS coverage is patchy — use exchange-prefixed tickers and test each fund.
- If a ticker will not resolve, try a different exchange symbol for the same ISIN, or enter the price manually.
- Build columns for units, cost, live price, value, gain/loss, current-versus-target weight, and dividends.
- Add a summary row and an allocation pie chart — that single view drives most of your rebalancing decisions.
FAQ
Q: How do I get live ETF prices in Google Sheets?
A: Use the built-in GOOGLEFINANCE function — =GOOGLEFINANCE("TICKER") returns the current price. For European UCITS ETFs you usually need the exchange-prefixed ticker. Test each fund, as coverage varies.
Q: What if GOOGLEFINANCE doesn’t have my fund?
A: Coverage of UCITS listings is patchy. If a ticker doesn’t resolve, try a different exchange symbol for the same ISIN, or enter the price manually and update it periodically.
Q: Is a spreadsheet better than a portfolio app?
A: For many investors, yes — it’s free, private, fully customisable, and broker-agnostic (you can consolidate multiple brokers in one place). Apps are more automated but share your data and often cost money.
Q: What columns should my tracker have?
A: Fund/ticker/ISIN, units, average cost, live price, current value, gain/loss, current-vs-target weight, and dividends received. The current-vs-target weight column is the most useful for rebalancing.
Q: Can I track multiple brokers in one sheet?
A: Yes — that’s a key advantage. List every holding regardless of broker, and the sheet gives you a single consolidated view of your whole portfolio.
Q: How often do GOOGLEFINANCE prices update?
A: They refresh automatically, typically on a short delay rather than in real time. For monthly portfolio reviews that is more than enough precision; you do not need live tick data to decide whether you are overweight.
Q: Why does my price come back as #N/A?
A: Almost always the exchange symbol, not the fund. Try the same ISIN on a different venue, or check that you have used the exchange-prefixed ticker. If nothing resolves, fall back to a clearly labelled manual price cell.
Q: Can the sheet handle funds in different currencies?
A: Yes, but you must convert. GOOGLEFINANCE returns the local-currency price, so add a conversion step before a foreign-currency holding feeds into your totals, or those totals will be wrong.
Q: Do I need to know how to code to build this?
A: No. Everything here is standard spreadsheet formulas — multiplication, subtraction, and one built-in function. If you can write =A1*B1, you can build the whole tracker.
Q: Should I compare index providers in my tracker?
A: It can help if you hold several broad funds — knowing whether your core holding follows MSCI or FTSE explains small performance gaps. The MSCI versus FTSE comparison covers the differences.
The bottom line
For European investors in 2026: a free Google Sheets tracker is the simplest, most flexible way to monitor your ETF portfolio — free, private, customisable, and broker-agnostic. The key is the built-in GOOGLEFINANCE function for live prices (use exchange-prefixed tickers and test each fund, since UCITS coverage varies). Build columns for units, cost, live value, gain/loss, current-vs-target weight, and dividends, with a summary row and allocation chart — that single view drives most decisions. The rebalancing strategy guide shows how to act on the weights, the company-structure guide covers a more advanced setup, and if you would rather start from a ready-made model you can sketch one in the ETF portfolio builder before transferring it into your sheet.
Cited sources: Morningstar research, justETF data, and ESMA investor protection. Tool coverage varies — verify before relying on it. Educational content, not financial advice.
