# Calchis Hazard Scoring Methodology

> Model version 2.3 · Effective 2026-09-15 · Last updated 2026-09-15 · the live version constant is `HAZARD_MODEL_VERSION` in `lib/constants.ts`; the change history is `lib/modeling/model-changelog.ts`

## Overview

Calchis produces **Hazard Scores** for seven perils across the continental United States, Alaska, Hawaii, and US territories. Scores range from 0.0 (no hazard) to 10.0 (extreme hazard) and represent the physical intensity likelihood at a location — they do **not** include property exposure or vulnerability until ATTOM property data integration (Phase 5).

**Terminology:**
- **Hazard Score** (Phases 1–4): Physical hazard intensity only. No property data.
- **Risk Score** (Phase 5+): Hazard × Vulnerability × Exposure. Includes ATTOM property data and FEMA Hazus damage functions.

This distinction is critical for actuarial use. We never call a hazard score a risk score.

## Scoring Architecture

Each peril score is composed of 2–4 sub-components. All components are transparent and returned in the `score_components` JSON field of every score record. No black boxes.

Every scoring coefficient references a `model_parameters` record, which in turn cites a published source. The chain is always traceable: **score → parameter → source publication**.

**Roles (model 2.1).** Every component carries a `role`: `hazard` (a measured or fitted property of the physical hazard at the site — a rate, a return period, a distance, a zone) or `proxy` (a regional constant standing in for the vulnerability or consequence of the *building stock*, not the hazard). Only hazard-role components enter the headline score:

```
hazard_score = round1( min(10, 10 × Σ hazard_i / Σ hazard_max_i) )
```

The proxy components are summed separately and returned as `proxy_score { score, max, label, components[] }`, named for what they are ("Roof vulnerability proxy — not part of the hazard score"). Until model 2.0 the headline was an unweighted sum of every capped sub-score including the proxies, so a tornado score was 50% manufactured-housing share and nocturnal fraction, a hail score was 50% roof stock, and a wildfire score was 30% an unsourced fuel constant (credibility M-08). The proxies remain in the response because they are useful context; they no longer move a number that is labeled "hazard".

**What a 7.3 estimates.** The score is an ordinal index of physical-hazard intensity likelihood for the peril at the site, on 0–10, built from the fitted rates and distances documented per peril below. It is not a probability, a loss ratio, or a return period; the per-component labels carry those (for example "CAT3+ landfall return period, Gulf-Panhandle segment (7.5 yr)"). Two sites with the same score have comparable hazard-role component totals; the score does not claim more than that. The display bands — 8.5 "extreme", 6.5 "high", 4.0 "moderate" — are presentation thresholds (`lib/peril-colors.ts`) chosen for a readable colour scale, not calibrated to any loss or damage quantity.

**Every curve is generated from the code.** The shape of each component's mapping from its input to points lives in `lib/modeling/hazard-curves.ts` (five pure functions: rate scale, return-period decay, distance bands, full-scale ratio, threshold slope). `docs/hazard-score-calibration.md` is rendered from those functions and the seeded constants by `scripts/generate-hazard-calibration.ts`, and a drift test holds it byte-equal to the renderer, so the calibration figures published there are the figures the scorer produces (credibility M-25 — the previous hand-written figures in this document could not be reproduced from the code: the earthquake "0.1/yr → 1.0" was actually 0.25, and the hurricane 10, 20 and 40-year figures quoted as 2.5, 1.5 and 0.8 points are 3.01, 2.23 and 1.22).

**Zero is not "unknown".** A component whose lookup failed (a fault-distance RPC error, a missing per-location input) is returned with `data_status: "unavailable"` and its key is listed in `lookup_failed[]`. A score of 0 with an empty `lookup_failed` means the peril is not relevant at the site; a score of 0 with entries in `lookup_failed` means the model could not compute, and the UI renders it as "—" / NO DATA rather than as a zero (credibility M-26). `estimated_share` (the weight fraction of hazard-role components that came from a regional default) is likewise computed over hazard components only, and the "(est.)" marker renders whenever it is above zero.

## Perils & Component Weights

### Earthquake (0–10)

**Since model 3.6 (2026-10-11) the earthquake hazard score is the USGS 2023 National Seismic Hazard Model's ground motion at the site.**

| Component | Max Weight | Source |
|-----------|-----------|--------|
| Ground motion (USGS NSHM 2023) | 10 | Peak ground acceleration with a 2% chance of exceedance in 50 years (2,475-year return period) at site class BC (Vs30 760 m/s), from USGS's published grids (doi:10.5066/P14VGAV4: CONUS 2023.R2 at 0.05 degree, Alaska 2023.R1 at 0.1, Hawaii 2021.R2 at 0.02; model: Petersen et al. 2024, *Earthquake Spectra* 40(1), doi:10.1177/87552930231215428), bilinear between grid points (`lib/modeling/nshm-pga.ts`) |
| Historical damage potential — **proxy, not in the score** | 3.5 | FEMA Hazus v6.1 W1 damage-state threshold; a construction-vulnerability constant, reported under `proxy_score` |

```
score = 10 × ln(PGA / 0.02 g) / ln(1.5 g / 0.02 g), clamped to 0–10
```

A log scale, because the hazard spans two orders of magnitude (0.026 g at Miami, 2.85 g on the most active faults). The anchors (`nshm_pga_floor_g`, `nshm_pga_ceiling_g`) are seeded, estimated design choices. The NSHM already integrates every mapped fault, the gridded seismicity and the ground-motion models, so nothing is added on top. Checked against USGS's own values at 42 cities (`lib/modeling/validation/catalogue/nshm-2023-city-pga.ts`): the CONUS grid reproduces the hazard service to a mean 0.7% at 32 cities, the Alaska grid to 0.1% at five, and the Hawaii grid matches the 2021.R2 release's own test-site values at five (the public service still answers 2021.R1, 2-5% lower). The score ranks the cities as the NSHM does (Spearman 0.999). Under the method below it was 0.23 across the conterminous cities, which scored Memphis and Charleston level with Chicago and Denver near Los Angeles, and 0.62 across Alaska and Hawaii, which scored Hilo (1.07 g) 3.1 and Juneau (0.20 g) 6.3.

**Outside the grids** (Puerto Rico and the other territories), and wherever the anchors are not yet in the database, the score uses the previous regional method, labeled as such:

| Component | Max Weight | Source |
|-----------|-----------|--------|
| Seismic source zone activity | 3.5 | Gutenberg-Richter a/b per source zone (`lib/modeling/stochastic/seismic-source-zones.ts`; b from USGS NSHM 2023, a fitted to the declustered USGS catalog 1980–2024) |
| Proximity to mapped faults | 3.0 | USGS Quaternary Fault and Fold Database, 113,166 sections (DOI 10.5066/F7S75FJM) |

**Seismic Activity** uses the Gutenberg-Richter relation:

