JM.Back to work ↗
02 / German wind forecasting

Can machine learning beat Germany's official wind forecast?

I tested whether a correction model could improve Germany’s published wind forecast. Its small average gain did not survive the uncertainty check.

8,615hours tested against the public benchmark
Decision

Keep the public forecast. The evidence does not justify replacing it with this model.

Model improvement by test period12 periods · July 2025–June 2026

Percentage reduction in average error versus the public forecast. Positive is better; zero means no improvement.

01-14.46%
02+2.13%
03+11.61%
04-26.44%
05+3.12%
06+13.30%
07-12.13%
08+11.59%
09+6.87%
10+5.47%
11-3.43%
12-3.47%
Seven periods improved; five did not. Across 8,615 hours, the pooled gain was +0.34%, with a 95% interval of −2.91% to +3.60%. The interval crosses zero: no reliable advantage was established. Historical calibration, not a trading signal. Source: committed fold results ↗
Why it mattered

An extra model has to earn its place

A forecasting model adds maintenance and complexity. I compared it with the public forecast that was already available, testing on later hours rather than mixing past and future observations.

What I built

A correction to the official forecast

I used XGBoost to estimate errors in the published forecast and add a correction. The model was trained on earlier data and tested over twelve successive periods. Improvement in one period was not enough; it needed to hold across the evaluation.

What changed my recommendation

The average hid an inconsistent result

Seven test periods improved and five worsened. The overall gain was small enough to be consistent with no improvement, so I kept the simpler benchmark.

What I would test next

Only information available at forecast time

The next test needs a strict day-ahead information cutoff and forecasts recorded before outcomes are known. The repository freezes that specification; the historical results here do not meet it.

Technical evidence

Across 8,615 out-of-sample hours, the pooled gain was +0.34%, but the interval included zero. Seven folds improved and five did not. The Newey–West 95% skill interval was −2.91% to +3.60%. This is historical rolling calibration, not a strict pre-auction forecast or evidence of a trading edge.