AI Solar Panel
009 Sizing From Your Own Consumption Data 1,544 words · 7 min

Annual kWh Is a Trap: Why Your Load Shape Matters More Than Your Total

Search for average electricity consumption uk household and you land on the same number everywhere: 2,700 kWh a year. That’s Ofgem’s medium Typical Domestic Consumption Value for a single-rate electricity meter, revised down from 2,900 kWh in 2023. It’s a real number, honestly derived, and it is almost completely useless for sizing a solar array.

Here’s the problem in one sentence. Two households on my street both pull 3,100 kWh a year. Run the numbers properly and one of them should buy 14 panels and no battery, while the other should buy 8 panels and a 9.5 kWh battery. The optimal array differs by 43 per cent. Nothing in the annual total tells you which house you’re standing in.

Two houses, one number

Both are 1970s semis in Leicestershire. Gas central heating, no EV, no heat pump. Both import 3,100 kWh over twelve months. Their half-hourly data tells completely different stories.

WindowHouse A (daily kWh)House B (daily kWh)
00:00–07:001.91.2
07:00–09:001.01.4
09:00–16:003.41.2
16:00–21:001.84.0
21:00–24:000.40.7
Total8.58.5

House A is a freelancer working from home with a partner on three days a week. Forty-one per cent of their consumption lands inside the solar window. House B is two commuters: lights off at 07:40, back at 18:15, oven on, tumble dryer, telly. Fourteen per cent in the window.

Same total. Nearly a 3× difference in the fraction of load that a panel can reach without a battery in the way.

Modelling the generation side

Both roofs face south at 35°. PVGIS (the JRC tool at re.jrc.ec.europa.eu/pvg_tools/, using the SARAH3 database) gives roughly 950 kWh per kWp per year for this location with 14 per cent system losses. The PVGIS hourly API returns a full 8,760-row series, which you resample to half-hourly to line up with your meter data.

Pricing assumptions, stated plainly because they drive everything:

  • Import: 26p/kWh flat (standing charge excluded from all figures below, since it doesn’t change with array size)
  • Export: 4.1p/kWh, their incumbent supplier’s standard SEG rate, because neither has switched import supply
  • Panels: 440 W modules, roughly £640/kWp on the margin once scaffolding, inverter and labour are already paid for
  • Decision hurdle: 12 years, chosen because that’s roughly when the string inverter needs replacing

The marginal ladder

Don’t ask “what size array?” Ask “is the next pair of panels worth £560?” Each pair adds 0.88 kWp and about 836 kWh a year. What those kWh are worth depends entirely on what fraction of them lands on live load rather than going out to the grid at 4.1p.

Here’s the output of that loop for House A:

House A  |  in-window load 41%  |  export 4.1p  |  import 26.0p
step   kWp    +kWh/yr   self-cons%   £/yr    payback
----   ----   -------   ----------   -----   -------
 1     3.52       836        27.0    83.70     6.7 y   ADD
 2     4.40       836        20.0    70.90     7.9 y   ADD
 3     5.28       836        14.0    59.90     9.3 y   ADD
 4     6.16       836         8.0    48.90    11.5 y   ADD
 5     7.04       836         4.0    41.60    13.5 y   STOP
                                              hurdle = 12.0 y

And House B, identical roof, identical annual consumption:

House B  |  in-window load 14%  |  export 4.1p  |  import 26.0p
step   kWp    +kWh/yr   self-cons%   £/yr    payback
----   ----   -------   ----------   -----   -------
 1     3.52       836         9.0    50.70    11.0 y   ADD
 2     4.40       836         5.0    43.50    12.9 y   STOP
                                              hurdle = 12.0 y

House A stops at 6.16 kWp. House B stops at 3.52 kWp. The marginal self-consumption curve collapses three steps earlier for B, and once it collapses, every additional panel is really just a 4.1p export machine costing £560.

What House B should buy instead

The interesting part is what B does with the money it didn’t spend on panels.

B’s problem was never generation. It’s that 7.3 of B’s 8.5 daily kWh happen when the sun isn’t producing. A 9.5 kWh battery (call it 8.6 kWh usable) fixes that twice over: in summer it soaks the array and carries the evening block, and in winter, when 3.52 kWp yields about 4.4 kWh a day, it charges from the grid overnight on Octopus Go at 8.5p and discharges into a 26p evening.

