Skip to contentCALCHIS

All hazard scores are deterministic. Calchis uses no LLM-generated content in any score, trigger evaluation, or consequence zone calculation. Every result is reproducible from cited public data under known licences and the parameters disclosed below.

Hazard Scoring Methodology

Model version 2.5 · Effective September 24, 2026 · what changed

Calchis produces hazard scores for 7 perils across the United States. Every score returns its component breakdown and links to this methodology. Parameters cite their sources where established; we openly track those still being verified. No black boxes. A climate trend adjustment is applied to one component of one peril — California wildfire frequency — and is disclosed in the Wildfire section below rather than claimed across the model.

Scoring Architecture

Each hazard score (0–10) is composed of 2–4 sub-components. All components are returned in the score_components field of every API response. The chain is always traceable: score → parameter → source publication.

Every component carries a role. A hazard component is a measured or fitted property of the physical hazard at the site — a rate, a return period, a distance, a source zone. A proxy component is a regional constant standing in for the vulnerability or consequence of the building stock, not the hazard. Only hazard components enter the headline score:

hazard_score = 10 × Σ hazard / Σ hazard max, capped at 10 and rounded to one decimal.

The proxies are summed separately and returned as proxy_score, named for what they are (for example “Roof vulnerability proxy — not part of the hazard score”). Until model 2.0 the headline was an unweighted sum of every component, so half of a tornado score was manufactured- housing share and nocturnal fraction, half of a hail score was roof stock, and 30% of a wildfire score was an unsourced fuel constant. Those rows are marked in the tables below.

What a 7.3 estimates. The score is an ordinal index of physical-hazard intensity likelihood for the peril at the site. It is not a probability, a loss ratio, or a return period — the component labels carry those. The display bands (8.5 extreme, 6.5 high, 4.0 moderate) are presentation thresholds chosen for a readable colour scale, not calibrated to any loss quantity.

Each component's curve from input to points is a pure function in lib/modeling/hazard-curves.ts; docs/hazard-score-calibration.md is generated from those functions and the seeded constants, and a test holds the document byte-equal to the code, so the published calibration figures are the figures the scorer produces.

A score of 0 with an empty lookup_failed list means the peril is not relevant at the site. A score of 0 with entries in lookup_failed means a required input could not be fetched; the product shows it as “—” / NO DATA, never as a zero.

These are hazard scores — physical intensity likelihood only. They do not include property exposure or vulnerability; the vulnerability proxies are reported beside the score, not inside it. We never call a hazard score a risk score.

Earthquake (0–10)

ComponentMax WeightSource
Seismic source zone activity3.5Gutenberg-Richter a/b per source zone: b from USGS NSHM 2023, a fitted to the declustered USGS catalogue 1980–2024
Proximity to mapped faults3.0USGS Quaternary Fault and Fold Database
Historical damage potentialproxy — not in score3.5FEMA Hazus v6.1 W1 damage-state threshold — a construction-vulnerability constant, reported under proxy_score

Seismic activity uses the Gutenberg-Richter relation: log₁₀(N) = a - b·M, where N is the annual rate of earthquakes ≥ magnitude M. The a and b values are regionally calibrated from the USGS National Seismic Hazard Model (NSHM 2023, Petersen et al., Bulletin of the Seismological Society of America, 2024).

The Intensity Prediction Equation uses Atkinson & Wald (2007), Seismological Research Letters Vol. 78 No. 3, validated against >200,000 "Did You Feel It?" reports: MMI = 12.27 + 2.27(M-6) + 0.13(M-6)² - 1.30·log₁₀(R) - 0.00071·R + 1.95·B - 0.577·M·log₁₀(R)

Hurricane (0–10)

ComponentMax WeightSource
CAT3+ landfall return period3.5NOAA HRD continental-US landfall catalogue 1950–2024, fitted per coastal segment
Coastal proximity3.0Haversine distance to NOAA shoreline
Storm surge exposure3.5NOAA NHC SLOSH model; elevation data

Return periods are per coastal segment — Texas 10.7 yr, Louisiana-Mississippi 12.5, Gulf-Panhandle 7.5, Florida-Gulf 10.7, Florida-Atlantic 15, Southeast-Atlantic 10.7, Mid-Atlantic-Northeast 75 — each the 1950–2024 window divided by that segment's CAT3+ landfall count in the NOAA HRD catalogue. A site within 250 km of a segment's coastline reads that segment; until model 2.1 all of Florida read a single Miami-radius value, so the Panhandle scored on South Florida's return period. Wind decay after landfall follows Kaplan & DeMaria (1995): V(t) = Vb + (V₀ - Vb)·exp(-α·t). Storm surge estimates use NOAA NHC SLOSH model composites.

Wildfire (0–10)

ComponentMax WeightSource
Large fire frequency (regional fit)3.5NIFC perimeters 1984–2024, fitted per region
WUI exposure3.5USFS WUI mapping; Syphard et al. (2017)
Vegetation/fuel loadproxy — not in score3.0Unsourced regional constant, reported under proxy_score; flammability-weighted NLCD/LANDFIRE replacement is known debt #115

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 stochastic wildfire event set samples from the same regions and the same distribution, so the score and the modelled loss agree on how often a large fire happens. A state outside the four regions is scored from the FEMA fire-declaration record, or from the regional default where there is none.

