Weather Edge Trading Strategy
Forecast Revision Signal Analysis and Backtest Results
PREPARED BY
Takeshi Ren
Lead Meteorologist, Edgion Ltd
21 March 2026 Version 1.0 Internal — Confidential
EDG-TR-2026-003Edgion Ltd, United Kingdom
This report presents the development, backtesting, and validation of Edgion’s first weather-driven energy trading strategy. The strategy exploits forecast revision information from ECMWF and GFS numerical weather prediction models to predict intraday German electricity price movements.
Key findings:
A statistically significant trading signal exists in ECMWF wind forecast revisions at the 72–96h lead pair, targeting intraday price changes (p = 0.022, 500 permutations).
The enhanced model — combining weekend exclusion, negative price filtering, and a wind-price correlation regime detector — achieves +782 EUR/MWh over 6 years (2019–2024), Sharpe ratio 0.70, win rate 54.2%.
Out-of-sample validation on 2023–2024 (using ECMWF ensemble mean as HRES proxy, r = 0.995) shows +102 EUR with 25 trades.
GFS independently confirms the ECMWF wind revision direction (Sharpe 2.16 on cross-model signal, 60.9% agreement rate).
The weekend effect is a market microstructure finding: professional traders respond to forecast updates on weekdays; weekends, this mechanism is dormant. Skipping weekends alone improved PnL from +279 to +717.
The strategy requires EEX futures access (spread ∼0.10–0.30 EUR/MWh) — spread betting platforms have transaction costs that exceed the signal edge.
Recommendation: Proceed to paper trading on April 1, 2026 via broker with EEX-realistic costs. Evaluate for 3 months (April–June). March is historically the weakest month; entering in April aligns with seasonal signal strength.
European electricity prices are increasingly driven by variable renewable energy sources (VRES), particularly wind power. Germany’s renewable share reached 55% in 2023, with wind generation the largest single contributor. When wind generation changes, the merit order shifts and electricity prices respond — more wind pushes cheaper renewables to the front, displacing expensive gas and reducing prices.
Numerical weather prediction (NWP) models are updated daily, and each update revises the previous forecast. Kuppelwieser & Wozabal (2023) demonstrated that these forecast revisions contain tradeable information on the continuous intraday market. Their key insight: if we can predict how the next forecast will change before the market reacts, we can position ahead of the price movement.
This report documents Edgion’s implementation and extension of this approach, answering the question: Can ECMWF and GFS forecast revisions generate statistically significant, out-of-sample-validated trading profits on German electricity intraday prices?
The forecast revision is defined as the difference between consecutive daily forecasts targeting the same valid time: δ = f(initn, L) − f(initn − 1, L + 24) where initn is today’s 00Z initialisation at lead time L, and initn − 1 is yesterday’s 00Z at lead L + 24. Both target identical valid times, isolating the model’s change of mind.
Trading follows a K&W parametric policy: when the revision exceeds a threshold Δ, position in the predicted direction (wind up → sell, wind down → buy). The threshold is recalibrated daily using a rolling 180-day window via grid search over percentile values (60th, 70th, 80th, 90th).
The price target is the intraday change: mean morning price (04:00–08:00 UTC, before ECMWF publication) minus mean rest-of-day price (08:00–24:00 UTC, after market absorption). This captures the price adjustment driven by forecast information release.
Three risk filters are applied: (1) weekend exclusion — professional traders are inactive on weekends, breaking the forecast→price mechanism; (2) negative price guard — skip trading when day-ahead prices go negative; (3) regime filter — trade only when the rolling 60-day correlation between wind revision and intraday price change is below 0.1 (i.e. weather is actively driving prices).
Statistical significance is assessed via permutation test (500 shuffles, shuffling signal values while preserving dates) and bootstrap 95% confidence intervals.
| Parameter | Value |
|---|---|
| Signal variables | v10 (72→96h, weight 0.6) + u10 (48→72h, weight 0.4) |
| Price target | Intraday change: morning (04–08 UTC) vs rest-of-day (08–24 UTC) |
| Calibration window | days rolling |
| Transaction cost | EUR/MWh (conservative; EEX spread ∼0.10–0.30) |
| Position size | MWh normalised |
| Weekend filter | Skip Saturday and Sunday |
| Negative price filter | Skip days with any negative hourly price |
| Regime filter | -day rolling wind-price correlation < 0.1 |
| Dataset | Period | Rows | Source | Notes |
|---|---|---|---|---|
| ECMWF HRES | 2018–2022 | 9,130 | WeatherBench2 | vars, 5 leads, Germany area-weighted |
| ECMWF Ensemble | 2018–2024 | 12,785 | WeatherBench2 | members; mean, std, p10, p90 |
| GFS | 2018–2019 | 3,645 | AWS (Herbie) | –2022 downloading |
| SMARD Prices | Oct 2018–Mar 2026 | 98,160 | SMARD API | Hourly: price, wind, solar, load |
ECMWF ensemble mean correlates r = 0.995 with HRES, enabling its use as a proxy for 2023–2024 out-of-sample testing where HRES data is unavailable. Code review confirmed zero critical bugs across all 10 analysis scripts; valid times were programmatically verified against init_date + lead_hours.
| Metric | Description | Value | Change |
|---|---|---|---|
| Total PnL | -year cumulative (2019–2024) | +781.6 EUR/MWh | — |
| Sharpe Ratio | Annualised, daily | 0.70 | — |
| Win Rate | Fraction of profitable trades | 54.2% | — |
| Profit Factor | Gross wins / gross losses | 1.49 | — |
| p-value | Permutation test (500 shuffles) | 0.022 | < 0.05 |
| OOS PnL | –2024 out-of-sample | +101.6 EUR | 25 trades |
| Cross-model Sharpe | GFS confirms ECMWF (v10) | 2.16 | 98 trades |
Seasonal pattern. Winter (DJF: +382) and autumn (SON: +366) generate 96% of total profit. Spring is flat (−3), and summer is weakly positive (+36). This is physically consistent: Atlantic frontal systems dominate German wind variability in autumn and winter, producing larger and more tradeable forecast revisions.
Risk factor filters. Figure 3 shows the individual and combined impact of each filter. Skipping weekends alone improves PnL from +279 to +717 — the single largest enhancement. This reflects a market microstructure finding: professional traders respond to forecast updates in real time on weekdays; weekends, that feedback loop is dormant.
Price driver analysis. Residual load change (r = +0.712) is the strongest predictor of daily price changes, followed by wind generation (r = −0.545). Solar is negligible (r = −0.045). Our signal trades on wind forecast revisions (the surprise component), not wind levels — capturing the information the market has not yet absorbed.
Precipitation. Total precipitation revisions showed +901 EUR PnL on the old daily script, but testing through the enhanced intraday engine produced Sharpe 0.04 (coin flip). Precipitation revisions are large because rain is hard to forecast, but they do not predict price. This variable was dropped from the strategy.
The strategy is statistically significant (p = 0.022), out-of-sample validated, and physically grounded. At 100 MWh scale on EEX futures, projected annual returns are approximately ,000 (12.3% on ,000 capital). At 1,000 MWh, returns scale to ∼,000/year.
The strategy requires EEX futures or EPEX SPOT access — spread betting transaction costs (1–2% ≈ 1.00 EUR/MWh) exceed the signal edge. EEX direct membership requires ,000 minimum liable equity. The recommended path is broker-intermediated paper trading first, building a verified track record before committing capital.
The cross-model signal (GFS confirming ECMWF, Sharpe 2.16) provides independent physical confirmation and could be layered as a second signal, potentially doubling capacity without doubling risk. This requires completing the GFS 2020–2022 download (in progress, ETA March 27).
Seasonal concentration: 96% of profit comes from SON+DJF. The strategy is effectively a 6-month seasonal system. March is the worst month (−252 EUR).
Regime filter threshold: The 0.1 correlation threshold was selected in-sample. Rolling recalibration should be tested.
GFS cross-model data: Currently limited to 2018–2019 (2020–2022 downloading). The cross-model Sharpe of 2.16 is based on only 841 overlapping days.
Battery storage trend: Growing battery capacity is compressing intraday price spreads. Negative price hours increased from 211 (2019) to 573 (2025). This may erode the signal over time.
Sample size: 201 active trades over 6 years. Individual monthly P&L has high variance.
Begin paper trading April 1, 2026. Use a broker with EEX-realistic costs (0.10–0.30 EUR/MWh). Run the enhanced v10+u10 model with all three risk filters. Evaluate for 3 months (April–June). Success criteria: Sharpe > 0.3, consistent with backtest seasonal pattern. Owner: Takeshi + Yifei.
Complete GFS 2020–2022 download and run 5-year cross-model backtest. Pre-staged as SLURM job 27340 (auto-triggers). This answers Dr. Yang’s Challenge Question 6 and determines whether the cross-model signal can be added as a second layer. Owner: Takeshi. ETA: March 27.
Investigate hourly-level trading. K&W (2023) showed continuous intraday trading produces 3–5× more profit than daily. This requires EEX order book data and more sophisticated execution logic. Owner: Takeshi. Timeline: Q2 2026.
Scope EEX/EPEX trading account requirements. Yifei has documented the minimum equity (50K), trader exam, and clearing bank requirements. Begin the application process in parallel with paper trading. Owner: Yifei + Leo.
| Role | Name | Signature | Date |
|---|---|---|---|
| Author | Takeshi Ren | ||
| Reviewer 1 | Dr. Yang (Strategy) | ||
| Reviewer 2 | Jack Yu (Data/Statistics) |
The following figures present the strategy in the format expected by institutional trading desks and risk committees.
This appendix walks through the entire process step by step, from the raw data we started with on Day 1 to the final trading results.