Carlo Hofer

← Rules-based portfolio · All projects

Rules-based portfolio

A real-money portfolio run under written rules: 70 per cent in a global equity ETF and 30 per cent in a euro government bond ETF, funded by a starting amount and a fixed monthly top-up. Every figure is computed from the ledger and the issuers' published data.

Prices as of 2026-10-08, holdings as of 2026-10-09First purchase 2026-10-08 RepositoryRules Mandate

Where the portfolio stands and how it has done since the first purchase, with contributions removed.

Equity weight

70.0%
No month end yet

Drift from 70%

+0.0 points
Equity weight minus the target weight

Return since the first purchase

+0.1%
Time-weighted, contributions removed

Drawdown now

0.0%
Below the previous peak

Orders this month

2 of 5
The allowance of rule 6

Prices as of 2026-10-08, holdings as of 2026-10-09. Source: outputs/allocation_now.csv, outputs/portfolio_daily.csv

Allocation now against the target and the band

Prices as of 2026-10-08, holdings as of 2026-10-09

Cash 0.0%. The band applies to the equity weight only.

Source: outputs/allocation_now.csv

Table
SleeveWeightTarget weightBand
Equity70.0%70.0%Band 65 to 75
Bonds30.0%30.0%
Cash0.0%

Growth of 100: the portfolio, the two reference portfolios and the index blend

As of 2026-10-08. 100 is the starting amount before the first order. The index blend starts at the first month end

Source: outputs/portfolio_daily.csv

Table
DatePortfolioReference AReference BIndex blend
2026-10-07, start100.0100.0100.0n/a
2026-10-08100.1100.0100.0n/a

Drawdown against the mandate's limit

As of 2026-10-08. Worst fall to date 0.0%. The mandate's test limit is 35 per cent and its outer bound 40 per cent

Daily values. The mandate's 35% test used month-end values, which miss falls that reverse within a month; the worst daily fall is at least as deep.

Source: outputs/portfolio_daily.csv

Table
DatePortfolioIndex blend
2026-10-07, start0.0%n/a
2026-10-080.0%n/a

The equity weight against its band, and every order against the rules.

Equity weight in its band, with every order

As of 2026-10-08. No cycle day yet: the line covers the days since the first purchase

Source: outputs/portfolio_daily.csv, outputs/orders.csv, outputs/band_events.csv, outputs/compliance.csv

Table
DateEquityBondsCash
2026-10-0870.0%30.0%0.0%

Orders per month against the allowance of five

As of 2026-10-08

Rule 7 allows orders between 15:45 and 17:00 Amsterdam time. The equity and bond orders of 2026-10-08, the first purchases, were placed outside that window. The record keeps every order as it was placed.

Source: outputs/orders.csv

Table
DateSleeveSideRuleInside 15:45 to 17:00Bid and ask recorded
2026-10-08equitybuystartnono
2026-10-08bondsbuystartnono

What running the portfolio costs, measured against reference portfolio A, which follows the same rules at net asset value without costs.

Cost per month by source

As of 2026-10-08

Basis points of the portfolio's value on the day of each order. Price paid against net asset value is the gap between each order's price and the ETF's net asset value of that day, beyond the half-spread. It is computed as the month's implementation cost minus commissions, half-spread and currency conversion, so the four sources of a month add up to that month's implementation cost in chart 8. For the two orders without a recorded bid and ask, the half-spread is not measured and is part of the price paid against net asset value.

Source: outputs/costs_monthly.csv

Table
MonthCommissionsHalf-spreadOrders without bid and askConversionPrice against net asset valueMonth's implementation cost
2026-100 bpn/a20 bp−10 bp−10 bp

Implementation cost, cumulative: the portfolio against reference portfolio A

As of 2026-10-08. Negative when the portfolio trails the reference

Reference portfolio A applies the same rules at net asset value and without costs, so the gap between the portfolio and reference portfolio A is the cumulative cost of running the portfolio. A cost of 10 basis points in one month of chart 7 moves this line down by 10 basis points in that month.

Source: outputs/implementation_cost.csv

Table
DateImplementation cost
2026-10-07, start0 bp
2026-10-08+10 bp

Money paid in against gains and losses, in units of the starting amount.

Money paid in and the value of the portfolio, in units of the starting amount

As of 2026-10-08. The starting amount is 100 units and each top-up is 5

Source: outputs/portfolio_daily.csv

Table
DatePaid inValue
2026-10-07, start100.0100.0
2026-10-08100.0100.1

Market effect and contribution by month, in per cent of the value at the start of the month

As of 2026-10-08

Source: outputs/metrics_monthly.csv

Table
MonthMarket effectContribution
2026-10 (to date)+0.1%0.0%

The holdings of the two ETFs, weighted by each sleeve's weight in the portfolio, in three parts: the equity sleeve, the bond sleeve and the whole portfolio, where currency exposure combines both.

Equity sleeve

iShares MSCI ACWI UCITS ETF USD (Acc), 70.0% of the portfolio