No climate adjustment. Until 2026-09-04 the California rate carried a 1.4× multiplier attributed to Abatzoglou & Williams (2016). That paper reports burned area roughly doubling with anthropogenic warming; 1.4× was an inference from it, not a fitted quantity, and the event set never applied it. The multiplier was retired rather than kept as a number no source states. Every wildfire score now rests on the unadjusted historical record, which understates a warming trend, and each score's climate_adjusted flag is false. The Southern US rate is understated by roughly 2–4× against the MTBS record because the NIFC perimeter set thins south of the Rockies (known debt #80).

Flood (0–10)

ComponentMax WeightSource
FEMA flood zone4.0FEMA National Flood Hazard Layer
Elevation relative to flood level3.0USGS NED / 3DEP elevation data
NFIP historical loss density3.0FEMA NFIP claims 1978–2024

Depth-damage functions from FEMA Hazus Flood Model v5.1. These are the US standard used by USACE, FEMA, and all major catastrophe modelers.

Hail & Tornado

Hail scoring uses NOAA Storm Events frequency analysis; the hail damage curve is a piecewise line informed by published IBHS (Insurance Institute for Business & Home Safety) roof damage research, with estimated anchor points — Calchis holds no IBHS test data or PCS claims data. The hail score itself is the significant-hail event density alone; the regional roof-stock constant is a proxy reported under proxy_score. Tornado scoring uses the EF2+ frequency climatology (Brooks et al. 2003, Weather and Forecasting; NOAA SPC 1950–2024 records); the manufactured-housing share and the Southeast nocturnal fraction are consequence proxies, also reported beside the score rather than in it.

Consequence Zone Generation

When an event activates, Calchis generates four concentric consequence zones (Catastrophic, Severe, Moderate, Affected) to estimate the geographic extent of impact. Zone generation varies by peril:

Earthquake

Primary: USGS ShakeMap MMI contours (per-event, when available from USGS within ~20 minutes of event). Fallback: magnitude-scaled radii using attenuation relations from Atkinson & Wald (2007).

Hurricane

Primary: NHC forecast wind radii (34kt/50kt/64kt — knots, nautical miles per hour) from the official advisory, producing asymmetric zones reflecting actual wind field geometry. Fallback: Saffir-Simpson category-based radii (used only when NHC wind radii data is unavailable).

Wildfire

Primary: NIFC official fire perimeter polygon (per-event, updated twice daily). Outer evacuation and smoke zones are derived from acreage-based buffer distances.

Flood

Three tiers, and each ring says which it is in parameters.methodology. For a flood warning with an NWS polygon, Zone 1 is the modeled inundation inside that polygon: the National Water Center’s National Water Model analysis extent, the polygons per stream reach that intersect the warning, simplified to about 30 m and stamped with the analysis time and the peak streamflow. (The NWC’s CREST FLASH layer is the better fit for flash flooding and is wired; it is not read until it answers in time — it timed out at 60 s on every query when this was built.) The NWS polygon is then Zone 2, the official boundary. Where the model does not cover the reach, or the read fails, the NWS polygon is the only zone — nothing is drawn inside it. A flood watch is a forecast and never gets water drawn, and a coastal flood warning is tidal, not riverine, so the river model is not drawn inside it. With no NWS polygon at all, the zones are circles from the alert centroid scaled by the severity label, and the ring says so.

The NWC labels both inundation layers EXPERIMENTAL, and so does every ring built from them (parameters.experimental). It is where a model puts water at its last analysis, not an observation, and it can trail the river by an hour. The circular fallback remains severity arithmetic: it does not account for terrain, river geometry or floodplain width.

Severe Weather

Uses NWS Storm Prediction Center polygon geometries directly (tornado/severe thunderstorm watch/warning areas).

Exposure Estimation

Population and infrastructure exposure within each zone is estimated using state-level density data (US Census Bureau 2020 for population, HIFLD archive for infrastructure, Census AHS 2021 for housing density). When available, census-tract-level sampling via the FCC Area API and Census Bureau ACS 5-Year 2022 provides more accurate local density. All exposure figures are estimates and are labeled as such.

B-Deck Reconciliation

Wind Radii Source

Calchis uses the National Hurricane Center's advisory text product as the primary source for tropical cyclone wind radii. Advisory text products are issued by NHC forecasters and represent the official wind field estimate at the time of issuance. Once published, advisory values are immutable — they are the historical record of what was communicated to the public at that moment.

What the B-Deck Is

The NHC best-track file (b-deck, ATCF format) is a post-analysis dataset. After each advisory cycle, NHC analysts may revise wind radii values based on additional observations, satellite imagery, or reconnaissance data that arrived after the advisory was issued. The b-deck represents the NHC's best estimate of the storm's wind field at each analysis time, incorporating all available data.

How Calchis Computes the Delta

When a b-deck entry exists at the exact same timestamp as an advisory's analysis time, Calchis computes a per-quadrant delta for each wind radii threshold (34-knot, 50-knot, 64-knot). The delta is defined as:

