Electricity Demand Forecaster for Portugal (PT)
High-accuracy calibrated quantile LightGBM model for forecasting Portugal demand. Resolution: 15-minute intervals. Trained on multi-year data (2023β2026) from ENTSO-E, featuring multi-scale lags, cyclical encodings, and conformal calibration for well-calibrated 80% prediction intervals ($P10, P50, P90$).
Model Highlights
- Country / Zone: Portugal (
PT) - Target: Electricity Demand in
MW - Resolution: 15-minute intervals
- Outputs: Point forecast ($P50$), 80% prediction interval ($P10$ to $P90$)
- Algorithm: LightGBM Multi-Quantile Regressor with Conformal Calibration & Monotonicity
- Dataset: ENTSO-E European Transparency Platform (Zone:
PT) - Training Samples: 96,665 observations (2023β2026)
Performance & Benchmark Comparison
Evaluated on out-of-sample test sets against official seasonal persistence benchmarks:
| Metric | LightGBM Forecaster | 7-Day Seasonal Persistence | Improvement |
|---|---|---|---|
| MAE | 45.528 MW | 716.312 MW | +93.6% |
| RMSE | 90.863 MW | β | β |
- WAPE: 0.72% | P10 Pinball Loss | 33.950 | β | β | | P90 Pinball Loss | 14.355 | β | β | | P10βP90 Interval Coverage | 78.4% | β | Target: 75β85% | | Winkler Score | 483.052 | β | β |
Quickstart: Python Inference
import pandas as pd
from huggingface_hub import hf_hub_download
import joblib
# 1. Download model artifacts
model_path = hf_hub_download(repo_id="ORGANIZATION/portugal-demand-forecaster", filename="models.joblib")
models = joblib.load(model_path)
# 2. Predict P10, P50 (point), and P90 quantiles
X_test = pd.read_csv("sample_input.csv")
p10 = models[0.1].predict(X_test)
p50 = models[0.5].predict(X_test)
p90 = models[0.9].predict(X_test)
print("Forecast Point Estimate:", p50[:5])
print("80% Lower Bound (P10):", p10[:5])
print("80% Upper Bound (P90):", p90[:5])
Features Used
The model uses 37 leakage-safe features:
hourquarterday_of_weekday_of_yearmonthis_weekendis_holidayis_morning_peakis_evening_peaksin_hourcos_hoursin_day_of_weekcos_day_of_weeksin_day_of_yearcos_day_of_yearlag_1hlag_2hlag_3hlag_4hlag_24hlag_48hlag_7dlag_14ddiff_1hdiff_2hdiff_24hdiff_7dacceleration_1hema_4stepema_12steprolling_std_4steprolling_mean_24hrolling_std_24hrolling_min_24hrolling_max_24hrolling_mean_7drolling_std_7d
Intended Use & Advisory
This model is intended for research, energy market analytics, grid load planning, and educational forecasting demonstrations. It is advisory only and not intended for automated trading execution or real-time grid dispatch.
Citation & Attribution
Data published under the ENTSO-E Transparency framework:
- Transparency Platform: https://transparency.entsoe.eu/
- Downloads last month
- -
Dataset used to train nesoai/portugal-electricity-demand-forecaster
Viewer β’ Updated β’ 13.1M β’ 159
Evaluation results
- MAE on ENTSO-E Portugal Bidding Zone (PT)self-reported45.528
- RMSE on ENTSO-E Portugal Bidding Zone (PT)self-reported90.863
- Empirical Interval Coverage (80% Nominal) on ENTSO-E Portugal Bidding Zone (PT)self-reported78.4%