Equity by region

Holdings as of 2026-10-07, sleeve weights as of 2026-10-08

Regions follow MSCI's market classification (method/msci_regions.csv).

Source: outputs/lookthrough_equity_region.csv

Table
RegionShare of the portfolioShare of the sleeve
North America47.1%67.2%
Europe and Middle East9.2%13.1%
Emerging markets8.3%11.9%
Pacific5.1%7.3%
Cash and derivatives0.3%0.5%
Not in the index0.0%0.0%

Equity by country: the ten largest

Holdings as of 2026-10-07, sleeve weights as of 2026-10-08

Country is the issuer's location as iShares reports it. Four of the fund's holdings are iShares ETFs that each hold one market (India, Brazil, China and Saudi Arabia), and each is counted under that market.

Source: outputs/lookthrough_equity_country.csv

Table
CountryShare of the portfolioShare of the sleeve
United States45.1%64.4%
Japan3.6%5.2%
Taiwan2.5%3.5%
United Kingdom2.0%2.9%
Canada2.0%2.8%
Korea1.8%2.5%
China1.6%2.3%
France1.3%1.9%
Switzerland1.3%1.9%
Germany1.3%1.8%
Other7.2%10.3%
Cash and derivatives0.3%0.5%

Equity by sector

Holdings as of 2026-10-07, sleeve weights as of 2026-10-08

GICS sectors as iShares reports them. The single-market ETFs held by the fund have no single sector.

Source: outputs/lookthrough_equity_sector.csv

Table
SectorShare of the portfolioShare of the sleeve
Information Technology23.4%33.5%
Financials10.5%15.0%
Industrials6.9%9.9%
Health Care5.7%8.1%
Consumer Discretionary5.6%8.1%
Communication Services5.4%7.7%
Consumer Staples3.1%4.4%
Energy2.6%3.7%
Materials2.2%3.2%
Single-market ETFs held by the fund1.7%2.5%
Utilities1.5%2.1%
Real Estate1.0%1.4%
Cash and derivatives0.3%0.5%

The ten largest companies: 18.7% of the portfolio

Holdings as of 2026-10-07, sleeve weights as of 2026-10-08

Share classes of one company are summed (method/companies.csv).

Source: outputs/lookthrough_top10.csv

Table
CompanyShare of the portfolioShare of the sleeve
NVIDIA3.7%5.2%
Apple3.3%4.7%
Microsoft2.5%3.6%
Alphabet2.5%3.5%
Amazon1.7%2.4%
TSMC1.3%1.9%
Broadcom1.1%1.6%
Meta Platforms1.1%1.5%
Micron Technology0.8%1.2%
Tesla0.7%1.0%

Bond sleeve

Vanguard EUR Eurozone Government Bond UCITS ETF (EUR) Accumulating, 30.0% of the portfolio

Bonds by issuing country

Holdings as of 2026-08-31, sleeve weights as of 2026-10-08

Source: outputs/lookthrough_bonds_country.csv

Table
CountryShare of the portfolioShare of the sleeve
France7.3%24.5%
Italy6.5%21.6%
Germany5.7%19.2%
Spain4.2%14.0%
Belgium1.5%5.0%
Netherlands1.2%4.0%
Austria1.0%3.5%
Portugal0.6%1.9%
Finland0.5%1.8%
Ireland0.4%1.4%
Other0.9%3.0%
Cash and derivatives0.0%0.1%

Bonds by maturity, and duration

Duration of the bond sleeve

6.8 years
Vanguard factsheet of 2026-08-31

Duration contribution to the portfolio

2.0 years
Sleeve weight times duration

Holdings as of 2026-08-31, sleeve weights as of 2026-10-08

Maturities are measured from the holdings' as-of date. Duration is the factsheet's average duration.

Source: outputs/lookthrough_bonds_maturity.csv, outputs/lookthrough_bonds_duration.csv

Table
MaturityShare of the sleeveShare of the portfolio
1 to 3 years23.6%7.1%
3 to 5 years19.2%5.8%
5 to 7 years13.9%4.2%
7 to 10 years17.7%5.3%
10 to 15 years10.2%3.1%
Over 15 years15.3%4.6%
Cash and derivatives0.1%0.0%

Credit quality of the bond sleeve, as the issuer reports it

Vanguard factsheet as of 2026-08-31

The factsheet takes the median of the Moody's, Fitch and S&P ratings of each issue.

Source: outputs/lookthrough_bonds_rating.csv

Table
RatingShare of the sleeveShare of the portfolio
AAA23.3%7.0%
AA6.7%2.0%
A47.1%14.1%
BBB22.9%6.9%

Whole portfolio

Both sleeves and cash together

Currency exposure, by sleeve

Holdings as of 2026-10-07, sleeve weights as of 2026-10-08

Each holding counts in the currency of its market, as the issuers report it, so buying the equity ETF's US dollar share class in euro on Xetra does not change the exposure. Currencies are named until the rest is below 10 per cent of the portfolio.

