| Hour | Order | MWh | €/MWh | 90% range |
|---|---|---|---|---|
| 12:00-13:00 | Buy | 1.00 | 129 | 72-185 |
| 13:00-14:00 | Buy | 1.00 | 130 | 66-186 |
| 14:00-15:00 | Buy | 0.11 | 135 | 74-191 |
| 17:00-18:00 | Sell | 0.90 | 239 | 188-296 |
| 18:00-19:00 | Sell | 1.00 | 242 | 202-304 |
| Hour | Order | MWh | €/MWh | 90% range |
|---|---|---|---|---|
| 12:00-13:00 | Buy | 1.00 | 127 | 71-180 |
| 13:00-14:00 | Buy | 1.00 | 125 | 64-185 |
| 14:00-15:00 | Buy | 0.11 | 136 | 82-189 |
| 17:00-18:00 | Sell | 0.90 | 273 | 224-336 |
| 18:00-19:00 | Sell | 1.00 | 279 | 241-341 |
| Hour | Order | MWh | €/MWh | 90% range |
|---|---|---|---|---|
| 12:00-13:00 | Buy | 1.00 | 116 | 55-174 |
| 13:00-14:00 | Buy | 1.00 | 112 | 45-170 |
| 14:00-15:00 | Buy | 0.11 | 122 | 61-182 |
| 17:00-18:00 | Sell | 1.00 | 225 | 175-291 |
| 18:00-19:00 | Sell | 0.90 | 225 | 188-296 |
| Hour | Order | MWh | €/MWh | 90% range |
|---|---|---|---|---|
| 03:00-04:00 | Buy | 1.00 | 160 | 120-192 |
| 04:00-05:00 | Buy | 0.11 | 160 | 113-196 |
| 08:00-09:00 | Sell | 1.00 | 254 | 196-317 |
| 12:00-13:00 | Buy | 1.00 | 144 | 83-206 |
| 18:00-19:00 | Sell | 0.90 | 221 | 175-293 |
| Forecast | Days | After costs | Share of perfect |
|---|---|---|---|
| Ensemble | 6 | 681 € | 90% |
| BMT-X | 6 | 583 € | 77% |
| LEAR-X | 6 | 680 € | 90% |
| XGBoost-X | 6 | 654 € | 87% |
| Day | Expected | 1 in 20 floor | Costs | Earned | Perfect | |
|---|---|---|---|---|---|---|
| Mon 19 Oct | 169 € | 45 € | 38 € | 115 € | 124 € | |
| Sun 18 Oct | 134 € | -15 € | 38 € | 39 € | 75 € | |
| Sat 17 Oct | 136 € | -26 € | 38 € | 25 € | 27 € | |
| Thu 15 Oct | 153 € | -1 € | 38 € | 200 € | 200 € | |
| Wed 14 Oct | 278 € | 118 € | 38 € | 282 € | 290 € | |
| Tue 13 Oct | 51 € | -83 € | 38 € | 20 € | 38 € |
Planned the day before on the live forecast, paid the real price. After the Nord Pool fee (0.055 €/MWh) and wear (20 €/MWh sold). No grid tariffs or taxes.
| Forecast | Days | After costs | Share of perfect |
|---|---|---|---|
| Ensemble | 6 | 681 € | 90% |
| BMT-X | 6 | 583 € | 77% |
| LEAR-X | 6 | 680 € | 90% |
| XGBoost-X | 6 | 654 € | 87% |
| Day | Expected | 1 in 20 floor | Costs | Earned | Perfect | |
|---|---|---|---|---|---|---|
| Mon 19 Oct | 201 € | 113 € | 38 € | 106 € | 124 € | below the floor |
| Sun 18 Oct | 95 € | -69 € | 38 € | 38 € | 75 € | |
| Sat 17 Oct | 131 € | -33 € | 38 € | 26 € | 27 € | |
| Thu 15 Oct | 158 € | 63 € | 38 € | 128 € | 200 € | |
| Wed 14 Oct | 325 € | 191 € | 38 € | 264 € | 290 € | |
| Tue 13 Oct | 38 € | -122 € | 38 € | 21 € | 38 € |
Planned the day before on the live forecast, paid the real price. After the Nord Pool fee (0.055 €/MWh) and wear (20 €/MWh sold). No grid tariffs or taxes.
| Forecast | Days | After costs | Share of perfect |
|---|---|---|---|
| Ensemble | 6 | 681 € | 90% |
| BMT-X | 6 | 583 € | 77% |
| LEAR-X | 6 | 680 € | 90% |
| XGBoost-X | 6 | 654 € | 87% |
| Day | Expected | 1 in 20 floor | Costs | Earned | Perfect | |
|---|---|---|---|---|---|---|
| Mon 19 Oct | 215 € | 50 € | 38 € | 113 € | 124 € | |
| Sun 18 Oct | 130 € | -35 € | 38 € | 39 € | 75 € | |
| Sat 17 Oct | 117 € | -58 € | 38 € | 25 € | 27 € | |
| Thu 15 Oct | 160 € | -22 € | 38 € | 189 € | 200 € | |
| Wed 14 Oct | 324 € | 136 € | 38 € | 279 € | 290 € | |
| Tue 13 Oct | 56 € | -123 € | 38 € | 35 € | 38 € |
Planned the day before on the live forecast, paid the real price. After the Nord Pool fee (0.055 €/MWh) and wear (20 €/MWh sold). No grid tariffs or taxes.
| Forecast | Days | After costs | Share of perfect |
|---|---|---|---|
| Ensemble | 6 | 681 € | 90% |
| BMT-X | 6 | 583 € | 77% |
| LEAR-X | 6 | 680 € | 90% |
| XGBoost-X | 6 | 654 € | 87% |
| Day | Expected | 1 in 20 floor | Costs | Earned | Perfect | |
|---|---|---|---|---|---|---|
| Mon 19 Oct | 129 € | 6 € | 38 € | 74 € | 124 € | |
| Sun 18 Oct | 178 € | 11 € | 38 € | 39 € | 75 € | |
| Sat 17 Oct | 162 € | -6 € | 38 € | 25 € | 27 € | |
| Thu 15 Oct | 151 € | -20 € | 38 € | 200 € | 200 € | |
| Wed 14 Oct | 188 € | 64 € | 38 € | 281 € | 290 € | |
| Tue 13 Oct | 84 € | -79 € | 38 € | 35 € | 38 € |
Planned the day before on the live forecast, paid the real price. After the Nord Pool fee (0.055 €/MWh) and wear (20 €/MWh sold). No grid tariffs or taxes.
Worst past day: the worst forecast error of the last 250 days. Peak doesn't come: selling hours fall to the median price. Negative prices: -50 €/MWh 11-15. Errors x3: the worst 5% with errors three times as big.
Worst past day: the worst forecast error of the last 250 days. Peak doesn't come: selling hours fall to the median price. Negative prices: -50 €/MWh 11-15. Errors x3: the worst 5% with errors three times as big.
Worst past day: the worst forecast error of the last 250 days. Peak doesn't come: selling hours fall to the median price. Negative prices: -50 €/MWh 11-15. Errors x3: the worst 5% with errors three times as big.
Worst past day: the worst forecast error of the last 250 days. Peak doesn't come: selling hours fall to the median price. Negative prices: -50 €/MWh 11-15. Errors x3: the worst 5% with errors three times as big.
Pick the forecast at the top: the ensemble (the default, the average of BMT-X, LEAR-X and XGBoost-X) or one model alone, all from my DK1 price forecasts (R), made before the noon auction the day before. The plan, P&L, risk and stress tests then use that forecast. The cost and loss limit backtests are for the ensemble.
The plan is a mixed-integer program (scipy): 2 MWh / 1 MW, 90% round trip, one cycle a day. It includes the Nord Pool fee and 20 €/MWh wear, so it only trades when the spread pays for them. Without costs it gives the same plan as the R version on 363 of 375 days.
Risk: past days' 24-hour forecast errors, scaled by an EWMA of their volatility, run through the plan.
The P&L counts from 13 Oct 2026.