How this calculator works

Every number below is either a formula in the code or a figure with a published source. Press Esc or click outside to go back.

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.

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

Capital costs land at year 0: heat-pump installation minus the grant you qualify for, against whatever the gas option costs you at the same moment. That second figure is yours to set. If your boiler is at the end of its life, it is the price of the replacement you would have bought anyway, and only the difference is really being spent on the heat pump. If your boiler is fine and you simply want a heat pump, it is zero, and the heat pump carries its whole price.

Step 4 — Where the uncertainty comes from

Five things are drawn rather than assumed:

  • 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.
  • Demand — a behavioural spread on top of the weather-driven one, because two households in the same house heat it differently.

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. The two are held to within about 7% of each other by a test suite; 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).

FigureSourcePeriodBasis
Daily temperature climatologyKNMI Daggegevens van het weer in Nederland, variable TG (daily mean temperature)1991–2025Homogenised station observations, 2 m air temperature
Gas priceCBS StatLine (table 85592NED) Average consumer tariff for natural gas, per m³Mid-2026All-in variable rate: commodity plus energy tax, ODE and 21% VAT
Electricity priceCBS StatLine (table 85592NED) Average consumer tariff for electricity, per kWhMid-2026All-in variable rate: commodity plus energy tax, ODE and 21% VAT
Gas emission factorCO2emissiefactoren.nl (RVO / Milieu Centraal consortium) CO₂-emissiefactor aardgas, 1.788 kg/m³2025 listDirect combustion, excluding upstream fuel cycle. Stored as 1.788 kg/m³ ÷ 9.769 kWh/m³ = 0.183 kg/kWh, which puts it on the same gross basis as the m³ conversion. The list's own 0.202 kg/kWh is net basis and would overstate by 11%
Grid emission factorCO2emissiefactoren.nl (RVO / Milieu Centraal consortium) CO₂-emissiefactor Nederlandse elektriciteitsmix, 0.28 kg/kWh generated2025 listAnnual average national generation mix, not marginal; excludes upstream fuel cycle. Generation-side, so it is divided by (1 − losses) below before being multiplied by metered consumption
Grid lossesWorld Bank (indicator EG.ELC.LOSS.ZS) Electric power transmission and distribution losses, % of output20243.80% for the Netherlands. One indicator across all six countries, so the delivered-basis adjustment is comparable between them
Heat pump grantRVO Investeringssubsidie duurzame energie en energiebesparing (ISDE), heat pump2026 scheme yearFlat award per appliance from the ISDE apparatenlijst; €2,500 is mid-range for an air-source unit

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 are set on the direction of stated energy-tax policy — every country here is shifting the burden from electricity onto gas — and they are a scenario you are meant to change, not a prediction.

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: on the Belgian defaults, closing it from two points to nothing — leaving general energy inflation exactly where it was — turns a €2,134 twenty-year saving into a €4,614 loss and removes payback altogether. The "What moves the answer" chart puts a bar on exactly this, measured on your own numbers.

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 are modelled at their base rate. Conditional bonuses (Germany's climate-speed bonus, France's income banding) are yours to raise.
  • It is not advice. Check the prices, the grant and the installation quote against your own bills and your own installer before deciding.

Home and Energy Demand

Country Netherlands

Space heating is weather-distributed by daily degree-days. In gas mode, summer usage estimates hot water share and the remainder is assigned to space heating.

Yearly Energy Demand
Heating (kWh/yr)
10,200
Hot water (kWh/yr)
1,600
Uncertainty (%)

Uncertainty is behavioural — how differently two households heat the same home. Weather is modelled separately, from your province's own record.

Equipment Costs

Installation (€)Subsidy (€)Uncertainty (€)Maintenance (€/yr)
Heat Pump
ISDE pays a flat €2,500 towards the install. Check your own eligibility: awards vary by appliance, income and property.
Boiler

0 = due now. Boilers last about 15 years; enter the years yours has left.

Energy Price

PriceAnnual increase (%)Volatility (%)
Gas (€/m³)
Electricity (€/kWh)

Gas price is entered in the household billing unit (€/m³) and converted internally to €/kWh at 9.769 kWh per m³.

The two annual increases are a scenario, not a forecast. Every other default here is sourced; these two are not, because no published series forecasts household gas against electricity over twenty years. Netherlands starts at 3% gas against 2% electricity, on the policy direction rather than a projection. What the result turns on is the gap between them, not either number — "What moves the answer" below shows how much a percentage point of gap is worth in your case.

Gas standing charge (€/yr)Extra electricity standing charge (€/yr)
Fixed costs

Disconnecting the gas supply removes its standing charge entirely, which is often a large part of the saving. The electricity standing charge is paid in both scenarios, so only any extra charge caused by the heat pump is counted here.

Volatility also scales the year-to-year randomness of the annual increase itself, not just the starting price. Set to 0% for a fully deterministic price path.

Power (kWh/yr)Uncertainty (%)Eff. price (€/kWh)
Solar (Own)

The array is yours whether or not you switch, so what the heat pump costs you is the export income it eats: solar it consumes is charged at the effective price above, and only imported power is charged at the retail rate. Set it to what you are actually paid for an exported kWh. The default assumes salderen has ended. While net metering still nets your export against your import at the retail price, exported and self-consumed solar are worth the same thing, so the figure to enter is your electricity price — which leaves the heat pump no solar advantage beyond the offset it already gets.

Efficiency

Heat PumpBoiler
COP (A7/W35)Min COPMin temp (°C)Boiler efficiency

CO₂

Grid (kg/kWh)Gas (kg/kWh)Carbon price (€/ton)

Simulation

Future operating costs are discounted to present value at this annual rate; upfront installation costs remain year-0 values.

Approximate result (estimate) is shown — run the full simulation

Approximate result updates automatically whenever inputs change.

Outputs

Run comparison to populate cost, payback, emissions, and energy outputs.

Cumulative cost difference (gas minus heat pump)

Δ savings = gas total − heat pump total, discounted to present value at 3%/yr.

Daily cost profile (year 1) with uncertainty

First-year daily cost profile incl. energy, carbon-price, and maintenance. Shaded areas show P25–P75 across simulations.