Source: outputs/lookthrough_currency.csv

Table
CurrencyShare of the portfolioFrom the equity sleeveFrom the bond sleeveFrom cash
USD45.7%45.7%0.0%0.0%
EUR34.9%4.9%30.0%0.0%
JPY3.7%3.7%0.0%0.0%
TWD2.5%2.5%0.0%0.0%
CAD2.0%2.0%0.0%0.0%
GBP2.0%2.0%0.0%0.0%
Other9.3%9.3%0.0%0.0%

The equity ETF's loadings on Kenneth French's developed-market factors.

Factor loadings of the equity ETF

Weekly returns, Wednesday to Wednesday to avoid week-start and week-end effects, 2023-09-06 to 2026-08-26, 156 weeks

The regression uses the ETF's net asset value in US dollars and Kenneth French's developed-market factors, also in US dollars, so no exchange rate enters it. Standard errors are Newey-West. The table adds a daily estimate as a check, with each factor's return of the same day and of the previous day (Dimson's correction): the fund's valuation point and the timing of French's daily returns may not coincide day by day, which would bias loadings estimated on same-day returns. The bond sleeve is not regressed on equity factors.

Source: outputs/factor_loadings.csv

Table
FactorWeekly loadingWeekly s.e.Daily, with the previous dayDaily s.e.
Market1.000.020.990.01
Size−0.060.02−0.020.02
Value0.000.020.000.02
Profitability0.040.040.010.03
Investment−0.020.03−0.040.02
Momentum0.040.020.050.01
Intercept, per period0.01%0.00%
R squared0.980.97
Observations156760
Newey-West lag46

Rolling loadings: 36-month windows of weekly returns, stepped at each month end

Windows ending 2014-11 to 2026-08. The five panels after the market share one scale

Market

Size

Value

Profitability

Investment

Momentum

Source: outputs/factor_rolling.csv