delta = b-deck value minus advisory value

A positive delta means the b-deck revised the quadrant radius upward relative to what the advisory reported. A negative delta means the b-deck revised it downward.

Deltas are computed only on exact timestamp matches. Regular advisories and best-track entries follow schedules that usually differ by a few hours, so for most advisories no best-track entry exists at the same hour and no delta is produced. The timestamps align in specific cases — for example, a special advisory issued on a synoptic hour, or an intense storm whose best track is analyzed at more frequent intervals. When they do not align, no delta is computed: comparing an advisory at one hour against a best-track entry at a different hour conflates source differences with the storm's own evolution and is meteorologically invalid.

What Deltas Represent

Deltas are normal post-analysis revisions. They reflect the routine process by which NHC refines its wind field estimates as additional data becomes available. A non-zero delta is not an error in either source. It is the expected outcome of a system where operational advisories are issued under time pressure and best-track analysis incorporates data that arrived later.

Calchis provides wind radii and delta values for situational awareness only. The National Hurricane Center is the authoritative source for all tropical cyclone wind field data. Users requiring official wind radii for operational, contractual, or regulatory purposes should consult NHC products directly.

Data Provenance

Every ingested record stores: source, source_url, ingested_at, and confidence_score. Every model parameter stores source_description with a full publication citation, validation_note, and effective_date. Each parameter is keyed by peril and region (region_system, region_code) and resolved along one chain: the state, then the state's model region where one is mapped, then the national row. The response's provenance lists which region answered each name, so a Colorado score that read a Mountain-region value says so.

The FEMA declaration record and every NHC-derived hurricane input are United States sources. They exist only for a covered US state and are absent, not borrowed from a neighbour, anywhere else.

Full data lineage documentation is available at /docs/data-lineage.md in the repository.

Severity Forecast — Validation Record

Active hurricanes, wildfires, floods and earthquakes carry an indicative severity forecast: a published model plus the event’s own trend, marked low confidence. The table below is the model run against seven historical events with the clock wound back to the hour shown, on the observations a feed would have carried at that hour, transcribed from the sources beside each case at six-hour resolution and rounded. It is rendered from the same code that produces the live forecast, and a test pins each verdict, so a change to the model must change this record.

The peak is judged in the model’s own units against the tolerance shown. The probabilities are reported, not judged — one event cannot grade a probability — so a reader can see whether the model leaned the right way. Failures stay in the table.

Event · as ofPredicted peakActualToleranceVerdictP(worse)P(major)Escalated
Hurricane Milton, 7 Oct 2024 06Z — rapid intensification in progress
2024-10-07 06:00 UTC · NHC Tropical Cyclone Report AL142024 (Milton), best track
Peak 155 kt / 897 mb at ~2030 UTC 7 Oct; landfall Siesta Key 10 Oct at 105 kt.
168 kt155 kt±20pass0.550.23yes
Hurricane Ian, 28 Sep 2022 00Z — after Cuba, before the Gulf RI
2022-09-28 00:00 UTC · NHC Tropical Cyclone Report AL092022 (Ian), best track
Peak 140 kt / 936 mb at 1200 UTC 28 Sep; landfall Cayo Costa at 130 kt.
110 kt140 kt±20fail0.230.11yes
Lahaina fire, Maui, 9 Aug 2023 16Z — WUI fire, small in acres
2023-08-09 16:00 UTC · Maui County / Hawaii DLNR incident updates, Aug 2023; NIFC ICS-209
Held at 2,170 acres; 90% contained by 15 Aug. The harm was in the WUI, not the acreage.
5,290 acres2,170 acres±2,170fail0.450.02no
Dixie Fire, 23 Jul 2021 — ten days in, 143k acres, 18% contained
2021-07-23 18:00 UTC · CAL FIRE incident page, Dixie Fire; NIFC ICS-209 daily reports, Jul 2021
Final 963,309 acres; 100% contained 25 Oct 2021. Daily ICS-209 figures, so one snapshot is one day, not six hours.
2,519,300 acres963,309 acres±481,655fail0.750.02yes
Noto Peninsula earthquake, 1 Jan 2024 — M7.5 outside California
2024-01-01 13:10 UTC · USGS event us7000lp0n; JMA aftershock bulletin, Jan 2024
Largest aftershock M6.1–6.2 within the first hour; the mainshock stayed the peak. Bath's Law expected M6.3.
7.5 M7.5 M±0.5pass0.080.03no
Kahramanmaraş earthquake, 6 Feb 2023 — M7.8 with an M7.5 nine hours later
2023-02-06 04:17 UTC · USGS events us6000jllz and us6000jlqa
A second M7.5 mainshock (Elbistan) at 10:24 UTC — a doublet, 0.3 below the first. Bath's Law expected M6.6.
7.8 M7.8 M±0.5pass0.080.03yes
French Broad River at Asheville, Helene, 27 Sep 2024 06Z — rising fast
2024-09-27 06:00 UTC · USGS 03451500 French Broad River at Asheville, NC; NWS AHPS gauge ASVN7
Record crest 24.67 ft on 27 Sep (previous record 23.1 ft, 1916). Stages before the crest rounded to the foot from the hydrograph.
22.3 ft24.7 ft±3.0pass0.800.25yes

