← All studies · askamerica.ai

Crop insurance drought payouts track measured drought severity only loosely (r≈0.32-0.38); arid Western states and the mid-Atlantic/Ohio Valley are the biggest outliers

USDA RMA Cause-of-Loss indemnities vs. NOAA/USDM Drought Monitor, county-year grain, 2010-2017 & 2025 (2018-2024 missing from RMA cause-of-loss data)

Crop insurance vs. measured drought County-year grain, RMA cause-of-loss indemnities vs. USDM DSCI, overlap years 2010-2017 and 2025 County-year correlation (DSCI vs. drought loss ratio) r = 0.38 21,772 county-years with >$100k insured liability Quintile 5 vs. quintile 1 drought-payout rate 19.0% vs. 2.5% Monotonic dose-response, trend p=0.008 State drought severity vs. drought-caused loss ratio 0.00 0.05 0.10 0.15 0.20 0.25 0.30 Mean annual DSCI (0-500) Drought indemnity / liability 0 50 100 150 200 250 Each point is one state, pooled across 2010-2017 and 2025 Divergence: drought-severity rank minus drought-payout rank -1.0 -0.5 0.0 0.5 1.0 State Percentile gap NV AZ CA UT ID AR LA OR/WY VA KY MD WV DE/MT WI PA Positive = drought ranks worse than payouts (arid West); negative = payouts rank worse than drought (mid-Atlantic/Ohio Valley) RMA cause-of-loss has no rows for 2018-2024 (a 7-year gap); overlap years are 2010-2017 and 2025 only. DSCI averaged over calendar year per county; drought loss ratio = drought-attributed indemnity / total insured liability. Small-n caution: state-level correlation rests on 48 states. AskAmerica · askamerica.ai
SVG

Summary

Federal crop insurance payouts track measured drought only loosely. At the county-year grain (2010-2017 and 2025, the only years both datasets cover), the correlation between mean annual Drought Monitor severity (DSCI, 0-500) and the drought-attributed indemnity-to-liability ratio is r = 0.32 (r = 0.38 using the loss-ratio form), and a quintile dose-response test confirms a real but modest monotonic relationship: counties in the worst DSCI quintile paid drought claims at 19.0% of liability versus 2.5% in the mildest quintile (trend p=0.008). The two measures diverge most in opposite directions for two distinct reasons. In the arid West (Nevada, Arizona, California, Utah, Idaho) drought severity ranks in the 85th-100th percentile nationally but drought-caused loss ratios rank near the bottom - irrigation, water rights, and a crop mix (nuts, vegetables, hay on senior water rights) insulate insured yields from what the Drought Monitor calls severe drought. In the Mid-Atlantic and Ohio Valley (Virginia, Kentucky, Maryland, West Virginia, Delaware, Wisconsin, Pennsylvania) the reverse holds: drought severity ranks low-to-middling but drought-caused loss ratios rank in the 70th-95th percentile - short, poorly-DSCI-captured dry spells during pollination/grain-fill on rainfed corn and soybean ground translate into outsized claims relative to the annual-average severity number.

Data-quality caveat that bounds this whole analysis: USDA RMA's cause-of-loss file (the only crop-insurance table that isolates drought from other perils) has a 7-year interior gap - 2018 through 2024 hold zero rows in this corpus. That window includes the severe 2020-2022 Western/Southern Plains drought, one of the worst droughts in the observational record. Every number below is built only from 2010-2017 and 2025; it cannot speak to the 2018-2024 period at all.

Method

Tables: ag.rma_cause_of_loss (indemnity_amount filtered to cause_of_loss_desc='Drought', joined for total liability across all causes) and weather.drought_monitor_weekly (dsci, averaged to an annual county mean). Grain: county-year, restricted to county-years with over $100,000 of total insured liability (21,772 observations, 48 states+DC with liability above $5M pooled for the state view). Outcome: drought-attributed indemnity as a share of total insured liability (a loss-ratio-style measure that normalizes for how much farmland is actually insured in a place, rather than raw indemnity dollars, which would just track farm size). Divergence metric: for each state, the percentile rank of mean DSCI minus the percentile rank of the drought loss ratio, pooled across all overlap years - a positive gap means drought conditions rank worse nationally than the drought payout does; negative means the reverse.

Sensitivity: a leave-one-state-out check on the county-year regression (drought loss ratio ~ avg DSCI) found the coefficient positive and significant in every one of 50 state-holdout refits (no sign flip, no loss of significance). California is the single most influential state (removing it raises the slope by about 15%, since CA is a high-DSCI/low-payout outlier that flattens the relationship) but the relationship survives its removal.

Why this happens