Table
Window endMarketSizeValueProfitabilityInvestmentMomentum
2014-111.00−0.120.040.10−0.03−0.01
2014-121.00−0.110.040.11−0.03−0.01
2015-011.00−0.110.050.13−0.04−0.01
2015-021.00−0.110.050.13−0.030.00
2015-030.99−0.090.080.16−0.020.00
2015-040.99−0.090.080.16−0.030.00
2015-050.98−0.100.100.16−0.050.01
2015-060.98−0.100.110.16−0.080.01
2015-070.98−0.090.130.14−0.100.03
2015-080.98−0.080.120.11−0.130.01
2015-090.99−0.080.110.12−0.100.01
2015-100.99−0.100.110.12−0.120.01
2015-111.00−0.090.100.13−0.100.00
2015-120.99−0.100.090.11−0.09−0.01
2016-010.99−0.100.090.10−0.06−0.01
2016-020.99−0.110.080.09−0.05−0.01
2016-030.99−0.100.050.080.00−0.02
2016-040.99−0.100.080.08−0.03−0.01
2016-050.99−0.100.080.07−0.03−0.01
2016-060.99−0.100.060.070.01−0.01
2016-070.99−0.100.060.080.00−0.01
2016-080.99−0.100.060.09−0.01−0.01
2016-090.99−0.100.040.090.03−0.02
2016-100.99−0.090.040.090.03−0.02
2016-111.00−0.110.000.080.08−0.02
2016-121.00−0.12−0.020.080.08−0.02
2017-011.00−0.12−0.050.060.11−0.03
2017-021.00−0.11−0.060.060.13−0.04
2017-031.00−0.11−0.060.070.13−0.04
2017-040.99−0.11−0.060.080.12−0.04
2017-050.99−0.11−0.060.080.11−0.04
2017-060.99−0.11−0.050.080.11−0.04
2017-070.99−0.11−0.050.080.12−0.04
2017-080.99−0.11−0.050.070.11−0.04
2017-090.99−0.11−0.050.070.10−0.04
2017-100.99−0.11−0.030.080.08−0.03
2017-110.99−0.12−0.040.080.09−0.03
2017-121.00−0.12−0.050.070.11−0.03
2018-011.00−0.12−0.050.050.11−0.03
2018-021.01−0.12−0.050.060.11−0.03
2018-031.01−0.14−0.060.050.11−0.02
2018-041.01−0.13−0.070.050.12−0.02
2018-051.01−0.13−0.070.050.12−0.02
2018-061.02−0.12−0.070.050.12−0.02
2018-071.01−0.15−0.080.060.15−0.03
2018-081.02−0.15−0.080.060.17−0.02
2018-091.02−0.14−0.080.060.16−0.02
2018-101.02−0.13−0.080.060.16−0.02
2018-111.01−0.13−0.090.020.16−0.02
2018-121.03−0.09−0.120.050.23−0.03
2019-011.03−0.05−0.130.050.24−0.04
2019-021.04−0.04−0.140.070.26−0.04
2019-031.04−0.05−0.120.080.24−0.03
2019-041.04−0.05−0.170.040.28−0.03
2019-051.04−0.03−0.160.070.28−0.03
2019-061.04−0.03−0.150.060.25−0.04
2019-071.03−0.03−0.150.070.26−0.02
2019-081.04−0.02−0.150.090.27−0.03
2019-091.04−0.02−0.150.090.27−0.03
2019-101.04−0.01−0.160.090.27−0.03
2019-111.030.01−0.130.070.21−0.03
2019-121.040.02−0.100.080.19−0.02
2020-011.040.03−0.060.090.15−0.01
2020-021.030.03−0.050.070.120.00
2020-031.030.01−0.100.070.200.00
2020-041.03−0.01−0.080.060.200.01
2020-051.03−0.02−0.090.050.230.02
2020-061.03−0.01−0.100.050.230.02
2020-071.03−0.01−0.100.030.210.02
2020-081.03−0.01−0.100.020.190.02
2020-091.02−0.01−0.100.010.190.01
2020-101.02−0.01−0.100.000.180.01
2020-111.020.00−0.100.010.190.02
2020-121.02−0.01−0.090.030.180.02
2021-011.01−0.02−0.080.000.140.02
2021-021.01−0.03−0.08−0.020.120.01
2021-031.01−0.03−0.09−0.020.100.00
2021-041.01−0.03−0.08−0.020.110.00
2021-051.01−0.04−0.08−0.020.110.00
2021-061.00−0.04−0.08−0.020.110.00
2021-071.00−0.03−0.08−0.010.110.00
2021-081.00−0.03−0.070.010.090.00
2021-091.00−0.03−0.070.010.090.00
2021-101.00−0.03−0.070.000.100.00
2021-111.00−0.03−0.060.030.100.01
2021-120.99−0.04−0.030.040.040.01
2022-010.99−0.07−0.010.030.030.02
2022-020.98−0.070.000.030.020.02
2022-030.98−0.070.000.010.040.02
2022-040.98−0.07−0.010.010.030.02
2022-050.98−0.060.000.020.030.02
2022-060.98−0.06−0.010.020.020.02
2022-070.98−0.06−0.010.010.030.02
2022-080.98−0.06−0.010.010.040.02
2022-090.98−0.05−0.010.010.040.02
2022-100.98−0.05−0.020.010.040.02
2022-110.98−0.05−0.020.000.050.02
2022-120.98−0.04−0.020.000.050.02
2023-010.98−0.04−0.020.000.050.02
2023-020.98−0.04−0.030.010.050.02
2023-030.96−0.07−0.04−0.020.050.01
2023-040.96−0.06−0.04−0.020.050.01
2023-050.96−0.06−0.03−0.020.040.01
2023-060.96−0.06−0.03−0.020.030.01
2023-070.95−0.06−0.02−0.020.030.00
2023-080.96−0.06−0.02−0.010.030.00
2023-090.95−0.07−0.02−0.020.030.00
2023-100.95−0.07−0.01−0.020.020.00
2023-110.96−0.07−0.01−0.020.020.00
2023-120.95−0.060.000.000.000.00
2024-010.95−0.050.000.010.000.00
2024-020.96−0.060.010.02−0.01−0.01
2024-030.96−0.050.020.03−0.01−0.01
2024-040.96−0.040.020.03−0.01−0.01
2024-050.96−0.050.020.03−0.01−0.01
2024-060.96−0.050.020.04−0.01−0.01
2024-070.96−0.070.020.03−0.010.00
2024-080.96−0.080.020.03−0.010.00
2024-090.96−0.090.020.020.000.00
2024-100.96−0.090.020.02−0.01−0.01
2024-110.96−0.080.020.02−0.010.00
2024-120.96−0.080.020.02−0.01−0.01
2025-010.96−0.070.000.020.000.00
2025-020.96−0.070.000.030.000.00
2025-030.97−0.060.010.060.000.00
2025-040.98−0.050.010.080.020.00
2025-050.98−0.060.020.080.020.00
2025-060.98−0.060.020.080.020.00
2025-070.98−0.060.020.080.000.00
2025-080.98−0.060.020.080.000.00
2025-090.98−0.070.020.060.000.00
2025-100.98−0.080.020.07−0.010.00
2025-110.99−0.070.020.09−0.010.00
2025-120.99−0.080.020.09−0.03−0.01
2026-010.99−0.070.020.09−0.020.00
2026-020.99−0.070.020.08−0.040.00
2026-031.00−0.070.020.09−0.040.00
2026-041.00−0.070.020.10−0.040.01
2026-051.00−0.050.010.08−0.010.02
2026-061.00−0.070.010.04−0.010.04
2026-071.00−0.060.000.04−0.010.04
2026-081.00−0.060.000.04−0.020.04

Where the difference to the index blend came from

As of 2026-10-08

From the October 2027 month end, when twelve months exist, this chart splits the portfolio's monthly return against the index blend into exposures times factor returns and a residual.

