Battery & tariff simulator

Octopus half-hourly prices, fetched live · one charge/discharge cycle per day · all client-side
Settings

1 · Your data

Drop usage CSV here, or click
Octopus half-hourly electricity export
Drop gas CSV here, or click

2 · Current tariff

Use this if your export has no cost column, or to test a future price rise.

3 · Tariff to compare

4 · Battery & inverter

Min charge is the discharge floor — the bottom slice the battery never dips below (makers typically say 10%).
Battery cost ÷ (cycles × usable kWh) is charged to every plan as wear on each kWh stored, so trades thinner than the wear are skipped. Fogstar quote 8,000 cycles at 91% depth for the 32 kWh pack; a cautious planning figure is half that.
Export current lifts your terminals by I·Z until the 253 V statutory cap (230 V +10%): I = (253 − V)/Z, export = 253·I. Ze is on an EICR, or an electrician's loop tester reads it. This is the physics ceiling — a G99 study shares the same headroom with your neighbours, so the DNO may grant less.
Leave the import cap blank to let grid import be house load plus battery charge.
Price rise feeds time-to-payback (0 hides it). Lifespan gives the return over the battery's life (blank hides it); a cycle life that runs out sooner at the run's cycling rate cuts it short.

5 · Strategy

Set 0 to charge only when prices are negative or free.
Planner options
Defaults are the shipped planner. "Known schedule" is hindsight on Agile, whose prices really are unknown before 16:00.

6 · Heat pump

Gas kWh → useful heat (× efficiency) → electricity (÷ COP).

7 · Solar

No site yet. Irradiance comes from the UK Met Office 2 km model via Open-Meteo for this postcode; forecasts are the day-ahead values as they were issued.
Your CSV is kept in this browser’s own storage so you don’t have to re-upload it — it never leaves your machine.

Result

Sensitivity

Re-runs the optimiser at nearby pack sizes and inverter ratings, everything else unchanged. ~13 runs, a few seconds each.

All tariffs compared

Same battery, inverter and strategy for every row. Each tariff uses its own standing charge, accumulated per half-hour so mid-period changes are exact.

Day explorer

00:00
grid import battery discharge export solar

Whole day

import price export price state of charge (hover for the plan's) house load solar (dashed = day-ahead forecast)

Monthly

Start by dropping in your usage CSV

Download your half-hourly electricity data from Octopus, then drop the CSV on the left. Rates are fetched live from the public Octopus API for whichever region and tariff you pick, and cached in your browser. Nothing is uploaded anywhere — the whole simulation runs in this page.

What the model assumes

  • Capacity is usable kWh; round-trip loss applies on charge, so storing 32 kWh imports 32/0.9 = 35.6 kWh.
  • Inverter power caps charge and discharge per half-hour; discharge to load and to export share that cap.
  • One cycle per day: all charging precedes all discharging, and everything charged is discharged the same day.
  • Perfect foresight of each day's prices — realistic on Agile, which publishes day-ahead.
  • Your consumption is assumed unchanged by the tariff switch.