Methodology

How the score works.

Every number on this site is either measured, curated from published climatology, or generated by a language model from cited articles — and we tell you which. Here is the whole recipe.

The composite score

Each country gets a score from 1 to 10. It combines four independent signals so that no single one — least of all a headline — can carry it alone:

hazard = 0.40 × news + 0.35 × climate + 0.25 × prior raw = hazard × (0.5 + 0.5 × exposure) × oni_factor score = clamp(1, 10, round(1 + raw × 12)) — capped at 2 for uninhabited territories
InputRangeWhat it measures
news0–1LLM read of the last year's El Niño coverage — shrunk toward the prior when coverage is thin (see below).
climate0–1How strongly the observed 90-day rainfall/temperature anomaly matches the direction the teleconnection predicts. Rainfall saturates at −50% (drier) / +60% (wetter). Temperature counts half as much, and only warmth beyond +0.5 °C — the warming already baked into a 1991–2020 baseline — is treated as event signal, saturating at +2.5 °C.
prior0–1Strength of the canonical El Niño response: drier/wetter 0.85, mixed 0.7, hotter 0.5, weak 0.15.
exposure0–10.55 × agricultural workforce share + 0.45 × log₁₀(population)/9. Uninhabited territories → 0.02.
oni_factor0.5–10.5 + |ONI|/4: impacts scale with event strength. Neutral → 0.5, ONI 2.0 → 1.0.

Categories: severe ≥ 8, high 6–7, moderate 4–5, minimal ≤ 3. Currently: 15 severe, 76 high, 69 moderate, 90 minimal across 250 countries and territories.

Why not just ask the model? We tried. It rated 47 countries — including uninhabited Heard Island — a 9/10 because the headlines were dramatic. The composite exists so that the score means something.

Measured anomalies

Rainfall and temperature figures are observations, not forecasts. For each country we pull daily reanalysis (precipitation, 2 m mean temperature) at the country's geographic centroid (a single grid cell — a national average would smooth out regional extremes, so treat the figure as indicative) from 1991 to about three days ago. The primary source is NASA POWER (MERRA-2 / GEOS-IT); if it is unavailable we fall back to ERA5 via Open-Meteo. A country's series always comes from a single provider so observations and normals are comparable; the provider is named under each country's chart.

  • Window: the trailing 90 days.
  • Normal: the mean of the same 90 calendar days in each year 1991–2020 (the WMO standard reference period).
  • Rainfall anomaly: (observed − normal) / normal, as a percentage. Suppressed when the normal is under 20 mm — a "+400%" anomaly in a desert dry season is noise (shown as Dry season).
  • Plausibility guard: near-real-time reanalysis occasionally goes wrong for a grid cell. If the 90-day rainfall total exceeds 2.5× the wettest same-window total in 1991–2020, or the temperature anomaly is more than four standard deviations from the 30-year record, we withhold the number and show Unverified rather than publish a likely artifact as fact.
  • Temperature anomaly: observed mean − normal mean, in °C.

The climate input converts these to 0–1 with direction: for a "drier" country, −50% rainfall scores 1.0 and +50% scores 0 (it's news, but not the El Niño signal). Warm anomalies count for everyone; cold ones don't. A single centroid point is a blunt instrument for large countries — see limitations. 250 countries currently have a climate row.

Canonical signal (the physics prior)

Decades of composite studies establish where El Niño reliably shifts rainfall: drier in Indonesia, Australia, Southern Africa and the Indian monsoon; wetter in East Africa's short rains, the Peruvian coast, the southern US and the Pampas. We encode this as one of five labels per country — wetter, drier, hotter, mixed, weak — with a one-line note.

Sources: NOAA CPC typical impact maps, IRI ENSO climate impacts, and the WMO El Niño/La Niña Updates. It is shown on the map as the "Typical El Niño signal" layer and on every country page. It is a prior: what usually happens, not what is happening. The "Signal check" panel compares it with what's actually measured.

News & the language model

Daily, for each country, we query Google News for "Country" AND ("El Niño" OR "El Nino") in the past year and take up to five articles. Those articles — plus the measured anomalies, the canonical signal and the ONI — are given to DeepSeek with strict instructions:

  • Score the reported impact 1–10, calibrated: 9–10 only for declared emergencies actually reported; forecasts without impacts yet 4–6.
  • Use the measured anomalies as ground truth; reconcile, don't contradict.
  • Cite article URLs for every figure; mark historical claims verified only if they appear in a supplied article.
  • Forecast language for projections; past tense only for confirmed outcomes.

Coverage weighting. The model's score is trusted at 75% with three or more articles ("good coverage"), 45% with one or two ("thin"), and not at all with zero — in which case the score rests on climate, prior and exposure alone and the page says so. Currently: 216 good, 6 thin, 28 none.

Narrative text (the summary, sector notes, teaser) is model-generated and labelled "AI-summarised". Historical entries without a citation are shown faded as "unsourced background".

Exposure

A hazard hits harder where more people depend on rain-fed agriculture. Exposure blends the share of the workforce in agriculture (World Bank / ILO modelled estimates, rounded, with regional defaults) and log population (World Bank SP.POP.TOTL). It scales the hazard between 0.5× and 1.0× — it can shrink a score but never erase a genuine hazard.

ENSO state

The header and the timeline use the NOAA CPC Oceanic Niño Index: 3-month running mean SST anomaly in Niño 3.4, full record since 1950, refreshed daily. Phase labels follow NOAA: "conditions" until five consecutive overlapping seasons pass ±0.5°C, then "El Niño"/"La Niña"; weak 0.5–0.9, moderate 1.0–1.4, strong 1.5–1.9, very strong ≥ 2.0. Current: El Niño conditions, very strong, ONI +2.16 (JAS 2026).

Seasonal calendar

The "When it matters" strip shows rainy/dry seasons, planting, harvest, lean periods and the peak El Niño impact window. These are curated per climate zone from FEWS NET and FAO GIEWS crop calendars, then assigned to countries. Countries with a weak canonical signal don't get a peak window — there's nothing robust to show.

Limitations — read this

  • One point per country. Anomalies are sampled at the centroid. For Brazil, the US, China or India, one point cannot represent regionally opposite responses. Regional breakdowns are on the roadmap.
  • Google News is English-first. Coverage for francophone, lusophone and Spanish-speaking countries is under-represented, which is why the news input is down-weighted, never trusted alone.
  • LLM text can be wrong. Cited sources are one click away; check them. We never let the model set a rainfall or temperature number when a measurement exists.
  • Agricultural dependence is a proxy — heavily rounded, with regional defaults for small territories.
  • This is not a forecast product. For seasonal forecasts use your national meteorological service, WMO, IRI or FEWS NET.

RSS feeds

Every country has a feed at /country/<slug>/feed.xml. It emits an item whenever the score or severity changes, plus each new article we ingest — so it's quiet until something moves. Example: /country/india/feed.xml.

Embedding a country card

Drop a live 360×200 card into any page. It links back here and refreshes with our data:

<iframe src="https://elniohno.com/embed/india" width="360" height="200" style="border:0;max-width:100%" loading="lazy" title="El Niño impact"></iframe>