How the split and the two ETFs were chosen, the data behind the charts, and the rules, in four parts: the allocation test, the ETF selection, the data sources and the rules.

The allocation test: worst fall and growth per year by split

Monthly euro returns, February 1999 to December 2025, rebalanced by the band

The split held is the largest equity target weight whose worst fall stayed within 35 per cent.

Source: mandate/allocation_check_results.csv

Table
SplitWorst fallGrowth per yearWithin 35%Held
40/6017.0%5.3%yesno
45/5520.0%5.5%yesno
50/5022.9%5.8%yesno
55/4525.8%6.0%yesno
60/4028.3%6.3%yesno
65/3530.9%6.6%yesno
70/3034.7%6.8%yesyes
75/2537.8%6.9%nono
80/2040.5%7.2%nono
85/1543.0%7.5%nono
90/1046.9%7.6%nono
95/549.3%7.7%nono
100/051.6%7.8%nono

The ETF selection: tracking difference by fund and year

Calendar years 2023 to 2025, fund return minus index return, from the issuers' factsheets

Equity ETFs

Bond ETFs

Tracking difference is the fund's calendar-year return minus the return of its index, so a higher figure means a smaller shortfall. Each mark is one year, with the shape given in the legend, and the bar is the three-year average. The funds are numbered in the rank order fixed before they were compared: equity ETFs by Irish domicile, then the highest average tracking difference, then the lowest TER, and bond ETFs by the highest average tracking difference, then the lowest TER. The held funds, in the primary ink, are the first in rank order that the account offers. Hollow marks are funds the account does not offer.

Source: method/selection_tracking_difference.csv

Table
RankFundISINYearTracking differenceAverageOfferedHeldFactsheet
1SPDR MSCI ACWIIE00B44Z5B482023−0.19+0.050nono2026-08-31
1SPDR MSCI ACWIIE00B44Z5B482024−0.13+0.050nono2026-08-31
1SPDR MSCI ACWIIE00B44Z5B482025+0.47+0.050nono2026-08-31
2iShares MSCI ACWIIE00B6R522592023+0.15+0.027yesyes2026-07-31
2iShares MSCI ACWIIE00B6R522592024−0.14+0.027yesyes2026-07-31
2iShares MSCI ACWIIE00B6R522592025+0.07+0.027yesyes2026-07-31
3Vanguard FTSE All-WorldIE00BK5BQT802023+0.03−0.013yesno2026-08-31
3Vanguard FTSE All-WorldIE00BK5BQT802024−0.01−0.013yesno2026-08-31
3Vanguard FTSE All-WorldIE00BK5BQT802025−0.06−0.013yesno2026-08-31
4SPDR MSCI ACWI IMIIE00B3YLTY662023−0.48−0.193yesno2026-08-31
4SPDR MSCI ACWI IMIIE00B3YLTY662024−0.24−0.193yesno2026-08-31
4SPDR MSCI ACWI IMIIE00B3YLTY662025+0.14−0.193yesno2026-08-31
5Invesco FTSE All-WorldIE000716YHJ72023n/an/ayesno2026-08-31
5Invesco FTSE All-WorldIE000716YHJ72024+0.40n/ayesno2026-08-31
5Invesco FTSE All-WorldIE000716YHJ72025−0.09n/ayesno2026-08-31
1Vanguard EUR Eurozone GovtIE00BH04GL392023+0.02−0.027yesyes2026-08-31
1Vanguard EUR Eurozone GovtIE00BH04GL392024−0.11−0.027yesyes2026-08-31
1Vanguard EUR Eurozone GovtIE00BH04GL392025+0.01−0.027yesyes2026-08-31
2Amundi Prime Euro GovtLU20892388982023−0.01−0.030yesno2026-07-31
2Amundi Prime Euro GovtLU20892388982024−0.05−0.030yesno2026-07-31
2Amundi Prime Euro GovtLU20892388982025−0.03−0.030yesno2026-07-31
3SPDR Bloomberg Euro GovtIE00BMYHQM422023−0.10−0.040yesno2026-09-30
3SPDR Bloomberg Euro GovtIE00BMYHQM422024−0.12−0.040yesno2026-09-30
3SPDR Bloomberg Euro GovtIE00BMYHQM422025+0.10−0.040yesno2026-09-30
4Xtrackers Eurozone GovtLU02903557172023−0.09−0.063yesno2026-08-31
4Xtrackers Eurozone GovtLU02903557172024−0.06−0.063yesno2026-08-31
4Xtrackers Eurozone GovtLU02903557172025−0.04−0.063yesno2026-08-31
5HSBC Euro GovtIE00066KZ5B52023n/an/anono2026-08-31
5HSBC Euro GovtIE00066KZ5B52024n/an/anono2026-08-31
5HSBC Euro GovtIE00066KZ5B52025n/an/anono2026-08-31
6iShares Core EUR GovtIE0008U154562023n/an/anono2026-08-31
6iShares Core EUR GovtIE0008U154562024n/an/anono2026-08-31
6iShares Core EUR GovtIE0008U154562025n/an/anono2026-08-31
7UBS Core EUR Gov 1-10LU09696394742023n/an/ayesno2026-08-31
7UBS Core EUR Gov 1-10LU09696394742024n/an/ayesno2026-08-31
7UBS Core EUR Gov 1-10LU09696394742025n/an/ayesno2026-08-31

