How good were the forecasts on real days, compared with simple rules of thumb? Only forecasts issued live count.
7 days
2026-10-14 – 2026-10-20
For tomorrow (D+1)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
7 / 7
44.2
62.6
0
15.5
78 %
lear.v1
7 / 7
29.9
39.1
+0.32
9.0
80 %
naive_last_day.v1
7 / 7
30.1
38.7
+0.32
10.2
86 %
gbm.v1
7 / 7
37.2
44.5
+0.16
11.4
69 %
naive_weekly.v1
7 / 7
65.3
82.2
−0.48
21.5
61 %
For the day after (D+2)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
7 / 7
47.1
63.2
0
15.5
80 %
naive_last_day.v1
7 / 7
34.0
40.8
+0.28
11.4
89 %
lear.v1
7 / 7
47.7
55.1
−0.01
12.5
80 %
gbm.v1
7 / 7
49.6
58.4
−0.05
14.8
64 %
naive_weekly.v1
7 / 7
65.3
82.2
−0.39
21.7
59 %
MAE, RMSE and pinball in EUR/MWh per quarter-hour (10 EUR/MWh = 1 ct/kWh). Skill = 1 − MAE ÷ MAE of the reference: above 0 means better than the rule of thumb. About 80 % of prices should fall inside the 80 % band.
By situation
For tomorrow (D+1), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
37.2672
41.1480
27.6192
–
63.968
lear.v1
29.9672
28.0480
34.7192
–
42.968
naive_last_day.v1
30.1672
29.2480
32.3192
–
45.668
naive_similar_day.v1
44.2672
25.8480
90.1192
–
32.368
naive_weekly.v1
65.3672
55.4480
90.1192
–
71.368
For the day after (D+2), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
49.6672
58.2480
28.3192
–
80.768
lear.v1
47.7672
46.1480
51.6192
–
59.668
naive_last_day.v1
34.0672
34.6480
32.4192
–
39.868
naive_similar_day.v1
47.1672
29.9480
90.1192
–
25.568
naive_weekly.v1
65.3672
55.4480
90.1192
–
71.368
Price spike: actual price of 250 EUR/MWh or more (top 10 % in the window).
Is the difference real?
Diebold-Mariano test on daily errors, pairwise, two-sided. A small p-value means the difference is unlikely to be chance. With few days the test is weak.
A
B
D+
n
p
gbm.v1
lear.v1
1
7
–
too few days (7)
gbm.v1
naive_last_day.v1
1
7
–
too few days (7)
gbm.v1
naive_similar_day.v1
1
7
–
too few days (7)
gbm.v1
naive_weekly.v1
1
7
–
too few days (7)
lear.v1
naive_last_day.v1
1
7
–
too few days (7)
lear.v1
naive_similar_day.v1
1
7
–
too few days (7)
lear.v1
naive_weekly.v1
1
7
–
too few days (7)
naive_last_day.v1
naive_similar_day.v1
1
7
–
too few days (7)
naive_last_day.v1
naive_weekly.v1
1
7
–
too few days (7)
naive_similar_day.v1
naive_weekly.v1
1
7
–
too few days (7)
gbm.v1
lear.v1
2
7
–
too few days (7)
gbm.v1
naive_last_day.v1
2
7
–
too few days (7)
gbm.v1
naive_similar_day.v1
2
7
–
too few days (7)
gbm.v1
naive_weekly.v1
2
7
–
too few days (7)
lear.v1
naive_last_day.v1
2
7
–
too few days (7)
lear.v1
naive_similar_day.v1
2
7
–
too few days (7)
lear.v1
naive_weekly.v1
2
7
–
too few days (7)
naive_last_day.v1
naive_similar_day.v1
2
7
–
too few days (7)
naive_last_day.v1
naive_weekly.v1
2
7
–
too few days (7)
naive_similar_day.v1
naive_weekly.v1
2
7
–
too few days (7)
30 days
2026-10-01 – 2026-10-20
For tomorrow (D+1)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
20 / 19
46.3
62.4
0
15.7
70 %
lear.v1
20 / 18
28.4
37.0
+0.39
8.8
78 %
gbm.v1
20 / 18
29.5
37.0
+0.36
9.5
79 %
naive_last_day.v1
20 / 18
36.3
47.9
+0.22
12.2
74 %
naive_weekly.v1
20 / 19
60.0
77.1
−0.30
20.2
63 %
For the day after (D+2)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
19 / 18
55.2
70.7
0
18.4
70 %
gbm.v1
19 / 17
36.2
45.4
+0.35
11.4
78 %
lear.v1
19 / 17
45.0
53.1
+0.20
13.1
73 %
naive_last_day.v1
19 / 17
47.8
61.2
+0.15
15.7
76 %
naive_weekly.v1
19 / 18
61.7
78.5
−0.12
21.0
61 %
MAE, RMSE and pinball in EUR/MWh per quarter-hour (10 EUR/MWh = 1 ct/kWh). Skill = 1 − MAE ÷ MAE of the reference: above 0 means better than the rule of thumb. About 80 % of prices should fall inside the 80 % band.
By situation
For tomorrow (D+1), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
29.51728
30.81248
26.2480
28.31
44.9177
lear.v1
28.41728
28.01248
29.3480
13.61
42.2177
naive_last_day.v1
36.31728
37.71248
32.7480
29.61
47.9177
naive_similar_day.v1
46.31824
35.21248
70.5576
98.01
40.1177
naive_weekly.v1
60.01824
55.21248
70.5576
98.01
60.0177
For the day after (D+2), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
36.21632
42.11056
25.4576
31.61
62.5136
lear.v1
45.01632
41.31056
51.6576
47.51
60.3136
naive_last_day.v1
47.81632
48.51056
46.5576
95.61
47.2136
naive_similar_day.v1
55.21728
47.51152
70.5576
98.01
40.9156
naive_weekly.v1
61.71728
57.31152
70.5576
98.01
66.1156
Price spike: actual price of 245 EUR/MWh or more (top 10 % in the window).
Is the difference real?
Diebold-Mariano test on daily errors, pairwise, two-sided. A small p-value means the difference is unlikely to be chance. With few days the test is weak.
A
B
D+
n
p
gbm.v1
lear.v1
1
18
0.7738
no demonstrated difference
gbm.v1
naive_last_day.v1
1
18
0.1722
no demonstrated difference
gbm.v1
naive_similar_day.v1
1
18
0.0423
gbm.v1 is better than naive_similar_day.v1
gbm.v1
naive_weekly.v1
1
18
0.0008
gbm.v1 is better than naive_weekly.v1
lear.v1
naive_last_day.v1
1
18
0.1328
no demonstrated difference
lear.v1
naive_similar_day.v1
1
18
0.0301
lear.v1 is better than naive_similar_day.v1
lear.v1
naive_weekly.v1
1
18
0.0018
lear.v1 is better than naive_weekly.v1
naive_last_day.v1
naive_similar_day.v1
1
18
0.1581
no demonstrated difference
naive_last_day.v1
naive_weekly.v1
1
18
0.0111
naive_last_day.v1 is better than naive_weekly.v1
naive_similar_day.v1
naive_weekly.v1
1
19
0.0455
naive_similar_day.v1 is better than naive_weekly.v1
gbm.v1
lear.v1
2
17
0.1833
no demonstrated difference
gbm.v1
naive_last_day.v1
2
17
0.3472
no demonstrated difference
gbm.v1
naive_similar_day.v1
2
17
0.1329
no demonstrated difference
gbm.v1
naive_weekly.v1
2
17
0.0389
gbm.v1 is better than naive_weekly.v1
lear.v1
naive_last_day.v1
2
17
0.7603
no demonstrated difference
lear.v1
naive_similar_day.v1
2
17
0.2510
no demonstrated difference
lear.v1
naive_weekly.v1
2
17
0.0740
no demonstrated difference
naive_last_day.v1
naive_similar_day.v1
2
17
0.2344
no demonstrated difference
naive_last_day.v1
naive_weekly.v1
2
17
0.2009
no demonstrated difference
naive_similar_day.v1
naive_weekly.v1
2
18
0.2959
no demonstrated difference
90 days
2026-10-01 – 2026-10-20
For tomorrow (D+1)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
20 / 19
46.3
62.4
0
15.7
70 %
lear.v1
20 / 18
28.4
37.0
+0.39
8.8
78 %
gbm.v1
20 / 18
29.5
37.0
+0.36
9.5
79 %
naive_last_day.v1
20 / 18
36.3
47.9
+0.22
12.2
74 %
naive_weekly.v1
20 / 19
60.0
77.1
−0.30
20.2
63 %
For the day after (D+2)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
19 / 18
55.2
70.7
0
18.4
70 %
gbm.v1
19 / 17
36.2
45.4
+0.35
11.4
78 %
lear.v1
19 / 17
45.0
53.1
+0.20
13.1
73 %
naive_last_day.v1
19 / 17
47.8
61.2
+0.15
15.7
76 %
naive_weekly.v1
19 / 18
61.7
78.5
−0.12
21.0
61 %
MAE, RMSE and pinball in EUR/MWh per quarter-hour (10 EUR/MWh = 1 ct/kWh). Skill = 1 − MAE ÷ MAE of the reference: above 0 means better than the rule of thumb. About 80 % of prices should fall inside the 80 % band.
By situation
For tomorrow (D+1), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
29.51728
30.81248
26.2480
28.31
44.9177
lear.v1
28.41728
28.01248
29.3480
13.61
42.2177
naive_last_day.v1
36.31728
37.71248
32.7480
29.61
47.9177
naive_similar_day.v1
46.31824
35.21248
70.5576
98.01
40.1177
naive_weekly.v1
60.01824
55.21248
70.5576
98.01
60.0177
For the day after (D+2), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
36.21632
42.11056
25.4576
31.61
62.5136
lear.v1
45.01632
41.31056
51.6576
47.51
60.3136
naive_last_day.v1
47.81632
48.51056
46.5576
95.61
47.2136
naive_similar_day.v1
55.21728
47.51152
70.5576
98.01
40.9156
naive_weekly.v1
61.71728
57.31152
70.5576
98.01
66.1156
Price spike: actual price of 245 EUR/MWh or more (top 10 % in the window).
Is the difference real?
Diebold-Mariano test on daily errors, pairwise, two-sided. A small p-value means the difference is unlikely to be chance. With few days the test is weak.
A
B
D+
n
p
gbm.v1
lear.v1
1
18
0.7738
no demonstrated difference
gbm.v1
naive_last_day.v1
1
18
0.1722
no demonstrated difference
gbm.v1
naive_similar_day.v1
1
18
0.0423
gbm.v1 is better than naive_similar_day.v1
gbm.v1
naive_weekly.v1
1
18
0.0008
gbm.v1 is better than naive_weekly.v1
lear.v1
naive_last_day.v1
1
18
0.1328
no demonstrated difference
lear.v1
naive_similar_day.v1
1
18
0.0301
lear.v1 is better than naive_similar_day.v1
lear.v1
naive_weekly.v1
1
18
0.0018
lear.v1 is better than naive_weekly.v1
naive_last_day.v1
naive_similar_day.v1
1
18
0.1581
no demonstrated difference
naive_last_day.v1
naive_weekly.v1
1
18
0.0111
naive_last_day.v1 is better than naive_weekly.v1
naive_similar_day.v1
naive_weekly.v1
1
19
0.0455
naive_similar_day.v1 is better than naive_weekly.v1
gbm.v1
lear.v1
2
17
0.1833
no demonstrated difference
gbm.v1
naive_last_day.v1
2
17
0.3472
no demonstrated difference
gbm.v1
naive_similar_day.v1
2
17
0.1329
no demonstrated difference
gbm.v1
naive_weekly.v1
2
17
0.0389
gbm.v1 is better than naive_weekly.v1
lear.v1
naive_last_day.v1
2
17
0.7603
no demonstrated difference
lear.v1
naive_similar_day.v1
2
17
0.2510
no demonstrated difference
lear.v1
naive_weekly.v1
2
17
0.0740
no demonstrated difference
naive_last_day.v1
naive_similar_day.v1
2
17
0.2344
no demonstrated difference
naive_last_day.v1
naive_weekly.v1
2
17
0.2009
no demonstrated difference
naive_similar_day.v1
naive_weekly.v1
2
18
0.2959
no demonstrated difference
All
2026-10-01 – 2026-10-20
For tomorrow (D+1)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
20 / 19
46.3
62.4
0
15.7
70 %
lear.v1
20 / 18
28.4
37.0
+0.39
8.8
78 %
gbm.v1
20 / 18
29.5
37.0
+0.36
9.5
79 %
naive_last_day.v1
20 / 18
36.3
47.9
+0.22
12.2
74 %
naive_weekly.v1
20 / 19
60.0
77.1
−0.30
20.2
63 %
For the day after (D+2)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
19 / 18
55.2
70.7
0
18.4
70 %
gbm.v1
19 / 17
36.2
45.4
+0.35
11.4
78 %
lear.v1
19 / 17
45.0
53.1
+0.20
13.1
73 %
naive_last_day.v1
19 / 17
47.8
61.2
+0.15
15.7
76 %
naive_weekly.v1
19 / 18
61.7
78.5
−0.12
21.0
61 %
MAE, RMSE and pinball in EUR/MWh per quarter-hour (10 EUR/MWh = 1 ct/kWh). Skill = 1 − MAE ÷ MAE of the reference: above 0 means better than the rule of thumb. About 80 % of prices should fall inside the 80 % band.
By situation
For tomorrow (D+1), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
29.51728
30.81248
26.2480
28.31
44.9177
lear.v1
28.41728
28.01248
29.3480
13.61
42.2177
naive_last_day.v1
36.31728
37.71248
32.7480
29.61
47.9177
naive_similar_day.v1
46.31824
35.21248
70.5576
98.01
40.1177
naive_weekly.v1
60.01824
55.21248
70.5576
98.01
60.0177
For the day after (D+2), MAE
Model
All quarter-hours
Weekdays
Weekend
Negative prices
Price spikes
gbm.v1
36.21632
42.11056
25.4576
31.61
62.5136
lear.v1
45.01632
41.31056
51.6576
47.51
60.3136
naive_last_day.v1
47.81632
48.51056
46.5576
95.61
47.2136
naive_similar_day.v1
55.21728
47.51152
70.5576
98.01
40.9156
naive_weekly.v1
61.71728
57.31152
70.5576
98.01
66.1156
Price spike: actual price of 245 EUR/MWh or more (top 10 % in the window).
Is the difference real?
Diebold-Mariano test on daily errors, pairwise, two-sided. A small p-value means the difference is unlikely to be chance. With few days the test is weak.
A
B
D+
n
p
gbm.v1
lear.v1
1
18
0.7738
no demonstrated difference
gbm.v1
naive_last_day.v1
1
18
0.1722
no demonstrated difference
gbm.v1
naive_similar_day.v1
1
18
0.0423
gbm.v1 is better than naive_similar_day.v1
gbm.v1
naive_weekly.v1
1
18
0.0008
gbm.v1 is better than naive_weekly.v1
lear.v1
naive_last_day.v1
1
18
0.1328
no demonstrated difference
lear.v1
naive_similar_day.v1
1
18
0.0301
lear.v1 is better than naive_similar_day.v1
lear.v1
naive_weekly.v1
1
18
0.0018
lear.v1 is better than naive_weekly.v1
naive_last_day.v1
naive_similar_day.v1
1
18
0.1581
no demonstrated difference
naive_last_day.v1
naive_weekly.v1
1
18
0.0111
naive_last_day.v1 is better than naive_weekly.v1
naive_similar_day.v1
naive_weekly.v1
1
19
0.0455
naive_similar_day.v1 is better than naive_weekly.v1
gbm.v1
lear.v1
2
17
0.1833
no demonstrated difference
gbm.v1
naive_last_day.v1
2
17
0.3472
no demonstrated difference
gbm.v1
naive_similar_day.v1
2
17
0.1329
no demonstrated difference
gbm.v1
naive_weekly.v1
2
17
0.0389
gbm.v1 is better than naive_weekly.v1
lear.v1
naive_last_day.v1
2
17
0.7603
no demonstrated difference
lear.v1
naive_similar_day.v1
2
17
0.2510
no demonstrated difference
lear.v1
naive_weekly.v1
2
17
0.0740
no demonstrated difference
naive_last_day.v1
naive_similar_day.v1
2
17
0.2344
no demonstrated difference
naive_last_day.v1
naive_weekly.v1
2
17
0.2009
no demonstrated difference
naive_similar_day.v1
naive_weekly.v1
2
18
0.2959
no demonstrated difference
Daily error (MAE, D+1)
Track record of the cheapest 3 hours
Model
D+
n
Hit rate
stated
within 0.5 ct
stated
Extra cost vs. best window
Saving vs. day mean
gbm.v1
1
18
28 %
29 %
83 %
84 %
0.28 ct
6.16 ct
gbm.v1
2
17
6 %
22 %
88 %
69 %
0.27 ct
6.49 ct
lear.v1
1
18
22 %
23 %
89 %
73 %
0.32 ct
6.12 ct
lear.v1
2
17
24 %
21 %
82 %
78 %
0.35 ct
6.42 ct
naive_last_day.v1
1
18
6 %
21 %
83 %
57 %
0.44 ct
6.00 ct
naive_last_day.v1
2
17
12 %
20 %
82 %
55 %
0.41 ct
6.35 ct
naive_similar_day.v1
1
19
5 %
22 %
90 %
60 %
0.39 ct
6.24 ct
naive_similar_day.v1
2
18
6 %
26 %
83 %
65 %
0.46 ct
6.21 ct
naive_weekly.v1
1
19
0 %
26 %
84 %
59 %
0.38 ct
6.25 ct
naive_weekly.v1
2
18
0 %
23 %
83 %
57 %
0.39 ct
6.29 ct
Missed forecasts
Th 1 Oct: naive_last_day.v1, D+1
Th 1 Oct: naive_weekly.v1, D+1
Th 1 Oct: naive_similar_day.v1, D+1
Th 1 Oct: lear.v1, D+1
Th 1 Oct: gbm.v1, D+1
Fr 2 Oct: naive_last_day.v1, D+2
Fr 2 Oct: naive_weekly.v1, D+2
Fr 2 Oct: naive_similar_day.v1, D+2
Fr 2 Oct: lear.v1, D+2
Fr 2 Oct: gbm.v1, D+2
Su 11 Oct: naive_last_day.v1, D+1
Su 11 Oct: lear.v1, D+1
Su 11 Oct: gbm.v1, D+1
Mo 12 Oct: naive_last_day.v1, D+2
Mo 12 Oct: lear.v1, D+2
Mo 12 Oct: gbm.v1, D+2
Backtest – not part of the track record
The same code, run for 363 past days (1 October 2025 to 28 September 2026) with only the data known then. It is not pre-registered and therefore optimistic. It shows why a model runs live, not that it is good.
For tomorrow (D+1)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
363 / 363
32.7
52.1
0
12.0
76 %
gbm.v1
363 / 363
19.3
31.8
+0.41
6.4
78 %
lear.v1
363 / 363
22.0
36.4
+0.33
7.6
76 %
naive_last_day.v1
363 / 363
30.2
48.9
+0.07
11.0
77 %
naive_weekly.v1
363 / 363
37.8
58.8
−0.16
13.5
77 %
For the day after (D+2)
Model
Days due / forecast
MAE
RMSE
Skill
Pinball
inside 80 % band
naive_similar_day.v1 reference
363 / 363
37.9
59.5
0
13.7
76 %
gbm.v1
363 / 363
21.8
34.7
+0.43
7.2
78 %
lear.v1
363 / 363
29.2
44.0
+0.23
9.9
76 %
naive_weekly.v1
363 / 363
37.8
58.8
+0.00
13.5
76 %
naive_last_day.v1
363 / 363
38.5
59.9
−0.02
13.6
77 %
MAE, RMSE and pinball in EUR/MWh per quarter-hour (10 EUR/MWh = 1 ct/kWh). Skill = 1 − MAE ÷ MAE of the reference: above 0 means better than the rule of thumb. About 80 % of prices should fall inside the 80 % band. GitHub