# Downscaling SEAS5 to single-station seasonal outlooks with SARIMAX — open-source pipeline, public monthly verification

**URL:** <https://forum.ecmwf.int/t/downscaling-seas5-to-single-station-seasonal-outlooks-with-sarimax-open-source-pipeline-public-monthly-verification/15154>\
**Category:** C3S - Datasets and Usage\
**Created:** [13 July 2026 09:14 UTC](https://forum.ecmwf.int/t/downscaling-seas5-to-single-station-seasonal-outlooks-with-sarimax-open-source-pipeline-public-monthly-verification/15154 "2026-07-13T09:14:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nikolas\_Papadakis](https://forum.ecmwf.int/letter_avatar_proxy/v4/letter/n/f1d935/32.png) [@Nikolas\_Papadakis](https://forum.ecmwf.int/u/Nikolas_Papadakis)\
**Post date:** [13 July 2026 09:14 UTC](https://forum.ecmwf.int/t/downscaling-seas5-to-single-station-seasonal-outlooks-with-sarimax-open-source-pipeline-public-monthly-verification/15154/1 "2026-07-13T09:14:23Z")

</div>

Hi all,

I’d like to share an open-source pipeline I’ve been running operationally  
in case it’s useful to others working on local downscaling of  
SEAS5, or in case anyone here has feedback on the approach.

What it does

It issues monthly-mean temperature outlooks (leads 1–6 months) for two  
station sites in Greece — a mountain station on Mt. Penteli (~450 m) and  
the coastal island of Hydra — plus a free-atmosphere 850 hPa outlook tied  
to the Athens radiosonde record (from 1950). A three-model SARIMAX  
cascade feeds the 850 hPa signal into the local surface model, using  
SEAS5 forecasts (geopotential 850/500 hPa, MSLP, Aegean SST) as  
exogenous predictors, bias-corrected with lead- and month-dependent  
correction tables derived from 108 archived SEAS5 issue dates  
(2017–2025). Confidence intervals propagate the SEAS5 exogenous  
uncertainty through the full predictor covariance matrix, so they widen  
honestly with lead time rather than relying on the native SARIMAX  
interval alone.

**Verification**

Every forecast is published before the target month and archived  
publicly (JSON ladder, leads 6→1), then verified against observations.  
Live 2026 record so far (pooled MAE vs. a trend-aware climatological  
baseline, not a flat mean):

- REA (mountain station): 0.69°C vs 0.91°C baseline (~25% better)
- Hydra (coastal station): 0.54°C vs 0.70°C baseline (~23% better)
- 850 hPa: 0.72°C vs 0.84°C baseline (~14% better)

(Small samples so far — this is a live record, not a controlled  
hindcast; a multi-year hindcast is also available.)

**A negative result, for balance**

I also tried the same approach for monthly precipitation (logistic  
regression, above/below-median target). It works well with _observed_  
predictors (65–75% leave-one-year-out accuracy), but a 17-month  
out-of-sample backtest using _SEAS5 forecast_ predictors showed no skill  
over climatology at any lead — so it was not deployed. I think that’s  
worth sharing too, since it says something about the limits of monthly  
circulation predictability at this scale.

**Code & data**

Full pipeline, correction tables and verification JSONs are here:  
[GitHub - hydreo/sarimax-seasonal-weather-forecasting: Operational local seasonal temperature forecasting with SARIMAX + SEAS5 · GitHub](https://github.com/hydreo/sarimax-seasonal-forecasting) (MIT licensed)

Live outlooks: reaweather.gr and hydraweather.gr

I’m a self-taught practitioner in this area, so I’d particularly welcome input from anyone with more formal experience in seasonal forecasting — there’s likely room to improve the statistical approach, and I’d be glad to learn from that.

I’d very much welcome any feedback — on the bias-correction approach,  
the CI propagation, or anything else — and I’m happy to answer questions  
about the methodology.

Thanks,  
Nikolas