Data sources

Every source is downloaded at build time, cached locally and not redistributed. Only the figures computed from them are published.

Source: outputs/sources.csv

Table
SourceLast date coveredDownloaded
iShares, IE00B6R52259, net asset values in US dollars2026-10-082026-10-09
Vanguard, IE00BH04GL39, net asset values in euro2026-10-082026-10-09
ECB, euro reference rate against the US dollar2026-10-082026-10-09
iShares, IE00B6R52259, holdings2026-10-072026-10-09
Vanguard, IE00BH04GL39, holdings2026-08-312026-10-09
Vanguard, IE00BH04GL39, monthly factsheet2026-08-312026-10-09
Kenneth French, Developed 5 Factors and Momentum, daily, Bloomberg database 2026082026-08-312026-10-09
MSCI ACWI net total return in euro, end-of-day levels2026-10-082026-10-09

The rules

Rendered from rules/RULES.md at build time, with the amendments table

These are the rules the portfolio runs under. They were fixed on 7 October 2026, before the first order, and the git tag rules-v1.0 marks this version. A rule changes only through rule 9.

The portfolio is long-only and holds two exchange-traded funds in a euro brokerage account. An ETF (exchange-traded fund) is a fund whose shares are listed on a stock exchange; both ETFs held here are UCITS funds, the European Union standard for funds sold to the public. One ETF holds global equities and the other holds euro government bonds.

Terms used in the rules

  • Sleeve: the part of the portfolio held in one ETF. The portfolio has an equity sleeve and a bond sleeve.
  • Weight: a sleeve's value divided by the value of the portfolio. The value of the portfolio is the value of both ETFs plus any contribution not yet invested.
  • Target weight: 70 per cent for the equity sleeve and 30 per cent for the bond sleeve.
  • Band: the interval from 65 to 75 per cent for the equity weight.
  • Worst fall: the largest fall in the portfolio's value from a previous peak to a later low, measured on returns with contributions removed.
  • Contribution: money paid into the portfolio, meaning the starting amount and each top-up.
  • Top-up: the fixed monthly contribution.
  • Cycle day: the day each month on which the rules are applied.
  • Trading day: a day on which Xetra, the Frankfurt exchange where both ETFs are listed in euro, is open.
  • Order: an instruction to the broker to buy or sell one ETF.
  • Ledger: the private record of every contribution and every order.

Objective and risk

The mandate in mandate/MANDATE.md sets the objective and the risk limit. The objective is the highest long-run growth within a worst fall of about one third, over a horizon of five to ten years with no withdrawals, and a worst fall above 40 per cent is outside it. The target weights follow from the limit: 70 per cent is the largest equity target weight whose worst fall, in euro from February 1999 to December 2025 and rebalanced by a band as in rule 5, stayed within 35 per cent (34.7 per cent, from August 2000 to March 2003). The test and its data sources are in mandate/allocation_check.py, and its output is in mandate/allocation_check_results.md. The limit is the basis of the target weights and never a reason to sell. In a fall, rule 8 applies and the cycle runs as written.

The rules

  1. Target weights. The portfolio holds two sleeves, each in one ETF, at target weights of 70 per cent equity and 30 per cent bonds. There is no cash target. Cash is whatever part of a contribution has not yet been invested.

  2. Contributions. A starting amount is fixed before the first order. Every month after that, a top-up equal to 5 per cent of the starting amount is paid into the account by the 2nd. The euro amounts are private, and the fingerprint in the last section fixes them.

  3. The cycle. The cycle day is the 5th of each month, or the first trading day after the 5th when the 5th is not a trading day. On the cycle day the weights are computed from the ledger and the orders the rules produce are placed the same day.

  4. Top-ups rebalance first. The top-up buys the sleeve furthest below its target weight, up to the amount that brings that sleeve to its target weight. Any remainder buys both sleeves in proportion to their target weights. Nothing is sold while the equity weight is inside the band. With two sleeves, this places the portfolio at its target weights whenever the top-up is large enough, and otherwise moves it as close to them as buying alone allows. For example, with the starting amount set to 100, equity worth 68 and bonds worth 32 before a top-up of 5, the portfolio is worth 105 after the top-up and the equity target is 73.5. Equity is 5.5 short, more than the top-up, so all 5 buy equity and the equity weight moves from 68.0 to 69.5 per cent.

  5. The band. If the equity weight is below 65 or above 75 per cent after the top-up, the portfolio is brought back to exactly 70 and 30 per cent on the same day, by selling the sleeve above its target weight and buying the other. Inside the band nothing is sold. There is no calendar rebalancing. The band is the only trigger.

  6. Order budget. At most five orders are placed in a month, the number the account's plan carries without commission. If the rules call for more, the band orders come first and the top-up waits for the next cycle day. Rules 4 and 5 never need more than two orders on a cycle day.

  7. Execution. Orders are placed on a trading day between 15:45 and 17:00 Amsterdam time, when Xetra and the US equity market are both open, outside the first fifteen minutes of the US session and the last thirty minutes of the Xetra session. For each order the ledger records the date, the time, the ISIN, the side, the units, the price, the fee, the currency, and the bid and ask quoted when the order was placed.

  8. No discretion. No order is placed outside these rules. News does not add a purchase, a fall in prices does not pause the cycle, and no ETF is changed. When in doubt, the cycle is run as written and the doubt is recorded in the monthly log.

  9. Changing the rules. A rule changes only by a dated amendment committed to this file. An amendment applies from the first cycle day at least 30 days after its commit. The first review of the rules is on the cycle day of October 2027, twelve months after this version, and there is no review before it.

  10. Sales. Every sale is recorded in the ledger on its day with the units sold, the proceeds, the cost basis and the realised gain or loss. The cost basis is the average price paid per unit, fees included, times the units sold.