Every query behind this report

7 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.

query — 9 rows — 7048 ms

SELECT year, SUM(indemnity_amount) AS drought_indemnity
FROM ag.rma_cause_of_loss
WHERE cause_of_loss_desc = 'Drought'
GROUP BY year
ORDER BY year
query — 14 rows — 2238 ms

SELECT year, AVG(dsci) AS avg_dsci
FROM weather.drought_monitor_weekly
WHERE year BETWEEN 2012 AND 2025
GROUP BY year
ORDER BY year
query — 5000 rows — 11734 ms

WITH years AS (
  SELECT DISTINCT "year" FROM ag.rma_cause_of_loss WHERE "year" IN (2010,2011,2012,2013,2014,2015,2016,2017,2025)
),
dsci AS (
  SELECT county_fips, "year", AVG(dsci) AS avg_dsci
  FROM weather.drought_monitor_weekly
  WHERE "year" IN (2010,2011,2012,2013,2014,2015,2016,2017,2025)
  GROUP BY county_fips, "year"
),
drought_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS drought_indemnity, SUM(liability_amount) AS drought_liability
  FROM ag.rma_cause_of_loss
  WHERE cause_of_loss_desc = 'Drought'
  GROUP BY county_fips, "year"
),
total_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS total_indemnity, SUM(liability_amount) AS total_liability
  FROM ag.rma_cause_of_loss
  GROUP BY county_fips, "year"
)
SELECT d.county_fips, d.year, d.avg_dsci,
       COALESCE(di.drought_indemnity,0) AS drought_indemnity,
       COALESCE(ti.total_indemnity,0) AS total_indemnity,
       COALESCE(ti.total_liability,0) AS total_liability
FROM dsci d
LEFT JOIN drought_ind di ON d.county_fips = di.county_fips AND d.year = di.year
LEFT JOIN total_ind ti ON d.county_fips = ti.county_fips AND d.year = ti.year
WHERE ti.total_liability > 100000
LIMIT 5000
query — 1 rows — 12043 ms

WITH dsci AS (
  SELECT county_fips, "year", AVG(dsci) AS avg_dsci
  FROM weather.drought_monitor_weekly
  WHERE "year" IN (2010,2011,2012,2013,2014,2015,2016,2017,2025)
  GROUP BY county_fips, "year"
),
drought_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS drought_indemnity
  FROM ag.rma_cause_of_loss
  WHERE cause_of_loss_desc = 'Drought'
  GROUP BY county_fips, "year"
),
total_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS total_indemnity, SUM(liability_amount) AS total_liability
  FROM ag.rma_cause_of_loss
  GROUP BY county_fips, "year"
),
joined AS (
SELECT d.county_fips, d.year, d.avg_dsci,
       GREATEST(COALESCE(di.drought_indemnity,0),0) AS drought_indemnity,
       GREATEST(COALESCE(ti.total_indemnity,0),0) AS total_indemnity,
       COALESCE(ti.total_liability,0) AS total_liability,
       GREATEST(COALESCE(di.drought_indemnity,0),0)/NULLIF(ti.total_liability,0) AS drought_loss_ratio
FROM dsci d
LEFT JOIN drought_ind di ON d.county_fips = di.county_fips AND d.year = di.year
LEFT JOIN total_ind ti ON d.county_fips = ti.county_fips AND d.year = ti.year
WHERE ti.total_liability > 100000
)
SELECT COUNT(*) AS n,
       corr(avg_dsci, drought_indemnity) AS corr_dsci_indemnity,
       corr(avg_dsci, drought_loss_ratio) AS corr_dsci_lossratio,
       corr(avg_dsci, LN(drought_indemnity+1)) AS corr_dsci_log_indemnity
FROM joined
quantile_binning_test — 12847 ms

WITH dsci AS (
  SELECT county_fips, "year", AVG(dsci) AS avg_dsci
  FROM weather.drought_monitor_weekly
  WHERE "year" IN (2010,2011,2012,2013,2014,2015,2016,2017,2025)
  GROUP BY county_fips, "year"
),
drought_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS drought_indemnity
  FROM ag.rma_cause_of_loss
  WHERE cause_of_loss_desc = 'Drought'
  GROUP BY county_fips, "year"
),
total_ind AS (
  SELECT county_fips, "year", SUM(liability_amount) AS total_liability
  FROM ag.rma_cause_of_loss
  GROUP BY county_fips, "year"
)
SELECT d.avg_dsci,
       GREATEST(COALESCE(di.drought_indemnity,0),0)/NULLIF(ti.total_liability,0) AS drought_loss_ratio
