Solar forecasting explained · 22 October 2026 · Manuscript in preparation, open code
How much space is enough for satellite irradiance forecasting?
A satellite gives the irradiance of a whole region every hour. Should a forecaster read the whole map, a small neighborhood, a compressed version of the map, or only the cell it forecasts? This benchmark holds the forecaster fixed and changes only what it reads.
The question
Satellite irradiance arrives as maps. Deep networks such as U-Nets and LSTMs read whole fields, and compression methods shrink the field before a model reads it. Both add inputs and parameters. The benchmark asks how much of that spatial information actually lowers the error of a forecast for each of the next 24 hours, and counts the parameters each route stores.
Data and protocol
- Data: HelioClim-3 global horizontal irradiance (Heliosat-2 method, Meteosat images), distributed by the SoDa service, on 1148 points over Corsica, hourly, 2005–2006.
- Field: each hour is interpolated on a 32 × 32 grid; the 722 cells inside the convex hull of the points are scored.
- Split: 2005 for training, 2006 for testing.
- Inputs and outputs: every model reads the 24 past hourly values of what it forecasts, with no calendar or exogenous input, and forecasts the next 24 hours at once.
- Scoring: only where the cell's own solar elevation exceeds 5°; errors pooled over all scored cells; nRMSE divided by the mean scored test observation, 407.9 W/m².
- Other scores: the NICE family against persistence and the temporal gamma index with its pass rate (GPR).
Results (from the public repository)
nRMSE pooled over 1 to 24 hours ahead and at two lead times; parameters stored, in thousands (k) or millions (M); GPR = gamma pass rate, mean of six lead times.
| Model | nRMSE | 1 h | 24 h | Parameters | GPR |
|---|---|---|---|---|---|
| ELM per cell | 0.308 | 0.156 | 0.325 | 100.4k | 58.6 % |
| LSTM, whole field | 0.326 | 0.182 | 0.343 | 5.5M | 54.2 % |
| U-Net, whole field (8 channels) | 0.343 | 0.205 | 0.346 | 31.2k | 42.7 % |
| Autoencoder + ELM, field (p = 392), best compression | 0.348 | 0.181 | — | 39.4M | — |
| Ridge per cell | 0.354 | 0.175 | 0.353 | 600 | 57.1 % |
| ELM, whole field | 0.355 | 0.174 | 0.376 | 100.7M | 48.6 % |
| BLEND | 0.376 | 0.226 | 0.396 | 576 | 50.6 % |
| Persistence, 24 h (same hour yesterday) | 0.396 | 0.396 | 0.396 | 0 | 61.2 % |
| Persistence (last hour) | 0.998 | 0.320 | 0.396 | 0 | 19.8 % |

The per-cell ELM stores about a thousandth of the parameters of the whole-field ELM (100.4k against 100.7M) and has the lowest pooled error. None of the seven compression methods (Radon transform, DCT, wavelet, PCA, random projection, subsampling, autoencoder) reaches it, and neither do the U-Net and the LSTM reading the whole field. Enlarging the input from one cell to a 3 × 3 patch does not help either (0.3087 against 0.3077 for a single cell).
Worked example: what 0.308 means in W/m²
The nRMSE is divided by the mean scored observation of the test year, 407.9 W/m². An nRMSE of 0.308 is therefore an RMSE of about 0.308 × 407.9 ≈ 126 W/m²; the whole-field ELM, at 0.355, is about 145 W/m². The per-cell model is about 19 W/m² better, with a thousand times fewer stored parameters.
How to read it
On this region and this record, the hourly history of the cell itself carries most of the information an hour-by-hour forecast of the next day can use; the rest of the map adds parameters faster than it removes error. This is one region, one satellite product and one two-year split: a benchmark result, not a general law. Intra-hour nowcasting driven by cloud motion can behave differently.
Reproduce it
The repository contains the paper's own MATLAB and Python files and the two-year HelioClim-3 extract. run_all.ps1 rebuilds the result tables from the archives in about 12 seconds; -Mode light fits every model once on a laptop and reproduces the paper's values to within 0.004; the full protocol (median of 50 random hidden layers) matched the paper in every column on the steps tested.
git clone https://github.com/cyrilvoyant/cell-vs-field-irradiance.git
powershell -ExecutionPolicy Bypass -File .\run_all.ps1
powershell -ExecutionPolicy Bypass -File .\run_all.ps1 -Mode lightThe code is under the MIT license. HelioClim-3 data are distributed by the SoDa service under its own terms of use; the extract is included so that the benchmark runs as published.
MATLAB and Python codeRelated: how much model is enough?
Authors and foundations
Manuscript authors: Cyril Voyant (Mines Paris – PSL, O.I.E.), Andreas Kazantzidis (University of Patras), Jan Kleissl (UC San Diego). How Much Space Is Enough for Short-Term Satellite Irradiance Forecasting?, manuscript in preparation. Cyril Voyant wrote this page.
HelioClim-3 data: SoDa service (Heliosat-2 method). ELM: Guang-Bin Huang, Qin-Yu Zhu and Chee-Kheong Siew, Extreme learning machine: Theory and applications (2006). U-Net: Ronneberger, Fischer and Brox (2015). LSTM: Hochreiter and Schmidhuber (1997).