Start from a fossil-fueled baseline, then switch on low carbon technologies in any order. Running costs and the assets you would replace anyway are tracked together, so each step is compared fairly.
Schedules the battery to minimise cost against the half-hourly prices (charging when cheap, discharging or exporting when expensive, with perfect foresight) rather than following the simple solar-surplus rule. With flat import and export prices there is nothing to arbitrage, so this makes little difference.
Prices (p/kWh) apply from each band's start until the next, wrapping past midnight.
Average across this build: {{ current.avgAgileImport==null ? Number(p.elecRate).toFixed(1) : current.avgAgileImport.toFixed(1) }}p import / {{ current.avgAgileExport==null ? Number(p.segRate).toFixed(1) : current.avgAgileExport.toFixed(1) }}p export.
Electricity import, export & standing charge are set under Build your home · Tariff (flat, Agile or a custom schedule).
Lumpy purchases (car, boiler, heat pump, solar, battery) are turned into an equivalent annual cost with a capital-recovery (annuity) factor at this real (above-inflation) rate, so cash spent today weighs more than cash spent years out; resale values, received at end of life, are discounted back the same way. Set to 0 for plain straight-line spreading. Running costs (energy, fuel, maintenance) are level year-on-year, so a constant annual figure already is their discounted equivalent.
Used by the payback / IRR / ISA-crossover metrics in This build · the numbers: the extra upfront is treated as the investment and the drop in running costs as the annual return over this horizon. The crossover compares putting that same money in a shares ISA growing at the rate above against spending it now and reinvesting each year's bill saving.
Dispatches solar, battery and EV charging across a real year of 15-minute data (from the solar-matching dataset). Self-consumption, import and export emerge from the timing rather than a fixed ratio. The EV charge window is set under Electric vehicle. The Agile tariff switch always uses this simulation, since it prices each interval against the dataset's half-hourly wholesale-linked rates. Optimal battery dispatch is set under Build your home, alongside the home battery.
Simple annualised estimate: a fixed daytime-match plus battery shift, with no time-of-day detail. Useful as a rough comparison against the 15-minute simulation.
| Running costs | |
| Petrol | {{ gbp(current.petrol) }} |
| Gas{{ cfg.hp && !cfg.disconnectGas ? ' (cooking only)' : '' }} | {{ gbp(current.gas) }} |
| Electricity import{{ cfg.agile ? ' ('+tariffLabel+')' : '' }} | {{ gbp(current.importCost) }} |
| {{ cfg.exportMode==='agile' ? 'Agile export credit' : 'Solar export credit' }} | −{{ gbp(current.exportRevenue) }} |
| Electricity standing charge | {{ gbp(current.elecStandingCost) }} |
| Running subtotal | {{ gbp(current.running) }} |
| Annualised assets | |
| {{ cfg.ev?'EV':'Petrol car' }} | {{ gbp(current.carAsset) }} |
| {{ cfg.hp?'Heat pump':'Gas boiler' }} | {{ gbp(current.heatAsset) }} |
| Solar PV | {{ gbp(current.solarAsset) }} |
| Battery | {{ gbp(current.batteryAsset) }} |
| Assets subtotal | {{ gbp(current.assets) }} |
| All-in total | {{ gbp(current.allIn) }} |
| Operational | |
| Petrol | {{ co2(current.petrolCO2) }} |
| Gas{{ cfg.hp && !cfg.disconnectGas ? ' (cooking)' : '' }} | {{ co2(current.gasCO2) }} |
| Grid electricity | {{ co2(current.gridCO2) }} |
| Exported solar (displaces gas) | −{{ co2(current.exportCO2Credit) }} |
| Operational subtotal | {{ co2(current.opCO2) }} |
| Embodied (annualised) | |
| {{ cfg.ev?'EV (glider + battery)':'Petrol car' }} | {{ co2(current.carCO2) }} |
| {{ cfg.hp?'Heat pump':'Gas boiler' }} | {{ co2(current.heatCO2) }} |
| Solar PV | {{ co2(current.solarCO2) }} |
| Battery | {{ co2(current.batteryCO2) }} |
| Embodied subtotal | {{ co2(current.embCO2) }} |
| Total CO₂e | {{ co2(current.totalCO2) }} |
The household figure is net of the {{ gbp(p.busGrant) }} BUS grant, so it can read as a saving: privately the homeowner may be paid to decarbonise. The societal figure adds the grant back, because it is a transfer from taxpayers, a real resource cost rather than a saving the measure creates, so the true cost of abatement to society is higher. For context, UK government appraisal currently values carbon at roughly £250/tCO₂e.
Switching adds about {{ co2(extraEmbodiedTotal) }} of one-off manufacturing carbon (the carbon debt). Lower running emissions repay it in {{ carbonPayback.toFixed(1) }} years, after which every year is a net saving. Running emissions do not fall in this build, so that debt is never repaid.
| Total electricity demand | {{ kwh(current.demand) }} |
| Household baseload | {{ kwh(p.elecBaseload) }} |
| Cooking (induction) | {{ kwh(current.cookingElec) }} |
| EV charging | {{ kwh(current.evElec) }} |
| Heat pump | {{ kwh(current.hpElec) }} |
| Solar generated | {{ kwh(current.solarGen) }} |
| Self-consumed ({{ current.selfPct }}%) | {{ kwh(current.solarSelf) }} |
| Exported | {{ kwh(current.solarExport) }} |
| Grid import | {{ kwh(current.gridImport) }} |
| Average {{ tariffLabel }} import price | {{ current.avgAgileImport.toFixed(1) }} p/kWh |
{{ current.selfPct }}% of your solar is used at home. Adding load (EV, heat pump) or a battery pushes this up, because every self-consumed kWh is worth the {{ current.avgAgileImport!=null ? current.avgAgileImport.toFixed(1) : Number(p.elecRate).toFixed(1) }}p {{ current.avgAgileImport!=null ? 'average ' : '' }}import rate you avoid, against only {{ current.avgAgileExport!=null ? current.avgAgileExport.toFixed(1) : Number(p.segRate).toFixed(1) }}p {{ current.avgAgileExport!=null ? 'average ' : '' }}if it is exported.
| Use | kWh/yr | cash | all-in |
|---|---|---|---|
| {{ row.label }} | {{ kwh(row.r.kwh) }} | {{ row.r.cashRate.toFixed(1) }}p | {{ row.r.levRate.toFixed(1) }}p |
What each use actually pays per kWh once solar and battery are mixed in. Cash prices home-generated power at what it gives up: self-used solar at the {{ current.elecRates.forgoneExport.toFixed(1) }}p export you forgo, battery at the {{ current.elecRates.batUnitCash.toFixed(1) }}p it cost to charge. All-in prices it at its own capital cost: solar at its {{ current.elecRates.solarLcoe.toFixed(1) }}p levelised cost, battery at {{ current.elecRates.batUnitLev.toFixed(1) }}p including the storage hardware. This is a diagnostic view only; the capital is already in the asset lines, so it is not added again to the all-in total.
The heat pump's electricity effectively costs {{ current.elecRates.hp.cashRate.toFixed(1) }}p–{{ current.elecRates.hp.levRate.toFixed(1) }}p/kWh (grid {{ Math.round(current.elecRates.hp.gridKwh/current.elecRates.hp.kwh*100) }}%, solar {{ Math.round(current.elecRates.hp.solarKwh/current.elecRates.hp.kwh*100) }}%, battery {{ Math.round(current.elecRates.hp.batteryKwh/current.elecRates.hp.kwh*100) }}%), at the flat grid rate, before any solar or battery.
At SCOP {{ p.scop }} that is {{ current.sparkGap.hpHeatCash.toFixed(1) }}p–{{ current.sparkGap.hpHeatLev.toFixed(1) }}p per kWh of heat, versus gas at {{ current.sparkGap.gasHeat.toFixed(1) }}p/kWh ({{ p.gasRate }}p ÷ {{ Math.round(p.boilerEff*100) }}% boiler).
A unit of heat is {{ Math.round((1-current.sparkGap.hpHeatLev/current.sparkGap.gasHeat)*100) }}–{{ Math.round((1-current.sparkGap.hpHeatCash/current.sparkGap.gasHeat)*100) }}% cheaper from the heat pump than from gas. Solar and battery widen that gap by cutting the heat pump's unit rate. Heat is cheaper from the heat pump on a cash basis, but once the solar and battery capital is priced in it is roughly level with gas. More solar or battery capacity, or a cheaper tariff, tips it further in the heat pump's favour. At these rates a unit of heat costs more from the heat pump than from gas. A higher SCOP, a cheaper tariff (Agile), or self-supply from solar and battery would close the gap.
How to read this. Lumpy purchases (a car, a boiler) are spread over their life as an equivalent annual cost, discounted for the time-value of money, so that options compare like-for-like. The fossil status quo already carries a car and a boiler that you would replace anyway, so switching to an EV or heat pump swaps one asset cost for another rather than adding to it. ‘Extra upfront’ is the cash needed today for the new kit beyond a like-for-like petrol car or boiler replacement.
Simplifications. Solar self-consumption is, by default, run through a 15-minute simulation of a real year (the solar-matching engine, model.js): solar, battery and EV charging are dispatched interval by interval, so self-consumption and the import / export split emerge from the timing. A simple annualised daytime-match estimate is available under Advanced · solar matching for comparison. The Agile tariff switch prices every interval of import and export against the dataset's half-hourly wholesale-linked rates (the same dispatch, re-costed); with it off, a flat unit rate and a flat export rate apply. The EV charges within the window set under Electric vehicle. Lumpy purchases are converted to an equivalent annual cost with a capital-recovery (annuity) factor at a real discount rate (default {{ p.discountRate }}%, editable under Assumptions · Discounting), so capital spent today weighs more than future spend and resale values are discounted back; set it to 0 for plain straight-line spreading. Insurance is treated as roughly neutral between petrol and EV. All prices include VAT (flat rates default to the price cap; Agile import comes from the region-D dataset, grossed up by 5%). Prices are a mid-2026 snapshot and unusually high. v2 · 15-minute
Carbon basis. Petrol ~2.9 kgCO₂e/L well-to-wheel; gas 0.183 kgCO₂e/kWh combustion plus an upstream and methane uplift (default +20%, GWP100, which the evidence suggests is the floor rather than the ceiling). Grid taken at ~75 gCO₂/kWh, a deliberately conservative forward average (2024-25 actual is ~125, falling fast towards ~50 by 2030), so the electrified case looks better every year. Exported solar is credited against the gas (CCGT) generation it displaces (~400 gCO₂/kWh, marginal), deliberately a different, consequential basis from the attributional ~75 g average applied to imports, since an exported unit backs out the marginal plant rather than the grid mix. Both the import average and the export displacement factor are editable under Carbon · operational factors. Both the financial and the carbon value of export would be expected to fall over time: as more solar is added to the grid, daytime wholesale (and so export) prices decline and curtailment from over-generation rises, so each exported unit displaces less and earns less. Embodied carbon follows the Hoekstra framing: the car glider is roughly equal for petrol and EV, with the battery the main difference (~75 kgCO₂e/kWh of cell). ‘Carbon payback’ is the one-off extra manufacturing carbon divided by the annual operational saving. ‘Abatement cost’ is the change in all-in annual cost divided by the tonnes of CO₂e abated per year (whole build vs status quo, or per step given the rest of the build): a negative figure means the measure cuts carbon and saves money, so the household is effectively paid to decarbonise, while a positive figure is the cost per tonne avoided (for context, UK government appraisal currently values carbon at roughly £250/tCO₂e). It is shown two ways: the household figure is net of any grant, so the homeowner may privately be paid to decarbonise; the societal figure adds the BUS grant back, since a grant is a transfer from taxpayers, a real resource cost rather than a saving the measure creates. Steps that do not cut carbon show ‘n/a’. factors editable