File size: 3,946 Bytes
24e0e10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
---

language:
- en
- de
license: apache-2.0
tags:
- time-series-forecasting
- energy-forecasting
- electricity-demand
- day-ahead-prices
- lightgbm
- tabular-regression
- conformal-prediction
- germany
- europe
- entsoe
pipeline_tag: tabular-regression
datasets:
- hsilvosa/entsoe-day-ahead
metrics:
- mae
- rmse
- pinball_loss
- winkler_score
model-index:
- name: germany-demand-forecaster
  results:
  - task:
      type: tabular-regression
      name: Electricity Demand Forecasting
    dataset:
      name: ENTSO-E Germany Bidding Zone (DE)
      type: hsilvosa/entsoe-day-ahead
    metrics:
    - name: MAE
      type: mae
      value: 440.218
    - name: RMSE
      type: rmse
      value: 663.288
    - name: Empirical Interval Coverage (80% Nominal)
      type: coverage
      value: 76.5%
---

# Electricity Demand Forecaster for Germany (DE)

High-accuracy calibrated quantile LightGBM model for forecasting Germany **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**: Germany (`DE`)
- **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: `DE`)
- **Training Samples**: 99,380 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** | **440.218 MW** | 5542.114 MW | **+92.1%** |
| **RMSE** | **663.288 MW** | β€” | β€” |
- **WAPE**: 0.80%
| **P10 Pinball Loss** | 237.595 | β€” | β€” |
| **P90 Pinball Loss** | 155.508 | β€” | β€” |
| **P10–P90 Interval Coverage** | **76.5%** | β€” | Target: 75–85% |
| **Winkler Score** | 3931.027 | β€” | β€” |

## Quickstart: Python Inference

```python

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/germany-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:
- `hour`
- `quarter`
- `day_of_week`
- `day_of_year`
- `month`
- `is_weekend`
- `is_holiday`
- `is_morning_peak`
- `is_evening_peak`
- `sin_hour`
- `cos_hour`
- `sin_day_of_week`
- `cos_day_of_week`
- `sin_day_of_year`
- `cos_day_of_year`
- `lag_1h`
- `lag_2h`
- `lag_3h`
- `lag_4h`
- `lag_24h`
- `lag_48h`
- `lag_7d`
- `lag_14d`
- `diff_1h`
- `diff_2h`
- `diff_24h`
- `diff_7d`
- `acceleration_1h`
- `ema_4step`
- `ema_12step`
- `rolling_std_4step`
- `rolling_mean_24h`
- `rolling_std_24h`
- `rolling_min_24h`
- `rolling_max_24h`
- `rolling_mean_7d`
- `rolling_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/