The two ETFs

Sleeve ETF ISIN Index TER Domicile Replication Fund size Listing Income
Equity, 70% iShares MSCI ACWI UCITS ETF USD (Acc) IE00B6R52259 MSCI All Country World Index, net total return 0.20% Ireland physical, optimised sampling USD 35.6 billion, 31 July 2026 Xetra, IUSQ, in euro accumulating
Bonds, 30% Vanguard EUR Eurozone Government Bond UCITS ETF (EUR) Accumulating IE00BH04GL39 Bloomberg Euro-Aggregate: Treasury Index 0.07% Ireland physical, sampling EUR 5.5 billion, 31 August 2026 Xetra, VGEA, in euro accumulating

The TER (total expense ratio) is the yearly fee the fund deducts from its assets. An accumulating ETF reinvests the dividends or coupons it receives and pays nothing out. Physical replication means the fund holds the securities of its index: all of them under full replication, or a representative subset under sampling. The equity index covers large and mid-sized companies in developed and emerging markets. The bond index covers fixed-rate, investment-grade bonds of eurozone governments with more than one year to maturity. Fund size counts all share classes of the fund, as the issuer's factsheet reports it on the date shown.

How the two ETFs were chosen

Criteria. An equity ETF qualifies if it tracks a global index of developed and emerging markets (FTSE All-World, MSCI ACWI, MSCI ACWI IMI, or an equivalent global index tracked by a Vanguard, iShares or SPDR fund), is a UCITS fund, accumulates, is listed in euro on a European exchange, replicates physically, charges a TER of at most 0.25%, has a fund size above EUR 1 billion and is offered in euro on the account. A bond ETF qualifies if it tracks a euro aggregate or euro government index of investment-grade bonds, either across all maturities or capped at 10 years, is a UCITS fund, accumulates, holds bonds denominated in euro, charges a TER of at most 0.20%, has a fund size above EUR 500 million and is offered in euro on the account. Versions of an index that change its exposure fail: ESG and other screened indices, indices built on a factor (a company characteristic, such as dividend yield, by which an index selects or weights companies) and currency-hedged share classes. An index of short maturities only or long maturities only fails. Synthetic replication, in which the fund holds other securities and receives the index return from a bank through a swap contract, fails.

Ranking. Among the ETFs that qualify, the order was fixed before the funds were compared. Equity ETFs rank first by Irish domicile, then by the highest average tracking difference over 2023, 2024 and 2025, then by the lowest TER. Bond ETFs rank by the highest average tracking difference over the same years, then by the lowest TER. Tracking difference is an ETF's calendar-year return minus the return of its index, both taken from the issuer's factsheet, so a higher figure means a smaller shortfall. An ETF with fewer than three full calendar years of returns ranks after the others, by TER. Irish domicile comes first for equity because a fund domiciled in Ireland pays 15 per cent tax on US dividends under the treaty between the two countries, where a fund domiciled in Luxembourg pays 30 per cent. With the United States at about 60 per cent of a global index and a dividend yield near 1.3 per cent, the difference is about 0.12 percentage points a year.

Equity ETFs that qualify, in rank order. Tracking difference in percentage points.

Rank ETF ISIN TER 2023 2024 2025 Average Offered on the account
1 SPDR MSCI All Country World UCITS ETF (Acc) IE00B44Z5B48 0.12% -0.19 -0.13 +0.47 +0.050 no
2 iShares MSCI ACWI UCITS ETF USD (Acc) IE00B6R52259 0.20% +0.15 -0.14 +0.07 +0.027 yes, held
3 Vanguard FTSE All-World UCITS ETF (USD) Accumulating IE00BK5BQT80 0.14% +0.03 -0.01 -0.06 -0.013 yes
4 SPDR MSCI ACWI IMI UCITS ETF (Acc) IE00B3YLTY66 0.17% -0.48 -0.24 +0.14 -0.193 yes
5 Invesco FTSE All-World UCITS ETF Acc IE000716YHJ7 0.15% +0.40 -0.09 under three years yes

