Methodology
How portfolios, fund lists and statistics are built. The aim is to be objective, reproducible and neutral.
1. Model portfolios
Each model portfolio is a set of target weights across building blocks (asset groups) such as “global all-world equity” or “global aggregate bonds”. All portfolios are published in the portfolio explorer for everyone. Filters only hide or show portfolios by objective attributes: portfolio type, equity %, number of funds, share class, currency hedging, issuer, ESG and add-ons. There is no scoring, no “best” and no “recommended for you”.
1a. Core and specialty portfolios
The 16 core portfolios hold the broad market at roughly market-cap weights: global (or developed + emerging) equity, global bonds and, in a few, one small sleeve such as gold, commodities, small caps or short-term government bonds. The 19 specialty portfolios start from a similar base and add a deliberate tilt. Tilts add concentration and deviate from the global market, so a specialty portfolio can do better or worse than the market for long periods. They are shown so that the trade-offs can be compared on the same terms, not because a tilt is expected to pay off. The explorer opens on the core portfolios; the type filter shows the others.
- Core (16): Broad market-cap-weighted mixes of global equity and bonds, optionally with one small sleeve (gold, commodities, small caps, short-term bonds).
- All-weather / permanent (4): Mixes spread across equity, long and short government bonds, gold and sometimes commodities, aimed at holding up in different economic conditions.
- Real estate (2): Adds listed property (REITs) on top of a global equity core.
- Sector tilt (2): Adds extra weight to one industry sector.
- Regional tilt (2): Shifts weight between regions compared with a global index.
- Home bias (3): Adds extra weight to one home market (Switzerland, UK, eurozone).
- Growth vs value (2): Tilts towards value or growth-heavy stocks.
- Factor tilt (5): Tilts towards factors such as value, quality, momentum, low volatility or small-cap value.
- ESG / SRI (1): Uses indices that screen out companies on environmental, social or governance criteria.
- Income (1): Uses high-dividend equity and distributing share classes.
A portfolio can have more than one type (e.g. “Diversified with real assets” is both real estate and all-weather). Weights of published model portfolios such as the permanent portfolio, the “All Weather” mix and the golden butterfly are simplified, widely published versions built from the UCITS building blocks available here. Long-dated government bonds are matched like the other government bonds: hedged to or denominated in the base currency (so a EUR base uses euro government bonds 15+ years and a CHF base US Treasuries 20+ years hedged to CHF), with USD Treasuries as the fallback. For the growth tilt there is no broad world-growth UCITS ETF in the fund list, so the block uses Nasdaq-100 funds. The small-cap value block has one fund (actively managed); its statistics use a US small-cap value proxy. Common-window statistics are set by the core portfolios; specialty portfolios with shorter proxy histories start later.
2. Fund universe and data
- 212 hand-curated products: Ireland- or Luxembourg-domiciled UCITS ETFs (plus one Netherlands-domiciled UCITS ETF), physical gold ETCs (debt securities backed by gold, not UCITS funds, clearly labelled) and, for the gold block, the three share classes of the UBS Gold ETF (UBS ETF (CH): USD unhedged, CHF-hedged, EUR-hedged). These are Swiss-domiciled funds under Swiss fund law, not UCITS funds; they are labelled “Swiss fund, not UCITS” on every fund line. They trade on SIX Swiss Exchange (the hedged classes also on Tradegate). They are included because they add currency-hedged gold (CHF, EUR), which no gold ETC in our list offers, and more SIX trading lines. With the default “unhedged” setting for equity and real assets, the unhedged USD class competes with the gold ETCs on cost; the hedged classes are used only when hedging is chosen. UBS has no GBP-hedged gold class and no UBS gold ETC on Xetra or the LSE. Whether a Swiss fund can be bought, and how it is taxed, depends on your country and broker.
- Per fund: name, ISIN, issuer, TER, accumulating/distributing, hedged currency, replication, domicile, approximate fund size with an as-of date, inception date and listings. Every fund links to the document the figures came from: an issuer product page or issuer factsheet.
- Primary sources are issuer pages and factsheets. Vanguard and UBS are covered in depth. iShares, Xtrackers (DWS), Amundi, HSBC, SPDR (State Street) and Invesco are included as alternatives for the same building blocks (broad index funds for the core portfolios; sector, factor, regional, ESG, dividend and real-estate index funds only for the specialty building blocks; no thematic funds). Funds under about USD 100m were generally left out. A few smaller or newer funds were added only where no other fund in our list covers a building block on a given exchange; their fund size and launch date are always shown next to them. Individual issuer pages were looked up by hand for verification; no screener or database was bulk-downloaded. Ticker/exchange data was cross-checked against the Bogleheads list of non-US domiciled ETFs.
- Curation date: 2026-10-21. TERs and fund sizes change. TODO: re-check quarterly against issuer pages.
3. Neutral fund ranking
Within each building block, eligible funds are listed by TER (ascending), then fund size (USD equivalent, descending), then inception date (older first). No fund issuer or broker pays for placement, and nothing paid affects the order or eligibility. Listing a fund first is not a recommendation. Lower cost or larger size does not guarantee better results, and tracking difference, spreads, taxes and broker availability also matter.
Eligibility rules (objective)
- Bonds, “hedged to base”: global aggregate bond share classes hedged to the selected base currency. For government/short-term bonds: hedged to or denominated in the base currency. If none exists in our list (for example SGD), USD options are shown with an explicit currency-risk note.
- Equity hedging: unhedged by default. “Hedged” shows share classes hedged to the base currency (e.g. UBS hCHF).
- Share class: accumulating or distributing. Physical gold (ETCs and the Swiss gold funds) pays no income and fits either.
- ESG: “ESG equity only” keeps ESG-screened equity funds. Bond, gold and commodity slots are not affected.
- Issuer: an optional filter (e.g. Vanguard + UBS). If no fund from the chosen issuers covers a building block, the portfolio is shown as having no match.
Base currency, fund currency and trading currency
Three different currencies are easy to mix up:
- Base currency (the USD/EUR/GBP/SGD/CHF switch): the currency you measure your wealth in. It changes the historical statistics, because currency moves against your base currency are part of your return. It decides which bond (and, if you choose, equity) share classes count as “hedged to base”. It also decides which exchange line we show first.
- Fund (share-class) currency: the currency the fund's NAV is reported in, for example USD for Vanguard FTSE All-World. It is an accounting choice. It does not tell you your currency exposure, which comes from the fund's holdings and any hedging.
- Trading currency: the currency of one exchange line. The same ETF often trades on several exchanges in several currencies, for example VWRA in CHF on SIX, VWCE in EUR on Xetra, and VWRA in USD and VWRP in GBP in London. These are all the same fund with the same holdings and costs. Buying the line in your own currency mainly avoids a currency conversion at your broker. It does not hedge anything.
When you pick a base currency, every list puts first the line that trades in that currency: SIX for CHF, Xetra (then other euro venues) for EUR, London for GBP and USD, SGX for SGD. Only two ETFs in our list trade on SGX (Xtrackers MSCI World 1C and S&P 500 4C, in SGD). For every other ETF we show the London USD line for SGD. ETFs with no line in the base currency stay listed and visible, are marked (for example “no CHF listing, trades in USD on SIX”), and appear after the ETFs that have one. Within each of these two tiers the neutral order (TER, then size, then age) applies. With “Equity: hedged to base” or “Bonds: hedged to base”, only share classes hedged to the base currency (for example UBS hCHF or SPDR CHF Hedged) are eligible.
Sources: SIX, Xetra and London lines and their trading currencies are taken from each exchange's own public reference data (SIX ETF/ETP explorer data, Deutsche Börse's list of Xetra tradable instruments, London Stock Exchange instrument pages), checked 2026-10-27 with scripts/fetch_listings.py. Borsa Italiana and Euronext lines come from issuer pages. Brokers may route the same order differently, so confirm the exact line with your broker.
4. Risk statistics
- Source: Yahoo Finance daily adjusted close prices via the open-source yfinance library, downloaded at build time. Only derived statistics are published.
- Method: Month-end prices, converted to the base currency with Yahoo FX month-end rates; portfolios rebalanced to target weights every month; no trading costs or taxes; ETF TERs are already reflected in ETF prices.
- Window: for each portfolio and base currency, the longest period over which all of its proxies have data (ending 2026-09-30). A common window (where every core portfolio except the multi-asset ones has data: USD from 2019-03, EUR from 2017-12, GBP from 2017-12, SGD from 2019-03, CHF from 2018-05) is shown on each portfolio page for like-for-like comparison.
- Metrics: CAGR; annualised volatility (standard deviation of monthly returns × √12); maximum drawdown measured on month-end values (intra-month falls were deeper); worst/best full calendar year.
- Proxies: one long-history ETF per building block (below). Statistics describe the proxy, not every fund in the slot. Bond proxies are the currency-hedged share class in each base currency, where one exists. Where we had to use a fund outside our list, or an unhedged substitute, the portfolio page says so.
- Prices are not published. The site contains only derived statistics and, for the period/currency tool below, a normalised monthly index of each model portfolio (10,000 at the start of its history) and a normalised month-end FX index (1.0 in Jan 2005). Raw fund prices are used once at build time and are not redistributed.
- Calculation scripts:
scripts/compute_stats.py(statistics) andscripts/compute_series.py(monthly index and FX index; it re-derives the statistics from the index and stops if they do not match).
| Building block | Proxy (by base currency) |
|---|---|
| All-world equity | All bases: iShares MSCI ACWI UCITS ETF (USD, LSE) ISAC.L |
| Developed world | All bases: iShares Core MSCI World UCITS ETF (USD, LSE) IWDA.L |
| Emerging markets | All bases: Vanguard FTSE Emerging Markets UCITS ETF Dist (USD, LSE), dividends reinvested VDEM.L |
| US equity | All bases: iShares Core S&P 500 UCITS ETF (USD, LSE) CSPX.L |
| Europe equity | All bases: iShares Core MSCI Europe UCITS ETF (EUR, Euronext Amsterdam) IMAE.AS |
| Small cap | All bases: SPDR MSCI World Small Cap UCITS ETF (EUR, Xetra) ZPRS.DE |
| Global bonds | USD: iShares Core Global Aggregate Bond USD Hedged (LSE) AGGU.L EUR: iShares Core Global Aggregate Bond EUR Hedged (Xetra) EUNA.DE GBP: iShares Core Global Aggregate Bond GBP Hedged Dist (LSE), income reinvested AGBP.L CHF: SPDR Bloomberg Global Aggregate Bond CHF Hedged (SIX) GLAC.SW SGD: iShares Core Global Aggregate Bond USD Hedged, converted to SGD AGGU.LNo listed SGD-hedged share class in our list: SGD figures use the USD-hedged class, so they include USD/SGD currency moves. |
| Govt / short-term | USD: iShares $ Treasury Bond 0-1yr (LSE) IB01.L EUR: Proxy: iShares Euro Government Bond 1-3yr UCITS ETF (not in the fund list) IBGS.ASProxy fund outside the curated list. GBP: Proxy: iShares UK Gilts 0-5yr UCITS ETF (not in the fund list) IGLS.LProxy fund outside the curated list. CHF: Proxy: iShares Swiss Domestic Government Bond 0-3 UCITS ETF (not in the fund list) CSBGC3.SWProxy fund outside the curated list. SGD: iShares $ Treasury Bond 0-1yr, converted to SGD IB01.LNo SGD short-term UCITS ETF in our list: SGD figures use a USD T-bill ETF, so they include USD/SGD currency moves. |
| Gold | All bases: iShares Physical Gold ETC (USD, LSE) IGLN.L |
| Commodities | All bases: UBS CMCI Composite SF UCITS ETF USD acc (SIX) CCUSAS.SW |
| Tech sector | All bases: Xtrackers MSCI World Information Technology UCITS ETF 1C (EUR, Xetra) XDWT.DE |
| Health-care sector | All bases: Xtrackers MSCI World Health Care UCITS ETF 1C (EUR, Xetra) XDWH.DE |
| Value factor | All bases: iShares Edge MSCI World Value Factor UCITS ETF (USD, LSE) IWVL.L |
| Nasdaq-100 | All bases: iShares NASDAQ 100 UCITS ETF (USD, LSE) CNDX.L |
| Quality factor | All bases: iShares Edge MSCI World Quality Factor UCITS ETF (USD, LSE) IWQU.L |
| Momentum factor | All bases: iShares Edge MSCI World Momentum Factor UCITS ETF (USD, LSE) IWMO.L |
| Minimum volatility | All bases: iShares Edge MSCI World Minimum Volatility UCITS ETF (USD, LSE) MVOL.L |
| Small-cap value | All bases: Proxy: SPDR MSCI USA Small Cap Value Weighted UCITS ETF (EUR, Xetra; US only, not in the fund list) ZPRV.DESmall-cap value uses a US-only small-cap value proxy: the global fund in our list (Avantis, 2024) has too little history. |
| Swiss equity | All bases: Xtrackers Switzerland UCITS ETF 1D (CHF, SIX), dividends reinvested XSMI.SW |
| UK equity | All bases: iShares Core FTSE 100 UCITS ETF (GBP, LSE), dividends reinvested ISF.L |
| Eurozone equity | All bases: iShares Core MSCI EMU UCITS ETF (EUR, Xetra) SXR7.DE |
| World SRI | All bases: iShares MSCI World SRI UCITS ETF (EUR, LSE) SUSW.L |
| EM SRI | All bases: iShares MSCI EM SRI UCITS ETF (EUR, Xetra) QDVS.DE |
| High-dividend equity | All bases: Vanguard FTSE All-World High Dividend Yield UCITS ETF Dist (EUR, Xetra), dividends reinvested VGWD.DE |
| Global real estate | All bases: iShares Developed Markets Property Yield UCITS ETF (EUR, Xetra), dividends reinvested IQQ6.DE |
| Inflation-linked bonds | USD: iShares $ TIPS UCITS ETF (Xetra line, converted to USD) IUST.DE EUR: iShares EUR Inflation Linked Govt Bond UCITS ETF (EUR, Xetra) IBCI.DE GBP: iShares GBP Index-Linked Gilts UCITS ETF (GBP, LSE), income reinvested INXG.L CHF: UBS Bloomberg TIPS 1-10 UCITS ETF hedged to CHF (SIX) TIP1S.SW SGD: iShares $ TIPS UCITS ETF, converted to SGD IUST.DENo SGD inflation-linked UCITS ETF in our list: SGD figures use US TIPS, so they include USD/SGD currency moves. |
| Long govt bonds | USD: iShares $ Treasury Bond 20+yr UCITS ETF (USD, LSE), income reinvested IDTL.L EUR: iShares EUR Govt Bond 15-30yr UCITS ETF (EUR, Euronext Amsterdam), income reinvested IBGL.AS GBP: SPDR Bloomberg 15+ Year Gilt UCITS ETF (GBP, LSE), income reinvested GLTL.L CHF: iShares $ Treasury Bond 20+yr UCITS ETF CHF Hedged (SIX), income reinvested DTLC.SW SGD: iShares $ Treasury Bond 20+yr UCITS ETF, converted to SGD IDTL.LNo SGD long-dated government bond UCITS ETF in our list: SGD figures use US Treasuries 20+yr, so they include USD/SGD currency moves. |
| Multi-asset 60% equity | All bases: Vanguard LifeStrategy 60% Equity UCITS ETF Acc (EUR, Xetra) V60A.DE |
| Multi-asset 80% equity | All bases: Vanguard LifeStrategy 80% Equity UCITS ETF Acc (EUR, Xetra) V80A.DE |
4a. Returns over a chosen period and in another currency
Each portfolio page has a tool to show returns over a period you choose, so you can line them up with a bank or broker statement. The portfolio explorer can recompute every card for the same fixed periods.
- Periods. Data is month-end, so periods run from the start of the “from” month (that is, the previous month-end value) to the end of the “to” month. Presets end at the last month-end used (Sep 2026): YTD = January of that year to that month; 1Y/3Y/5Y/10Y = the last 12/36/60/120 months; Max = the whole history of that variant. A preset that needs more history than a portfolio has is greyed out. A custom period outside the available data is moved to the nearest available months, and the page says so.
- Metrics. Cumulative return = end value ÷ start value − 1. Annualised return (CAGR) = (1 + cumulative)12/months − 1, shown only for periods of 12 months or more (annualising a few months exaggerates). Volatility = standard deviation of the monthly returns in the period × √12 (needs at least 3 months). Max drawdown = the largest fall from a month-end peak to a later month-end low inside the period, starting from the period's opening value. The chart re-bases the portfolio to 10,000 at the start of the period. Calendar-year bars show each year inside the period; the first and last can be partial years and are labelled with their number of months.
- Return currency vs portfolio variant. The variant (base currency) decides the fund set: in the GBP variant, for example, the bonds are hedged to GBP where such a class exists. Show returns in only changes the currency of measurement. The conversion is: value in currency C = value in base B × (USD per unit of B) ÷ (USD per unit of C), using Yahoo Finance month-end rates (EURUSD=X, GBPUSD=X, USDSGD=X, USDCHF=X), the same rates used for the base-currency statistics. Cross rates such as EUR/CHF are derived through USD. For portfolios of unhedged equity only, the holdings are identical in every variant, so a USD-variant portfolio shown in CHF equals the CHF variant (the build script checks this).
- Hedged parts. Currency-hedged bond classes aim to deliver returns in their hedge currency. If you show, say, the EUR variant in CHF, the tool simply converts the result: a CHF investor holding those EUR-hedged bonds would carry EUR/CHF currency risk on them again. To see bonds hedged to CHF, choose the CHF variant. Hedged equity classes are not simulated; the series always use unhedged equity proxies.
- Time-weighted, single amount. The figures assume one amount invested at the start and nothing added or withdrawn. Bank statements sometimes show a money-weighted return, which reflects the timing of your deposits and withdrawals and can differ a lot from a time-weighted return.
- Costs and taxes. Results are simulated from proxy ETF prices, which already reflect each ETF's ongoing charges (TER), hedging costs of hedged classes and withholding tax suffered inside the fund, with distributions reinvested. They are before trading costs, bid-ask spreads, platform, custody or advisory fees, FX conversion costs at your broker and your own taxes. Your actual returns will differ. Past performance, simulated or real, is no guarantee of future results.
- How far back. The earliest month with a return is Nov 2011 (one-fund all-world); world + EM and regional equity start in Jun 2012. Portfolios with global bonds start in Dec 2017 (May 2018 for the CHF variant); cash-buffer USD and SGD variants start in Mar 2019; multi-asset in Jan 2021. FX data starts in Jan 2005 and has no monthly gaps, so every variant can be shown in every currency over its full history.
4b. Comparing portfolios (/compare/)
- One currency for everything. All selected portfolios and the benchmark are shown in the same base currency, each in its variant for that currency (bonds hedged to or denominated in that currency where our list has one), so currency effects are not mixed into the comparison.
- Same months. The figures cover only the months for which every selected portfolio and the benchmark have data (the common window). Period buttons and custom months are shortened to that window, with a note when that happens.
- Benchmark. The benchmark is the core “All-world, one fund” portfolio: 100% global all-world equity (FTSE All-World / MSCI ACWI type funds, unhedged), measured in the chosen currency. It stands for “the global stock market” and is shown so that each portfolio has the same neutral reference, not as a target. A 60/40 core portfolio (Two-fund 60/40) can be added as a second reference line for mixes with bonds.
- Figures use the same monthly index proxies and formulas as the portfolio pages. Return ÷ volatility is a simple ratio, not a Sharpe ratio (no risk-free rate). Weighted TER uses the first fund per building block in the neutral cost order. Columns are shown in the order you add them; nothing is ranked or highlighted.
5. Equity share and age: general background
This section is general education. It is not an input to anything on this site and does not select funds. Textbooks and target-date funds often reduce equity as a planned withdrawal date approaches (a “glidepath”). One well-known rule of thumb is “equity % ≈ 100 or 110 minus age”. Such rules ignore income stability, other assets, pensions, goals and personal tolerance for losses, so they are crude.
| Illustrative age | “100 − age” rule | “110 − age” rule |
|---|---|---|
| 25 | 75% equity | 85% equity |
| 35 | 65% equity | 75% equity |
| 45 | 55% equity | 65% equity |
| 55 | 45% equity | 55% equity |
| 65 | 35% equity | 45% equity |
| 75 | 25% equity | 35% equity |
Illustration of generic rules of thumb only. Not a recommendation for anyone.
5a. Home exchange (“Where do you trade?”)
Choosing an exchange narrows each building block to ETFs that have a trading line on that exchange and shows that line's ticker and trading currency. It does not change the neutral order (TER, then fund size, then age). Within that order, lines trading in your base currency come first. A portfolio is marked buildable when every building block has at least one match there. It is marked buildable with USD bonds when the only gap is a missing base-currency-hedged bond class and a USD-hedged (or USD-denominated) one trades there instead, which adds USD/base currency risk. It is partly available when some building blocks have no match, and not available when none do. Being buildable on an exchange says nothing about whether a portfolio or fund suits anyone. Brokers may also offer other venues or route orders differently.
Exchange data last collected 2026-10-27. A line is only recorded when the venue's own data, or the issuer's listing table, shows it. Nothing is assumed from other venues.
| Exchange | Group | Funds with a line | Source |
|---|---|---|---|
| Xetra (Deutsche Börse) | Main exchanges | 154 | Deutsche Börse 'T7 XETR all tradable instruments' CSV (cashmarket.deutsche-boerse.com) |
| London Stock Exchange | Main exchanges | 123 | londonstockexchange.com instrument search (api.londonstockexchange.com) |
| SIX Swiss Exchange | Main exchanges | 131 | SIX ETF/ETP explorer reference data (six-group.com/fqs/ref.json) |
| Euronext Amsterdam | Main exchanges | 46 | Euronext 'European Trackers' product directory download (live.euronext.com) |
| Euronext Paris | Main exchanges | 35 | Euronext 'European Trackers' product directory download (live.euronext.com) |
| Borsa Italiana (Euronext Milan, ETFplus) | Main exchanges | 132 | Euronext 'European Trackers' product directory download, market 'ETF Plus' (live.euronext.com) |
| Wiener Börse (Vienna) | Main exchanges | 25 | Wiener Börse ETF price list (wienerborse.at/en/exchange-traded-funds/) |
| Singapore Exchange | Main exchanges | 5 | SGX securities price list and security metadata (api.sgx.com) |
| Nasdaq Stockholm | Main exchanges | 4 | Nasdaq Nordic ETP screener (api.nasdaq.com/api/nordic/screener/etp) |
| Tradegate Exchange (Berlin) | German retail venues | 184 | Tradegate order book page per ISIN (tradegate.de/orderbuch.php) |
| gettex (Börse München) | German retail venues | 172 | ESMA FIRDS (MICs MUND/MUNC); gettex FAQ: trading currency is always EUR |
| Börse Stuttgart | German retail venues | 156 | ESMA FIRDS (Börse Stuttgart MICs) |
Caveats
- London Stock Exchange: LSE's data service could not be reached when the data was refreshed. LSE lines are the ones last verified directly with LSE on 2026-02-27, 2026-03-31, 2026-09-30, 2026-10-21, 2026-10-23. For the 46 funds added later, they come from the issuer's listing table (as of the factsheet date).
- gettex and Börse Stuttgart: tradability comes from ESMA's FIRDS register only. That register has no ticker, so these lines show “no ticker in source”, and Stuttgart lines have no trading currency. Search by ISIN at your broker.
- Euronext (Amsterdam, Paris, Milan): Euronext's ETF download is incomplete, so missing lines were confirmed one by one on Euronext's product pages. Lines that could not be confirmed there were dropped. For IE00BMGNVD65 and LU1778293313, the only line on the original venues is from the issuer's listing table and could not be confirmed by the venue. It is still shown in the general listing column but does not count for any exchange.
- Wiener Börse: trading currency is taken as EUR; the venue list does not state it.
- LSE quotes in pence: GBP lines quoted in pence are marked “GBX”.
- Not in the selector because no portfolio can be fully built from our fund list there: Euronext Brussels, Bolsa de Madrid (BME), Nasdaq Copenhagen, Nasdaq Helsinki, Euronext Dublin. Euronext Dublin is mainly a listing venue for these ETFs, not a trading venue.
- Primary listing is not shown (no free official source). No liquidity or spread ranking is applied.
6. Known limitations
- Bond histories in hedged UCITS form start in late 2017 to 2018, so windows for portfolios with bonds are about 7–9 years and include only a few market regimes.
- Multi-asset (LifeStrategy UCITS ETF) history starts in December 2020.
- Yahoo Finance data can contain errors. The script flags any month with a move larger than 35% for review.
- No bid-ask spread data (no free licensable source); fund size is used as a rough proxy for liquidity.
- Tax treatment (withholding tax, reporting-fund status, estate tax) varies by residence and is not modelled.