How we work out what counts as cheap
Every number on this site is calculated, not chosen. This page puts all of it on the table — the thresholds, the trade-offs, and the places where we think it could be better.
The short version: we calculate three things
- Best windows — when to run things (up to two: one at night, one in daylight)
- Peak to avoid — when it is dearest
- The day's grade — how today rates overall
All three come from the same source: the last 30 days of real half-hourly prices in your grid region. Only the slicing differs.
The basis: how the three colours are decided
We take the last 30 days of real prices in your grid region, sort them cheapest to priciest, and split them:
- Cheapest 25% → green, "cheap"
- Middle 50% → amber, "medium"
- Priciest 25% → red, "expensive"
- Below 0p (you're paid to use power) → blue, "negative"
So green doesn't mean "cheap in absolute terms". It means "this price is in the cheapest quarter for where you live". That is what colours every bar on the chart.
Why not just use one fixed number?
Because regional differences are far larger than most people expect. These are the real figures from the current calibration (2026-09-08):
| Region | "Cheap" is at or below | "Expensive" is above |
|---|---|---|
| East Midlands (B) | ≤ 21.6p | > 30.3p |
| London (C) | ≤ 21.6p | > 30.3p |
| Yorkshire (M) | ≤ 21.6p | > 30.3p |
| Eastern England (A) | ≤ 22.8p | > 32p |
| West Midlands (E) | ≤ 22.8p | > 31.9p |
| North East England (F) | ≤ 22.8p | > 31.9p |
| North West England (G) | ≤ 22.8p | > 31.9p |
| Southern England (H) | ≤ 22.8p | > 31.9p |
| Southern Scotland (N) | ≤ 22.8p | > 32p |
| North Wales & Mersey (D) | ≤ 24.1p | > 33.7p |
| South East England (J) | ≤ 24.1p | > 33.5p |
| South Wales (K) | ≤ 24.1p | > 33.5p |
| South West England (L) | ≤ 25.3p | > 35.1p |
| Northern Scotland (P) | ≤ 26.6p | > 36.8p |
Note the gap between East Midlands and Northern Scotland: in Northern Scotland, 26.6p already counts as cheap, while the same price in East Midlands is medium or worse.
A single national threshold would paint the whole chart red for anyone in Northern Scotland, who would never see a cheap hour — which would make the tool useless to them.
How the best windows are chosen
We search from now to the end of tomorrow, across everything not yet past:
- Drop every "expensive" half-hour. What's left falls into separate stretches — the valleys
- Any valley longer than 10 hours gets cut at its dearest half-hour
- In each valley, find the cheapest run of your chosen length (3 hours by default)
- Keep the cheapest one from the night and the cheapest one from daylight, in clock order
Why the extra cut? The breakfast peak often isn't dear enough to be dropped. Without cutting, midnight to teatime becomes one sixteen-hour valley and both recommendations land in the same small hours.
Why one of each? Simply taking the two cheapest valleys usually returns two overnight windows — which amounts to telling you to get up at 3am twice. The daylight one is often dearer, but its value is that you can actually act on it.
Which one wins on price is seasonal. Tested against 60 days of real prices, the daylight window was about 7p cheaper in late summer, because solar has moved the cheap hours to the middle of the day. In winter that inverts. So neither is labelled "best" — they are shown in clock order with their prices, and you choose.
If a day has no usable valley structure at all, we fall back to the plain cheapest window rather than showing nothing.
The peak to avoid
Over the same range, the longest continuous run of "expensive" half-hours — usually the 4pm to 7pm peak. On a day with no expensive half-hours, it isn't shown.
The day's grade
This grades the day, not the window suggested above it. That distinction is easy to miss and matters.
- Take this whole day's cheapest window of your chosen length, including hours already past
- Take the same figure for each of the last 30 days — 30 numbers
- Today in the cheapest quarter → good
- Middle → normal; priciest quarter → pricey
- Average below 0p → free — rare, but it does happen
Why include hours already gone? To compare with 30 whole days, you need a whole day's figure. Judging only what's left makes the day look worse as it wears on — not because the market got worse, but because the cheap hours have passed.
Each window length is calibrated separately, since the cheapest single hour will always beat the average of the cheapest six. Move the slider and the thresholds move with it.
When the day's own cheapest stretch has already passed, we say so — otherwise "today is good" reads as a promise about the hours still ahead. This is not unusual: by 3pm, more than half of days have already had their best window.
Where "good for" and "avoid" come from
They follow the day's grade, not any single window, because "is today a day for the big loads" is a question about the day.
- Free / good → everything is worth running
- Normal → washing, dishwasher and showers are fine; delay EV charging, tumble drying, water heating and the oven
- Pricey → nothing is worth timing; avoid the four heavy loads
Only heavy loads are listed, deliberately. We have one price curve, not one per appliance — naming ten things would imply we know differences we do not. What is genuinely worth moving is the big stuff: an EV charge swings by pounds, a dishwasher by small change. Phones, TVs and fridges save nothing by being moved, so they are left out.
Why 30 days?
We tested baselines from 14 days to 9 months, replaying four years of real prices month by month. The answer: it barely matters.
So we took the shortest — 30 days tracks the market fastest. Summer and winter prices differ sharply, and too long a baseline judges today with last season's numbers.
That test re-runs automatically every month. If the market shifts so that 30 days stops fitting, we get told and can revisit it.
Why only one number per day?
A day contains 43 different 3-hour windows (one can start every half hour), but we take only the cheapest one — so 30 days gives 30 numbers.
Pooling them all would let a single windy day drag in a whole cluster of cheap windows, and a few good days would skew the entire baseline. One per day gives each day equal weight, which is what makes "how does today compare" answerable.
When does it update?
Automatically at 16:15 UK time every day — just after Octopus publishes tomorrow's prices — always using the most recent 30 days.
The calibration date is shown on the site; right now it is 2026-09-08.
Octopus only publishes as far as 23:00, so while you are looking at it, "today" actually holds 46 half-hours (00:00–23:00) — the last hour arrives with tomorrow's release. We grade on those 46. Checked against 44 days of London prices, the missing hour moved the day's cheapest window by 0.0p on average and 0.08p at worst, so no correction is applied.
Sources and limits
- All prices come straight from the public Octopus Energy API — unit rates including VAT (p/kWh).
- We exclude the standing charge. It is a fixed daily amount that doesn't change with when you run the washing machine, so it has no bearing on choosing a window.
- 30 days is a trade-off: too short and one extreme day distorts it, too long and it misses seasonal change.
- This is a relative comparison, not a forecast. We tell you how today compares with the last month. We do not predict prices beyond what Octopus has published.
Look at the distributions
Below is real data for London (region C) over the last 30 days. Other regions have a similar shape, just shifted up or down.
Half-hourly prices
This is what decides the chart colours: a big cluster in the middle with a thin tail either side — windy days on the left, evening peaks on the right.
Daily cheapest 3-hour window
This is what decides the day's grade. One number per day, so 30 points.
Note the asymmetry: most days bunch to the right, with a few unusually cheap days trailing off below. So the "pricey" threshold sits where the data is dense and is stable; the "good" threshold sits where it is sparse and is less precise — see the honesty section below.
Things worth being honest about
- "Pricey" is more reliable than "good." Most days' cheapest windows cluster at similar prices, so that boundary is stable. Unusually cheap days are scattered, so "good" should be read as "today is probably fine" rather than a precise guarantee.
- A good day doesn't guarantee a good window. The grade describes the whole day. If the cheapest stretch has already passed, "today is good" can still leave you an unremarkable window.
- Weather systems last several days, so neighbouring days are correlated — 30 days of data is less independent than 30 numbers sounds.
- If prices climb all month, a day that is relatively fine can still read "pricey", because we cannot separate "today is bad" from "the whole month got dearer".
- Night and day are cut by the clock (daylight means roughly 09:00–16:00), not by your schedule.
Why "cheapest left today" has no grade
When the recommendation lands on tomorrow, we still show today's cheapest remaining window, because a load of washing often cannot wait. But that row carries no grade, because there is no fair comparison for it.
Every grade compares against a whole day's cheapest window, while "cheapest left today" is drawn from however many hours happen to remain. Look after 3pm and it averages about 9.8p dearer — not because the market is dear, but because the cheap hours have gone. Judged that way it would read "pricey" no matter how good the market was, which tells you nothing. So that row gives the price alone.
Reference: cheapest 3-hour window thresholds by region
For the data-minded, these are the actual thresholds behind the day's grade (3-hour windows):
| Region | "Good" (better than 75% of days) | "Pricey" (worse than 75% of days) |
|---|---|---|
| East Midlands (B) | ≤ 14.4p | > 21.9p |
| London (C) | ≤ 14.4p | > 21.9p |
| Yorkshire (M) | ≤ 14.4p | > 21.9p |
| Eastern England (A) | ≤ 15.3p | > 23.2p |
| West Midlands (E) | ≤ 15.3p | > 23.2p |
| North East England (F) | ≤ 15.3p | > 23.2p |
| North West England (G) | ≤ 15.3p | > 23.2p |
| Southern England (H) | ≤ 15.3p | > 23.2p |
| Southern Scotland (N) | ≤ 15.3p | > 23.2p |
| North Wales & Mersey (D) | ≤ 16.2p | > 24.5p |
| South East England (J) | ≤ 16.2p | > 24.5p |
| South Wales (K) | ≤ 16.2p | > 24.5p |
| South West England (L) | ≤ 17.1p | > 25.8p |
| Northern Scotland (P) | ≤ 17.9p | > 27p |