Days and window hits
‘18 / 30 (60%)’ under ‘Exact window’ means the predicted cheapest four-hour window started at the correct hour on 18 of 30 days. ‘Within 1 hour’ also counts starts one hour earlier or later.
Forecast quality · updated 2026-11-12
The figures below evaluate every bidding zone separately against day-ahead prices published later. No cross-country average is calculated.
Rolling period: up to the latest 30 settled days per market. Every bidding zone is evaluated separately; no cross-country average is calculated.
Compare every market and lead bucket in the expert viewSimulation over the latest settled days: your shiftable monthly consumption is split across every second calendar day and charged in the forecast's cheapest window. The window length follows from the amount and the charging power.
Measured against the published day-ahead wholesale price, excluding taxes and add-ons. These savings require a dynamic electricity tariff. “Without time optimisation” means spread evenly over the whole day. The yearly figure is projected from the period shown; price spreads can differ in winter.
Settled results · 2026-10-13 to 2026-11-12
Base price (wholesale day-ahead, without taxes and grid fees). Window length 4 hours. Prices in ct/kWh, or øre/kWh for Denmark and Norway.
| Bidding zone | Settled days | Window: exact 4-h start | Window: within one hour | Window: extra cost vs. optimum | Day: better of tomorrow and the day after | Day: advice to wait paid off | Day: saving when you waited (median / mean) | Day: extra cost on a wrong day (median / mean) | Mean hourly error | Correlation r |
|---|---|---|---|---|---|---|---|---|---|---|
Germany DE |
30 | 8 / 30 (27 %) | 19 / 30 (63 %) | 0.53 ct/kWh | 20 / 30 (67 %) | 11 of 19 | 0.91 / 1.26 ct/kWh | 1.51 / 1.57 ct/kWh | 2.38 ct/kWh | 0.93 |
Netherlands NL |
30 | 10 / 30 (33 %) | 18 / 30 (60 %) | 0.62 ct/kWh | 19 / 29 (66 %) | 11 of 18 | 0.81 / 1.74 ct/kWh | 1.07 / 1.27 ct/kWh | 2.95 ct/kWh | 0.91 |
Belgium BE |
30 | 10 / 30 (33 %) | 14 / 30 (47 %) | 1.06 ct/kWh | 23 / 30 (77 %) | 17 of 23 | 0.50 / 1.05 ct/kWh | 1.17 / 2.10 ct/kWh | 3.08 ct/kWh | 0.91 |
France FR |
30 | 12 / 30 (40 %) | 19 / 30 (63 %) | 1.10 ct/kWh | 23 / 30 (77 %) | 11 of 13 | 1.47 / 2.92 ct/kWh | 1.32 / 3.57 ct/kWh | 3.06 ct/kWh | 0.88 |
Czechia CZ |
30 | 6 / 30 (20 %) | 17 / 30 (57 %) | 0.96 ct/kWh | 25 / 30 (83 %) | 16 of 20 | 0.83 / 1.18 ct/kWh | 0.96 / 1.30 ct/kWh | 2.85 ct/kWh | 0.88 |
Poland PL |
30 | 7 / 30 (23 %) | 19 / 30 (63 %) | 1.10 ct/kWh | 21 / 30 (70 %) | 10 of 14 | 1.62 / 2.81 ct/kWh | 3.67 / 3.93 ct/kWh | 5.38 ct/kWh | 0.83 |
Finland FI |
– | – | – | – | 20 / 30 (67 %) | 11 of 17 | 0.27 / 0.52 ct/kWh | 0.24 / 0.48 ct/kWh | 3.13 ct/kWh | 0.79 |
Sweden SE1 (Luleå) SE1 |
– | – | – | – | 26 / 30 (87 %) | 12 of 13 | 0.76 / 0.73 ct/kWh | 0.41 / 0.46 ct/kWh | 1.20 ct/kWh | 0.82 |
Sweden SE2 (Sundsvall) SE2 |
– | – | – | – | 23 / 30 (77 %) | 9 of 9 | 0.69 / 0.85 ct/kWh | 0.30 / 0.53 ct/kWh | 1.46 ct/kWh | 0.83 |
Sweden SE3 (Stockholm) SE3 |
30 | 6 / 30 (20 %) | 14 / 30 (47 %) | 1.04 ct/kWh | 24 / 30 (80 %) | 12 of 15 | 1.36 / 1.43 ct/kWh | 1.10 / 1.75 ct/kWh | 3.03 ct/kWh | 0.87 |
Sweden SE4 (Malmö) SE4 |
30 | 8 / 30 (27 %) | 20 / 30 (67 %) | 0.91 ct/kWh | 22 / 30 (73 %) | 9 of 14 | 1.97 / 1.90 ct/kWh | 2.22 / 3.04 ct/kWh | 4.17 ct/kWh | 0.86 |
Denmark DK1 (West) DK1 |
30 | 8 / 30 (27 %) | 19 / 30 (63 %) | 3.59 øre/kWh | 17 / 30 (57 %) | 11 of 21 | 4.82 / 7.84 øre/kWh | 8.18 / 7.30 øre/kWh | 23.35 øre/kWh | 0.92 |
Denmark DK2 (East) DK2 |
30 | 8 / 30 (27 %) | 18 / 30 (60 %) | 4.55 øre/kWh | 22 / 30 (73 %) | 10 of 14 | 9.78 / 10.37 øre/kWh | 8.93 / 17.75 øre/kWh | 24.05 øre/kWh | 0.91 |
Austria AT |
30 | 7 / 30 (23 %) | 14 / 30 (47 %) | 0.85 ct/kWh | 15 / 30 (50 %) | 9 of 22 | -0.06 / -0.01 ct/kWh | 0.72 / 1.10 ct/kWh | 2.68 ct/kWh | 0.77 |
Norway NO1 (Oslo) NO1 |
– | – | – | – | 18 / 30 (60 %) | 11 of 22 | 0.10 / 5.85 øre/kWh | 9.24 / 11.75 øre/kWh | 34.83 øre/kWh | 0.66 |
Norway NO2 (Kristiansand) NO2 |
30 | 7 / 30 (23 %) | 14 / 30 (47 %) | 7.01 øre/kWh | 19 / 30 (63 %) | 11 of 19 | 0.54 / 10.24 øre/kWh | 5.38 / 8.54 øre/kWh | 23.11 øre/kWh | 0.82 |
Norway NO3 (Trondheim) NO3 |
– | – | – | – | 17 / 30 (57 %) | 5 of 12 | -2.85 / 0.84 øre/kWh | 9.48 / 10.81 øre/kWh | 20.61 øre/kWh | 0.54 |
Norway NO4 (Tromsø) NO4 |
– | – | – | – | 18 / 30 (60 %) | 11 of 17 | 1.37 / 1.70 øre/kWh | 1.29 / 2.27 øre/kWh | 12.27 øre/kWh | 0.15 |
Norway NO5 (Bergen) NO5 |
– | – | – | – | 20 / 30 (67 %) | 10 of 16 | 4.83 / 8.88 øre/kWh | 9.51 / 10.76 øre/kWh | 25.23 øre/kWh | 0.78 |
Switzerland CH |
30 | 15 / 30 (50 %) | 25 / 30 (83 %) | 0.00 CHF/kWh | 14 / 28 (50 %) | 13 of 27 | -0.00 / 0.00 CHF/kWh | 0.01 / 0.01 CHF/kWh | 0.05 CHF/kWh | 0.27 |
Italy North ITN |
30 | 11 / 30 (37 %) | 20 / 30 (67 %) | 0.65 ct/kWh | 18 / 29 (62 %) | 13 of 22 | 0.33 / 0.01 ct/kWh | 1.08 / 1.11 ct/kWh | 3.89 ct/kWh | 0.52 |
Italy Centre-North IT_CNOR |
– | – | – | – | 19 / 29 (66 %) | 13 of 21 | 0.34 / 0.16 ct/kWh | 0.91 / 0.92 ct/kWh | 3.62 ct/kWh | 0.58 |
Italy Centre-South IT_CSUD |
– | – | – | – | 19 / 29 (66 %) | 15 of 22 | 0.58 / 0.36 ct/kWh | 1.22 / 2.50 ct/kWh | 3.24 ct/kWh | 0.67 |
Italy South IT_SUD |
– | – | – | – | 19 / 29 (66 %) | 11 of 17 | 0.62 / 4.42 ct/kWh | 1.21 / 2.13 ct/kWh | 3.60 ct/kWh | 0.74 |
Italy Calabria IT_CALA |
– | – | – | – | 20 / 29 (69 %) | 12 of 18 | 1.05 / 4.65 ct/kWh | 1.10 / 1.57 ct/kWh | 4.28 ct/kWh | 0.71 |
Italy Sicily IT_SICI |
– | – | – | – | 21 / 29 (72 %) | 12 of 17 | 1.47 / 5.24 ct/kWh | 0.75 / 1.08 ct/kWh | 4.09 ct/kWh | 0.61 |
Italy Sardinia IT_SARD |
– | – | – | – | 18 / 29 (62 %) | 8 of 15 | 0.60 / 1.18 ct/kWh | 4.73 / 5.50 ct/kWh | 5.57 ct/kWh | 0.51 |
Slovakia SK |
– | – | – | – | 17 / 29 (59 %) | 14 of 26 | 0.24 / 0.12 ct/kWh | 1.20 / 1.63 ct/kWh | 8.63 ct/kWh | 0.57 |
Romania RO |
– | – | – | – | 21 / 29 (72 %) | 13 of 19 | 0.04 / 0.04 RON/kWh | 0.12 / 0.11 RON/kWh | 0.21 RON/kWh | 0.77 |
Spain ES |
30 | 16 / 30 (53 %) | 28 / 30 (93 %) | 0.11 ct/kWh | 20 / 30 (67 %) | 11 of 19 | 0.49 / 2.11 ct/kWh | 1.23 / 1.83 ct/kWh | 3.05 ct/kWh | 0.89 |
Portugal PT |
30 | 22 / 30 (73 %) | 28 / 30 (93 %) | 0.10 ct/kWh | 23 / 30 (77 %) | 12 of 17 | 2.98 / 2.89 ct/kWh | 1.67 / 2.35 ct/kWh | 3.61 ct/kWh | 0.87 |
Greece GR |
– | – | – | – | 23 / 29 (79 %) | 11 of 15 | 2.52 / 4.65 ct/kWh | 1.62 / 1.81 ct/kWh | 4.06 ct/kWh | 0.84 |
Bulgaria BG |
– | – | – | – | 21 / 30 (70 %) | 14 of 21 | 0.60 / 0.56 ct/kWh | 1.43 / 1.71 ct/kWh | 3.68 ct/kWh | 0.77 |
* Fewer than 30 settled day pairs so far; treat the share as provisional. “–” means the market has no settled sample for that figure yet. Markets added recently start with a shorter sample.
Machine-readable: /en/forecast-quality/?format=json, or per market via /api/v1/home-assistant/summary?country=de (blocks forecast_quality, hourly_accuracy, cheaper_day_decision).
The metrics answer different questions. Every percentage refers to the stated number of settled days or day pairs next to it.
‘18 / 30 (60%)’ under ‘Exact window’ means the predicted cheapest four-hour window started at the correct hour on 18 of 30 days. ‘Within 1 hour’ also counts starts one hour earlier or later.
This is the average extra cost against the perfect four-hour window known in hindsight. 0.25 ct/kWh is about €0.10 for 40 kWh. Lower is better.
‘21 / 26’ means the forecast correctly chose between tomorrow and the day after on 21 of 26 evenings. ‘Waiting paid off’ only covers evenings when the forecast actually advised waiting.
In ‘5.90 / 6.43 ct/kWh’, the first value is the median, the typical middle case. The second is the mean, which reacts more strongly to a few unusually large savings or mistakes.
Mean hourly error is the average absolute price difference. r shows how well the curve shape was captured: 1 moves almost identically, 0 has no clear relationship, and a negative value moves in the opposite direction.
Reading the day-choice columns
The day columns score one decision, made every evening. By then tomorrow's day-ahead prices have been published; the day after's have not. Your car or battery needs one 4-hour charge within the next two days, and either day is fine.
An example. On Tuesday evening Wednesday's prices are known, Thursday's are not. If the forecast expects Thursday's cheapest four hours to be cheaper than Wednesday's, it advises waiting a day. On Friday we check against the published prices: was Thursday really cheaper, and by how much?
Over the last 30 evenings the forecast advised waiting a day 19 times. Waiting paid off 11 of those times and backfired 8 times. Anyone who followed that advice every time charged 0.91 ct/kWh cheaper in the typical case (median) and 1.26 ct/kWh cheaper on average than on the day whose prices were already known, the waits that backfired included. For a 40 kWh charge that is about 0.51 € per charge on average.
On the other 11 evenings it advised charging tomorrow, which is what you would have done without a forecast anyway: nothing gained, nothing lost.
“Today or tomorrow?” is the same question asked in the morning, before tomorrow's prices appear around 13:00. That version, with today's remaining hours against tomorrow, has been measured separately since 25 September 2026 and will be shown here once it has settled.
The direct comparison of shorter and longer horizons is shown below, using matched archived decisions rather than subtracting averages from different samples.
120-hour forecasts are part of Private Pro API access.
DE
The evening measurement compares one four-hour charge: choosing among two complete days versus three or four days within access of up to 120 hours. Both decisions use the same forecast archived at the time.
Planning over 4 days instead of 2, the charge was cheaper on 10 of 30 evenings and dearer on 7 – 0.92 ct/kWh less on average, about €0.37 per 40 kWh charge.
30 evaluated decisions
Compared starting dates: 2026-10-11 – 2026-11-09
30 evaluated decisions
Compared starting dates: 2026-10-10 – 2026-11-08
On the other evenings both plans pick the same day. That is why the median is usually zero: the gain comes from the evenings when a cheaper day lies beyond tomorrow. The figure follows the season – large when cheap and expensive days alternate, as in spring and autumn, small in calm weeks.
All paired decisions count, including equal and worse outcomes. Positive means the longer plan cost less. The mean includes every case, not just successes. Period: up to 30 calendar days of fully evaluated starting dates; missing days are not replaced with older ones.
Only day selection is measured. Within the chosen day both policies use its hindsight-cheapest four-hour window. This does not measure the original within-day window choice, rolling replanning or monthly savings. Wholesale price only, no savings guarantee; independent of the retail-price selection above.
DE
The same subsequently published hourly prices are compared with forecasts fixed at different times before delivery.
| Forecast lead | Data basis | MAE | RMSE | Bias | Correlation r | Skill vs prior week |
|---|---|---|---|---|---|---|
| 24–48 h ahead | Provisional: 23 of 30 delivery days · 540 matched hours · 75% coverage | 2.06 ct/kWh | 2.82 ct/kWh | -0.44 ct/kWh | 0.94 | +82% |
| 48–72 h ahead | Provisional: 23 of 30 delivery days · 540 matched hours · 75% coverage | 2.42 ct/kWh | 3.23 ct/kWh | -0.52 ct/kWh | 0.93 | +78% |
| 72–96 h ahead | Provisional: 23 of 30 delivery days · 540 matched hours · 75% coverage | 2.67 ct/kWh | 3.43 ct/kWh | -0.42 ct/kWh | 0.92 | +75% |
| 96–120 h ahead | Provisional: 23 of 30 delivery days · 540 matched hours · 75% coverage | 3.44 ct/kWh | 4.40 ct/kWh | -0.08 ct/kWh | 0.86 | +64% |
All lead buckets use exactly the same target hours. For each hour, the latest published production forecast still inside the bucket is used.
Skill compares MAE with the price at the same local hour seven days earlier. Positive values beat this simple weekly baseline; negative values trail it.
Related: User numbers · CO2 intensity methodology ·OpenAPI specification · Home Assistant integration on GitHub · evcc tariff documentation · Homey app