Solar forecasting explained · 22 October 2026 · Published article, open code

How variable is the sun, and how forecastable? sCV and F explained

Before choosing a forecasting model, it helps to know how difficult the site is. Two numbers answer that: sCV, the variability that clouds add to the course of the sun, and F, how much of that variability can be anticipated at a given horizon.

Why the usual coefficient of variation misleads

The coefficient of variation CV = σ/μ mostly measures the day: the sun rises and sets, so a perfectly clear sky already has a large CV (about 1.2 in the figure below). Two sites with the same clouds but different day lengths get different CVs. A forecaster needs the part the sun's course does not explain: the clouds.

sCV: variability around clear sky

sCV measures the spread of the measured irradiance I around the clear-sky irradiance Iclr, not around the mean:

sCV = √2 / |d − 1| × RMSE(I, I_clr) / √(σ_clr² + μ_clr²)

sCV = 0 for a clear sky and 1 for the most variable sky the article considers, one that switches at random between clear sky and the diffuse floor. Night hours change nothing.

F: forecastability at a horizon

With ε = I − Iclr and ρmax the largest autocorrelation of ε over the lags from the horizon n to half a day:

F = 1 + sCV × (ρ_max − 1)

F lies between 1 − sCV (clouds with no memory) and 1 (clouds that last). A cloudy site can be forecastable if its clouds persist; a site with fast, random clouds is not. sCV describes the site; F describes the forecasting task at a horizon.

Four panels of three days of irradiance on the same clear-sky cycle. Clear sky: CV 1.22, sCV 0, F one hour ahead 1. Light short clouds: CV 1.23, sCV 0.12, F 0.98. Broken clouds: CV 1.32, sCV 0.70, F 0.86. Random switching between clear sky and the diffuse floor: CV 1.61, sCV 1.00, F 0.33.
Four skies on the same clear-sky cycle. CV barely moves; in these four examples, sCV ranges from 0 to the reference value of approximately 1; F one hour ahead drops from 1 to 0.33 when clouds have no memory. PDF

Worked example by hand

HourClear skyMeasuredDifference
14004000
2800500−300
3800760−40
4400200−200
  1. RMSE of clear sky: √(131 600 / 4) ≈ 181.4 W/m².
  2. Root mean square of clear sky: √(1 600 000 / 4) ≈ 632.5 W/m².
  3. sCV = √2 / 0.8 × 181.4 / 632.5 ≈ 0.51.
  4. If the residuals keep ρmax = 0.6 at the horizon of interest: F = 1 + 0.51 × (0.6 − 1) ≈ 0.80.

Fictitious teaching values.

F predicts forecast error

Two scatter plots over 100 synthetic series. Left: error of smart persistence against F; points of the 1, 4 and 10 step horizons cluster around a common decreasing trend, Spearman correlations minus 1.00, minus 0.99 and minus 0.93. Right: error against sCV; one curve per horizon, Spearman correlations 0.91, 0.87 and 0.86.
100 synthetic series built with the article's generator. The error of smart persistence falls as F rises, and the displayed horizons cluster around a common decreasing trend; against sCV each horizon needs its own curve. PDF

This is the article's conclusion on synthetic series and on 68 stations of the Spanish SIAR network: F is the better predictor of how hard forecasting will be, sCV the better description of variability. Use at least a year of data and a time step of a few minutes or more.

Code

The repository gives scv.m and forecastability.m (base MATLAB), a demonstration that writes the figures above, and the article's own scripts, unchanged.

s = scv(I, I_clr);                       % d = 0.2
F = forecastability(I, I_clr, 24, 1);    % hourly data, one hour ahead

MATLAB code and demonstrationRelated: NICE metrics

Authors and source

Article: Cyril Voyant, Alan Julien, Milan Despotovic, Gilles Notton, Luis Antonio Garcia-Gutierrez, Claudio Francesco Nicolosi, Philippe Blanc, Jamie Bright. Stochastic coefficient of variation: Assessing the variability and forecastability of solar irradiance. Renewable Energy 256 (2026) 123913. Cyril Voyant wrote this page; the method belongs to the full author team.