```
log₁₀(N) = a - b·M
```

Where `N` is the annual rate of earthquakes ≥ magnitude `M`, and `a`/`b` are regionally calibrated parameters. Note: the USGS NSHM 2023 uses spatially-gridded zone-specific rates via UCERF3, not single aggregate a-values. Our aggregate a-values are fitted to the USGS ComCat instrumental catalog. See Petersen et al. (2024), Earthquake Spectra.

**Intensity Prediction Equation (IPE):** Atkinson & Wald (2007), Seismological Research Letters Vol. 78 No. 3, pp. 362-368:

```
MMI = c₀ + c₁·(M-6) + c₂·(M-6)² + c₃·log₁₀(R) + c₄·R + c₅·B + c₆·M·log₁₀(R)
```

Where `R = √(Rrup² + h²)` (h=14km), `B = log₁₀(R/30)` when R>30km else 0. Seven-term equation validated against >200,000 "Did You Feel It?" reports. Coefficients verified against rshalib implementation (Royal Observatory of Belgium).

**Regional parameters:**
One table, shared with the stochastic event set (`seismic-source-zones.ts`; the scorer reads it through `model_parameters` at scope `Zone-<name>`). The a-values are zone aggregates — 10^(a − b·M) is the M≥M rate across the whole zone — so this component ranks a site by the activity of its region, not by site-specific shaking (known debt #112); the fault-proximity component carries the site-specific part.

| Zone | a | b | M≥5/yr |
|------|---|---|--------|
| Pacific Coast (CA, OR, WA) | 5.157 | 0.95 | 2.56 |
| Intermountain West | 5.071 | 1.00 | 1.18 |
| Central US / New Madrid | 2.8 | 1.00 | 0.006 |
| Eastern US | 2.0 | 1.10 | 0.0003 |
| Alaska | 5.742 | 0.90 | 17.4 |
| Hawaii | 4.477 | 0.95 | 0.53 |

Until 2026-09-04 the scorer read a separate California-only a = 5.61 (a bounding-box fit yielding ~4.1 M≥5/yr) and scored every other zone at the 0.5-point default; the fitted zone table replaced it (credibility M-18).

**Damage State Thresholds:** FEMA Hazus v6.1, Chapter 5. W1 (wood light frame) fragility defined by spectral displacement (Sd) in inches:
- Low-Code (Table 5-21): Slight=0.50in, Moderate=1.25in, Extensive=3.86in, Complete=9.45in
- High-Code (Table 5-19): Slight=0.50in, Moderate=1.51in, Extensive=5.04in, Complete=12.60in

### Hurricane (0–10)

| Component | Max Weight | Source |
|-----------|-----------|--------|
| CAT3+ landfall return period | 3.5 | NOAA HRD continental-US landfall catalog 1950–2024, per coastal segment (`lib/modeling/stochastic/hurricane-climatology.ts`) |
| Coastal proximity | 3.0 | Natural Earth 50m coastline (public domain), point-to-segment distance |
| Storm surge exposure | 3.5 | NOAA NHC SLOSH model — **see Per-location inputs below** |

**Return periods** are per coastal segment, fitted from the NOAA HRD continental-US hurricane landfall catalog over the 75-year window 1950–2024 by `scripts/validation/fit-hurricane-climatology.ts` (120 landfalls, 43 major). A site within 250 km of a segment's coastline reads that segment's `cat3plus_return_period` (`model_parameters` scope `Segment-<name>`, seed rows generated from the fit); a site farther from every segment falls back through the parameter chain — the state row, the state's model region (`US-Gulf`, `US-Mountain`, …) where one is mapped, then the national row — and then to the FEMA declaration record. Until model 2.1 the whole of Florida read one value (9.0 yr) that its own description said was the SE-Florida/Miami-radius figure, so Pensacola scored on Miami's return period, roughly 2× under (credibility M-24).

| Segment | Landfalls 1950–2024 | CAT3+ | CAT3+ return period |
|---------|--------------------|-------|---------------------|
| Texas | 19 | 7 | 10.7 yr |
| Louisiana-Mississippi | 24 | 6 | 12.5 yr |
| Gulf-Panhandle | 20 | 10 | 7.5 yr |
| Florida-Gulf | 14 | 7 | 10.7 yr |
| Florida-Atlantic | 10 | 5 | 15.0 yr |
| Southeast-Atlantic | 28 | 7 | 10.7 yr |
| Mid-Atlantic-Northeast | 5 | 1 | 75.0 yr |

The return period maps to points by `returnPeriodDecayScore` (anchored at the seeded `track_anchor_return_period_yr`, decaying by `track_frequency_decay` per year to `track_frequency_floor`; see `docs/hazard-score-calibration.md` for the curve at the seeded constants: 10 yr → 3.01, 20 yr → 2.23, 40 yr → 1.22).

**Wind decay after landfall:** Kaplan & DeMaria (1995), Journal of Applied Meteorology:

```
V(t) = Vb + (V₀ - Vb) · exp(-α·t)
```

Where `α = 0.095/hr` (Atlantic basin mean), `Vb = 26.7 kt` (background wind), `V₀` = landfall intensity. Mean absolute error: 5.7 kt at 12 hours post-landfall.

**Surge estimates** from NOAA NHC SLOSH model composites:
- CAT1: 4–5 ft typical
- CAT3: 9–12 ft typical (Katrina 2005: 28 ft, extreme outlier)
- CAT5: 18–20+ ft typical

### Wildfire (0–10)

| Component | Max Weight | Source |
|-----------|-----------|--------|
| Large fire frequency (local, model 3.9) | 3.5 | Wildfires of 1,000+ acres within ~83 km, MTBS 1984–2024, against the grid's 99th percentile (`wildfire_local_full_scale_rate`); the regional fit outside MTBS coverage |
| WUI exposure (model 3.9) | 3.5 | Share of homes in the Direct or Indirect wildfire exposure zones, USDA Forest Service Wildfire Risk to Communities (RDS-2024-0030), Census place else county; NLCD development/wildland mixture outside WRC coverage |
| Vegetation/fuel load — **proxy, not in the score** | 3.0 | Unsourced regional constant, reported under `proxy_score`; flammability-weighted NLCD/LANDFIRE replacement is known debt #115 |

**No climate adjustment.** Until 2026-09-04 the California rate carried a 1.4× multiplier attributed to Abatzoglou & Williams (2016), PNAS 113(42). That paper reports western US forest fire area roughly doubling with anthropogenic warming 1984–2015; 1.4× was an inference from it, not a value the paper states, and the stochastic event set never applied it. The multiplier was retired; every wildfire score rests on the unadjusted 1984–2024 fire record and `climate_adjusted` is false.

**Fire frequency** (model 3.9) is the density of wildfires of 1,000+ acres within ~83 km of the location, from the MTBS Fire Occurrence Dataset 1984–2024 (15,570 fires, `scripts/derive-wildfire-local-density.ts`), scaled linearly to the 99th percentile of the same 0.25-degree grid. MTBS maps every fire of that size from Landsat, so a place with none on record reads 0. Until model 3.9 it was one fitted rate per region, and every region's rate sat above the full scale, so every point in a region scored 3.5. The regional rates remain what the stochastic event set samples, and what the score uses outside MTBS coverage: **Regional fire frequency** is one fitted rate per wildfire region (California, Pacific Northwest, Mountain West, Southern US): the mean number of NIFC perimeters a year over 1984–2024 times the share of fires larger than 10,000 acres under a truncated log-normal size distribution fitted to the same perimeters. The Southern US rate is fitted on the MTBS Fire Occurrence Dataset instead (90.1 fires of 1,000+ acres a year over 2000–2024; model 3.3) because the NIFC perimeter set thins south of the Rockies; its size distribution still comes from the NIFC perimeters (known debt #80).

**WUI exposure** (model 3.9) is the share of housing units in the Direct or Indirect exposure zones of the USDA Forest Service's Community Wildfire Risk Reduction Zones (Wildfire Risk to Communities; Scott et al., RDS-2024-0030), for the Census place containing the location, else its county, scored linearly: every home exposed is 3.5. The zones are mapped at 30 m from LANDFIRE 2020 fuels and FSim burn probability, so flammability is part of the measurement — the NLCD development/wildland mixture it replaces counted desert shrub as wildland (El Paso 0.98) and, averaged over a 0.25-degree cell, read Paradise, CA at 0.16. The values are filled onto a ~2 km grid through the 2024 Census cartographic boundaries (`scripts/derive-wildfire-exposure.ts`). A place's value is its average: Los Angeles is one place (11%) while Malibu is its own (97%). Outside WRC coverage (Puerto Rico and the territories) the NLCD mixture remains.

**Structure loss rate in WUI:** 25% average during large fire events. PNAS (2025): 10% of exposed buildings destroyed 2002–2012, rising to 32% for 2013–2022. Camp Fire 2018: 85% destruction. Tubbs Fire 2017: 36%. 25% is the defensible period-average national mean.

### Flood (0–10)

| Component | Max Weight | Source |
|-----------|-----------|--------|
| FEMA flood zone | 4.0 | Zone recorded on NFIP claims nearby — **see Per-location inputs below** |
| Elevation relative to flood level | 3.0 | USGS 3DEP ground elevation, used only where it is low — **see Per-location inputs below** |
| NFIP historical loss density (model 4.0) | 3.0 | NFIP flood claims per 1,000 housing units per year in the county, 1978–2024, against the 99th percentile of counties (`nfip_county_full_scale_rate`); the state FEMA Flood declaration record outside a county with a housing count |

**NFIP loss density** (model 4.0) is NFIP flood claims per 1,000 housing units per year in the county containing the location, years of loss 1978–2024 (2.64M county-coded claims; housing units from the USDA Forest Service Wildfire Risk to Communities county summary), scaled linearly to the 99th percentile of US counties, 4.132 (`scripts/derive-county-nfip-rate.ts`). The county is read offline from a ~2 km grid of the 2024 Census county boundaries (`scripts/derive-county-grid.ts`). Until model 4.0 this component was the state's count of FEMA "Flood" declarations, identical for every point in a state. County "Flood" declarations were measured and rejected: FEMA declares most coastal floods as hurricanes or severe storms, so Orleans Parish and Miami-Dade have none. Claims count insured losses, so a county with flooding and low flood-insurance take-up reads low.

**Depth-damage functions** from USACE EGM 01-03 (December 2000), Table 1: "One Story, No Basement":

| Flood Depth (ft) | 1-Story Residential (no basement) |
|-------------------|-----------------------------------|
| 1 ft | 23.3% structural damage |
| 4 ft | 47.1% structural damage |
| 8 ft | 67.2% structural damage |

Source: USACE Economic Guidance Memorandum 01-03, generic depth-damage curves. These are consistent with Hazus Flood Model default FIA credibility-weighted functions. Verified 2026-03-27 against EGM 01-03 PDF Table 1.

**NFIP statistics:** Average NFIP building claim >$66,000 for 2016–2022 period (FEMA NFIP Fact Sheet, May 2023). Repetitive loss properties (~1% of policies) account for 25–38% of all claim payments (GAO-04-401T, Pew 2016, DHS OIG-20-68). 30% is the defensible midpoint.

### Hail (0–10)

| Component | Max Weight | Source |
|-----------|-----------|--------|
| Significant hail days (model 4.2) | 5.0 | NEXRAD Hail Detection Algorithm signatures (NOAA NCEI SWDI) 2005–2024: days per year with a signature of estimated size ≥ 2 in and ≥ 90% probability of severe hail within 80 km, against the grid's 99th percentile (`hail_radar_full_scale_days`); the state report rate outside radar coverage |
| Roof vulnerability — **proxy, not in the score** | 5.0 | Regional roof-stock constant informed by IBHS roof research, reported under `proxy_score` |

**Significant hail days** (model 4.2) come from radar, not reports. The hail ingest named `run-mrms-hail.ts` reads NOAA Storm Events hail REPORTS, which follow population; a grid of them put Minneapolis, Denver and Dallas at the top of the scale. The NEXRAD Hail Detection Algorithm sees a storm whether or not anyone lives under it (`scripts/derive-hail-radar-days.ts`). Its maximum is the Texas panhandle, where published radar hail climatologies place it. Limits: the algorithm over-detects in humid tropical convection (central Florida reads about as high as Denver), and at 2 inches it counts large hail only (Cheyenne's many small-hail days do not count). A 1-inch, 50% threshold was rejected: its top cells were central Florida.

**Regional significant hail report frequency (≥2.0", the state fallback):** Great Plains (TX-OK-KS-NE): 1.16 events/yr per 10,000 km². Computed from 3,683 events over 25 years across 1,264,965 km². Plains receive 49.4% of all US significant hail. Source: NOAA SPC 2000–2024 hail CSVs, verified 2026-03-28.

**Roof damage threshold:** 1.0-inch hail for asphalt shingles, 1.75-inch for metal roofs (IBHS full-scale impact testing).

**Damage ratios** (ESTIMATED — industry composite from Verisk PCS 2010–2024):
- 1-inch hail: ~5% roof replacement cost
- 2-inch hail: ~20% roof replacement cost (typically requires full replacement)

### Tornado (0–10)

| Component | Max Weight | Source |
|-----------|-----------|--------|
| EF2+ annual frequency | 5.0 | Local significant (EF2+) tornado density within ~83 km, NOAA SPC tornado track file 1980–2024, scaled against the 99th percentile of the same grid (`tornado_ef2_local_full_scale_rate`, model 3.8). Points with no tornado on record nearby fall back to the state all-report rate |
| Mobile home density — **proxy, not in the score** | 3.0 | Census manufactured-housing share by state, reported under `proxy_score` |
| Nocturnal tornado risk — **proxy, not in the score** | 2.0 | SPC diurnal distribution analysis, reported under `proxy_score` |

**Regional EF2+ frequencies** (verified 2026-03-28 from SPC 1950-2024_torn.csv, 73,271 records):

| Region | EF2+/yr | Per 10K km²/yr | % of US Total |
|--------|---------|---------------|---------------|
| US Total | 143.6 | — | 100% |
| Great Plains (TX-OK-KS-NE) | 32.8 | 0.26 | 22.8% |
| Southeast broad (AL,MS,TN,GA,AR,LA,NC,SC,KY,VA) | 60.4 | 0.52 | 42.0% |

The Southeast receives nearly **double** the per-area EF2+ tornado rate of the Plains — confirming the eastward shift documented by Agee et al. (2016). Southeast tornadoes are disproportionately deadly due to higher nocturnal fraction (>40% vs <15% in Plains), higher mobile home density, and less lead time.

## Compound Events

**Hurricane + Flood amplification:** 1.35× multiplier on combined losses (ESTIMATED). Zscheischler et al. (2020), Nature Reviews Earth & Environment 1, 333-347 provides the compound event typology framework but does NOT provide this specific value. 1.35× is our engineering estimate based on Harvey 2017 and Florence 2018 compound loss patterns.

**Post-fire debris flow amplification (California):** 1.50× multiplier (ESTIMATED). USGS Fact Sheet 2005-3106 describes post-fire debris flow hazards qualitatively but does NOT provide this specific factor. 1.50× is our engineering estimate. The actual post-fire risk is better modeled as a conditional probability shift, not a linear amplifier.

⚠ **Compound event detection is NOT active until back-testing is completed against ≥5 historical events.** See `docs/compound-event-validation.md`.

## Parameter Governance

1. Every parameter lives in the `model_parameters` table with a mandatory `source_description` field citing the publication.
2. Parameter changes are logged in `model_update_log` with rationale and supporting paper IDs.
3. Only one active value per (peril, geography_scope, parameter_name) — enforced by unique partial index.
4. Superseded parameters are preserved (set `superseded_at`, never deleted) for audit trail.
5. Research papers that inform parameters are tracked in `research_papers` with full DOI and citation metadata.

## Frequency Data Hierarchy

Each peril's frequency sub-score resolves through a fixed precedence, so the most
specific defensible signal wins and no location silently falls back to a guess:

1. **Peril-specific parameter** (best science) — HRD per-segment CAT3+ return period
   (hurricane), NIFC large-fire frequency (wildfire), SPC EF2+ frequency
   (tornado), Gutenberg-Richter recurrence (earthquake). Used wherever a value
   exists for the location's geography scope.
2. **FEMA declaration frequency** (real local record) — when no peril-specific
   parameter covers the scope, the score uses the state's actual federal
   disaster-declaration history: `count / span` over the 1953–present record
   from `historical_declarations` (FEMA OpenFEMA, ~5,200 declarations). This
   replaced a hardcoded regional fallback. A location earns the full frequency
   sub-score at the `fema_decl_full_scale_rate` for the peril — the observed
   annual rate of the most-exposed US state (wildfire 4.0/yr, hurricane 0.9/yr,
   flood 0.6/yr, tornado 0.25/yr) — and scales linearly below it. The
   declaration count and return period appear in the score component label, and
   the FEMA citation in the score's `sources`. The record is FEMA's, so the
   component exists only for a covered US state (the `US-STATE` rows of
   `region_peril_coverage`); outside that coverage it is absent, not borrowed
   from a neighbour, and the same holds for every NHC-derived hurricane input.
3. **Regional default** (last resort) — a small hardcoded table, hit only when a
   state has zero mapped declarations and no peril-specific parameter.

---

## Per-location inputs: what is measured and what falls back

Each peril's score mixes inputs measured **at the location** with inputs that
describe the **state**. Which is which matters more than any single number, so
it is stated here rather than implied by a source column.

Where a per-location input is unavailable, the scorer applies a documented
per-state constant. That is a deliberate, labeled fallback — a score
component reading "FEMA flood zone (estimated)" is telling you it did not
measure one — but it means two locations in the same state receive the same
value for that component.

| Input | Status | Effect when absent |
|---|---|---|
| Distance to coastline | **Measured** (Natural Earth 50m, ocean only — lakes excluded, so the Great Lakes are correctly not coast) | — |
| Distance to mapped Quaternary faults | **Measured** (USGS Quaternary Fault and Fold Database, 113,166 sections, DOI 10.5066/F7S75FJM). NULL beyond 500km, which falls back rather than reporting a sentinel distance — the absence of a *mapped* fault is not the absence of seismic hazard, and New Madrid is carried by the Gutenberg-Richter component instead | CA 2.5, AK 2.0, Pacific NW 1.8, Mountain 1.0, elsewhere 0.3 |
| FEMA flood zone | **Neighbourhood-derived** from the zone recorded on NFIP claims within ~11km. NFIP publishes claim coordinates rounded to one decimal for policyholder privacy, so this describes a neighborhood, **not an address**, and is not a substitute for a FIRM lookup on a specific property | Per-state constant (TX/FL/Gulf 2.5, Southeast 2.0, Northeast/Plains 1.5, else 1.0) |
| NFIP claim **density** at the location | **Not used.** See the note below | Component 3 uses the state's FEMA declaration record instead |
| Earthquake event rates | **Fitted** (USGS earthquake catalog, 26,600 M4+ events 1900-2024, already ingested; model 1.5). Gutenberg-Richter a-values are derived per source zone by `scripts/derive-gr-parameters.ts`: Gardner-Knopoff (1974) declustering, then the rate anchored on observed independent M5+ counts over 1980-2024. b-values stay at their USGS NSHM 2023 values — an MLE fit on the M4+ catalog returns a b that is biased low by incomplete detection of small events, and a network that misses M4.0s does not miss M5.0s. Central US and Eastern US keep their sourced estimates: 24 and 8 independent events is not a fit. This raised modeled Los Angeles AAL from 0.008% to 0.038% of insured value against a published California range of 0.05-0.30%, and collapsed the Seattle seed spread from 130x to 2.45x. **Earthquake loss figures remain gated**: damaging shaking at a specific address is still about half as frequent as observed, because events are placed uniformly inside a 0.25-degree cell rather than on fault traces. | Zone-aggregate estimates for Central US and Eastern US |
| Wildfire event rates and placement | **Fitted** (NIFC interagency fire perimeter record, 96,638 perimeters 1984-present in `historical_fire_perimeters` — the 1984-2019 Interagency Fire Perimeter History was backfilled as centroids on 2026-09-02; model 1.6). Per-region rates of 1,000+ acre fires and truncated log-normal size distributions are derived over 2000-2024 by `scripts/derive-wildfire-parameters.ts`; the previously shipped rates were 2.5x (California), 6x (Pacific Northwest), 11.6x (Mountain West) and 1.9x (Southern US) below the same agency's own record. Fires are placed on a 0.25-degree grid weighted by distinct years with a 1,000+ acre fire since 1984 (`scripts/build-wildfire-grid.ts`) instead of uniformly inside regional boxes. Portfolio wildfire AAL reproduces to 1.07x across seeds (200 locations, 1,000 years); a single site to 2.0-2.4x, so **single-location wildfire loss figures remain gated**. The Southern US rate is understated about 4x: MTBS maps 90.1 fires of 1,000+ acres a year in the region over 2000-2024 against the 22.0 fitted here (`docs/stochastic-validation/frequency-vs-catalogue.md`), because TX/OK/FL perimeters are thin in the NIFC record before 2020. | Uniform placement inside the region's box if the grid is absent |
| Hurricane landfall set | **Fitted** (NOAA/AOML HRD "All U.S. Hurricanes" 1950-2024, HURDAT2-derived, 120 landfalls; model 1.7). `scripts/validation/fit-hurricane-climatology.ts` writes `lib/modeling/stochastic/hurricane-climatology.ts`: 1.6 hurricane landfalls a year (0.57 majors), a Weibull landfall-intensity distribution left-truncated at 64 kt fitted by maximum likelihood (shape 3.1, scale 86.6 kt), the share of landfalls on each of seven coastal segments, and the CAT1+/CAT3+ and CAT2+/CAT3+ ratios the return-period module quotes. Each storm then carries a Willoughby, Darling & Rahn (2006) radius of maximum wind, a Vickery & Wadhera (2008) Holland B, a Holland (1980) radial profile with forward-motion asymmetry, and Kaplan & DeMaria (1995/2001) over-land decay along a straight track; a site's wind is the maximum over the passage and the damaging reach (where the right-side wind falls to 50 kt) is solved from the profile instead of assumed. The v1 set (model ≤ 1.6) sampled named storms from a basin count and applied a landfall fraction quoted for hurricanes to them: executed, 2.28 hurricane landfalls a year and a CAT5 every 3.8 years against 1.6 and ~25 observed. **Still not modeled:** track curvature and re-intensification, negative-binomial season counts (the catalog's variance/mean is 1.44), inland flooding and surge, and the Northeast's faster decay (the southern K&D constants are used nationally); the per-segment headings and forward speeds are assumed, not fitted. Milton 2024 stays outside its insured-loss band (`docs/stochastic-validation/hurricane-validation.md`): the hazard half of that overstatement is closed here, the remainder is the screening-level W1 damage table; the ×1.5 contents treatment was removed in model 1.9 (contents are modeled only as supplied). | The set is generated in-process; there is no fallback |
| Ground elevation | **Measured** (USGS 3D Elevation Program, Elevation Point Query Service, 1/3 arc-second DEM, ~10 m; model 1.3, cached durably since model 1.4). Elevation above **sea** level. Storm surge reads it directly — sea level is the right reference for surge: a coastal point below 5 ft scores 3.5 of 3.5, below 10 ft 2.5, below 20 ft 1.5, below 30 ft 0.5, above that 0. | Surge: 2.0 of 3.5 for a coastal point, 0.5 near-coastal, labeled `regional_default`, or `unavailable` when the elevation service could not be reached (a score with an unavailable input is not cached) |
| Base flood elevation | **Measured** (FEMA National Flood Hazard Layer; model 1.4). The flood "elevation" component is now scored on **freeboard** — ground elevation minus the base flood elevation FEMA published for the point — which is the quantity the NFIP itself rates on. Below BFE by more than 2 ft scores 3.0 of 3.0; within −2 to +1 ft, 2.5; +1 to +3 ft, 1.5; +3 to +8 ft, 0.7; above that 0.2. The BFE comes from the zone polygon's own controlling elevation where FEMA published one (coastal; ~0.4% of AE polygons) and otherwise from the nearest published BFE contour (the riverine majority); the label says which. Both sides are NAVD88 — a reach FEMA published on NGVD29 is **refused, not converted**, because the offset (~1.5 ft in South Florida) is the size of the freeboard being resolved. Where no BFE is published — Zone A is the *unstudied* SFHA, and Zone X is outside it — the component falls back to sea level: below 3 ft scores 3.0, below 10 ft 2.0, because a few feet above sea level is flood exposure wherever it is. Above that it keeps its 1.0 default, since height above sea level says nothing about height above the local flood. **Altitude never lowers a flood score.** | 1.0 of 3.0, labeled `regional_default` |
| Elevation above base flood level | **Not measured** — see the row above | 1.0 of 3.0 |
| WUI / wildfire risk class | **Not measured.** The `wildfireRiskClass` context field, declared and never populated, was removed in model 1.3; the WUI component reads the local wildland fraction (`lib/geo/local-wildland.ts`) | Per-region constant |
| Storm surge zone | **Not measured** as a per-location SLOSH lookup; the component is driven by coastal proximity and measured ground elevation (see above) with a per-scope surge parameter | — |

### Which perils actually vary by location

The inputs table above says which INPUTS are measured. This says what that
means peril by peril, because the two are not the same thing and the
difference is easy to overstate.

Measured across four Texas locations spanning coast to panhandle — Galveston,
Houston, Dallas, Amarillo:

| Peril | Varies within a state? | Why |
|---|---|---|
| Hurricane | **Yes** — 8.1 to 3.1 | distance to coastline |
| Flood | **Yes** — 7.5 to 4.3 | neighborhood FEMA flood zone |
| Earthquake | **Yes** (model 3.6; Alaska and Hawaii model 3.7) | the USGS 2023 NSHM ground motion on its published grids: Los Angeles 8.8, Memphis 8.6, Denver 3.6, Houston 2.0, Anchorage 9.8, Honolulu 6.2. Before model 3.6 it varied only where Quaternary faults are mapped |
| Hail | **Yes** (model 4.2) | significant (2 in+) NEXRAD radar hail days per year within 80 km, 2005-2024: Amarillo 25, Oklahoma City 20, Denver 13, Chicago 8. Until 4.2 it was a density of spotter reports, which follow population |
| Tornado | **Yes** (model 3.8) | significant (EF2+) tornadoes per 10,000 km2 per year within ~83km, from SPC's rated track file: Moore 10.0, Houston 7.3, Miami 1.3 |
| Wildfire | **Yes** (model 3.9) | wildfires of 1,000+ acres per 10,000 km2 per year within ~83km from the MTBS satellite record, and the Forest Service's share of homes exposed for the Census place or county: Paradise 7.8, Boise 7.0, Los Angeles 3.2, Houston 0.5 |
| Winter storm | **Yes, in 31 states** (model 4.1) | winter events per NWS zone per year, where NCEI's zone names still match the NWS zone map (≥ 90% of a state's events); Watertown NY 4.9, New York City 2.1. The other 20 states, mostly in the West, keep the state average |

So six of seven perils respond to location through their frequency term
today. A score for two addresses in the same state will differ on hurricane,
flood, earthquake, hail, tornado and wildfire, and on winter storm in 31 of the 50 states.

The hail figure is a measurement of the metric the component already used —
"events per 10,000 km2 per year" — at cell resolution rather than state
resolution, not a new signal. It was validated at generation against the
independently derived per-state parameters: 47 of 48 states agree within a
factor of two and most within a few percent. The disagreements are low-hail
western states, where hail concentrates in small areas and a mean over cells
that HAVE hail legitimately exceeds a state average that divides by desert.

**Why tornado, wildfire and winter storm were not given the same treatment at first.** It was
considered for each and declined on the data, not on effort.

*Tornado* was declined on the Storm Events record and later done from a
different file. Only 61% of the Storm Events tornado rows carry coordinates and
none carries a rating, and weak (EF0/EF1) reports follow population, so a
density of every report lit up cities. Model 3.8 instead reads NOAA SPC's
tornado track file, which locates and rates every tornado, and counts
significant (EF2+) tornadoes only — damage of that rating is surveyed wherever
it happens. Its scale is the 99th percentile of the same grid, so the input
and the scale are one quantity (scripts/derive-tornado-ef2-density.ts; regional
means against the independently derived EF2+ rates: Plains 1.17x, Southeast
0.85x).

*Wildfire* had a component of a different kind. Its metric was
`annual_large_fire_frequency` — a count of large fires per region, not a
density normalized by area — so measuring it locally would have been a
different quantity wearing the same name. Model 3.9 changed the quantity on
purpose, as model 3.8 did for tornado: every region's count sat above the full
scale, so the regional metric scored every point in a region the same, which
is no information at all. The component is now a local density of large
wildfires from MTBS, named as such. Its second component, WUI exposure, is
about where housing meets wildland; since model 3.9 it is the Forest Service's
share of homes in its Direct or Indirect exposure zones, which are mapped from
fuels and simulated fire behavior rather than from where fires have burned.

*Winter storm* rates were per-state for the same reason tornado's were: the
zone-event records that dominate the winter storm catalog carry no
coordinates. They do carry the zone's NAME, and since model 4.1 they are
matched to the NWS zone map (nws_ugc_zones) and counted per zone — the
component's own unit — in the 31 states where the names still match at least
90% of events (`scripts/derive-winter-zone-rate.ts`). In the West the NWS has
redrawn its zones (Colorado's current zone names match 54% of its events,
California's 40%), so those states keep the state average, as does any single
zone with no matched event.

The distinction that governed all four decisions: measuring an existing metric
more finely is a measurement, and changing what a component means is a
decision.

### A known limitation of the neighborhood flood zone

The zone is the *majority* zone among NFIP claims in the cell, and taking the
majority discards how many claims there were. Those are different facts, and
the second one matters.

Houston is the clearest case. Its cell is modally zone **X** — minimal risk —
across 6,735 claims. Both halves are true: a great many Harvey claims fell
outside mapped floodplains, which is why the majority is X, and 6,735 claims in
one 11km cell is a strong statement that this neighborhood floods. The scorer
currently reads only the first half, so Houston's flood zone component scores
0.3 of 4.0 where the per-state constant previously gave 2.5.

The net effect is still an improvement in discrimination — Galveston 7.5 against
Houston 4.3, where every Texas location previously scored 6.5 regardless — but
it is not the whole signal. Claim density is held in the same derived grid and
is not yet fed into any component; component 3 uses the state's FEMA
declaration record instead. Wiring density in changes loss-relevant scoring
maths and is a deliberate decision, not a refactor.

Measured after wiring, on the pair that motivated it: San Francisco 11.0km
from an active fault scores earthquake 9.0, Fresno at 65km scores 6.7. Both
were 8.9. Los Angeles, 1.4km out, is 9.4. Note this varies only where faults
are mapped — see the peril table above.

**Before 2026-08-26 none of these were measured**, and every hazard score the
platform produced was a per-state constant: Galveston, Houston, Dallas and
Amarillo returned hurricane 5.4, flood 6.5 and earthquake 3.7 identically.
The scoring functions had always read these inputs; nothing supplied them.
This table exists so that the distinction is visible rather than discovered.


Mapping discipline: only unambiguous FEMA incident types map to a peril (Fire →
wildfire; Flood → flood; Hurricane/Typhoon/Tropical Storm/Coastal Storm →
hurricane; Tornado → tornado). FEMA's "Severe Storm" catch-all is never mapped,
hail has no FEMA incident type, and earthquake keeps Gutenberg-Richter rather
than the sparse FEMA earthquake declarations. See
`lib/historical/declaration-frequency.ts`.

## Observed footprints vs modeled rings

Calchis draws two kinds of footprint for an event, and labels every one.

- **Modeled — consequence rings.** Computed by Calchis from the event's
  parameters (magnitude, wind radii, perimeter, gauge stage). An estimate of
  where impacts are likely, before anyone has surveyed anything.
- **Observed — published by a federal agency** (migration 203,
  `GET /api/v1/events/{id}/footprints`, `kind: "observed"`). Three sources,
  none of which is a raw measurement at every point, and each says which it is:
  - *NWS Damage Assessment Toolkit* — tracks, points and EF-rated polygons drawn
    by NWS survey teams on the ground, usually within one to two days.
    Preliminary until NCEI Storm Data.
  - *USGS ShakeMap* — MMI contours for US earthquakes M5+, interpolated from
    seismic stations and felt reports, with ground-motion-model fill where
    there are no stations. Observation-constrained.
  - *NHC best-track wind swath* — the area the analyzed 34/50/64 kt wind radii
    swept, for Atlantic storms and for Eastern and Central Pacific storms
    whose swath reaches US territory (Hawaii, the Pacific territories, the
    Southwest). An analysis of observed winds, revised after the season.
  - *USGS high-water marks* (Short-Term Network, after migration 207) — the
    highest line a flood or surge left, flagged and surveyed by USGS field
    crews in the weeks after the water falls: a point at a stated elevation
    and datum, with a quality class giving the survey uncertainty (±0.05 ft
    to over 0.40 ft). A point, not an extent or a depth. A riverine mark is
    linked to the NWS flood warning whose polygon contains it; a hurricane
    deployment ("2024 Helene") to the storm of that name in that season.

The two are never blended: a ring is not re-drawn to match a survey, and an
observed footprint is never used as a ring. Where both exist, the gap between
them is information — it is how the ring calibrations get checked. No
observed flood footprint is ingested yet (USGS STN high-water marks;
known-debt #137). Detail and endpoints: `docs/data-lineage.md` §1.12.

## Limitations

- **Not actuarial:** These scores are for situational awareness and preliminary screening. They do not replace professional actuarial assessment, rate filing, or regulatory compliance analysis.
- **No property exposure (Phases 1–4):** Scores reflect physical hazard only. Without ATTOM property data, we cannot estimate dollar losses, damage ratios, or property-specific vulnerability.
- **Regional granularity:** Some parameters use state or multi-state geography scopes. Point-specific hazard variation within a region is smoothed.
- **No climate adjustment:** every peril is scored on the unadjusted historical record (the wildfire 1.4× multiplier was retired 2026-09-04). Hurricane climate adjustment (Emanuel 2005) is planned but not implemented.
- **Historical bias:** Hurricane return periods are fitted to the 1950–2024 HRD landfall window (75 years; a segment with one major landfall, Mid-Atlantic-Northeast, carries a 75-year return period that is a small-count estimate), wildfire to 40 years of NIFC perimeters. Fire frequency projections carry the higher uncertainty.
- **Declaration frequency is state-level and program-biased:** FEMA declaration frequency (used where a peril-specific parameter is absent) is attributed by state, not point, because `historical_declarations` rows carry no coordinates. It also reflects the federal *declaration* process (political/damage thresholds), not raw event occurrence, and is conservative for flood/tornado since many such events are declared under "Severe Storm".

## Loss Estimation Methodology (v2, April 2026)

Calchis produces **modeled estimated insured losses** for active events. These are deterministic point estimates, not actuarial-grade probabilistic outputs.

### Three-Module Pipeline

```
Module 1: Hazard Intensity → Module 2: Vulnerability (Damage Ratio) → Module 3: Financial (Dollar Loss)
```

**Module 1 — Hazard Intensity by Zone:**
- Zones 1–2: structural damage zones. Intensity attenuates from peak based on peril physics.
- Zones 3–4: situational awareness only. Zero structural damage computed. Population and infrastructure exposure shown for context.
- Earthquake: MMI attenuates ~1.5 units per zone step (Atkinson & Wald 2007).
- Hurricane: Wind speed at 70% of peak in zone 2 (outer eyewall approximation).
- Flood: Full gauge depth in zone 1; 40% in zone 2 (fringe floodplain). Corridor correction applied — only structures within ~2km of watercourse counted.
- Wildfire: Zone 1 = fire perimeter (NIFC). Zone 2 = 3km ember zone. Zones 3–4 = smoke/AQ (zero structural damage).

**Module 2 — Vulnerability (FEMA Hazus Damage Functions):**
- Earthquake: Hazus v6.1 W1 damage state thresholds interpolated by MMI.
- Hurricane (model 2.3): the Hazus 5.1 hurricane wind loss functions as tabulated by NHERI SimCenter DLML (BSD-3), one representative unmitigated building per construction type, over the 3-second peak gust. The stochastic runner reads each location's Hazus land-cover terrain roughness (Hazus TM 5.1 Tables 4-13/4-14 over the tract's NLCD 2021 fractions); a live event's zones have no location, so they read open terrain (0.03 m), the highest-loss curve for houses. Known debt #131.
- Flood: USACE EGM 01-03 depth-damage functions (1-story, no basement).
- Wildfire: WUI structure loss rate model (25% base loss rate inside perimeter; USFS/NIFC).
- Construction mix: FEMA Hazus inventory distribution (55% W1, 8% MH, 12% RM1, etc.)

**Module 3 — Financial:**
- Structure replacement value: RS Means 2024 regional $/sqft × 1,800 sqft median (Census ACS 2023).
- Content value: 50% of structure value (residential standard).
- Structure counts: Census ACS 2022 tract-level housing units with TIGERweb land area (preferred), or state-average density fallback.
- Flood: corridor correction reduces circular zone area to estimated floodplain width (~2–3km).
- Wildfire: WUI concentration factor for rural areas (housing clustered, not uniform).

**Minimum Severity Thresholds:**
No dollar loss is computed below these thresholds (structural damage is negligible):
- Earthquake: M < 4.5
- Hurricane: < 50 kt sustained winds
- Flood: severity < 4.0

### Limitations of Loss Estimates

- **Pre-ATTOM:** Structure values are regional averages, not property-specific. Individual property variation is not captured.
- **Circular rings:** Earthquake and hurricane zones use circular approximations. Real hazard footprints are asymmetric (ShakeMap polygons used for earthquake when available).
- **Flood geometry:** When NWS alert polygons are available, zone 1 uses the actual polygon. Otherwise, circular fallback with corridor correction.
- **Sampling uncertainty is quoted; model uncertainty is not (model 2.0):** every OEP, AEP and TVaR point the EP curve quotes carries a 90% bootstrap band over the simulated years (`ci90`, 200 resamples seeded from the event set so it reproduces) and the number of simulated years beyond its return period (`tailYears`); a return period with fewer than 2 such years is not quoted, so a 1,000-year run stops at 1-in-500 and the 10,000-season single-site run at 1-in-1,000. The band is the spread the same model would show on another run of the same length. It is not the model's uncertainty: the hazard rates, exposure and vulnerability curves are treated as known and no secondary uncertainty is applied (known debt #114). Modelled losses are rounded to 3 significant figures. Every event set is drawn from one seeded generator (`lib/modeling/stochastic/rng.ts`) and its id carries its period and seed (`hur-set-v2-1000y-7`), which the response returns so a figure can be reproduced.
- **The earthquake portfolio run is as long as the book affords (model 2.2):** `/api/v1/portfolio/ep-curve` simulates 5,000 years of earthquakes for books up to 1,000 locations, 2,000 years up to 2,500, 1,000 years up to 5,000 and 500 years above that (`lib/modeling/stochastic/earthquake-years.ts`), so the run stays inside the request budget; every rung is a length that was measured, and the response quotes the AAL spread observed across 8 seeds at that length (`aal_seed_spread`: 1.18 at 5,000 years, 1.57 at 2,000, 1.79 at 1,000, 2.47 at 500, on a 200-location western book at model 2.1 rates). The runner skips an event that cannot reach the book's bounding box before scanning locations, which made the longer runs affordable without changing any figure. Earthquake EP remains Enterprise-only for the level reason in the table above (known debt #79).
- **Hurricane vulnerability is one representative Hazus building unless the row says otherwise, read at local terrain (model 2.3; attributes since 2026-09-25):** the curve for each construction type is the Hazus wind building-loss function for an unmitigated building with the weakest roof-deck nailing and roof-to-wall connection Hazus tabulates (W1: Hazus WSF1, gable roof, 6d nails, toe-nailed, no shutters, no secondary water resistance), chosen by rule because no sourced building-attribute mix is available; better-built stock without attributes is overstated. A single-family wood row that carries its OED `RoofGeometry`, `RoofAnchorage` and `WindowProtection` codes, and the Calchis `FlexiLocSecondaryWaterResistance` / `FlexiLocRoofDeckNailing` columns (migration 175; `lib/modeling/oed-wind-attributes.ts` maps the codes), selects its own configuration among the 32 Hazus tabulates for W.SF.1 — gable 2/8 or hip 3/9; ties, clips, wraps or structural connection 1/6/7/8/9 as strapped and nails or gravity 2/4 as toe-nailed; shutters 2/3 — and the EP response counts the rows that did (`locations_with_wind_attributes`). OED `RoofDeckAttachment` is stored and written back but names the fastener, not the 6d/8d nail size, so it selects nothing; an axis the row does not carry takes the representative value, so no number moves for a row without attributes and the model version did not change. It is read at the Hazus terrain roughness of the location's Census tract in the 20 Atlantic and Gulf states Hazus assigns roughness for, and at open terrain elsewhere and in Hawaii. Since model 2.4 the live-event path (event exposure, ICS-209) reads it at the roughness of each ring's sampled Census tracts, averaging the damage ratio weighted by housing density; a ring with no measured point reads open terrain. Against Hurricane Milton (2024) the model books $34.4bn, 1.38× the reported $25bn insured loss and inside the ÷2 to ×2 band (it booked $107.0bn, 4.28×, on the retired screening table); every choice was fixed before that run. It is not validated by the pass: the figure is residential wind alone and sits level with NCEI's $34.3bn all-cause estimate, so it probably still reads high, and loss figures say so. Read at open terrain everywhere, as a live event was before model 2.4, the same storm books about 3.8×. Known debt #131. Since 2026-09-24 the single-family wood curve can also be selected by a row's own attributes — roof shape, secondary water resistance, roof-deck attachment, roof-to-wall connection and shutters, the 32-configuration Hazus grid — which is Hazus's own route to a design-era effect; a row that carries none reads the representative curve, and no upload field supplies them yet (known debt #131).
- **Secondary uncertainty, earthquake only (model 3.4):** for every earthquake event and location the runner draws the damage state from the Hazus 6.1 equivalent-PGA fragility probabilities at the site intensity (`sampleEarthquakeDamageRatio` in `lib/modeling/vulnerability-functions.ts`), keyed by event id and site through the same hash the ground-motion variability uses, so the loss carries Hazus's dispersion as a realisation rather than an expectation. The expected ratio is unchanged; the OEP tail widens. Hurricane and wildfire keep point damage ratios because no sourced spread is held for them, and `uncertainty.secondary` on every EP response says which applied (known debt #114).
- **Stochastic outputs carry their limits:** EP curves and AAL come from `lib/modeling/stochastic/`; the limits (ground-up by default with gross applying only OED site terms, contents only as supplied and through a per-peril contents function, W1 default with unknown construction codes refused, the sampling-only band and 3-figure rounding, no secondary uncertainty, no demand surge, event independence, the earthquake and single-site wildfire refusals) are listed in `lib/modeling/model-limits.ts`, rendered at `/methodology#limits`, and returned as `notes` on every EP-curve response. The version history is `lib/modeling/model-changelog.ts`, rendered at `/methodology#changelog`.

**All loss estimates carry the disclaimer:** "Modeled estimates — not observed losses. Not for actuarial, regulatory, or underwriting use."

## References

1. Petersen, M.D., et al. (2024). "The 2023 US 50-State National Seismic Hazard Model: Overview and implications." Earthquake Spectra. DOI: 10.1177/87552930231215428.
2. Atkinson, G.M. & Wald, D.J. (2007). "Did You Feel It? Intensity Data: A Surprisingly Good Measure of Earthquake Ground Motion." Seismological Research Letters 78(3), 362-368.
3. FEMA (2024). Hazus Earthquake Model Technical Manual v6.1. Tables 5-19, 5-21 (W1 fragility).
4. FEMA (2022). Hazus Hurricane Model Technical Manual v5.1 (July 2022). §4.4 terrain roughness, Tables 4-13 and 4-14 (z0 by NLCD class). The building-loss curves themselves (huDamLossFun) are used as tabulated by NHERI SimCenter, Damage and Loss Model Library, commit 662999759cc59bf9cfc099d4ff5a5814a7bf01c8, `Hazus v5.1 original/loss_repair.csv` (BSD-3 for SimCenter's work; the FEMA data carries no explicit license). Until model 2.3 the Calchis ratios were a screening-level tabulation shaped to those curves.
5. FEMA (2023). Hazus Flood Model Technical Manual v5.1. Chapter 14 depth-damage functions, cross-referenced with USACE EGM 01-03.
6. USACE (2000). Economic Guidance Memorandum 01-03. Table 1: One Story, No Basement depth-damage curve.
7. Kaplan, J. & DeMaria, M. (1995, 2001). "A Simple Empirical Model for Reducing Tropical Cyclone Intensity After Landfall." J. Applied Meteorology 34/40.
8. NOAA NHC. State Hurricane Strikes (1851–2004). https://www.nhc.noaa.gov/paststate.shtml
9. Knapp, K.R., et al. (2010). "The International Best Track Archive for Climate Stewardship (IBTrACS)." BAMS.
10. Abatzoglou, J.T. & Williams, A.P. (2016). "Impact of anthropogenic climate change on wildfire across western US forests." PNAS 113(42), 11770-11775. DOI: 10.1073/pnas.1607171113.
11. Westerling, A.L., et al. (2006). "Warming and Earlier Spring Increase Western US Forest Wildfire Activity." Science 313.
12. PNAS (2025). Rising wildfire destruction rates in the WUI, 2002–2022 (10% → 32%).
13. Brooks, H.E., et al. (2003). "Climatological Estimates of Local Daily Tornado Probability for the United States." Weather and Forecasting 18, 626-640.
14. NOAA SPC Storm Events Database. Tornado and hail CSVs 2000–2024. https://www.spc.noaa.gov/wcm/
15. Agee, E., et al. (2016). "Spatial redistribution of US tornado activity." Nature. Eastward shift of tornado activity.
16. Allen, J.T., et al. (2020). "Understanding Hail in the Earth System." Reviews of Geophysics.
17. Zscheischler, J., et al. (2020). "A typology of compound weather and climate events." Nature Reviews Earth & Environment 1, 333-347.
18. USGS Open-File Report 2014-1091: Gutenberg-Richter Parameters for US Seismic Zones.
19. FEMA NFIP Fact Sheet (May 2023). Average claim >$66,000 for 2016–2022.
20. GAO-04-401T, Pew (2016), DHS OIG-20-68. NFIP repetitive loss properties (25–38% of claim payments).
21. IBHS (2020). Hail Research Program Technical Reports 2012–2020.
22. Vickery, P.J., et al. (2006). "Statistical Models of Holland Pressure Profile Parameter and Radius to Maximum Winds." BAMS.
23. NWCG Spotting Fire Behavior documentation; CSIRO bushfire research. Ember transport distances up to 30km.
24. USGS ComCat Earthquake Catalog. https://earthquake.usgs.gov/earthquakes/search/