Bond ETFs that qualify, in rank order.

Rank ETF ISIN TER 2023 2024 2025 Average Offered on the account
1 Vanguard EUR Eurozone Government Bond UCITS ETF (EUR) Accumulating IE00BH04GL39 0.07% +0.02 -0.11 +0.01 -0.027 yes, held
2 Amundi Prime Euro Government Bond UCITS ETF Acc LU2089238898 0.05% -0.01 -0.05 -0.03 -0.030 yes
3 SPDR Bloomberg Euro Government Bond UCITS ETF (Acc) IE00BMYHQM42 0.07% -0.10 -0.12 +0.10 -0.040 yes, as SPF0
4 Xtrackers II Eurozone Government Bond UCITS ETF 1C LU0290355717 0.07% -0.09 -0.06 -0.04 -0.063 yes
5 HSBC Euro Government Bond UCITS ETF IE00066KZ5B5 0.06% under three years no
6 iShares Core EUR Govt Bond UCITS ETF EUR (Acc) IE0008U15456 0.07% under three years no
7 UBS Core BBG EUR Gov 1-10 UCITS ETF EUR acc LU0969639474 0.09% under three years yes

Result. The first equity ETF in rank order is not offered on the account, so the equity sleeve holds the second. The first bond ETF is held. The top two bond ETFs differ by 0.003 percentage points, less than the 0.01 to which the issuers publish returns, and the ranking was applied as fixed. No accumulating ETF on the plain Bloomberg Euro Aggregate index was found, so the bond sleeve holds a euro government ETF, which the criteria allow. Every other share class examined failed a criterion: it distributes its income, is currency-hedged, tracks a screened, factor or other index, replicates synthetically, holds a maturity band outside the criteria, or is below the minimum fund size. The figures in the two tables come from the issuers' factsheets and product pages, dated July to October 2026.

The private values

The euro amounts behind rule 2 are in a private file. Its SHA-256 fingerprint, a 64-character code computed from the file's contents that changes if any character of the file changes, is:

cf0ebd0140a5d235ac5621dd0d6f49df787179860e9281c29e603974a1608534

The file holds the starting amount, the top-up and a random line that prevents anyone from recovering the amounts by trying values. Anyone shown the file can check it against this fingerprint.

Amendments

No rule has been amended. An erratum corrects wording and a reading settles a case the text leaves open. Neither changes a rule, so neither waits the 30 days of rule 9.

Committed Rule Type Text
2026-10-07 2 Erratum "the fingerprint in the last section" should read "the fingerprint under The private values".
2026-10-08 4 Erratum "Any remainder buys both sleeves in proportion to their target weights" should read "Any remainder buys the other sleeve up to its target weight". With two sleeves the remainder equals the other sleeve's shortfall, so the original wording could not give the outcome the rule states.
2026-10-08 4 Reading Rule 4 applies to all cash not yet invested. An order below the broker's minimum of 1 euro is not placed, and its cash waits for the next cycle day.
2026-10-08 6 Reading A top-up purchase and a band purchase of the same sleeve on one cycle day are placed as one order, so rules 4 and 5 need at most two orders.
2026-10-08 7 Reading The broker shows no bid or ask. The bid and ask recorded are the real-time quotes of Tradegate Exchange, saved just before the order. They are not the quotes of the venue where the order executes, and each order's half-spread is measured against them.
2026-10-08 7 Reading On a cycle day when the US equity market is closed, the orders are placed that day between 15:45 and 17:00 Amsterdam time, as rule 3 requires.

Every figure behind the tiles and charts, by month.

The monthly table

Months since the first purchase. Drawdown and worst fall are per cent below the previous peak. Volatility from month 12

Returns and risk

MonthLast dayReturnSince the first purchaseMoney-weighted, cumulativeDrawdownWorst fall to dateVolatility, 12 months
2026-10 to date2026-10-08+0.1%+0.1%+0.1%0.0%0.0%n/a

Weights, orders and contributions

MonthEquityBondsCashDriftOrdersPaid in, unitsValue, unitsMarket effectContribution
2026-10 to date70.0%30.0%0.0%+0.0 points2100.0100.1+0.1%0.0%

Costs, in basis points

MonthCommissionsHalf-spreadPrice paid against net asset valueImplementation cost of the monthImplementation cost, cumulative
2026-10 to date0 bpn/a−10 bp−10 bp+10 bp

Each chart's own table is under it, and every tile is a cell of these tables or of outputs/portfolio_daily.csv.

Source: outputs/metrics_monthly.csv