Methods and sources
How each number is made, where the data comes from, and how well the outlook has performed. Snapshot 851409c92c71.
Public data sources (no API keys)
| Source | Publisher | Used for | Terms |
|---|---|---|---|
| NASA POWER daily point data (precipitation, daily max temperature) | NASA Langley Research Center | Rainfall and heat anomaly indices, 1991-2020 baseline, forecast ensemble | U.S. Government work; free and open |
| World Development Indicators API | The World Bank | Structural water, food and energy vulnerability (partner nations) | CC BY 4.0 |
| Global Disaster Alert and Coordination System event feed | European Commission JRC and UN OCHA | Real-time drought, flood, cyclone, earthquake, volcano and wildfire alerts | Free use with attribution |
| USGS Water Services daily values (NWIS) | U.S. Geological Survey | Streamflow percentile for US areas | U.S. Government work; public domain |
| National Weather Service alerts API | NOAA National Weather Service | Active watches, warnings and advisories for US areas | U.S. Government work; public domain |
| U.S. Drought Monitor county statistics | National Drought Mitigation Center (UNL), USDA, NOAA | Weekly county drought coverage (D0-D4) | Public; credit the U.S. Drought Monitor |
| National Risk Index, counties | FEMA | County drought, heat wave, social vulnerability and resilience scores | U.S. Government work; public domain |
Climate anomaly indices
Daily precipitation and maximum temperature come from NASA POWER for each area centre (1991 to present). The rainfall index for a window (30 or 90 days) compares the current total with totals for the same window ending within 7 days of the same date in each year of 1991-2020 (450 reference windows). The empirical percentile, with mid-ranks for ties, is converted to a normal score, as in the Standardized Precipitation Index but without fitting a gamma distribution. The heat index is the 14-day mean daily maximum temperature as a z-score against the same reference windows.
Explainable scoring
Each indicator becomes a 0 to 100 stress value with a fixed linear rule. Water, food and energy pillars are weighted means of available indicators, so a missing source lowers data completeness rather than the score. The acute-hazard pillar takes the strongest signal plus a quarter of the next. The composite is 0.5 x the worst pillar + 0.5 x the pillar mean, so one crisis is not averaged away. The five largest contributions are shown as reasons, each with its source.
| Pillar | Indicator | Stress rule | Weight / source |
|---|---|---|---|
| Water | 90-day rainfall index (SPI-style) | 0 at -0.5 SD, 100 at -2.5 SD; weight x0.3 in a dry season (normal under 10 mm) | 0.35 / NASA POWER |
| Water | National water stress (withdrawal % of resources) | 0 at 25%, 100 at 100% | 0.20 / World Bank |
| Water | Population without basic drinking water | 0 at 0%, 100 at 50% | 0.15 / World Bank |
| Water (US) | 7-day streamflow percentile for the date | 0 at 30th, 100 at 5th percentile | 0.25 / USGS |
| Water (US) | Drought Monitor coverage (cumulative D0-D4) | 0.1 D0 + 0.3 D1 + 0.25 D2 + 0.2 D3 + 0.15 D4 (% area) | 0.25 / USDM |
| Water (US) | FEMA NRI drought risk score | score as given (0-100) | 0.15 / FEMA NRI |
| Food | Growing-period rainfall (0.4 SPI-30 + 0.6 SPI-90) | as the water rainfall rule | 0.30 / NASA POWER |
| Food | 14-day heat index (Tmax z) | 0 at +0.5 SD, 100 at +3 SD | 0.20 / NASA POWER |
| Food | Prevalence of undernourishment | 0 at 2.5%, 100 at 35% | 0.25 / World Bank |
| Food | Cereal yield | 0 at 6,000 kg/ha, 100 at 1,000 kg/ha | 0.15 / World Bank |
| Food | Food share of merchandise imports | 0 at 5%, 100 at 30% | 0.10 / World Bank |
| Food (US) | Drought Monitor coverage; FEMA NRI social vulnerability | as above; score as given | 0.25; 0.15 |
| Energy | 14-day heat index (cooling demand) | 0 at +0.5 SD, 100 at +3 SD | 0.30 / NASA POWER |
| Energy | Hot days in last 30 (above local 90th percentile) | 0 at 3 days, 100 at 15 days | 0.15 / NASA POWER |
| Energy | Population without electricity | 0 at 0%, 100 at 60% | 0.30 / World Bank |
| Energy | Net energy imports (% of use) | 0 at 0%, 100 at 90% | 0.15 / World Bank |
| Energy (US) | FEMA NRI heat wave risk; low community resilience; low streamflow | score; 100 - resilience; 0 at 25th, 100 at 5th pct | 0.20; 0.15; 0.10 |
| Acute hazard | GDACS alert near the area | Red 100, Orange 65, Green 25, times distance decay (1 inside the area, 0 at the type range: cyclone 500 km, drought 800 km, flood and earthquake 300 km); national drought declaration at least 0.7 | max + 0.25 x second |
| Acute hazard (US) | Active NWS alert at the area centre | Extreme 100, Severe 70, Moderate 40, Minor 15 | max + 0.25 x second |
| Acute hazard | 30-day rainfall surplus (SPI-30 above +1.5) or streamflow above 90th pct | 0.7 x ramp(+1.5 to +3 SD); 0.85 x ramp(90th to 99.5th) | max + 0.25 x second |
30-day outlook and its uncertainty
The rainfall window ending h days ahead is the observed part of today's window plus h unknown days. Those days are drawn from the same calendar days in each baseline year, shifted by up to 3 days (210 members). Heat follows an AR(1) model of daily temperature anomalies fitted to the baseline, simulated with a fixed seed. The composite outlook re-scores every member, holding hazards and structural indicators at current values. Bands show the 10th to 90th percentile (80% interval).
Calibration: each area is hindcast every 15 days from 2021 (after the baseline, so no look-ahead). The raw ensemble is too narrow, so a spread-inflation factor is fitted on the first 60% of hindcasts and tested on the last 40%. Across 13 areas, the 30-day rainfall-index error is 0.45 SD vs 0.7 SD for a no-change forecast and 1.02 SD for climatology. Held-out 80% interval coverage rises from 67% to 77%.
| Area | Hindcasts | MAE forecast | MAE no-change | Skill | Inflation | Held-out coverage raw / calibrated |
|---|---|---|---|---|---|---|
| Bay Region (Baidoa) | 138 | 0.46 | 0.88 | 48% | 1.80 | 73% / 86% |
| Turkana (Lodwar) | 138 | 0.52 | 0.82 | 36% | 1.50 | 82% / 96% |
| Tillaberi (Niamey area) | 138 | 0.49 | 0.74 | 34% | 2.10 | 45% / 70% |
| Choluteca (Dry Corridor) | 138 | 0.48 | 0.65 | 27% | 4.00 | 66% / 86% |
| Port-au-Prince | 138 | 0.42 | 0.68 | 39% | 1.30 | 57% / 70% |
| Basra | 138 | 0.38 | 0.77 | 50% | 1.15 | 48% / 55% |
| Amman | 138 | 0.36 | 0.65 | 44% | 1.10 | 68% / 71% |
| Sindh (Hyderabad) | 138 | 0.58 | 0.82 | 29% | 4.00 | 48% / 71% |
| Cotabato (Mindanao) | 138 | 0.34 | 0.44 | 21% | 1.00 | 80% / 80% |
| Maricopa County, AZ | 138 | 0.42 | 0.62 | 32% | 1.05 | 79% / 84% |
| El Paso County, TX | 138 | 0.43 | 0.62 | 31% | 1.05 | 75% / 79% |
| Cumberland County, NC | 138 | 0.54 | 0.78 | 31% | 1.05 | 71% / 75% |
| Norfolk, VA (Hampton Roads) | 138 | 0.45 | 0.63 | 29% | 1.00 | 80% / 80% |
Interfaces
- /api/ogc: OGC API - Features (Part 1 core, GeoJSON). Collections aois and hazards; supports bbox, limit and offset.
- /api/export: GeoJSON or CSV (format=csv), layer=aois|hazards, id=<area>.
- /api/live: re-scores all areas with live GDACS and NWS alerts (8 s and 6 s timeouts, retries, snapshot fallback per feed).
- /api/brief: analyst brief (JSON or Markdown) with references.
- /api/health: snapshot ID, data currency and audit chain head.
Limitations
- Climate indices use one reanalysis grid cell (about 50 km) at the area centre; they are not station observations.
- Structural indicators are national averages, often several years old; they do not resolve local vulnerability.
- Weights are expert-set for this demonstration, not fitted to outcomes. Validating them against observed crises (for example food-security phase data and displacement) is proposed research.
- Calibration lifts coverage but some dry-season areas stay below target, because ties at zero rainfall cannot be widened. The outlook does not use dynamical weather or seasonal forecasts yet.
- Area selection is illustrative and drawn from public reporting. No classified, proprietary or personal data is used.