Methodology
How parcels are scored
Methodology — Field Risk Atlas
This document describes the scoring methodology in enough detail for an external reviewer to follow. Every weight and sub-score lives in a tracked configuration file — what's documented here is the rationale for those numbers.
For use boundaries, see limitations.
1. How parcels are scored
Each parcel is matched to the groundwater basin, Groundwater Sustainability Plan (GSP) area, water district, and dominant crop boundary it falls within. Seven weighted components combine into a 0–100 composite, classified into five risk bands (Low / Moderate / Elevated / High / Severe).
Components and weights
| Component | Weight | Source |
|---|---|---|
| Basin priority | 15 | SGMA 2019 Basin Prioritization (DWR) |
| GSP status | 25 | SGMA Portal i03 + manually-maintained crosswalk |
| Critical-overdraft flag | 10 | DWR i08 critical-overdraft shapefile |
| Surface water access (ASFMRA tier) | 20 | CVP / SWP / local district overlay + manual tier crosswalk |
| Crop water demand × permanence | 15 | DWR Land IQ + USDA CDL fallback |
| Local well depth (basin-relative) | 10 | DWR i07 well-completion reports |
| Drought stress (USDM 52w) | 5 | US Drought Monitor per-county, trailing 52-week D2+ |
Tests assert the weights sum to exactly 100.
Why these weights. GSP status (25) is the largest single component because it is the single most actionable regulator signal — a basin moving from Periodic Review to Probationary marks a large shift in pumping cost and reliability. Surface-water access (20), basin priority (15), and crop class (15) are the next-most-decisive factors and roughly co-equal: a Tier-1 surface-water parcel in a High-priority basin can still be a stable orchard, while a white-area parcel in a Very-Low basin can still be stressed. Critical overdraft (10) and well-depth (10) are second-order signals correlated with the others; they earn weight because they capture the physical pumping economics that GSP status doesn't quite encode. USDM (5) is the smallest because the SGMA-screening question is fundamentally about structural water stress (regulatory + infrastructure), not weather; drought enters as a stress modulator, not a primary signal.
Sub-score curves
Each component maps a categorical (or numeric, for USDM) input to a 0–100 sub-score. Higher sub-score = more SGMA stress.
Basin priority (Very Low 0 / Low 20 / Medium 60 / High 100). Step function follows the SGMA 2019 prioritization buckets directly. The 20-vs-60 jump from Low to Medium reflects the regulator's framing: Medium is the threshold above which sustainable yield must be quantitatively demonstrated.
GSP status (Approved 10 / Approved-corrective 25 / Under Periodic Review 20 / Incomplete 50 / Inadequate 65 / Returned to DWR 80 / Probationary 90 / State Intervention 100). Approved gets a non-zero floor (10) because even Approved plans face implementation risk. Probationary at 90, State Intervention at 100 — these are the SWRCB-action and DWR-takeover end-states; both come with fee + reporting orders that materially change pumping economics.
Critical overdraft (False 0 / True 100). Binary; the critical-overdraft designation (DWR 2014/2019) is itself a stress signal independent of GSP status.
Water tier (1: 10 / 2: 35 / 3: 60 / 4: 80 / white-area: 95). ASFMRA Tier 1 (senior CVP/SWP fully reliable) gets a non-zero floor; white-area at 95 reflects that parcels with no surface-water district rely entirely on groundwater.
Crop class (fallow 0 / annual_low 20 / annual_med 35 / vine 50 / perm_low 65 / perm_high 90). Vines have moderate water demand but a distinct stress profile: vineyard fallowing is uncommon and premium vineyards have high carrying value through droughts. Permanent-high (almonds, pistachios, walnuts) is capped at 90 — combined with the other weights, 100 would push otherwise-moderate parcels past the Elevated → High band breakpoint.
Local well depth (shallow 20 / mid 50 / deep 90). Wells are ranked against other wells in the parcel's basin — "deep" means deeper than typical for the area, not an absolute depth. Shallow gets 20 not 0 because a shallow well in a Probationary basin is still pumping into stress.
USDM 52w drought is a piecewise-linear function: 0 weeks → 0, 52 weeks → 100 (cap).
Sub-score defaults (missing values)
When a parcel is missing one of the input fields (e.g., outside any GSP polygon, or no water-district overlap), the scorer falls back to a conservative middle / worst-case value:
water_tierdefault = 95 (treats unknown as white-area worst case).basin_priorityandgsp_statusdefaults = 50 (mid).critical_overdraftdefault = 0 (absence of evidence).
This is conservative-by-design: when in doubt, the score errs toward more stress, not less.
Risk bands
| Band | Composite range |
|---|---|
| Low | 0–35 |
| Moderate | 36–55 |
| Elevated | 56–70 |
| High | 71–85 |
| Severe | 86–100 |
The band classifier walks bands in ascending order and returns the first whose upper bound covers the score (clamped to [0, 100]).
Worked examples (locked test cases)
Four parcel scenarios are pinned as sanity checks for the model. They must continue to land in their expected bands across methodology revisions:
| Parcel scenario | Inputs | Expected band |
|---|---|---|
| High-risk Tule pistachio | Probationary GSP, critical-overdraft, white-area, perm_high, deep well, 26 USDM weeks | Severe |
| Sacramento row crop on Tier 1 | Approved GSP, no critical-overdraft, Tier 1, annual_low, shallow well, 0 USDM weeks | Low |
| Sonoma premium vineyard | Periodic Review GSP, no critical-overdraft, Tier 1, vine, shallow well, 0 USDM weeks | Low |
| Madera Subbasin almond | Periodic Review GSP, critical-overdraft, Tier 3, perm_high, mid well, 0 USDM weeks | Elevated |
Two parcels with the same crop class and same water tier can sit in different bands depending on basin and GSP status — that's the model working.
Distribution on the v1 dataset (May-2026 snapshot)
Of 102,780 ag parcels (excluding fallow) after the water-tier crosswalk fill:
| Band | Parcels | Share |
|---|---|---|
| Moderate | 49,895 | 48.5% |
| Elevated | 28,322 | 27.6% |
| High | 22,822 | 22.2% |
| Severe | 1,392 | 1.4% |
| Low | 349 | 0.3% |
The Severe band is small because the band ceiling (86–100) requires near-worst-case values across multiple components simultaneously — typically white-area + Probationary + perm_high. This is intentional: Severe should be a flag for closer review, not a routine output.
Weight sensitivity
A tornado chart showing how much each component moves the composite when its sub-score sweeps MIN ↔ MAX (holding other components at the modal-parcel baseline) confirms GSP status and water tier as the two largest levers, consistent with their weights and with the breadth of their sub-score ranges.
2. Methodology version
Stamped on every parcel via methodology_version. Bumped when:
- Any weight changes.
- Any sub-score curve changes.
- A new component is added.
Current version: v0.1.0-phase4.
3. Refresh cadence
The methodology produces a snapshot. The May-2026 snapshot was the build target for v1; the columns that need ongoing refresh:
| Field | Cadence | Source |
|---|---|---|
gsp_status (via crosswalk override) | Monthly | SWRCB orders, DWR enforcement actions |
usdm_d2_weeks_52w | Quarterly (or before any score regeneration) | USDM API |
water_tier (via crosswalk) | Annually | ASFMRA Trends + DWR allocation outcomes |
crop_class (via Land IQ) | Annually | DWR finalizes ~Q1 of N+1 |
| Source SHA pins | Quarterly re-validate | Catches upstream schema drift early |
A scoring run with stale inputs is fine for backtesting but should not be presented as the current state.