Run it out over a year:

  • House A, 6.16 kWp, no battery, flat tariff. Self-consumes 1,477 kWh, exports 4,375 kWh (£179), imports 1,623 kWh (£422). Against an £806 baseline that’s £563/year on £8,900 of kit.
  • House B, 3.52 kWp plus 9.5 kWh, on Octopus Go. Self-consumes 2,359 kWh, exports 985 kWh (£40), imports 741 kWh at 8.5p (£63). That’s £783/year on £11,100.

B saves £220 a year more than A while generating 2,500 fewer kWh. Roughly half of B’s saving has nothing to do with solar at all; it’s tariff arbitrage that only became possible because the battery was sized for B’s actual evening block rather than for B’s annual total.

House A, meanwhile, would get a terrible deal from that same battery. On a flat 26p tariff there’s no arbitrage spread to capture, so the battery only shifts surplus solar: about 860 kWh a year at a 21.9p margin, £188 against £4,900 of storage. Seventeen years. It fails the hurdle and A shouldn’t buy it.

What the rule of thumb would have done

Now do what a quote does. Take 3,100 kWh, apply the usual heuristic, land on 4 kWp and no battery for both houses.

House A: 1,220 kWh self-consumed, £423/year, 15.8-year payback. Not optimal, but survivable.

House B: 440 kWh self-consumed, £252/year, 26.6-year payback. That system does not pay for itself before the inverter dies, let alone the panels. B has been sold a rounding error dressed up as an energy transition, and the quote will have looked entirely reasonable because it was derived from a correct annual figure.

Same 3,100 kWh. A 68 per cent spread in annual benefit from a single sizing rule that considered only the total.

Where the answer flips

One variable moves all of this, and it isn’t consumption. Put both houses on Octopus Outgoing Fixed at 15p and the arithmetic inverts: a fully exported panel pair now returns £125 a year against £560, a 4.5-year payback, and both households should cover every square metre of south-facing roof they own. Self-consumption stops mattering because the grid is paying almost as well as the meter.

That is not a caveat to the argument. It is the argument. The variable that decided the answer was the export tariff interacting with the shape of the load, in both directions. At no point did 3,100 kWh do any work. Change the export rate by 11p and House B’s optimum moves from 8 panels to a full roof without a single kWh of consumption changing.

Getting your own 17,520 numbers

You need half-hourly data, not a bill. A SMETS2 meter has been storing it in the DCC for up to 13 months whether or not anyone’s looked.

  • n3rgy (data.n3rgy.com) gives free DCC access. Register your MPAN, get an API key, pull half-hourly consumption back 13 months as JSON.
  • Octopus customers can skip that: GET /v1/electricity-meter-points/{mpan}/meters/{serial}/consumption/?page_size=25000&period_from=2025-09-01T00:00Z with your API key as basic auth. Leave group_by unset for raw 30-minute intervals.
  • Hildebrand’s Bright app with a Glow CAD gives you 10-second live data, which is what you want when you’re trying to work out whether that 400 W baseload is the fridge or the loft router.
  • Loop and Utrack both export CSV if you’d rather not touch an API.

From there it’s a merge and a groupby. Pull PVGIS hourly output for your lat/long, tilt and azimuth, resample to 30 minutes, join on timestamp, then compute np.minimum(consumption, generation) per interval and sum. That single line is your self-consumption. Scale generation by kWp in a loop and you have the marginal ladder above.

Claude or ChatGPT will write the pandas for this in one shot if you paste the first twenty rows of both files and describe the join. The part no model can do for you is decide the hurdle rate, and that’s a genuine judgement call: 12 years assumes you care about inverter replacement, 20 years assumes you’re optimising over panel warranty. The full method, including how to handle east-west splits and shading, sits in Sizing From Your Own Consumption Data.

The number to put in your spreadsheet

Open your half-hourly CSV and calculate one figure before anything else: the share of your annual kWh that falls between 09:00 and 16:00. House A is 41 per cent. House B is 14 per cent. If yours is under 20 per cent and you’re on a flat import tariff, you are not in the market for a bigger array, you are in the market for a battery and a time-of-use tariff, and any quote that proposes otherwise was generated from the wrong input.

Then go and find your actual export rate, because it’s the second half of the calculation and most people genuinely don’t know theirs.