The idea
A heat pump costs more to install and usually less to run, and both
halves of that trade are uncertain: energy prices move, winters differ,
quotes differ. Rather than pick one value for each and report a single
answer, the model draws a whole distribution and shows you where your
case is likely to land.
It runs your home through one simulated year of daily weather at a
time, over your chosen horizon, and repeats that for hundreds of
possible futures. What you see are percentiles: the middle line is the
median outcome, the band around it the 25th–75th (and 10th–90th)
percentile of those futures.
Step 1 — How much heat your home needs
Annual space-heat demand is spread across the 365 days in proportion to
each day's heating degree-days, so January carries far
more of it than April:
HDD(day) = max(0, Tbase − Toutdoor(day))
demand(day) = annual demand × HDD(day) / Σ HDD
Tbase is the outdoor temperature below which the house starts
needing heat, and it depends on how well insulated it is: 18 °C for a poorly insulated home down to 13.5 °C
for a very well insulated one. A colder-than-average year raises the
annual total too, not just its shape, by the ratio of that year's
realised HDD to the long-run mean.
If you enter floor area instead of a measured demand, the estimate is
area × a national kWh/m² figure (85
kWh/m² for Netherlands) × dwelling shape × insulation × wind
exposure, then rescaled by your province's
degree-days relative to the reference one. Hot water is
800 kWh per person per year, spread evenly.
Step 2 — How efficiently the heat pump makes it
A heat pump's efficiency (its COP) falls as it gets colder outside and as the water it has to produce
gets hotter. The model uses the Carnot-fraction method:
take the rated COP, work out what fraction of the thermodynamic limit
it represents at its rating conditions (7 °C outside, 35 °C flow — the
EN 14511 A7/W35 point), then hold that fraction fixed and apply it at
the actual temperatures.
COPcarnot(Tout, Tsupply) = Tsupply(K) / (Tsupply(K) − Tout(K))
ηsys = COPrated / COPcarnot(7, 35)
COP(day) = clamp(ηsys × COPcarnot(Tout(day),
Tsupply), COPmin, 8)
Below the backup threshold (−15 °C by default) the model switches to
resistive backup at COP 1.0. This is why your radiator choice matters so
much: at 55 °C flow the same machine delivers materially less heat per
kWh than at 35 °C, all winter long.
electricity(day) = heat(day) / COP(day) · gas(day) = heat(day) / ηboiler
Step 3 — What that costs
Solar is settled once per day: what the array makes that day offsets
what the heat pump draws that day. The monthly shape of PV output comes
from PVGIS for your region — output is strongly anti-correlated with
heat demand, so spreading it evenly across the year would hand the heat
pump December sun it cannot have.
The array is yours either way, so what changes when you switch is not
the export income but the part of it you give up: sunshine the heat
pump eats is sunshine you no longer sell. Self-consumed solar is
therefore charged at your effective export price — its opportunity
cost — rather than credited, which is the same arithmetic seen from
the side that actually changes.
cost(day) = grid import × pelec + self-consumed solar × pexport
Gas is entered in Netherlands's billing unit (m³) and
converted to a per-kWh price at the boundary (9.769 kWh per m³, gross calorific value). The gas standing charge is a real cost of keeping the
connection, so it is charged in the gas scenario and avoided in the heat
pump scenario unless you tick "keep gas connection". The electricity
standing charge is paid either way and cancels, so only a heat-pump
specific extra is modelled — a supply upgrade, where your country needs
one. Both standing charges then escalate with their own fuel's rate, so
neither side of the comparison holds a contractual cost still while the
other one climbs.
Both fuels can carry a carbon price, and operating costs are discounted
back to today in real terms:
PV(year) = cost(year) / (1 + r)year
Heat-pump installation minus the grant lands at year 0. The gas option
books the boiler replacement on the date you enter and discounts it
back to today. If your boiler is at the end of its life, enter zero
years: the replacement is then an immediate alternative investment and
only the difference is really being spent on the heat pump. If it has
life left, its future cost does not make the heat pump cheaper up front.
Step 4 — Where the uncertainty comes from
The model draws the following uncertainties rather than holding them fixed:
- Weather — each simulated day is a draw around that
calendar day's climatological mean, combining a month-wide anomaly
(this winter is mild) with day-to-day noise (this Tuesday is cold).
The two spreads are estimated separately so the warm-winter signal is
not counted twice.
- Starting prices — gas and electricity each start from
a spread set by your volatility inputs.
- Price paths — each year's escalation is the rate you
entered plus noise, compounded, floored at zero. The noise is derived
from the same volatility input, scaled so the default 10% gives about
one percentage point a year: a calibration, not an estimate from
market data. Gas and electricity are drawn independently, which real
tariffs are not — gas often sets the marginal price of power — so the
band on the gap between the two is wider than history would
suggest.
- Installation cost — normal around your figure with
your stated spread. Where the grant is a capped percentage it absorbs
part of any overrun, which narrows your net exposure; the model
integrates over that kink rather than linearising at the mean.
- Boiler replacement cost and efficiency — the future
boiler quote is drawn around its stated spread, and achieved boiler
efficiency varies around the entered value within physical bounds.
- Demand — a behavioural spread on top of the
weather-driven one, because two households in the same house heat it
differently.
- Solar yield — each year's available PV output is
drawn around the annual figure using its stated spread.
Two engines, one model. As you type, an analytic
error-propagation engine updates the picture instantly by tracking means
and variances in closed form. Pressing "Run probabilistic full
sensitivity" runs the real Monte Carlo — every day of every year of
every run — in a background worker. Agreement tests require their cost
and SCOP band widths to stay within 25%, with separate median checks;
the preview is for exploring, the full run is the number to quote.
The Monte Carlo is deliberately unseeded: re-running the same scenario
should not show you one fixed pseudo-random future.
What the percentiles are, and are not. They are the
spread of futures this model generates from the assumptions on the
left — a scenario range, not a calibrated forecast. The weather
distribution is measured from decades of daily observations and is
worth reading as a probability. The price distributions are not:
nobody has fitted them to historical household tariffs, and over a
twenty-year horizon they carry most of the width. Read "10% of futures"
as "10% of the futures this model draws", and change the escalation
rates yourself to see how little of the answer survives them.
Where the numbers come from — Netherlands
Defaults change with the country you select, and a few change with the
region: devolved grants, and — in Northern Ireland, the Azores and
Madeira, which are separate energy systems — the tariffs and emission
factors themselves. Weather for your current selection: KNMI daggegevens TG (1991-2025).
Every gas figure is on the gross calorific value
(HHV / bovenwaarde / Brennwert / PCS), which is what every country here
bills households on. Most published emission factors outside the UK are
net-basis and about 11% higher; each one here records the published
value and the conversion applied. Grid emission factors are on a delivered basis — the published generation figure
divided by (1 − transmission and distribution losses), since your meter
reads what arrives, not what was generated.
Two defaults are deliberately not in that table. The
annual increases for gas and electricity carry no source, in any
country, because none exists: no publisher forecasts household gas
against household electricity over a twenty-year horizon, and a
citation invented for them would be worth less than saying so. They
encode a common scenario in which gas rises faster than electricity.
They are assumptions you are meant to change, not a prediction or a
claim that every country follows one identical tax policy.
This matters more than its size suggests. The result depends on the gap between the two rates rather than on either one, and where
the running-cost saving is thin that gap can decide the answer by
itself. The "What moves the answer" chart shows that effect using your
current inputs, by narrowing and widening the gap while holding general
energy inflation constant.
What this model does not do
- Grid carbon intensity is held flat over the horizon. Every grid here
is decarbonising, so the heat pump's emissions advantage is
understated — the largest known bias in the CO₂ figures.
- Weather is a historical climatology with no warming trend, so both
systems are given slightly colder decades than they will get. That
overstates heating demand on both sides, which scales the running-cost
difference without changing its sign: where the heat pump delivers
heat more cheaply the extra cold overstates your saving, and where it
does not — a poor COP against cheap gas — it overstates the loss.
Standing charges and installation costs do not move either way. It
also uses one reference point per region — which understates the
spread where
elevation varies a lot (Bayern, Scotland, the Portuguese interior)
and where the reanalysis grid is coarser than the land (Madeira and
the Azores, sampled at Funchal and Ponta Delgada).
- Solar is settled daily, not hourly, so midday output still offsets
evening draw. Self-consumption is therefore somewhat optimistic.
- Equipment is installed once and never wears out. The
gas side books a single boiler replacement, on the date you give it;
the heat pump is bought once and then runs for the whole horizon
without replacement, degradation or major repair, and there is no
second boiler either. Both machines are generally quoted at 15–20
years, so past about 20 — and the horizon input
goes to 50 — both sides are running on
equipment that would have been bought again. The missing heat pump
favours the heat pump and the missing second boiler favours gas;
which dominates depends on the replacement dates, the two costs and
the discount rate, so a long horizon is not wrong in a direction you
can correct for by eye. No financing costs either.
- Insulation labels are calibrated on Dutch housing stock; "Average"
means something different in a British, German or Portuguese home.
- Grants use the representative defaults described in the source table.
Personal eligibility and conditional bonuses are yours to adjust.
- It is not advice. Check the prices, the grant and the installation
quote against your own bills and your own installer before deciding.