AI Solar Panel
008 Battery and Tariff Optimisation 1,572 words · 7 min

Battery Basics for Analysts: Usable vs Nameplate Capacity

Your battery datasheet says 9.5 kWh. Your spreadsheet says 9.5 kWh. Your payback model says 6.8 years. All three are wrong, and the last one is wrong by about five years.

The number printed on a battery is a laboratory measurement of the energy stored in the cells under conditions your house will never reproduce. What you actually get to spend is what comes out of the inverter, at the AC side of the meter, after the BMS floor, your own reserve setting, two conversion losses, whatever the temperature is doing in your garage, and however much the cells have faded since install. Each of those is a multiplier below 1. Stack them and the honest figure for usable battery capacity solar modelling is typically 72% to 82% of nameplate in year one, and lower after that.

This matters more for people like you than for anyone else, because you’re the one building the model. An installer quotes a payback number and moves on. You’re going to live inside a spreadsheet for three years comparing it against reality, and if the capacity constant at the top of column B is 15% too generous, every downstream conclusion inherits the error.

The stack of haircuts

Take a common UK setup: a 9.5 kWh LFP stack on a hybrid inverter, on Intelligent Octopus Go at 7p overnight and roughly 26p day. Here’s where the kWh go.

StagekWh remainingWhat happened
Nameplate9.50Cell-level, 25°C, new, 100% DoD claimed
BMS floor9.12Real measured DoD closer to 96%, not 100%
Backup reserve at 10%8.17You set this and forgot about it
Discharge conversion (95%)7.76DC to AC through the inverter
Year-5 degradation (92%)7.14Warranty floor is usually 60 to 70% at 10 years

So 7.14 kWh delivered, against a sticker that says 9.5. And on the charge side you pay for more than you store: pushing 8.17 kWh into cells means importing about 8.6 kWh from the grid at 95% charge efficiency.

Run both models side by side for a full cycle. The naive version: 9.5 kWh imported at 7p costs 66p, 9.5 kWh displaced at 26p saves £2.47, net £1.81. The honest version: 8.6 kWh at 7p costs 60p, 7.14 kWh displaced at 26p saves £1.86, net £1.26. That’s 55p a day of pure modelling fiction.

Now apply the cycle count. Nobody gets 365 full-equivalent cycles. Summer days where solar fills the battery for free don’t earn arbitrage margin, and shoulder days part-cycle. Call it 300 full-equivalent cycles, which is generous. Naive model: £661 a year. Honest model: £378 a year. On a £4,500 installed cost that moves payback from 6.8 years to 11.9. Same battery, same tariff, same house. The only thing that changed was the constant.

The reserve setting nobody remembers changing

Backup reserve is the most common single source of phantom capacity, and it’s the easiest to fix. Most hybrid installs ship with a reserve somewhere between 5% and 20% so the battery can ride through a power cut, and most owners never touch it. Tesla’s Powerwall app calls it Backup Reserve, GivEnergy’s portal calls it Battery Cutoff % (or the Export/Discharge floor depending on mode), Fox ESS uses Min SoC and Min SoC on Grid as two separate settings, and Solis buries it under the storage mode config.

Two of those deserve a closer look. Fox ESS having separate on-grid and off-grid minimums catches people out constantly: you set Min SoC to 10% thinking you’ve freed up capacity, but Min SoC on Grid is still sitting at 20%, which is the one that actually governs normal operation. Check both.

Whether the reserve is worth keeping is a real decision, not an oversight to correct. UK grid reliability means the average home sees something like 30 to 40 minutes of interruption a year. Holding 10% of a 9.5 kWh battery costs you roughly £115 a year in forgone arbitrage on the numbers above. If you’ve got a freezer full of food and a home office, fine. If you’re holding it because it was the default, that’s £115 for nothing.

Continuous power is the constraint you forgot to model

Capacity tells you how much. Power tells you how fast, and this is where most DIY models quietly fail, because spreadsheets are built on energy totals and the limit bites in kilowatts.

A GivEnergy Gen 3 hybrid runs 3.0 to 3.6 kW continuous depending on model. Powerwall 2 does 5 kW continuous, 7 kW peak for ten seconds. Fox ESS H1 sits around 3.7 kW. Your evening peak does not care about any of this.