FROM dsci d
LEFT JOIN drought_ind di ON d.county_fips = di.county_fips AND d.year = di.year
LEFT JOIN total_ind ti ON d.county_fips = ti.county_fips AND d.year = ti.year
WHERE ti.total_liability > 100000
query — 48 rows — 14345 ms

WITH dsci AS (
  SELECT state_abbr, county_fips, "year", AVG(dsci) AS avg_dsci
  FROM weather.drought_monitor_weekly
  WHERE "year" IN (2010,2011,2012,2013,2014,2015,2016,2017,2025)
  GROUP BY state_abbr, county_fips, "year"
),
drought_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS drought_indemnity
  FROM ag.rma_cause_of_loss
  WHERE cause_of_loss_desc = 'Drought'
  GROUP BY county_fips, "year"
),
total_ind AS (
  SELECT county_fips, "year", SUM(liability_amount) AS total_liability
  FROM ag.rma_cause_of_loss
  GROUP BY county_fips, "year"
),
joined AS (
SELECT d.state_abbr, d.county_fips, d.year, d.avg_dsci,
       GREATEST(COALESCE(di.drought_indemnity,0),0) AS drought_indemnity,
       COALESCE(ti.total_liability,0) AS total_liability,
       GREATEST(COALESCE(di.drought_indemnity,0),0)/NULLIF(ti.total_liability,0) AS drought_loss_ratio
FROM dsci d
LEFT JOIN drought_ind di ON d.county_fips = di.county_fips AND d.year = di.year
LEFT JOIN total_ind ti ON d.county_fips = ti.county_fips AND d.year = ti.year
WHERE ti.total_liability > 100000
),
state_agg AS (
SELECT state_abbr,
       AVG(avg_dsci) AS mean_dsci,
       SUM(drought_indemnity) AS total_drought_indemnity,
       SUM(total_liability) AS total_liability,
       SUM(drought_indemnity)/NULLIF(SUM(total_liability),0) AS state_loss_ratio,
       COUNT(*) AS n
FROM joined
GROUP BY state_abbr
HAVING SUM(total_liability) > 5000000
)
SELECT *,
  PERCENT_RANK() OVER (ORDER BY mean_dsci) AS dsci_pct_rank,
  PERCENT_RANK() OVER (ORDER BY state_loss_ratio) AS lossratio_pct_rank,
  PERCENT_RANK() OVER (ORDER BY mean_dsci) - PERCENT_RANK() OVER (ORDER BY state_loss_ratio) AS divergence
FROM state_agg
ORDER BY divergence DESC
sensitivity_analysis — 16100 ms

WITH dsci AS (
  SELECT state_abbr, county_fips, "year", AVG(dsci) AS avg_dsci
  FROM weather.drought_monitor_weekly
  WHERE "year" IN (2010,2011,2012,2013,2014,2015,2016,2017,2025)
  GROUP BY state_abbr, county_fips, "year"
),
drought_ind AS (
  SELECT county_fips, "year", SUM(indemnity_amount) AS drought_indemnity
  FROM ag.rma_cause_of_loss
  WHERE cause_of_loss_desc = 'Drought'
  GROUP BY county_fips, "year"
),
total_ind AS (
  SELECT county_fips, "year", SUM(liability_amount) AS total_liability
  FROM ag.rma_cause_of_loss
  GROUP BY county_fips, "year"
)
SELECT d.state_abbr, d.avg_dsci,
       GREATEST(COALESCE(di.drought_indemnity,0),0)/NULLIF(ti.total_liability,0) AS drought_loss_ratio
FROM dsci d
LEFT JOIN drought_ind di ON d.county_fips = di.county_fips AND d.year = di.year
LEFT JOIN total_ind ti ON d.county_fips = ti.county_fips AND d.year = ti.year
WHERE ti.total_liability > 100000

Sources

  1. USDA RMA Summary of Business / Cause of Loss — ag.rma_cause_of_loss, observed coverage 2010-2017, 2025 (2018-2024 not loaded)
  2. NOAA/USDM Drought Monitor weekly county data — weather.drought_monitor_weekly, observed coverage 2009-2026
  3. County-year DSCI vs. drought loss ratio correlation
    Show tool call
    query(sql="corr(avg_dsci, drought_loss_ratio) across 21,772 county-years, see published SQL in report")
  4. Quintile dose-response test (DSCI vs. drought loss ratio)
    Show tool call
    quantile_binning_test(outcome="drought_loss_ratio", predictor="avg_dsci", bins=5)
  5. Leave-one-state-out sensitivity check
    Show tool call
    sensitivity_analysis(outcome="drought_loss_ratio", predictors=["avg_dsci"], group_col="state_abbr")