Does deseasonalization help solar and wind forecasting? The Make_Stationary benchmark
Cyril Voyant · Updated 2026-10-18
Key finding
A cleaner residual is not a more predictable one. On nine energy and weather series from Corsica, forecast 1 to 6 hours ahead, removing the daily and annual cycle gives the most stationary residuals with the rolling median and the two ELM operators, but this ranking does not carry over to forecast accuracy.
- Forecasting gains depend on the signal and the horizon: about 3 percentage points of nRMSE for hourly wind speed, neutral or mildly detrimental for PV power, total electrical load and wind power.
- PHASE, the lighter of the two frugal ELM operators, gives the best overall compromise and ranks ahead of PROJECTION on average. Raw forecasting remains the strongest strategy for the non-wind variables.
- Deseasonalization is therefore a selective preprocessing option, not a universal step.
The wind-speed improvement above is reported in the public repository README. The manuscript is submitted to Energy Reports. Numerical experiments were not re-run for this page.
Stationarity and forecast quality
A residual diagnostic and a forecast evaluation answer different questions. Compare reconstructed forecasts against RAW on the same samples and horizons; do not select preprocessing from stationarity diagnostics alone. Detailed numerical ranks from the submitted manuscript are not reproduced here.
Method in brief
The signal is split additively, Y = S + R. A ratio, as in a clear-sky index, would be singular at night for GHI and PV. The daily and annual phases are encoded by sine–cosine pairs.
- PROJECTION: an Extreme Learning Machine (one fixed random tanh hidden layer, output weights by ridge regression in closed form) takes lagged values and the phase encoding. At inference the lags are set to their training mean, so the output is the phase-dependent seasonal component.
- PHASE: the same ELM, with the phase encoding as its only input.
- Both operators are frugal: the seasonal component is estimated from a single annual cycle, with no harmonic order to choose and no iterative training.
- Benchmarks: crossed diurnal × annual FOURIER regression, LOESS, and a ±10-day rolling-median template.
- Each residual, and the raw signal, is forecast by an ELM and by a linear AR model. The seasonal component is added back, so all scores are computed in physical units: nRMSE, nMAE, nMBE, R² and the persistence-normalised NICE metrics.
Data
Nine variables over 2021–2023, all included in the repository (about 5 MB):
- GHI and 2 m temperature at Ajaccio, at 30 min and 1 h;
- 10 m wind speed at Bastia, at 30 min and 1 h (Météo-France);
- island-wide PV power, wind power and total load, hourly (EDF Corsica open data).
Reproduce
MATLAB with the Econometrics and Signal Processing toolboxes. The Parallel Computing Toolbox is optional and only speeds up runs.
Optimization/optimization_all_variables.m % 1. grid search of lags L and neurons m
Deseasonalization/main_deseasonalization.m % 2. 6 methods x 9 variables -> *_FULL.csv, Metrics.csv
Forecasting/main_forecast_GHI_and_GHI_30min.m % 3a. GHI, with clear-sky references
Forecasting/main_forecasting_PV_WT_PT_WS_T2M.m % 3b. other variables
Run each stage from its own folder. Two different functions share the name Make_stationary_all_variables.m, and having both folders on the MATLAB path silently shadows one of them.
Paper vs code: documented differences
The repository states these openly. Read them before comparing your numbers with the manuscript.
- The ridge parameter is fixed at λ = 10⁻⁴ in the code. Only (L, m) are grid-searched, whereas the paper describes a ridge search.
- The final pipeline keeps the best of 300 random hidden layers using lag-24 residual autocorrelation, then applies an affine recalibration of S. The recalibration is not in the paper's equations.
- The forecasting ELM uses mixed sigmoid and Gaussian neurons, a detail not written in the paper.
- The plotting utility
daviolinplot.mhas no license header, and its license is not verified.
Scope
This is a benchmark protocol, not evidence that ELM deseasonalization is better in general. Results come from one region, one three-year period and horizons of at most 6 h. The general lesson is methodological: judge a preprocessing step by the accuracy of the final forecast against the raw signal, not by how stationary the residual looks.
Cite and reuse
M. Agoundedemba, C. Voyant, M. Despotovic, L. A. Garcia-Gutierrez, G. Notton, Does Deseasonalization Improve Renewable Energy Forecasting? A Comparative Benchmark, manuscript submitted, 2026.
Software: doi:10.5281/zenodo.21490744 · GitHub repository · Citation file · GPL-3.0, archived in Software Heritage.
Related: PV forecasting with ELM · NICE metrics · cyclostationary persistence operators.