ECMWF SEAS5 · May initialization · CHIRPS v2.0 · 0.25°
Calibrated seasonal rainfall outlooks for Ethiopia
Bias-corrected, probability-calibrated June–September rainfall outlooks for Ethiopia, built from the ECMWF SEAS5 ensemble and evaluated against CHIRPS observations over 1993–2025, with a frozen 2026 forecast verified as observations arrive.
Research reconstruction. These are retrospective research products, not official forecasts of the Ethiopian Meteorology Institute (EMI) or ICPAC.
Workflow
Every stage is a script in scripts/ with its own checks; documents 01–37 in docs/ record each step and decision.
- 1
Download
ECMWF SEAS5 (system 51) daily accumulated precipitation, May initialization, 183 days, 25 hindcast / 51 forecast members, via the Copernicus CDS.
download_seasonal_forecasts_daily_c3s.py - 2
Inspect
Inventory every year: initialization, lead times, member counts, accumulation increments (GRIB packing tolerance 0.2 mm).
inspect_inputs.py - 3
Prepare
De-accumulate to daily totals, label days by interval start, sum JJAS (122 days) and each month; CHIRPS on the same dates.
prepare_seasonal.py · run_monthly.py - 4
Regrid
Each 1° model cell copied into its 4×4 block of 0.25° CHIRPS cells; edges and area conservation verified.
regrid_seasonal.py - 5
Calibrate
Per-cell mean–variance amount correction, smoothed tercile counts, one climatology-blend weight per target (leave-one-year-out).
final_shared_blend.py - 6
Evaluate
Nested cross-validation 1993–2016, fixed-fit evaluation 2017–2025, whole-year significance gates.
local_blend.py · decision_gates.py - 7
Deliver
Maps, bulletin and offline gallery; forecasts frozen with SHA-256 hashes before observations are used.
finalize_forecast_delivery.py · run_operational.py - 8
Verify
Official CHIRPS v2.0 p25 monthly files, overlap-checked against the archive, scored per month and season.
prepare_verification_2026.py · verify_frozen_2026.py
Data and methods
Data
| Source | Details |
|---|---|
| ECMWF SEAS5 | CDS seasonal-original-single-levels, system 51, total precipitation, 1 May initialization, 1993–2026; 25 members (1993–2016), 51 (2017–2026); 1° grid, 3–15°N, 33–48°E |
| CHIRPS v2.0 | 0.25° daily; archive 1993–2025; 2026 from official p25 monthly files, overlap-checked against the archive |
| Targets | JJAS (122 days) and the months Jun, Jul, Aug, Sep |
| Masks | Ethiopia (1,484 cells, cell-centre rule); descriptive rainfall regimes R0–R3 fixed on 1993–2025 |
Quality control
- All 34 forecast files inventoried; re-downloaded years were bit-identical, confirming SEAS5 system 51.
- Small negative daily increments (≤0.15 mm) are GRIB packing rounding (2−13 m); tolerated up to 0.2 mm, clipped, and the seasonal sum is checked to telescope.
- CHIRPS sea cells (223) are permanently missing; no partial seasons enter any fit.
Calibration (final method)
- Amount correction per cell, equal weight per year:
x̂ = max(0, μobs + r·(x − μmodel)), r = clip(σobs/σmodel, 0.5, 2) - Tercile probabilities from corrected members against CHIRPS terciles, smoothed:
(n + 0.5)/(M + 1.5) - Climatology blend:
p = (1 − λ)·pmodel + λ·pclim, one λ per target fitted on leave-one-year-out RPS (λ = JJAS 0.50, Jun 0.74, Jul 0.60, Aug 0.48, Sep 0.79)
Evaluated and not adopted: regularized Dirichlet recalibration, per-cell and regime-specific blend weights, an Ethiopia-only blend domain and removing the blend. Uncalibrated ECMWF probabilities score RPSS -0.41 for JJAS over 2017–2025.
Historical skill
Ranked probability skill score (RPSS) of the final method against climatology, Ethiopia cells, one score per year. 1993–2016 uses nested leave-one-year-out fits; 2017–2025 uses fits on 1993–2016 (exploratory, years seen during method selection). Bold: one-sided whole-year permutation p < 0.05.
| Target | RPSS 1993–2016 (nested CV) | Years better | RPSS 2017–2025 | Years better | Probability coverage |
|---|---|---|---|---|---|
| JJAS | +0.046 p=0.03 | 19/24 | +0.050 p=0.06 | 6/9 | 98% |
| Jun | +0.010 p=0.29 | 14/24 | +0.024 p=0.10 | 6/9 | 79% |
| Jul | +0.017 p=0.09 | 17/24 | +0.036 p=0.16 | 5/9 | 79% |
| Aug | +0.021 p=0.09 | 15/24 | +0.066 p=0.01 | 7/9 | 81% |
| Sep | +0.004 p=0.32 | 12/24 | +0.010 p=0.25 | 4/9 | 96% |
After adjusting for five targets, no gain over climatology is statistically significant; JJAS is significant on its own (p = 0.03). Monthly skill is small.
Where the forecast is skilful
| Region (nested 1993–2016) | JJAS | Jun | Jul | Aug | Sep |
|---|---|---|---|---|---|
| R0 arid / marginal | +0.108 p=0.03 | -0.007 p=0.56 | +0.006 p=0.44 | +0.073 p=0.01 | +0.008 p=0.37 |
| R1 western unimodal | +0.055 p=0.04 | +0.008 p=0.33 | +0.031 p=0.01 | +0.004 p=0.38 | +0.005 p=0.35 |
| R2 Belg–Kiremt | +0.101 p=0.01 | +0.028 p=0.21 | +0.036 p=0.04 | +0.050 p=0.01 | +0.007 p=0.30 |
| R3 Gu–Deyr | -0.008 p=0.64 | -0.007 p=0.62 | -0.030 p=0.81 | -0.004 p=0.57 | -0.000 p=0.51 |
| R1+R2 JJAS domain | +0.078 p=0.01 | +0.018 p=0.23 | +0.034 p=0.01 | +0.027 p=0.04 | +0.006 p=0.29 |
R3 (Gu–Deyr, south and south-east) shows no clean-period skill for any target; June and September show none in any region.
Decisions tested with significance gates
A change is adopted only if it improves nested 1993–2016 scores (Holm-adjusted p < 0.05) and does not worsen 2017–2025.
| Candidate change | Δ score 1993–2016 | Δ score 2017–2025 | Decision |
|---|---|---|---|
| Fit blend weight on Ethiopia only | +0.0003 to +0.0013 | -0.0038 to -0.0001 | Not adopted |
| Square-root amount correction (probabilities) | -0.0007 to +0.0003 | -0.0033 to -0.0006 | Not adopted |
| Remove the climatology blend | +0.0106 to +0.0316 | -0.0137 to +0.0211 | Not adopted |
| Plain climatology | +0.0017 to +0.0210 | +0.0044 to +0.0303 | Not adopted |
| Square-root amount correction (rainfall amounts, CRPS) | -0.13 to -0.10 mm | better in all targets | Passes for all targets (next cycle) |
Ensemble diagnostics
| Target | RPS, 51 members | RPS, 25-member subsets | Spread / error (hindcast → operational) |
|---|---|---|---|
| JJAS | 0.4284 | 0.4307 | 0.72 → 0.80 |
| Jun | 0.4590 | 0.4600 | 0.68 → 0.64 |
| Jul | 0.4506 | 0.4522 | 0.74 → 0.74 |
| Aug | 0.4264 | 0.4284 | 0.78 → 0.76 |
| Sep | 0.4548 | 0.4557 | 0.78 → 0.73 |
51-member forecasts score at least as well as 25-member hindcast-sized ensembles, so the transfer is safe. The corrected ensemble is under-dispersive (spread/error below 1), which the climatology blend partly compensates.
2026 forecast
May-initialized, 51 members, fitted on 1993–2025 and frozen before any 2026 observation was used. Results are shown for all of Ethiopia and for the JJAS R1+R2 rainfall domain, the same two views as the operational gallery.
JJAS R1+R2 rainfall domain. Fixed 1993-2025 descriptive domain: cleaned GitHub-refined R1/R2; JJAS climatological rainfall >=120 mm and >=20% of annual rainfall. The same domain is used for Jun, Jul, Aug, Sep and JJAS. No onset gate. A presentation and summary domain, not a separate calibration, physical land mask, monthly rainfall-regime classification, or independently validated EMI zone.
| Target | View | Below / near / above | Mean rainfall / reference | Mean anomaly | Share of country area |
|---|---|---|---|---|---|
| JJAS | All Ethiopia | 50% / 25% / 24% | 375 / 441 mm | -66.0 mm | 100% |
| JJAS R1+R2 rainfall domain | 55% / 25% / 20% | 614 / 715 mm | -100.6 mm | 56% | |
| Jun | All Ethiopia | 43% / 30% / 27% | 66 / 81 mm | -15.1 mm | 100% |
| JJAS R1+R2 rainfall domain | 43% / 30% / 27% | 109 / 131 mm | -22.4 mm | 56% | |
| Jul | All Ethiopia | 45% / 29% / 26% | 113 / 130 mm | -16.9 mm | 100% |
| JJAS R1+R2 rainfall domain | 43% / 30% / 27% | 194 / 217 mm | -24.0 mm | 56% | |
| Aug | All Ethiopia | 51% / 26% / 23% | 117 / 136 mm | -18.9 mm | 100% |
| JJAS R1+R2 rainfall domain | 48% / 27% / 25% | 198 / 225 mm | -26.8 mm | 56% | |
| Sep | All Ethiopia | 36% / 31% / 33% | 83 / 94 mm | -11.7 mm | 100% |
| JJAS R1+R2 rainfall domain | 39% / 31% / 30% | 117 / 141 mm | -24.0 mm | 56% |
Probabilities are area means of local grid-cell probabilities, not probabilities of the domain-total rainfall. Monthly and seasonal outlooks are calibrated separately: over all Ethiopia the corrected monthly means sum to 378 mm against 375 mm for JJAS (+3.3 mm).
2026 verification
Frozen forecasts scored against official CHIRPS v2.0 observations, for all of Ethiopia and the JJAS R1+R2 rainfall domain. Single-season results, not evidence of multi-year reliability. Positive skill means improvement over climatology on that support.
| Target | View | Final RPSS | Corrected CRPSS | Corrected bias | Observed below / near / above | Observed / forecast anomaly |
|---|---|---|---|---|---|---|
| Jun | All Ethiopia | +0.193 | +0.388 | +5.4 mm | 71% / 19% / 10% | -20.6 / -15.1 mm |
| JJAS R1+R2 rainfall domain | +0.217 | +0.399 | +9.8 mm | 80% / 15% / 5% | -32.1 / -22.4 mm | |
| Jul | All Ethiopia | +0.254 | +0.279 | +19.1 mm | 84% / 11% / 5% | -36.0 / -16.9 mm |
| JJAS R1+R2 rainfall domain | +0.196 | +0.253 | +33.6 mm | 84% / 11% / 5% | -57.6 / -24.0 mm | |
| Aug | All Ethiopia | +0.279 | +0.441 | +12.9 mm | 79% / 11% / 10% | -31.9 / -18.9 mm |
| JJAS R1+R2 rainfall domain | +0.356 | +0.440 | +20.6 mm | 88% / 10% / 2% | -47.4 / -26.8 mm | |
| Sep | both views | pending | — | — | — | — |
| JJAS | both views | pending | — | — | — | — |
January initialization · FMAM 2026 forecast
The same pipeline applied to another season: ECMWF SEAS5 initialized on 1 January 2026, 51 members, calibrated against CHIRPS for FMAM seasons 1993–2025 (33 seasons; 25-member hindcasts to 2016, 51 members after). The season runs from February to May 2026. Verification needs CHIRPS through May 2026.
FMAM R2 (Belg) rainfall domain. Fixed 1993-2025 descriptive domain (Belg): rainfall regime R2 (GitHub-refined classification of the CHIRPS daily climatology) with FMAM climatological CHIRPS rainfall >=80 mm; patches smaller than 3 cells removed. Scientific masking walkthrough logic; no onset gate. The same domain is used for the season and each of its months. A presentation and summary domain, not a separate calibration, physical land mask, monthly rainfall-regime classification, or independently validated EMI zone.
| Target | View | Below / near / above | Mean rainfall / reference | Mean anomaly | Share of country area | Probability coverage |
|---|---|---|---|---|---|---|
| Feb 2026 | All Ethiopia | 28% / 39% / 33% | 14 / 13 mm | +0.8 mm | 100% | 74% |
| FMAM R2 (Belg) rainfall domain | 28% / 37% / 35% | 18 / 16 mm | +2.0 mm | 28% | 95% | |
| Mar 2026 | All Ethiopia | 31% / 35% / 34% | 48 / 42 mm | +5.9 mm | 100% | 87% |
| FMAM R2 (Belg) rainfall domain | 31% / 35% / 34% | 55 / 50 mm | +5.5 mm | 28% | 100% | |
| Apr 2026 | All Ethiopia | 35% / 32% / 33% | 91 / 94 mm | -2.7 mm | 100% | 100% |
| FMAM R2 (Belg) rainfall domain | 37% / 31% / 32% | 73 / 77 mm | -3.2 mm | 28% | 100% | |
| May 2026 | All Ethiopia | 36% / 34% / 30% | 95 / 99 mm | -4.8 mm | 100% | 100% |
| FMAM R2 (Belg) rainfall domain | 37% / 33% / 30% | 66 / 70 mm | -3.9 mm | 28% | 100% | |
| FMAM 2026 | All Ethiopia | 34% / 32% / 34% | 248 / 249 mm | -1.0 mm | 100% | 100% |
| FMAM R2 (Belg) rainfall domain | 34% / 33% / 33% | 212 / 213 mm | -0.3 mm | 28% | 100% |
Outside the rainfall domain much of Ethiopia is outside its main rainy season; cells with negligible climatological rainfall have no tercile probabilities, which lowers national probability coverage.
Verification against CHIRPS
| Target | View | Final RPSS | Corrected CRPSS | Corrected bias | Observed below / near / above |
|---|---|---|---|---|---|
| Feb 2026 | both views | pending | — | — | — |
| Mar 2026 | All Ethiopia | +0.037 | +0.086 | -53.7 mm | 0% / 4% / 96% |
| FMAM R2 (Belg) rainfall domain | +0.032 | +0.079 | -38.3 mm | 0% / 8% / 92% | |
| Apr 2026 | All Ethiopia | +0.025 | +0.038 | +3.7 mm | 36% / 31% / 33% |
| FMAM R2 (Belg) rainfall domain | +0.036 | +0.080 | +5.7 mm | 42% / 27% / 30% | |
| May 2026 | All Ethiopia | +0.017 | -0.012 | +0.0 mm | 33% / 50% / 16% |
| FMAM R2 (Belg) rainfall domain | +0.044 | +0.089 | +4.4 mm | 28% / 63% / 9% | |
| FMAM 2026 | both views | pending | — | — | — |
Single-season scores against official CHIRPS v2.0 observations; positive skill beats climatology on that support. Maps are in the map explorer (product: Verification).
Historical skill for this season
| Target | RPSS 1993–2016 (nested CV) | RPSS 2017–2025 | Climatology weight λ |
|---|---|---|---|
| Feb | +0.032 p=0.03 16/24 yrs | -0.006 p=0.58 5/9 yrs | 0.70 |
| Mar | +0.001 p=0.42 16/24 yrs | +0.003 p=0.33 6/9 yrs | 0.81 |
| Apr | +0.002 p=0.43 15/24 yrs | +0.007 p=0.32 6/9 yrs | 0.71 |
| May | +0.026 p=0.05 17/24 yrs | -0.000 p=0.50 6/9 yrs | 0.57 |
| FMAM | +0.027 p=0.08 18/24 yrs | -0.004 p=0.57 4/9 yrs | 0.43 |
RPSS of the final method against climatology, Ethiopia cells; nested leave-one-year-out fits for the development years and fits on those years for the later evaluation years. Bold: one-sided whole-year permutation p < 0.05. Maps for every target and both views are in the map explorer.
September initialization · ONDJ 2026/27 forecast
The same pipeline applied to another season: ECMWF SEAS5 initialized on 1 September 2026, 51 members, calibrated against CHIRPS for ONDJ seasons 1993–2024 (32 seasons; 25-member hindcasts to 2016, 51 members after). The season crosses the year boundary (October 2026 to January 2027). Verification needs CHIRPS through January 2027.
ONDJ R3 (Deyr) rainfall domain. Fixed 1993-2025 descriptive domain (Deyr / Hagaya): rainfall regime R3 (GitHub-refined classification of the CHIRPS daily climatology) with ONDJ climatological CHIRPS rainfall >=30 mm; patches smaller than 3 cells removed. Scientific masking walkthrough logic; no onset gate. The same domain is used for the season and each of its months. A presentation and summary domain, not a separate calibration, physical land mask, monthly rainfall-regime classification, or independently validated EMI zone.
| Target | View | Below / near / above | Mean rainfall / reference | Mean anomaly | Share of country area | Probability coverage |
|---|---|---|---|---|---|---|
| Oct 2026 | All Ethiopia | 33% / 32% / 35% | 87 / 85 mm | +2.5 mm | 100% | 99% |
| ONDJ R3 (Deyr) rainfall domain | 27% / 30% / 43% | 126 / 106 mm | +20.5 mm | 39% | 100% | |
| Nov 2026 | All Ethiopia | 26% / 26% / 48% | 53 / 36 mm | +16.7 mm | 100% | 98% |
| ONDJ R3 (Deyr) rainfall domain | 21% / 22% / 57% | 83 / 51 mm | +31.4 mm | 39% | 100% | |
| Dec 2026 | All Ethiopia | 33% / 33% / 34% | 13 / 10 mm | +2.3 mm | 100% | 62% |
| ONDJ R3 (Deyr) rainfall domain | 32% / 31% / 37% | 16 / 12 mm | +4.1 mm | 39% | 54% | |
| Jan 2027 | All Ethiopia | 31% / 35% / 34% | 12 / 10 mm | +1.8 mm | 100% | 64% |
| ONDJ R3 (Deyr) rainfall domain | 29% / 37% / 34% | 9 / 7 mm | +1.5 mm | 39% | 43% | |
| ONDJ 2026/27 | All Ethiopia | 28% / 27% / 45% | 167 / 141 mm | +26.5 mm | 100% | 100% |
| ONDJ R3 (Deyr) rainfall domain | 19% / 24% / 57% | 240 / 176 mm | +64.3 mm | 39% | 100% |
Outside the rainfall domain much of Ethiopia is outside its main rainy season; cells with negligible climatological rainfall have no tercile probabilities, which lowers national probability coverage.
Historical skill for this season
| Target | RPSS 1993–2016 (nested CV) | RPSS 2017–2024 | Climatology weight λ |
|---|---|---|---|
| Oct | -0.001 p=0.52 13/24 yrs | +0.024 p=0.25 6/8 yrs | 0.44 |
| Nov | +0.046 p=0.15 15/24 yrs | +0.005 p=0.47 4/8 yrs | 0.23 |
| Dec | +0.011 p=0.26 15/24 yrs | +0.027 p=0.18 6/8 yrs | 0.64 |
| Jan | +0.002 p=0.37 15/24 yrs | +0.004 p=0.35 5/8 yrs | 0.82 |
| ONDJ | +0.020 p=0.31 14/24 yrs | +0.063 p=0.25 4/8 yrs | 0.28 |
RPSS of the final method against climatology, Ethiopia cells; nested leave-one-year-out fits for the development years and fits on those years for the later evaluation years. Bold: one-sided whole-year permutation p < 0.05. Maps for every target and both views are in the map explorer.
Map explorer
Choose a target season or month, a product and a rainfall domain. Statistics and maps are the operational gallery's presentation layers; the rainfall-domain view is for display and summaries only.
Limitations
- Nine fixed-fit evaluation years and one verification season give wide uncertainty; regional and monthly results are noisy.
- The 2017–2025 period was inspected during method development; clean evidence comes from nested 1993–2016 scores.
- The 0.25° maps repeat 1° model information; they do not add dynamical detail.
- Not an official EMI or ICPAC product.
Reproduce
git clone https://github.com/YonSci/calibrated_seasonal_rainfall.git
python -m venv .venv && .venv\Scripts\activate && pip install -r requirements.txt
python scripts\prepare_seasonal.py --config config\project.json --all-years
python scripts\final_shared_blend.py --config config\project.json --region-mask data\masks\ethiopia_common.nc
python scripts\run_operational.py --workflow all
Raw ECMWF and CHIRPS data are not stored in the repository; download instructions are in docs/37. Status and decisions: docs/36.