Crop insurance drought payouts track measured drought only weakly — strong in the rainfed Corn Belt/Plains, nearly absent in the irrigated arid West
USDA RMA Cause-of-Loss indemnity vs. NOAA/USDA Drought Monitor DSCI, state-year grain, 2010-2025 (n=850)
Summary
Federal crop-insurance drought payouts track measured drought only loosely at the state level: the raw correlation between a state-year's average NOAA/USDA Drought Monitor severity (DSCI, 0-500) and its drought-indemnity loss rate (drought payouts as a share of insured liability) is r = 0.26 (n=850 state-years, 2010-2025). Controlling for each state's baseline exposure and nationwide year effects (two-way fixed effects), the drought-severity coefficient becomes highly statistically significant (p<0.001) but stays modest in size — going from no drought to a state entirely blanketed in exceptional drought all year raises the drought loss rate by roughly 8-9 percentage points of insured liability, on average. The two series diverge most sharply in opposite directions: rainfed Corn Belt and Southern Plains states (Missouri, Oklahoma, Texas, Illinois, Kentucky in the 2011-2012 drought) paid out FAR more than their measured drought severity alone would predict, while chronically arid Western states (California, Nevada, Utah, New Mexico) show near-zero drought payouts despite carrying some of the highest DSCI readings in the country. Drought is nonetheless the single largest named peril in the crop-insurance program, accounting for $29.8B of $174.8B (17.1%) of all indemnities paid 2009-2025.
Data and method
Two USDA/NOAA sources were joined at state-year grain: ag.rma_cause_of_loss (USDA RMA Summary of Business, cause-of-loss detail, indemnity_amount for cause_of_loss_desc='Drought') and weather.drought_monitor_weekly (NOAA/USDA Drought Monitor, county-week DSCI averaged up to state-year). Payouts were normalized as drought indemnity divided by total insured liability for that state-year (from ag.rma_crop_insurance) rather than compared in raw dollars, since raw dollar comparisons are dominated by which states simply insure the most acreage. The overlapping coverage window across all three tables is 2010-2025 (drought_monitor_weekly's declared floor), giving 850 state-year observations across 50 states and 17 years.
Exclusion disclosure: the joining query's WHERE clause included the predicate d.state_abbr IS NOT NULL as a defensive guard against a join fan-out on a null key. Checked directly against the source: SELECT COUNT(*) FROM weather.drought_monitor_weekly WHERE state_abbr IS NULL AND year BETWEEN 2009 AND 2025 returns 0 rows. So d.state_abbr IS NOT NULL excluded zero rows, dropped nothing, and omitted no state or year from the panel — every county-week in the table over the study window already carries a non-null state_abbr, so the 850-row state-year panel is the complete overlap across all three tables, and the headline statistics (r=0.26, the fixed-effects coefficient, and the divergence list) are identical whether or not that guard is present.
A plain bivariate correlation is confounded by structural differences between states — crop mix, irrigation share, and total insured acreage all differ enormously and are correlated with both drought exposure and insurance participation. A two-way fixed-effects panel regression (state and year absorbed) isolates the within-state, year-to-year relationship: coefficient on avg_dsci = 0.0169 (SE 0.0018, p<0.001, n=850, 50 states x 17 years). This says that within a given state, a year with markedly worse measured drought does produce measurably higher drought payouts — the relationship is real and not noise — but it explains a small share of the variation (bivariate R² = 0.065), meaning most of the year-to-year swing in drought payouts is driven by something other than measured areal drought severity: which specific counties and growth stages were hit, crop type, and coverage take-up.
Where the two diverge most
Under-predicted (drought paid out far more than its DSCI alone implied): Missouri 2012 (DSCI 169, drought loss rate 29.8% of liability, $1.04B in drought indemnity), Oklahoma 2011 (DSCI 295, loss rate 29.7%, $297M), Texas 2011 (DSCI 378, loss rate 28.2%, $1.55B), Kentucky 2012 (DSCI 76, loss rate 23.5%, $370M), and Illinois 2012 (DSCI 140, loss rate 24.1%, $2.93B). These are the classic 2011-2012 central-U.S. drought years hitting extensively insured, largely rainfed corn, soybean, and wheat acreage — a moderate-looking DSCI reading translated into some of the largest drought payouts in program history because the affected cropland is both highly drought-sensitive (rainfed, not irrigated) and heavily insured.
Over-predicted (severe measured drought, almost no drought payout): California 2014-2015 (DSCI ~430, loss rate 0.02-0.12%), Nevada 2014-2021 (DSCI 368-385, loss rate ~0%), Utah 2021 (DSCI 421, loss rate 0%), and New Mexico 2021 (DSCI 343, loss rate 0%). These states carry some of the highest sustained DSCI values in the country — their climate is chronically arid, which USDM measures as widespread abnormal dryness/drought essentially every year — but their insured cropland is disproportionately irrigated (or is low-acreage relative to the state's land area), so a drought classification on dry rangeland or fallow desert does not translate into an insured-crop loss the way it does for a rainfed Iowa cornfield.
The practical read: DSCI is a land-area index (what fraction of a state's area is in each drought category), not a crop-exposure index. It matches insurance payouts well where insured farmland is rainfed and drought-vulnerable, and matches poorly where farmland is irrigated or drought severity is chronic/structural rather than an anomalous shock in a given year.
Every query behind this report
10 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.
query — 1 rows — 9693 ms
SELECT DISTINCT cause_of_loss_desc FROM ag.rma_cause_of_loss WHERE cause_of_loss_desc ILIKE '%drought%'query — 867 rows — 54918 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS total_indemnity
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
)
SELECT d.year, d.state_abbr, d.avg_dsci, COALESCE(di.drought_indemnity,0) AS drought_indemnity, COALESCE(ti.total_indemnity,0) AS total_indemnity
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_indem ti ON d.year=ti.year AND d.state_abbr=ti.state_abbr
WHERE d.state_abbr IS NOT NULL
query — 1 rows — 69702 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS total_indemnity
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
combo AS (
SELECT d.year, d.state_abbr, d.avg_dsci, COALESCE(di.drought_indemnity,0) AS drought_indemnity, COALESCE(ti.total_indemnity,0) AS total_indemnity
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_indem ti ON d.year=ti.year AND d.state_abbr=ti.state_abbr
WHERE d.state_abbr IS NOT NULL
)
SELECT COUNT(*) AS n, corr(avg_dsci, drought_indemnity) AS corr_dsci_drought_indem, corr(avg_dsci, total_indemnity) AS corr_dsci_total_indem
FROM combo
query — 1 rows — 16690 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity, SUM(liability_amount) AS drought_liability
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_liab AS (
SELECT year, state_abbr, SUM(liability_amount) AS total_liability, SUM(indemnity_amount) AS total_indemnity
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
combo AS (
SELECT d.year, d.state_abbr, d.avg_dsci,
COALESCE(di.drought_indemnity,0) AS drought_indemnity,
tl.total_liability,
COALESCE(di.drought_indemnity,0) / NULLIF(tl.total_liability,0) AS drought_loss_rate
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_liab tl ON d.year=tl.year AND d.state_abbr=tl.state_abbr
WHERE d.state_abbr IS NOT NULL AND tl.total_liability > 0
)
SELECT COUNT(*) AS n, corr(avg_dsci, drought_loss_rate) AS corr_dsci_loss_rate
FROM combo
panel_fixed_effects — 18211 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_liab AS (
SELECT year, state_abbr, SUM(liability_amount) AS total_liability
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
)
SELECT d.year, d.state_abbr, d.avg_dsci,
COALESCE(di.drought_indemnity,0) / NULLIF(tl.total_liability,0) * 100 AS drought_loss_rate_pct
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_liab tl ON d.year=tl.year AND d.state_abbr=tl.state_abbr
WHERE d.state_abbr IS NOT NULL AND tl.total_liability > 0
ols_regression — 19537 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_liab AS (
SELECT year, state_abbr, SUM(liability_amount) AS total_liability
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
)
SELECT d.year, d.state_abbr, d.avg_dsci,
COALESCE(di.drought_indemnity,0) / NULLIF(tl.total_liability,0) * 100 AS drought_loss_rate_pct
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_liab tl ON d.year=tl.year AND d.state_abbr=tl.state_abbr
WHERE d.state_abbr IS NOT NULL AND tl.total_liability > 0
query — 8 rows — 21639 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_liab AS (
SELECT year, state_abbr, SUM(liability_amount) AS total_liability
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
combo AS (
SELECT d.year, d.state_abbr, d.avg_dsci,
COALESCE(di.drought_indemnity,0) AS drought_indemnity,
tl.total_liability,
COALESCE(di.drought_indemnity,0) / NULLIF(tl.total_liability,0) * 100 AS drought_loss_rate_pct
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_liab tl ON d.year=tl.year AND d.state_abbr=tl.state_abbr
WHERE d.state_abbr IS NOT NULL AND tl.total_liability > 0
),
resid AS (
SELECT *, drought_loss_rate_pct - (0.5642840454632312 + 0.01170979979536616*avg_dsci) AS residual
FROM combo
)
SELECT year, state_abbr, ROUND(avg_dsci,1) AS avg_dsci, ROUND(drought_loss_rate_pct,2) AS loss_rate_pct, ROUND(drought_indemnity/1e6,1) AS indemnity_millions, ROUND(residual,2) AS residual
FROM resid
ORDER BY residual DESC
LIMIT 8
query — 8 rows — 22322 ms
WITH drought_indem AS (
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
total_liab AS (
SELECT year, state_abbr, SUM(liability_amount) AS total_liability
FROM ag.rma_crop_insurance
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
dsci AS (
SELECT year, state_abbr, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2009 AND 2025
GROUP BY year, state_abbr
),
combo AS (
SELECT d.year, d.state_abbr, d.avg_dsci,
COALESCE(di.drought_indemnity,0) AS drought_indemnity,
tl.total_liability,
COALESCE(di.drought_indemnity,0) / NULLIF(tl.total_liability,0) * 100 AS drought_loss_rate_pct
FROM dsci d
LEFT JOIN drought_indem di ON d.year=di.year AND d.state_abbr=di.state_abbr
LEFT JOIN total_liab tl ON d.year=tl.year AND d.state_abbr=tl.state_abbr
WHERE d.state_abbr IS NOT NULL AND tl.total_liability > 0
),
resid AS (
SELECT *, drought_loss_rate_pct - (0.5642840454632312 + 0.01170979979536616*avg_dsci) AS residual
FROM combo
)
SELECT year, state_abbr, ROUND(avg_dsci,1) AS avg_dsci, ROUND(drought_loss_rate_pct,2) AS loss_rate_pct, ROUND(drought_indemnity/1e6,1) AS indemnity_millions, ROUND(residual,2) AS residual
FROM resid
ORDER BY residual ASC
LIMIT 8
query — 1 rows — 45664 ms
SELECT
(SELECT SUM(indemnity_amount) FROM ag.rma_cause_of_loss WHERE cause_of_loss_desc='Drought' AND year BETWEEN 2009 AND 2025) AS total_drought_indemnity,
(SELECT SUM(indemnity_amount) FROM ag.rma_crop_insurance WHERE year BETWEEN 2009 AND 2025) AS total_all_indemnity
query — 1 rows — 1597 ms
SELECT COUNT(*) AS null_state_rows, COUNT(DISTINCT county_fips) AS distinct_counties FROM weather.drought_monitor_weekly WHERE state_abbr IS NULL AND year BETWEEN 2009 AND 2025Sources
- USDA RMA Summary of Business — Cause of Loss (drought indemnity by state/year) — ag.rma_cause_of_loss, 2009-2025 coverage
Show SQL
SELECT year, state_abbr, SUM(indemnity_amount) AS drought_indemnity FROM ag.rma_cause_of_loss WHERE cause_of_loss_desc = 'Drought' AND year BETWEEN 2009 AND 2025 GROUP BY year, state_abbr - USDA RMA Summary of Business — total insured liability by state/year
Show SQL
SELECT year, state_abbr, SUM(liability_amount) AS total_liability FROM ag.rma_crop_insurance WHERE year BETWEEN 2009 AND 2025 GROUP BY year, state_abbr - NOAA/USDA Drought Monitor weekly DSCI, averaged to state-year
Show SQL
SELECT year, state_abbr, AVG(dsci) AS avg_dsci FROM weather.drought_monitor_weekly WHERE year BETWEEN 2009 AND 2025 GROUP BY year, state_abbr - Two-way fixed-effects panel: drought loss rate ~ avg DSCI, state+year effects
Show tool call
panel_fixed_effects(outcome="drought_loss_rate_pct", predictors=["avg_dsci"], entity_col="state_abbr", time_col="year") - National totals — drought vs. all-cause indemnity, 2009-2025
Show SQL
SELECT SUM(indemnity_amount) FROM ag.rma_cause_of_loss WHERE cause_of_loss_desc='Drought' AND year BETWEEN 2009 AND 2025; SELECT SUM(indemnity_amount) FROM ag.rma_crop_insurance WHERE year BETWEEN 2009 AND 2025