VoltBench · the public benchmark for European power-price forecasting
Who actually forecasts European power prices best?
Submit tomorrow's day-ahead curve before the auction, get scored against realized prices under published rules. Any active API key can compete, including grandfathered Free keys — including us, under identical rules, losses included. The electricity-price-forecasting literature has no standard benchmark and a chronic lookahead problem; VoltBench is the fix: a frozen dataset, a standard protocol, and a live forward-blind leaderboard.
The dataset
Frozen, citable, anti-lookahead by construction: the point-in-time-correct feature matrix for DE-LU, calendar 2025 — the exact features our own models train on, every column knowable at issue time. Keyless CSV.
voltbench-de-lu-2025-features-v1.csv →The protocol
Walk-forward only: train strictly on data before each issue day, predict D+1 hourly, score MAE and pinball against realized prices. Offline: use the frozen dataset. Live: submit before 12:00 CET on D-1 — the server timestamps and enforces it.
Submission docs →The prize
A full year of Scale to the best submission each quarter (min. 60 scored days, beats the current Voltcast pre-auction P50 net of baselines). And a standing offer: beat Volt consistently and we'll talk about licensing your model.
Questions → talk to the founderForward-blind
Submissions close 12:00 CET on D-1 — before SDAC results exist. Enforced server-side, timestamped.
No listing fee
Any active API key can submit. Ranking is score-ordered, nothing else.
Open scoring
The exact scoring code that runs is published verbatim — see it below.
We compete too
The named Voltcast pre-auction P50 plus 23 reference models & baselines are frozen before the deadline with source and curve hashes. Historical rows and losing months stay forever.
Leaderboard — DE-LU · last 30 days
| # | Participant | MAE (€/MWh) | RMSE | Days |
|---|---|---|---|---|
| 1 | Voltcast V68 EXAA challenger voltcast | 17.23 | 22.86 | 6 |
| 2 | Voltcast V66 point challenger voltcast | 23.83 | 30.87 | 6 |
| 3 | ref/daytype-persistence reference | 23.95 | 33.30 | 30 |
| 4 | ref/blend-d1-d7 reference | 24.46 | 33.96 | 30 |
| 5 | ref/blend-d1-clim30 reference | 24.68 | 33.93 | 30 |
| 6 | ref/blend-3way reference | 24.72 | 33.62 | 30 |
| 7 | Persistence baseline reference | 24.87 | 35.18 | 30 |
| 8 | ref/ewma-0.3 reference | 25.14 | 34.45 | 30 |
| 9 | ref/ewma-0.1 reference | 25.56 | 34.36 | 30 |
| 10 | ref/trimmed-mean-7d reference | 25.88 | 35.82 | 30 |
| 11 | ref/median-14d reference | 25.89 | 36.56 | 30 |
| 12 | ref/mean-7d reference | 25.99 | 35.34 | 30 |
| 13 | ref/daytype-mean-30d reference | 26.21 | 34.81 | 30 |
| 14 | ref/median-7d reference | 26.33 | 37.45 | 30 |
| 15 | ref/mean-3d reference | 26.51 | 36.48 | 30 |
| 16 | ref/median-30d reference | 27.41 | 38.25 | 30 |
| 17 | ref/same-weekday-median-4w reference | 27.86 | 38.14 | 30 |
| 18 | ref/blend-d7-clim30 reference | 27.90 | 37.52 | 30 |
| 19 | Voltcast P50 voltcast | 28.07 | 37.52 | 24 |
| 20 | ref/climatology-30d reference | 28.51 | 37.23 | 30 |
| 21 | ref/same-weekday-mean-4w reference | 28.61 | 37.81 | 30 |
| 22 | ref/damped-drift-0.5 reference | 30.72 | 40.19 | 30 |
| 23 | ref/seasonal-naive-d7 reference | 31.11 | 43.17 | 30 |
| 24 | ref/midrange-14d reference | 31.47 | 38.71 | 30 |
| 25 | ref/shape-scaled-clim30 reference | 33.06 | 40.43 | 30 |
| 26 | Voltcast pre-auction P50 voltcast | 36.12 | 47.43 | 6 |
| 27 | ref/drift-persistence reference | 38.44 | 46.73 | 30 |
How to compete
- Start with Home, or use an existing grandfathered Free key.
- Before 12:00 CET, POST tomorrow's curve (hourly or 15-minute):
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"zone":"DE-LU","target_date":"2026-08-27","display_name":"my-model-v1",
"method_url":"https://github.com/you/model","points":[{"ts":"2026-08-27T00:00:00Z","value":72.5}, "…"]}' \
"https://voltcast.com/api/v1/bench/submissions"
Scored automatically once realized prices land. Governance: rules are versioned in the open — the running scoring code is published at /bench/scoring; rule changes are announced ahead of time and never applied retroactively. Academic partners for independent governance: talk to us.