Forecast quality · updated 2026-10-04

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.

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€20.2164 % · 15 charges of 13.1 kWh in a 2-hour window, 2026-09-06 to 2026-10-04
Projected over a year€242.53
Average charging price5.79 ct/kWh
Monthly cost with the forecast€11.58
Monthly cost without time optimisation€31.8015.90 ct/kWh
With perfect hindsight5.46 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-09-04 to 2026-10-04

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 19 / 30 (63 %) 29 / 30 (97 %) 0.12 ct/kWh 23 / 30 (77 %) 10 of 10 4.65 / 5.98 ct/kWh 2.24 / 2.36 ct/kWh 2.91 ct/kWh 0.88
Netherlands NL 30 16 / 30 (53 %) 24 / 30 (80 %) 0.45 ct/kWh 19 / 27 (70 %) 7 of 7 5.85 / 7.14 ct/kWh 2.13 / 2.44 ct/kWh 2.75 ct/kWh 0.87
Belgium BE 30 16 / 30 (53 %) 27 / 30 (90 %) 0.16 ct/kWh 24 / 30 (80 %) 15 of 20 2.51 / 3.08 ct/kWh 1.27 / 1.97 ct/kWh 2.76 ct/kWh 0.89
France FR 30 14 / 30 (47 %) 24 / 30 (80 %) 0.48 ct/kWh 18 / 30 (60 %) 7 of 7 3.19 / 5.07 ct/kWh 0.69 / 1.99 ct/kWh 3.53 ct/kWh 0.80
Czechia CZ 30 10 / 30 (33 %) 27 / 30 (90 %) 0.51 ct/kWh 25 / 30 (83 %) 11 of 12 4.27 / 5.31 ct/kWh 3.42 / 3.06 ct/kWh 3.28 ct/kWh 0.84
Poland PL 30 9 / 30 (30 %) 20 / 30 (67 %) 2.08 ct/kWh 21 / 30 (70 %) 6 of 8 6.09 / 5.70 ct/kWh 3.53 / 3.51 ct/kWh 4.54 ct/kWh 0.73
Finland FI 30 4 / 30 (13 %) 16 / 30 (53 %) 1.22 ct/kWh 21 / 30 (70 %) 8 of 9 2.32 / 2.26 ct/kWh 0.58 / 0.61 ct/kWh 4.61 ct/kWh 0.52
Sweden SE1 (Luleå) SE1 30 10 / 30 (33 %) 17 / 30 (57 %) 0.50 ct/kWh 24 / 30 (80 %) 15 of 20 0.80 / 0.67 ct/kWh 1.05 / 1.24 ct/kWh 1.82 ct/kWh 0.70
Sweden SE2 (Sundsvall) SE2 30 8 / 30 (27 %) 13 / 30 (43 %) 0.95 ct/kWh 23 / 30 (77 %) 12 of 15 0.81 / 0.80 ct/kWh 1.36 / 1.26 ct/kWh 2.42 ct/kWh 0.56
Sweden SE3 (Stockholm) SE3 30 7 / 30 (23 %) 15 / 30 (50 %) 1.41 ct/kWh 20 / 30 (67 %) 9 of 11 2.23 / 2.39 ct/kWh 1.40 / 1.74 ct/kWh 3.86 ct/kWh 0.60
Sweden SE4 (Malmö) SE4 30 5 / 30 (17 %) 14 / 30 (47 %) 3.01 ct/kWh 21 / 30 (70 %) 10 of 10 3.03 / 3.90 ct/kWh 1.34 / 1.72 ct/kWh 5.20 ct/kWh 0.60
Denmark DK1 (West) DK1 30 20 / 30 (67 %) 28 / 30 (93 %) 2.00 øre/kWh 25 / 30 (83 %) 10 of 10 44.90 / 53.00 øre/kWh 6.25 / 7.44 øre/kWh 23.19 øre/kWh 0.85
Denmark DK2 (East) DK2 30 14 / 30 (47 %) 25 / 30 (83 %) 2.17 øre/kWh 24 / 30 (80 %) 10 of 10 43.11 / 40.42 øre/kWh 13.65 / 20.50 øre/kWh 25.97 øre/kWh 0.81
Austria AT 30 21 / 30 (70 %) 28 / 30 (93 %) 0.21 ct/kWh 23 / 30 (77 %) 10 of 12 5.34 / 5.93 ct/kWh 3.22 / 4.48 ct/kWh 3.05 ct/kWh 0.79
Norway NO1 (Oslo) NO1 30 6 / 30 (20 %) 18 / 30 (60 %) 10.74 øre/kWh 19 / 30 (63 %) 14 of 21 12.09 / 19.11 øre/kWh 11.99 / 16.32 øre/kWh 30.84 øre/kWh 0.52
Norway NO2 (Kristiansand) NO2 30 8 / 30 (27 %) 17 / 30 (57 %) 22.47 øre/kWh 21 / 30 (70 %) 12 of 15 26.07 / 32.78 øre/kWh 26.59 / 28.37 øre/kWh 41.27 øre/kWh 0.42
Norway NO3 (Trondheim) NO3 30 4 / 30 (13 %) 7 / 30 (23 %) 12.55 øre/kWh 16 / 30 (53 %) 13 of 25 1.61 / 7.73 øre/kWh 6.42 / 6.92 øre/kWh 37.10 øre/kWh 0.47
Norway NO4 (Tromsø) NO4 30 4 / 30 (13 %) 8 / 30 (27 %) 4.80 øre/kWh 22 / 30 (73 %) 15 of 21 2.69 / 3.98 øre/kWh 1.50 / 6.83 øre/kWh 22.47 øre/kWh 0.01
Norway NO5 (Bergen) NO5 30 6 / 30 (20 %) 13 / 30 (43 %) 19.44 øre/kWh 18 / 30 (60 %) 10 of 15 10.62 / 16.82 øre/kWh 10.87 / 19.47 øre/kWh 34.64 øre/kWh 0.25
Switzerland CH 25 8 / 25 (32 %) 23 / 25 (92 %) 0.43 ct/kWh 17 / 21 (81 %) * 9 of 9 5.64 / 5.78 ct/kWh 2.34 / 2.43 ct/kWh 2.23 ct/kWh 0.85
Italy North ITN 25 8 / 25 (32 %) 21 / 25 (84 %) 0.49 ct/kWh 15 / 20 (75 %) * 7 of 8 2.36 / 3.64 ct/kWh 0.13 / 1.72 ct/kWh 1.58 ct/kWh 0.87
Italy Centre-North IT_CNOR 25 15 / 25 (60 %) 21 / 25 (84 %) 0.27 ct/kWh 15 / 20 (75 %) * 8 of 10 1.29 / 2.84 ct/kWh 0.13 / 1.87 ct/kWh 1.91 ct/kWh 0.84
Italy Centre-South IT_CSUD 25 7 / 25 (28 %) 23 / 25 (92 %) 0.53 ct/kWh 15 / 20 (75 %) * 8 of 11 0.58 / 2.88 ct/kWh 2.10 / 2.94 ct/kWh 1.71 ct/kWh 0.86
Italy South IT_SUD 25 9 / 25 (36 %) 20 / 25 (80 %) 0.41 ct/kWh 17 / 20 (85 %) * 9 of 11 4.75 / 4.02 ct/kWh 0.12 / 0.78 ct/kWh 1.80 ct/kWh 0.85
Italy Calabria IT_CALA 24 11 / 24 (46 %) 22 / 24 (92 %) 0.30 ct/kWh 14 / 20 (70 %) * 7 of 9 2.37 / 2.97 ct/kWh 1.92 / 3.69 ct/kWh 2.50 ct/kWh 0.78
Italy Sicily IT_SICI 25 15 / 25 (60 %) 21 / 25 (84 %) 0.61 ct/kWh 12 / 20 (60 %) * 4 of 5 2.37 / 3.17 ct/kWh 2.90 / 4.14 ct/kWh 4.60 ct/kWh 0.72
Italy Sardinia IT_SARD 25 7 / 25 (28 %) 21 / 25 (84 %) 0.61 ct/kWh 18 / 20 (90 %) * 7 of 7 4.81 / 5.79 ct/kWh 3.15 / 3.15 ct/kWh 1.95 ct/kWh 0.84
Slovakia SK 26 16 / 26 (62 %) 25 / 26 (96 %) 0.12 ct/kWh 15 / 20 (75 %) * 7 of 8 3.29 / 3.56 ct/kWh 4.65 / 3.95 ct/kWh 3.62 ct/kWh 0.78
Romania RO 25 9 / 25 (36 %) 23 / 25 (92 %) 1.04 ct/kWh 12 / 20 (60 %) * 5 of 7 2.21 / 3.02 ct/kWh 2.75 / 2.96 ct/kWh 3.62 ct/kWh 0.81
Spain ES 25 11 / 25 (44 %) 23 / 25 (92 %) 0.20 ct/kWh 22 / 28 (79 %) * 12 of 14 3.74 / 3.13 ct/kWh 0.54 / 1.93 ct/kWh 2.38 ct/kWh 0.91
Portugal PT 24 12 / 24 (50 %) 23 / 24 (96 %) 0.03 ct/kWh 20 / 24 (83 %) * 6 of 6 4.71 / 5.84 ct/kWh 0.04 / 0.16 ct/kWh 2.31 ct/kWh 0.92
Greece GR 25 9 / 25 (36 %) 24 / 25 (96 %) 0.35 ct/kWh 16 / 22 (73 %) * 9 of 10 3.91 / 3.82 ct/kWh 0.05 / 2.04 ct/kWh 3.04 ct/kWh 0.89
Bulgaria BG 25 10 / 25 (40 %) 20 / 25 (80 %) 0.65 ct/kWh 13 / 23 (57 %) * 6 of 11 2.77 / 2.42 ct/kWh 2.88 / 2.90 ct/kWh 3.41 ct/kWh 0.82

* 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 10 times. Every one of those 10 times, the day after really was cheaper. Anyone who followed that advice every time charged 4.65 ct/kWh cheaper in the typical case (median) and 5.98 ct/kWh cheaper on average than on the day whose prices were already known. For a 40 kWh charge that is about 2.39 € per charge on average.

On the other 20 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.

Beyond two days: the 120-hour horizon

These columns cover the choice between tomorrow and the day after, the horizon of the free API. A 120-hour forecast widens the same choice to up to four days, so a flexible load has more days in which to find a cheap one. Whether that pays off is measured the same way, with the same baseline: since 24 September 2026, the forecast's pick among the next 2, 3 and 4 days is frozen every evening and later scored against the published prices. The first four-day results settle from 28 September and count as provisional until 30 decisions have been scored, around the end of October. They will be shown here next to the two-day figures.

120-hour forecasts are part of Private Pro API access.

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: CO2 intensity methodology · OpenAPI specification · Home Assistant integration on GitHub · evcc tariff documentation · Homey app