What is EPF?
EPF (Electricity Price Forecasting) is a machine-learning system that predicts day-ahead electricity market prices for Spain, Portugal, France, and Germany up to 7 days ahead. Spain runs at 15-minute resolution (OMIE); Portugal, France, and Germany run hourly (ENTSO-E / EPEX SPOT).
Two Forecast Products
EPF delivers two operationally distinct forecasts per country, aligned with OMIE market publication times:
- D+1 Day-Ahead — prices for tomorrow, delivered before OMIE gate closure at ~10:00 UTC (96 quarter-hour slots for ES; 24 hourly slots for PT/FR/DE)
- D+2–D+7 Strategic — six days of forward-looking prices, delivered at ~15:00 UTC using published D+1 actuals as model input
Key Capabilities
- 4-country coverage — ES, PT, FR, DE — with per-country model tuning and feature gating
- 7-day horizon, hourly and 15-minute resolution
- Single-model XGBoost with
residual_1wtarget transform (depth=12, q=0.55, price-weighting 3× above 60 EUR/MWh) - Country-aware feature engineering — Z1 country-specific holidays, Z2 generation-forecast targets, Z4 solar elevation, plus price lags / rolling stats / renewable mix / weather interactions / commodity dynamics
- Per-country cross-price gating via
EPF_CROSS_PRICE_COUNTRIES— ablation showed cross-country prices hurt ES/FR/PT; only DE keeps them - Confidence intervals via split conformal prediction (50% and 90% bands)
- Walk-forward backtesting with comprehensive evaluation metrics
- Cloud Run Jobs per country × horizon group for prediction compute; VM PostgreSQL for persistence
Data Sources
| Source | Scope | Data |
|---|---|---|
| REE/ESIOS | Spain | 16 electricity system indicators (demand, generation mix, prices, interconnections) at hourly + 15-min |
| ENTSO-E | ES/PT/FR/DE | Day-ahead prices, actual generation by type, generation forecast, total load |
| Open-Meteo | All 4 countries | Weather forecasts (temperature, wind, irradiance, cloud cover) from population-weighted stations |
| yfinance | All 4 countries | TTF gas, Brent crude, EU ETS carbon |
Current Performance
145-day backtest window, 2025-11-01 → 2026-03-25 (post Z3 ablation, April 2026):
| Country | D+1 MAE | D+1 winner | Strategic MAE | Strategic winner |
|---|---|---|---|---|
| ES | 13.99 EUR/MWh | v12.0 ablation (beats v11.0 14.26) | 17.35 EUR/MWh | v11.0 |
| PT | 21.94 EUR/MWh | v6.0 ablation | 24.67 EUR/MWh | v6.0 with cross-prices |
| FR | 24.52 EUR/MWh | v6.0 ablation | 28.47 EUR/MWh | v5.0 |
| DE | 27.64 EUR/MWh | v6.0 (only country with cross-prices) | 35.99 EUR/MWh | v6.0 |
ES MAE floor is regime-dependent: during stable months (e.g. February 2026) PT DA MAE can drop to 14 EUR/MWh. Strategic MAE is higher across the board because D+2 to D+7 requires forecasting weather and commodity moves, not just pattern-matching yesterday.
See the methodology changelog for the full experiment history — including the v10.x LSTM retraction and the Phase 5 / Z3 ablation.