Forecast quality · updated 2026-11-12

How good are our electricity price forecasts?

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 view

What charging with the forecast would have cost

Simulation 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.

Your savings per month€10.5224 % · 15 charges of 13.1 kWh in a 2-hour window, 2026-10-14 to 2026-11-11
Projected over a year€126.19
Average charging price16.49 ct/kWh
Monthly cost with the forecast€32.98
Monthly cost without time optimisation€43.4921.75 ct/kWh
With perfect hindsight15.74 ct/kWh

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

Results per bidding zone

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).

How to read the table

The metrics answer different questions. Every percentage refers to the stated number of settled days or day pairs next to it.

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.

Extra cost versus optimum

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.

Correct day and waiting

‘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.

Median and mean

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.

Hourly error and correlation r

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

What waiting a day brings

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?

  1. Without a forecast you would charge on Wednesday, the only day you can see. That is the baseline.
  2. With the forecast you wait for Thursday whenever it advises you to.
  3. “Saving when you waited” is how much cheaper Thursday's cheapest window was than Wednesday's, over every evening the forecast advised waiting. Where waiting backfired, Thursday was dearer, and that counts as a negative saving.

The current figures for Germany

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.

Why a median and a mean?The median is the middle case: half of the waits saved more, half saved less. The mean is the total divided by the count, so a few very cheap days pull it up. When the two are far apart, the saving came from a few big days rather than many ordinary ones.
Wrong advice is countedThe saving covers every advised wait, including the ones where the day after turned out dearer. A market where the forecast often misleads shows a small or even negative figure, however often it advises waiting.
What reaches your billThe saving is measured on the wholesale day-ahead price, in the cheapest 4-hour window of each day. On a dynamic tariff that passes that price through, the difference reaches your bill, plus VAT where it is charged. Taxes, levies and fixed grid fees do not depend on the day you pick.

“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

What does a longer horizon add compared with 48 hours?

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.

3 days versus 2 days

30 evaluated decisions

Mean additional saving
0.76 ct/kWh
Per 40 kWh charge, on average
€0.30
When the longer view picked another day
1.89 ct/kWh
Cheaper
7
Same cost
18
More expensive
5

Compared starting dates: 2026-10-11 – 2026-11-09

4 days versus 2 days

30 evaluated decisions

Mean additional saving
0.92 ct/kWh
Per 40 kWh charge, on average
€0.37
When the longer view picked another day
1.63 ct/kWh
Cheaper
10
Same cost
13
More expensive
7

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

How does accuracy change with forecast lead?

The same subsequently published hourly prices are compared with forecasts fixed at different times before delivery.

Forecast leadData basisMAERMSEBiasCorrelation rSkill 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.

Compare every market and lead bucket in the expert view

What is measured

Exact cheapest 4-hour window startFor each settled calendar day (local time, all 24 hours present) we take the 4-hour block with the lowest forecast average and the block with the lowest average of the published prices. A hit means both start in the same hour. There are 21 possible starts per day.
Within one hourThe forecast's start lies at most one hour before or after the real cheapest start. Includes exact hits. For a car or heat pump that runs several hours, this is usually as good as exact.
Mean extra cost vs. optimumWhat the forecast's window actually cost at the published prices, minus the cheapest window in hindsight, averaged over all days. Zero on a hit, never negative. This is what following the forecast cost in practice.
Better of tomorrow and the day afterDecided every evening: charge tomorrow, whose prices are already published, or wait for the day after, which only the forecast covers. Counted is how often the forecast picked the day whose cheapest 4-hour window really was cheaper.
Advice to wait paid off · Saving when you waitedHow often the forecast advised waiting a day and was right, and how much cheaper the day after was over all those evenings, the wrong ones included. Explained with an example and the current German figures.
Extra cost on a wrong dayOn the evenings the forecast picked the dearer day, how much more that day's cheapest window cost. The median is the typical miss: often the two days were almost equally cheap and the wrong pick cost little.
Mean hourly errorAverage absolute difference between forecast and published price, hour by hour, over the last 30 days. It is the strictest figure: a forecast can place the cheap hours correctly and still be off in level.
Correlation rHow well the forecast follows the shape of the day, independent of the level. 1 is a perfect match of the curve, 0 no relation. Hydro-dominated markets (Norway, Sweden) have flat daily curves that are hard to predict and score lower.

Method and limits

Related: User numbers · CO2 intensity methodology ·OpenAPI specification · Home Assistant integration on GitHub · evcc tariff documentation · Homey app