Say your 16:00 to 22:00 window pulls 8 kWh total. Your model, using daily energy, says a full battery covers it easily. Look at it half-hourly instead:

17:00-17:30   4.2 kW   battery 3.0   grid 1.2   -> 0.60 kWh imported
17:30-18:00   3.8 kW   battery 3.0   grid 0.8   -> 0.40 kWh imported
19:00-19:30   5.1 kW   battery 3.0   grid 2.1   -> 1.05 kWh imported
                                          total    2.05 kWh at peak rate

Two kilowatt-hours a day you’re paying 26p for while sitting on a full battery. Call it £190 a year, and it compounds with the capacity error rather than overlapping with it.

Worse, half-hourly data already smooths the problem away. A 4.2 kW half-hour average could be twelve minutes of induction hob at 7 kW and eighteen minutes of nothing. If you want the real shape, you need one-minute data, which means a Shelly EM, an Emporia Vue, or Home Assistant logging your inverter’s own instantaneous power sensor. Hildebrand’s Glow CAD gives you ten-second readings off the smart meter’s HAN and costs about £70.

Charge rate has the same trap on the other side. On a fixed overnight window (Go, Cosy, Flux) a 3 kW charge limit across six hours gives you 18 kWh of headroom and you’ll never notice. On Agile, where you’re chasing the three cheapest half-hours of a plunge, 3 kW × 1.5 hours is 4.5 kWh and that is your entire opportunity. Agile optimisation is a power-limited problem dressed up as an energy-limited one, which is worth reading alongside the broader tariff mechanics in Battery and Tariff Optimisation.

Measuring your own number

Don’t derive it. Measure it, on one evening, and then use that figure forever.

Charge to 100% overnight. Pick an overcast day or isolate the PV so solar isn’t muddying the discharge. Set reserve to its absolute minimum for the test. Then run the house off the battery until the inverter cuts over to grid, and log two things: the inverter’s reported cumulative discharge, and the AC energy actually delivered, measured independently.

Test: 2026-09-14, LFP 9.5 kWh nameplate, reserve 1%, ambient 14C
Start SoC 100%  22:40
End   SoC  1%   06:55
Inverter reported discharge   8.94 kWh
Shelly EM measured at AC out  8.41 kWh
--------------------------------------
Usable AC capacity            8.41 kWh   (88.5% of nameplate)
Implied one-way efficiency    94.1%

The gap between the two lines is the one that matters. Inverter-reported figures are DC-side on most hybrids and will flatter you by 5 to 6%. Use the AC number in your model, because that’s the number your electricity meter agrees with.

For anyone running Home Assistant, the same measurement falls out of a utility_meter helper on your battery discharge sensor plus a second one on a CT clamp. If you’re feeding Predbat, this is exactly what battery_scaling exists for: leave battery_size at nameplate and set battery_scaling to 0.885, or set battery_loss and battery_loss_discharge to your measured efficiencies and let it compute. Getting those three values honest changes Predbat’s charge plans materially, because it stops assuming it can fit 9.5 kWh into a window that physically holds 8.4.

Where the AI tools go wrong

Pasting your inverter CSV into Claude or ChatGPT and asking for a payback analysis works well, right up until the model needs a capacity figure. It will take 9.5 kWh from the datasheet, because that’s the number in the document, and it will not flag the assumption unless you ask. Same with EMHASS and any of the optimisation notebooks floating around GitHub: battery_nominal_energy_capacity defaults to nameplate.

Fix it at the prompt. Give the model your measured AC figure, your round-trip efficiency, your continuous power limit in kW, and your reserve percentage, and explicitly tell it to cap per-half-hour discharge at the power limit rather than spreading energy evenly. The difference in output is not cosmetic, it’s the difference between a model that tracks your actual bills within 5% and one that drifts £200 a year optimistic and leaves you wondering why.

Cold weather is the last one to add, and it’s seasonal rather than constant. LFP cells lose usable capacity below about 10°C and most BMS units refuse to charge at all below 0°C. A garage or loft install in January can deliver 8 to 12% less than the same battery delivered in September. If your model has one capacity number and your battery lives outside the thermal envelope of the house, you have a summer model being asked to predict winter bills.

Go and check your reserve setting tonight. Then book an evening for the discharge test, because until you’ve run it you’re modelling a battery you’ve never actually met.