What the failures say. Ian: with a flat wind trend and no NHC forecast in the feed, the model has no rapid-intensification skill of its own; live, the advisory’s forecast peak is carried and used. Lahaina: growth is extrapolated from acreage, and a fire whose harm was in the wildland–urban interface is not measured by acres. Dixie: growth is extrapolated linearly with no landscape ceiling, so a mega-fire ten days in is forecast at 2.6 times its final size — the direction was right, the magnitude was not. The two earthquakes pass because the mainshock stayed the peak; Bath’s Law put the largest aftershock at M6.3 for Noto (M6.1–6.2 observed) and M6.6 for Kahramanmaraş, where an M7.5 followed nine hours later — a doublet, which the model gave three percent.

What This Model Does Not Do

The limits below travel with the numbers: the loss list is returned as notes on every EP-curve response, and the hazard list applies to every score. A figure read without them is being read wrong.

Loss estimates and EP curves

  • Every loss response states its perspective. Ground-up is the default and applies no policy terms. Gross applies only the OED site terms on the location row (LocDed6All by type 0 amount / 1 fraction of TIV / 2 fraction of loss; LocLimit6All by type 0 amount / 1 fraction of TIV) and counts the rows that carried none; per-coverage terms, minimum/maximum deductibles, policy layers and reinsurance are not applied (known debt #113).
  • Contents are modelled only when a contents value is supplied; a location with a building value and no contents value is modelled with no contents, never with a share of the building value. Contents damage uses a contents function: earthquake at the Hazus contents-to-building ratio 0.50 by damage state (verified), hurricane at a Calchis estimate of 0.85 (known debt #113), wildfire at 1.0.
  • Hurricane vulnerability is the Hazus wind building-loss curve for ONE representative building per construction type (no shutters, no secondary water resistance, weakest tabulated roof-deck nailing and roof-to-wall connection), as tabulated by NHERI SimCenter DLML; the Hazus building-attribute mix is not modeled, so better-built or mitigated stock is overstated. The curve is read at the Hazus land-cover terrain roughness of the location's Census tract in the 20 Atlantic and Gulf states the Hazus manual covers, and at open terrain (the highest-loss terrain for houses) everywhere else, in Hawaii and for live events. Against Hurricane Milton (2024) the model books 1.4× the reported insured loss, inside the ÷2 to ×2 benchmark band, for a residential-wind-only figure that should sit below it.
  • Vulnerability uses Hazus curves; a location with no construction type is scored as W1 wood frame, an OED code or descriptor is coerced to the nearest of nine Hazus classes and the response counts each, and a construction code the model cannot recognize makes the location unmodelled rather than W1.
  • Every quoted return-period loss carries a 90% bootstrap band over the simulated years and the number of simulated years beyond that return period. The band measures sampling error in the simulation only — it says nothing about whether the hazard, exposure or vulnerability inputs are right — and a return period the run cannot support with at least 2 tail years is not quoted (a 1,000-year run stops at 1-in-500). Loss figures are rounded to 3 significant figures; a longer number would claim precision the model does not have.
  • No secondary uncertainty: the damage ratio at a given intensity is a point value, not a distribution (known debt #114).
  • No demand surge: post-event inflation of repair costs is not modelled.
  • Events are sampled independently; clustering between events and between years is not modelled. Earthquake event counts are one Poisson rate per seismic source zone, so activity is uniform within a zone and zones without a usable fit (Eastern US, Central US) contribute almost no events.
  • Wildfire frequency is a fitted large-fire rate per region with no climate trend; the Southern US rate (22 fires ≥10,000 acres a year) is roughly 2–4× below the MTBS record because the NIFC perimeter set thins south of the Rockies (known debt #80).
  • Earthquake loss is refused below Enterprise: events are placed inside 0.25-degree seismicity cells rather than on fault traces, and against FEMA P-366's published California loss ratio the model books about a third of the expected loss. The portfolio run is simulated for the longest measured length its book size affords (5,000 years up to 1,000 locations) and quotes the seed spread at that length (known debt #79).
  • Single-site wildfire loss is refused; the wildfire event set converges at the portfolio level only (known debt #80).
  • Estimates are in untrended USD at the date of generation and are not observed losses.

Hazard scores

  • Scores measure physical hazard at a point; they carry no property value, occupancy or policy information. The score is 10 × the hazard components' points over their weight: an ordinal index for ranking locations, not a probability or a loss, and its severity bands (8.5 / 6.5 / 4.0) are presentation thresholds rather than calibrated cut-offs.
  • The vulnerability and consequence stand-ins the scorer computes — manufactured-housing density, the nocturnal tornado fraction, regional roof type, the Hazus W1 damage threshold and the regional fuel-load constant — are reported under proxy_score and excluded from the score. The fuel-load table is an unsourced regional constant; its replacement with LANDFIRE fuel classes is open.
  • Some frequency parameters are state or multi-state in scope, so hazard variation inside a region is smoothed.
  • No climate adjustment is applied to any peril: the 1.4× California wildfire multiplier was retired on 2026-09-04 because it was an inference from Abatzoglou & Williams (2016), not a fitted quantity, and the event set never applied it. Frequencies are the historical record, which understates a warming trend.
  • Return periods rest on 170+ years of hurricane record but roughly 40 years of wildfire record; fire frequency carries the wider uncertainty.
  • FEMA declaration frequency, used where a peril-specific parameter is absent, is attributed by state and reflects the declaration process rather than raw event occurrence.
  • Coverage is the United States; a location outside it is refused rather than scored.

Model Changes

Every score, cache entry and export carries the model version that produced it. Two different answers for the same address never share a label; each entry below changed a number somewhere.

  1. 2.5 · September 24, 2026Earthquake damage from the Hazus 6.1 equivalent-PGA fragilities and repair-cost ratios; the typed damage table retired

    • Earthquake building damage is computed the way Hazus computes it: the intensity is read as peak ground acceleration through the Worden et al. (2012) relation, each damage state's probability comes from its lognormal fragility (Hazus 6.1 equivalent-PGA medians and dispersions as tabulated by NHERI SimCenter DLML, BSD-3, commit 192d280), and the mean loss ratio is the sum of state probabilities times the repair-cost ratio for that state (slight 2%, moderate 10%, extensive 44.7% for single-family, complete 100%). The typed table of approximate means by MMI, seeded by migration 083, is retired and its rows superseded by migration 170.
    • The seismic design level selects the fragility (High-, Moderate-, Low- or Pre-Code from the year built; unknown reads Low-Code) instead of scaling a curve by an unsourced multiplier, which is retired.
    • For light wood frame at Low-Code the new curve reads 0.002 at MMI 6, 0.023 at 7, 0.13 at 8, 0.49 at 9 and 0.90 at 10, against 0.02 / 0.08 / 0.20 / 0.45 / 0.70 before: flatter below MMI 8, steeper above it. Hazus ranks light wood frame as the best-performing common type and steel light frame the worst; the retired table had concrete and steel frames outperforming wood.
    • Held to the USGS NSHM 2023 hazard at ten California cities, the curve now books about 1,200 $ per $M against FEMA P-366's 808.5 (inside the ÷2 to ×2 band; it booked 2,367 before). In the stochastic set the same portfolio moves from 295 to about 95 $ per $M, 0.12x P-366, because the event set delivers about an eighth of the USGS hazard at the cities (known-debt #79, the hazard half, still open). Los Angeles wood frame at $10M books about 0.004% of value at 500 simulated years, against 0.031% before. Earthquake EP curves stay withheld below Enterprise.
  2. 2.4 · September 15, 2026Live-event hurricane loss (event exposure, ICS-209) reads the Hazus curves at sampled local terrain instead of open terrain

    • Model 2.3 read the Hazus hurricane wind curves at each location's tract terrain roughness on the stochastic path, but the live-event exposure path scores consequence rings, not locations, so it read the open-terrain curve, the highest-loss curve for houses (about 3.8× Milton's insured loss against 1.4× with roughness). That path feeds the ICS-209 an emergency manager files (known debt #131, item 2).
    • Each ring already samples 16 points and resolves them to Census tracts to count its structures. The curve is now read at the Hazus land-cover roughness of each sample point that has one (lib/geo/terrain-roughness.ts), and the ring's damage ratio is the mean of those ratios weighted by each point's housing density (lib/exposure/zone-terrain.ts). The ratio is averaged, not the roughness, because the curves are nonlinear in z0. Points on water, outside the 20 Hazus roughness states or without land cover are dropped rather than read at the open-terrain default; a ring with no measured point reads open terrain, as before.
    • The exposure response carries terrain_roughness per ring (land points, measured points, housing-weighted mean z0). Live-event loss for a hurricane over rough suburban or treed terrain therefore falls, typically by half or more at hurricane-force gusts; over open coast it is unchanged. The live path has not been benchmarked separately against Milton; the stochastic benchmark (1.38×) is its closest comparator, and the loss disclosure says so.
  3. 2.3 · September 15, 2026Hurricane damage from the Hazus wind loss curves at each location's terrain roughness; Milton benchmark now inside its band

    • Hurricane building damage is read from the Hazus 5.1 hurricane wind loss functions as tabulated by NHERI SimCenter DLML (BSD-3; commit 6629997, loss_repair.csv sha256 6f023f82…), one representative Hazus wind building per construction type, replacing the Calchis screening-level table, which had no terrain term (credibility M-27). The representative building is chosen by rule, not weighted, because Calchis holds no sourced building-attribute mix: no shutters, no secondary water resistance, the weakest roof-deck nailing and roof-to-wall connection Hazus tabulates, gable roof, no garage. For W1 that is Hazus WSF1 wbID 6. The rule, the terrain derivation, the open-terrain default and the interpolation were fixed before the Milton benchmark was run on the curves.
    • The curve is read at the Hazus terrain roughness of the location's Census tract: Hazus Hurricane Technical Manual 5.1 Tables 4-13/4-14 (roughness per NLCD land-cover class, per state) applied to the tract's NLCD 2021 land-cover fractions, in the 20 Atlantic and Gulf states the manual covers (lib/geo/terrain-roughness.ts). Between the five tabulated roughness lengths the ratio is interpolated in ln(z0). Elsewhere, and in Hawaii, which the land-cover data does not cover, and on the live-event exposure path, which has no per-location roughness, the curve is read at open terrain (0.03 m), the highest-loss terrain for houses.
    • Hurricane Milton (2024) benchmark: $107.0bn (4.28× the reported $25bn insured loss, FAIL) became $34.4bn (1.38×), inside the ÷2 to ×2 band, and the check is delisted from KNOWN_FAILURES. Read at open terrain everywhere the same curves book $95.9bn, so terrain roughness carries the change. The pass is not a claim the figure is right: the model's figure is residential wind alone and sits level with NCEI's $34.3bn all-cause damage estimate, so loss figures still carry a reads-high note.
    • The Hazus curve is steeper than the retired table. For W1 in open terrain it reads lower below a 110 mph gust (0.018 against 0.05 at 90 mph) and higher above it (0.41 against 0.29 at 124 mph, 0.92 against 0.55 at 150 mph); at 0.35 m roughness it reads 0.15 at 124 mph. Hurricane loss on paths with no location, including live-event exposure and the ICS-209, therefore reads higher than under 2.2 for strong hurricanes and lower for weak ones. The Florida and code-era wind multipliers are unchanged and still apply on top of the curve; they are Calchis estimates with no located source (known debt #131).
  4. 2.2 · September 4, 2026Portfolio earthquake EP simulated for the longest measured length the book affords; seed spread quoted

    • The portfolio earthquake EP curve is simulated for 5,000 years 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), instead of 500 years for every book. Measured 2026-09-04 on the 200-location western book over 8 seeds at model 2.1 rates, the AAL spread across seeds is 2.47× at 500 years, 1.79× at 1,000, 1.57× at 2,000 and 1.18× at 5,000; the response quotes the spread for the length it ran (aal_seed_spread) beside simulatedYears. A book that lands on 500 years gets the figure it always did. Return periods beyond 1-in-250 become quotable for the longer runs under the 2.0 tail rule. The Enterprise gate on earthquake EP stays, on the level alone: against FEMA P-366 Table 3-1 the model books about a third of California's published loss ratio (known debt #79).
    • computeEPCurve tests each event against the book's bounding box, grown by the event's footprint, before the per-location scan. The earthquake set is about 178 events a year and 78% are in Alaska; on a CONUS book every one was tested against every location and rejected. The EP step is about six times cheaper (14.4s to 2.5s per million location-years on a developer box) and the curve is byte-identical — the box is never smaller than the per-location cut-off it fronts, and a test holds the two scans equal.
  5. 2.1 · September 4, 2026Hazard scores are hazard only; vulnerability proxies reported separately; hurricane return periods per coastal segment; calibration curves generated from code

    • Every score component carries a role. The headline score is now 10 × Σ points of the hazard components / Σ their weight, one decimal; the components that stand in for vulnerability or consequence — manufactured-housing density and the nocturnal fraction (tornado, formerly 5.0 of 10), roof type (hail, formerly 5.0 of 10), the Hazus W1 damage threshold (earthquake, formerly 3.5 of 10) and the regional fuel-load constant (wildfire, formerly 3.0 of 10) — are still computed and returned under proxy_score, named as what they are, and no longer move the number. A tornado score that read 6.6 in the Southeast on a measured rate of 3.3 plus 3.3 of housing-stock and night-time constants now reads 6.6 from the rate alone; a Plains hail score no longer shares its scale with a hand-typed roof table. Hurricane, flood and winter storm had no proxy term and rescale by nothing.
    • The CAT3+ landfall return period is read for the coastal segment nearest the site (within 250 km) before the state or regional row, from the same NOAA HRD 1950-2024 landfall catalogue the hurricane event set is fitted to: Gulf-Panhandle 7.5 yr, Texas 10.7, Florida-Gulf 10.7, Southeast-Atlantic 10.7, Louisiana-Mississippi 12.5, Florida-Atlantic 15.0, Mid-Atlantic-Northeast 75 (one landfall). The Florida row was the Miami-radius figure (9.0 yr) applied statewide, so Pensacola was scored on Miami's return period at about half its observed frequency.
    • The calibration curves are pure functions (lib/modeling/hazard-curves.ts) and docs/hazard-score-calibration.md is generated from them at the seeded constants, with a drift test; the documented anchors and the computed values could not disagree again. The severity bands (8.5 / 6.5 / 4.0) are stated as presentation thresholds, not calibrated cut-offs.
    • A score of 0 whose components include a failed lookup is returned with lookup_failed and rendered as no data; it used to read 0.0 LOW, the same as a settled zero. estimated_share is computed over the hazard components only, since the proxies no longer weigh on the number it describes.
  6. 2.0 · September 4, 2026Sampling uncertainty on every return-period loss; 3 significant figures; one random-number stream; event sets identified by seed and period

    • Every OEP, AEP and TVaR point the EP curve quotes carries a 90% bootstrap confidence band (200 resamples of the simulated years, seeded from the event set, the perspective and the period) and the number of simulated years beyond the return period. The 1-in-N is refused when fewer than 2 simulated years lie beyond it: a 1,000-year run quotes through 1-in-500, a 10,000-season site run through 1-in-1,000. Until now a 1-in-1,000 was quoted off the single largest year of a 1,000-year run with no statement of its uncertainty. The AAL carries the same band; /risk/loss and /portfolio/loss return the spread across their seeds and the widest band on each return period.
    • Modelled losses are rounded to 3 significant figures at the point of quotation. The figures were whole dollars, which read as precision the model does not have. The rounding is a presentation change; a figure that was $1,234,567 is now $1,230,000 and its band was already wider than that.
    • The three event-set generators draw from one shared random-number generator (lib/modeling/stochastic/rng.ts) instead of three copies of the same linear congruential generator. Earthquake and hurricane catalogues are unchanged event for event; the wildfire catalogue changes because its copy sampled the exponential as −ln(u) and the shared class samples −ln(1−u), so every wildfire loss figure moves within its own sampling band. An agreement test holds the recorded sequence.
    • An event set's id carries its simulated period and seed (hur-set-v2-10000y-7 for a single-site run, hur-set-v2-1000y-7 for a portfolio run); the two paths previously reported the same id for sets of different length. The seeded catalogue stores seed, simulated_years and that id (migration 138) and every loss response returns the seeds and ids behind it.
    • The vulnerability functions no longer return a standard deviation. Nothing consumed it and three of the four were invented as a fraction of the damage ratio; the model applies no secondary uncertainty and now says only that.
  7. 1.9 · September 4, 2026Contents modelled only as supplied and through a contents function; ground-up and gross perspectives; construction codes resolved or refused

    • The portfolio EP curve models contents from the location's ContentsTIV and nothing else. A row with a building value and no contents value is modelled with no contents; the response counts those rows. Until now every valued row carried an invented contents share of 50% of the building value (total insured value × 1.5), so every EP curve, AAL and return-period figure for a book of valued locations was overstated by up to 1.5× against the client's own schedule, and the two portfolio loss endpoints disagreed by that factor (/portfolio/loss never applied it).
    • Contents damage runs through a contents function instead of the building curve: the earthquake contents-to-building damage ratio is the seeded, verified Hazus value 0.50 (contents damage 1/5/25/50% by damage state over RES1 repair cost 2/10/50/100%; the deterministic path had used 0.80 as an estimate and the stochastic path 1.0), hurricane uses the estimated 0.85 the deterministic path already read, wildfire 1.0.
    • Every loss response states its perspective. /portfolio/ep-curve accepts perspective "ground_up" (default, unchanged arithmetic) or "gross", which applies the OED site deductible and limit stored on the location (LocDed6All/LocDedType6All, LocLimit6All/LocLimitType6All; migration 137) per event per location before aggregation, and reports how many rows carried terms. /portfolio/loss and /risk/loss state ground_up; /risk/loss accepts a contents value.
    • Construction codes are resolved rather than silently defaulted: an exact Hazus class, a Hazus sub-class, an OED 4-digit construction code or a plain-language descriptor maps to one of nine model building types and the response counts exact, coerced and defaulted rows; a code that matches none of those makes the location unmodelled (counted, with the unknown code) instead of being scored as W1 wood frame.
  8. 1.8 · September 4, 2026One Gutenberg-Richter fit per seismic source zone, one large-fire rate per wildfire region, Poisson years and a stable-continent intensity relation

    • The earthquake score, the earthquake return period and the stochastic earthquake set read the same Gutenberg-Richter a/b fit per seismic source zone (Pacific Coast, Intermountain West, Central US / New Madrid, Eastern US, Alaska, Hawaii; USGS ComCat 1980–2024, declustered), keyed by the location's state; the score previously used a hand-typed California fit at the state scope and the event set its own fit in code. Seismic activity outside the fitted zones falls back to the regional default and says so.
    • The stochastic earthquake set draws each zone's yearly event count from a Poisson distribution and stamps the year on every event; the loss runner assigns events to simulation years from that stamp. The old set fixed the count at round(rate × years) and hashed events into years, which understated year-to-year dispersion and so the exceedance-probability tail.
    • Central US and Eastern US events use Atkinson & Wald (2007)'s Central/Eastern US intensity relation, which decays more slowly with distance than the California relation the whole country used before; Alaska and Hawaii keep the California relation and the source zone table says so.
    • The wildfire score reads one fitted large-fire rate per region (NIFC perimeters 1984–2024, ≥10,000 acres via a truncated log-normal size distribution: California ≈14 a year against the 8.2 the score used before) and no climate multiplier — the 1.15 factor had no named source. The Southern US rate is understated by roughly 2–4× against MTBS and the region row discloses it.
    • The runner's wildfire vulnerability is anchored so a W1 structure inside a fire perimeter carries the 0.25 WUI structure-loss rate the parameter table names, instead of the 0.80 the zone table implied; every wildfire loss figure is scaled by 0.25/0.80.
  9. 1.7 · September 4, 2026Hurricane event set fitted to the HRD landfall record with a parametric wind field

    • Landfall frequency, intensity and coastal segment are fitted to NOAA/AOML HRD's US hurricane landfalls 1950–2024 (1.6 a year, 0.57 majors, a truncated-Weibull intensity by maximum likelihood); the v1 set made 2.4 hurricane landfalls a year and a Cat 5 every 3.8 years.
    • Each storm carries a Willoughby (2006) radius of maximum wind, a Vickery & Wadhera (2008) Holland B, a Holland (1980) profile with forward-motion asymmetry and Kaplan & DeMaria over-land decay; the footprint is solved from the profile instead of a fixed 65 km and a 1.5× cut-off, so single-site hurricane figures change everywhere on the coast.
    • CAT1+ and CAT2+ return periods divide the scoped CAT3+ parameter by the catalogue's own landfall-count ratios instead of 2.0 and 1.4; hurricane vulnerability now receives the state and an unknown year built as published rather than as 1990.
  10. 1.6 · September 2, 2026Wildfire event set placed on the burn record with fitted rates

    • 58,167 pre-2020 NIFC perimeters backfilled; the stochastic wildfire set now samples ignition from the observed 1984–2019 burn record instead of uniformly within a regional box.
    • Wildfire event rates and size distributions refitted to the same record; portfolio-level figures converge, single-site wildfire loss stays refused (known debt #80).
  11. 1.5 · September 2, 2026Earthquake rates fitted to the declustered USGS catalogue

    • Gutenberg–Richter a-values per seismic zone refitted to the declustered USGS catalogue; the Pacific Coast zone moved from 0.56 to roughly 3.5 M≥5 events per year, which is what its own comment had claimed.
    • Earthquake site loss remains refused below Enterprise because placement is still uniform within a zone (known debt #79).
  12. 1.4 · September 2, 2026Flood scored on freeboard against the FEMA base flood elevation

    • The flood component reads FEMA NFHL base flood elevation and scores freeboard (ground elevation minus BFE) rather than altitude alone.
    • NGVD29-datum BFEs are refused and the component falls back, because the datum offset is the size of the freeboard being resolved (known debt #96).
  13. 1.3 · September 1, 2026Ground elevation from USGS 3DEP

    • Storm surge reads site elevation from the USGS 3DEP elevation point query service; flood reads it below 10 ft.
    • A declared, never-populated wildfire risk class was removed from the score components.
  14. 1.2 · August 26, 2026Hail frequency from observed local density

    • Hail moved from a per-state rate to the observed density of SPC hail reports around the site; Dallas rose from 4.4 to 7.5 and Galveston fell from 4.4 to 3.4, so the label changed.
  15. 1.1 · August 26, 2026Location-aware scoring

    • Per-location inputs (fault distance, flood zone, wildland–urban interface, coastal distance) replace regional averages where the source resolves; each component reports whether it measured or fell back.
    • The version is stamped on every score, cache key and export; it was previously reported but not used.
  16. 1.0 · March 15, 2026Research-calibrated scoring engine

    • Six-peril hazard scores from USGS NSHM 2023, IBTrACS, NIFC, FEMA NFHL and NOAA SPC frequency data with published component weights.
    • Hazus-derived vulnerability functions and the three-module loss pipeline (hazard → vulnerability → financial).

Key References

  1. Petersen, M.D., et al. (2024). "The 2023 US National Seismic Hazard Model." BSSA.
  2. Atkinson, G.M. & Wald, D.J. (2007). Seismological Research Letters 78(3), 362-368.
  3. FEMA Hazus Earthquake Model Technical Manual v6.1 (2024). Earthquake damage: Hazus 6.1 equivalent-PGA structural fragilities and repair-cost ratios as tabulated by NHERI SimCenter DLML (BSD-3), one low-rise fragility per construction type, the design level from the year built; intensity read as peak ground acceleration through Worden et al. (2012), BSSA 102(1) (model 2.5).
  4. FEMA Hazus Hurricane Model Technical Manual v5.1 (2022), §4.4 terrain roughness. Hurricane damage: Hazus 5.1 hurricane wind loss functions as tabulated by NHERI SimCenter DLML (BSD-3), one representative unmitigated building per construction type, read at the location's Hazus land-cover terrain roughness where one is known and at open terrain otherwise (model 2.3).
  5. FEMA Hazus Flood Model Technical Manual v5.1 (2023).
  6. Kaplan, J. & DeMaria, M. (1995). J. Applied Meteorology.
  7. Knapp, K.R., et al. (2010). IBTrACS. BAMS.
  8. Abatzoglou, J.T. & Williams, A.P. (2016). PNAS 113(42). DOI: 10.1073/pnas.1607171113
  9. Brooks, H.E., et al. (2003). Weather and Forecasting 18.
  10. Zscheischler, J., et al. (2020). Nature Reviews Earth & Environment. DOI: 10.1038/s43017-020-0060-z

Calchis Hazard Score — derived from cited public and academic sources. Property exposure data not included. Not a substitute for professional actuarial assessment. Decision-support intelligence — not a primary alerting or dispatch system. Verify against official sources.