Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Catastrophe modeling, or cat modeling, is the practice of estimating the financial losses that a portfolio of buildings and insurance policies could suffer from rare, severe natural events. They are hurricanes, earthquakes, floods, wildfires, and severe convective storms, the thunderstorms that bring hail, tornadoes, and damaging straight-line wind. A cat model is a stochastic model, a model built on random simulation. It simulates tens of thousands of possible years of events and applies each event to every insured location. The output is a distribution of losses. Insurers use it to set prices, buy reinsurance, and hold capital.
Catastrophe modeling answers one question: how much could a set of insured properties lose from natural disasters, and how often? Claims history is too short to answer it for a 1-in-250 year hurricane. In insurance shorthand a "cat" is a single event with large insured losses across many policyholders. In the United States, Property Claim Services designates an event a catastrophe at $25 million or more in insured property damage. The term is unrelated to catastrophe theory, René Thom's branch of mathematics.
Cat models cover five main perils: hurricane, earthquake, flood, wildfire, and severe convective storm.
Actuarial pricing projects losses from past claims, which works for frequent, independent events such as auto accidents. Cat modeling generates losses from physics and engineering. It covers the rare, large losses that the claims record lacks.
Catastrophe modeling runs every simulated event through four modules: hazard, exposure, vulnerability, and financial. Grossi and Kunreuther's Catastrophe Modeling: A New Approach to Managing Risk (Springer, 2005) set out this structure.
The hazard module describes where events happen, how strong they are, and how often. For a hurricane model that means storm tracks, wind fields, and surge; for an earthquake model, faults, magnitudes, and ground motion. Each event leaves a footprint: an intensity value at every location it touches, usually stored as a raster grid.
The exposure module holds the insured property: the coordinates of each building or policy, with construction class, occupancy, height, year built, and replacement value. Errors in exposure data change every result. A building located at its ZIP code's center point, or a wood frame home coded as masonry, changes the modeled loss.
The vulnerability module converts intensity into damage with a damage function, also called a vulnerability or fragility curve. A flood depth-damage curve, for example, maps water depth at a building to a mean damage ratio, the share of replacement value lost. Each construction class gets its own curve, with uncertainty around the mean.
The financial module applies policy terms: deductibles, limits, coinsurance, and the reinsurance layers above them. It turns ground-up damage, the loss before any policy terms apply, into gross and net insured loss for each event.
Joining exposure to hazard, the largest computation in the chain, is a spatial join: each building is matched to the hazard value at its location. Hazard footprints are geospatial data on a grid, sampled at every building for every event.
The hazard module runs from an event set, also called a stochastic catalog. It is a list of simulated events, each with an annual rate of occurrence and a footprint. Developers fit statistical models to the historical record, such as decades of hurricane tracks or earthquake catalogs. They then sample tens of thousands of years of plausible activity, including events larger than any yet observed.
The stochastic modeling article runs a simulated catalog of this kind against a whole county.
The losses of the simulated years give the model's main outputs:
Insurers price the average year from AAL and size capital and reinsurance for a bad year from PML. The probable maximum loss article covers return periods and reinsurance.
Primary insurers run their portfolios through hurricane, earthquake, and flood models to price policies. They use the results to limit how many policies sit in one wind zone. They also use them to set how much reinsurance to buy and at what attachment point, the loss level above which the reinsurer pays.
Reinsurers price treaties by running the exposure of the cedent, the insurer buying the cover, against their own view of the hazard.
Rating agencies and regulators read a carrier's modeled 1-in-100 and 1-in-250 year losses to judge capital adequacy. In Florida, the Commission on Hurricane Loss Projection Methodology, created in 1995 after Hurricane Andrew, sets standards for hurricane models and reviews them for use in ratemaking.
Insurance-linked securities (ILS) investors buy catastrophe bonds and other risk-linked securities. Their prices and triggers, the conditions that make a bond pay out, are set from modeled loss. Cummins (2008) reviews that market. The United Services Automobile Association (USAA) moved a layer of US hurricane risk to capital-market investors with its Residential Re bond of 1997.
After an event, analysts run the observed footprint through the same model for an early loss estimate, days before claims arrive.
The Casualty Actuarial Society's CAS Institute and the International Society of Catastrophe Managers offer two credentials for the field. They are the Certified Specialist in Catastrophe Risk (CSCR) and the Certified Catastrophe Risk Management Professional (CCRMP).
The longest-established commercial vendors:
Public models such as Hazus, from the Federal Emergency Management Agency (FEMA), estimate losses for emergency planning.
Hurricane Andrew, 1992. Andrew made landfall south of Miami on 24 August 1992. After landfall, AIR's model put the insured loss above $13 billion, a figure some of its reinsurance clients doubted. The final insured loss came to about $15.5 billion in 1992 dollars. Eleven insurers became insolvent. After Andrew, insurers and reinsurers adopted catastrophe models across the industry.
Northridge earthquake, 1994. The magnitude 6.7 earthquake under the San Fernando Valley caused about $12.5 billion in insured losses. Insurers paid more in claims than they had collected in earthquake premiums over the previous 30 years. Most California home insurers stopped writing new homeowners policies, and the legislature created the California Earthquake Authority in 1996.
The Elbe flood, 2002. In August 2002 the Elbe reached 9.40 m at the Dresden gauge, above the previous record of 8.77 m from 1845. It became one of the best-studied damage events in Europe.
WherobotsDB runs the spatial half of a catastrophe model in SQL. It joins exposure to hazard footprints and applies damage functions at building scale. The example below illustrates the method in one city. It uses public river flood maps, one generic damage curve for every building, footprint area in place of replacement value, and no policy terms.
Exposure. Every Overture building whose bounding box falls inside a 22 km by 16 km box over Dresden. The building footprint article describes Overture footprints.
Hazard. The JRC Global River Flood Hazard Maps v2.1 (Baugh and colleagues, 2024, data DOI 10.2905/JRC.VD32YWG) give modeled water depth in meters at 90 m resolution. They cover return periods from 10 to 500 years. A hydrological model called LISFLOOD and an inundation model called LISFLOOD-FP produced them. A cloud-optimized mirror on Source Cooperative puts each tile on public S3, so RS_FromPath reads it in place. The flood risk map article compares these maps with FEMA zones and finer commercial grids.
Vulnerability. The Europe residential depth-damage curve from Huizinga, de Moel, and Szewczyk (2017), the JRC's global flood depth-damage function database. Its damage factors are 0, 0.25, 0.40, 0.50, 0.60, 0.75, 0.85, 0.95, and 1.0 at depths of 0, 0.5, 1, 1.5, 2, 3, 4, 5, and 6 m. Values between those depths are interpolated linearly.
wherobots_open_data.overture_maps_foundation.buildings_building
The query below joins the vector table to all seven rasters. Raster and vector run in one engine; most stacks pick one.
The query clips each depth map to the box once with RS_Clip, copies the small clipped rasters to every worker, and reads the depth under each building centroid with RS_Value. Out-of-database reads fetch only the parts of each Cloud Optimized GeoTIFF (COG) inside the box. A COG is laid out for partial reads over the web. The out-of-database raster architecture post explains the method.
-- Illustration only: Overture buildings in Dresden x JRC river flood depth x JRC Europe residential damage curve WITH box AS ( SELECT ST_PolygonFromEnvelope(13.60, 50.98, 13.92, 51.12) AS g -- Dresden, about 22 km x 16 km ), hazard AS ( -- Hazard module: clip each JRC depth COG (90 m, metres, NoData -9999) to the box once SELECT RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/depth-rp10/ID121_N60_E10/ID121_N60_E10_RP10_depth.tif'), 1, k.g, false, -9999, true) AS r10, RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/depth-rp20/ID121_N60_E10/ID121_N60_E10_RP20_depth.tif'), 1, k.g, false, -9999, true) AS r20, RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/depth-rp50/ID121_N60_E10/ID121_N60_E10_RP50_depth.tif'), 1, k.g, false, -9999, true) AS r50, RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/depth-rp100/ID121_N60_E10/ID121_N60_E10_RP100_depth.tif'), 1, k.g, false, -9999, true) AS r100, RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/depth-rp200/ID121_N60_E10/ID121_N60_E10_RP200_depth.tif'), 1, k.g, false, -9999, true) AS r200, RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/depth-rp500/ID121_N60_E10/ID121_N60_E10_RP500_depth.tif'), 1, k.g, false, -9999, true) AS r500, -- JRC permanent water mask (1 = river channel or lake, NoData 255), to flag channel cells RS_Clip(RS_FromPath('s3://us-west-2.opendata.source.coop/nlebovits/jrc-glofas/permanent-water/ID121_N60_E10/ID121_N60_E10_permanent_water.tif'), 1, k.g, false, 255, true) AS pw FROM box k ), exposure AS ( -- Exposure module: every Overture building whose bounding box sits inside the box SELECT id, ST_Centroid(geometry) AS c, ST_AreaSpheroid(geometry) AS area_m2 FROM wherobots_open_data.overture_maps_foundation.buildings_building WHERE bbox.xmin >= 13.60 AND bbox.xmax <= 13.92 AND bbox.ymin >= 50.98 AND bbox.ymax <= 51.12 ), depth AS ( -- Modelled depth (m) in the 90 m cell under each building centroid; NoData means dry SELECT /*+ BROADCAST(h) */ e.id, e.area_m2, COALESCE(NULLIF(RS_Value(h.r10, e.c), -9999), 0) AS d10, COALESCE(NULLIF(RS_Value(h.r20, e.c), -9999), 0) AS d20, COALESCE(NULLIF(RS_Value(h.r50, e.c), -9999), 0) AS d50, COALESCE(NULLIF(RS_Value(h.r100, e.c), -9999), 0) AS d100, COALESCE(NULLIF(RS_Value(h.r200, e.c), -9999), 0) AS d200, COALESCE(NULLIF(RS_Value(h.r500, e.c), -9999), 0) AS d500, COALESCE(NULLIF(RS_Value(h.pw, e.c), 255), 0) AS pw FROM exposure e CROSS JOIN hazard h ), vuln AS ( -- Vulnerability module: Huizinga et al. (2017) Europe residential curve, linear between 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6 m SELECT id, area_m2, d100, pw, transform(array(d10, d20, d50, d100, d200, d500), d -> CASE WHEN d <= 0 THEN 0.0 WHEN d < 0.5 THEN 0.00 + (d - 0.0) * 0.50 WHEN d < 1.0 THEN 0.25 + (d - 0.5) * 0.30 WHEN d < 1.5 THEN 0.40 + (d - 1.0) * 0.20 WHEN d < 2.0 THEN 0.50 + (d - 1.5) * 0.20 WHEN d < 3.0 THEN 0.60 + (d - 2.0) * 0.15 WHEN d < 4.0 THEN 0.75 + (d - 3.0) * 0.10 WHEN d < 5.0 THEN 0.85 + (d - 4.0) * 0.10 WHEN d < 6.0 THEN 0.95 + (d - 5.0) * 0.05 ELSE 1.0 END) AS dr -- damage ratio at the 10, 20, 50, 100, 200, 500-year depth FROM depth ), per_building AS ( SELECT id, area_m2, d100, pw, dr[0] AS dr10, dr[1] AS dr20, dr[2] AS dr50, dr[3] AS dr100, dr[4] AS dr200, dr[5] AS dr500 FROM vuln ), annual AS ( -- Expected annual damage ratio: trapezoids over annual exceedance probability, 10-year to 500-year maps only SELECT *, (0.10 - 0.05 ) * (dr10 + dr20 ) / 2 + (0.05 - 0.02 ) * (dr20 + dr50 ) / 2 + (0.02 - 0.01 ) * (dr50 + dr100) / 2 + (0.01 - 0.005) * (dr100 + dr200) / 2 + (0.005 - 0.002) * (dr200 + dr500) / 2 AS ead_ratio, CASE WHEN d100 = 0 THEN '0: dry at 100-year' WHEN d100 < 0.5 THEN '1: under 0.5 m' WHEN d100 < 1 THEN '2: 0.5 to 1 m' WHEN d100 < 2 THEN '3: 1 to 2 m' WHEN d100 < 4 THEN '4: 2 to 4 m' ELSE '5: 4 m or more' END AS band_100yr FROM per_building ) -- One row per 100-year depth band, plus a total row (band_100yr is NULL) SELECT band_100yr, COUNT(*) AS buildings, SUM(CASE WHEN pw = 1 THEN 1 ELSE 0 END) AS in_channel_cell, ROUND(AVG(d100), 2) AS mean_depth_100yr_m, ROUND(AVG(dr100), 4) AS mean_damage_ratio_100yr, ROUND(SUM(dr100 * area_m2) / SUM(area_m2), 4) AS area_weighted_dr_100yr, ROUND(SUM(dr100), 1) AS building_equivalents_100yr, ROUND(AVG(dr10), 5) AS mdr10, ROUND(AVG(dr20), 5) AS mdr20, ROUND(AVG(dr50), 5) AS mdr50, ROUND(AVG(dr200), 5) AS mdr200, ROUND(AVG(dr500), 5) AS mdr500, ROUND(AVG(ead_ratio), 6) AS mean_ead_ratio, ROUND(SUM(ead_ratio), 2) AS ead_building_equivalents FROM annual GROUP BY ROLLUP (band_100yr) ORDER BY band_100yr
EXPLAIN FORMATTED shows no Cartesian product, the pairing of every row with every other row. The query returned in 287 seconds.
EXPLAIN FORMATTED
The box holds 154,866 Overture buildings. At the 100-year depth, 6,932 of them (4.5%) stand in a wet cell, and 3,850 stand in a meter or more of water. The curve turns those depths into a mean damage ratio of 2.05% across all buildings. That equals 3,178.5 building equivalents: the sum of the damage ratios, or the number of buildings destroyed if the same damage were concentrated. Weighted by footprint area, the ratio is 1.28%. The damaged buildings are smaller on average than the city's building stock. Ninety buildings have a centroid inside a JRC permanent water cell, 49 of them in the deepest band. They sit on the riverbank, where a 90 m cell covers both land and channel. A production model would check them against a finer terrain grid.
Each band's mean damage ratio sits close to the curve at its mean depth. The deepest band sits a little below it: where the curve flattens, the mean of the damage ratios falls below the damage ratio at the mean depth.
Six return periods give six points on a curve of damage against annual exceedance probability. The mean damage ratio across all buildings rises from 0.56% at 1-in-10 to 2.05% at 1-in-100 and 4.02% at 1-in-500. The area under that curve is the expected annual damage ratio, the flood equivalent of AAL. It is 0.11% a year for the average building, with every building weighted equally, or 172.6 building equivalents a year. Dollar figures need building values, which the query does not read. The integral runs only between the 10-year and 500-year maps. The maps leave out Dresden's flood walls. The figure is a rough bound for an undefended city.
This shortcut works for AAL because an expected value adds up building by building: each building needs only its own hazard curve. It does not give the EP curve or PML. Those depend on which buildings flood in the same year. A 100-year flood at one end of the city and one at the other end are separate events. Only an event set with city-wide footprints shows how often they happen in the same year.
A production model also assigns a curve by occupancy and construction, adds uncertainty around each damage ratio, and applies deductibles and limits.
The Wherobots Data Hub holds inputs for other perils. They include US wildfire records, National Oceanic and Atmospheric Administration (NOAA) severe weather records for hail and tornadoes, and land cover from the European Space Agency (ESA) WorldCover map. RS_ZonalStats returns the maximum hazard inside each footprint. RasterFlow (Public Preview) builds mosaics from imagery, runs computer vision inference on them, and writes the results as vectorized outputs on the same platform. Getis-Ord Gi* hotspot analysis flags clusters of insured value larger than chance would produce.
Wherobots documents these patterns in its Insurance & Risk use case, including a California coastal flood exposure notebook that intersects parcels with FEMA zones and sums assessed value at risk. How to score every building in a state for catastrophe risk runs five perils across a whole state. Through the Wherobots Model Context Protocol (MCP) Server, an analyst can ask Claude Code or another agent for exposure by peril in plain language.
Friedman (1984), writing from the Natural Hazard Research Program at Travelers, set out a framework for assessing natural hazard risk to an insurance program. Clark (1986), in the Proceedings of the Casualty Actuarial Society, proposed Monte Carlo simulation, repeated random sampling, of catastrophe losses to replace underwriting rules of thumb. Clark founded AIR the following year to sell it.
The hazard module's core calculation comes from seismology. Cornell (1968) defined probabilistic seismic hazard analysis. It sums over every earthquake source, magnitude, and distance to get the annual rate at which a site exceeds each level of ground motion. Every hazard module still computes that quantity, a hazard curve per location.
Mitchell-Wallace, Jones, Hillier, and Foote (2017) wrote a practitioner's guide.
Vickery, Skerlj, and Twisdale (2000) simulated hurricane tracks basin-wide, from genesis to decay, with a track model fitted to the historical record. Emanuel, Ravela, Vivant, and Risi (2006) generated synthetic tracks from statistics and ran a physics model of storm strength along each one.
Finney and colleagues (2011) built a wildfire simulation model called FSim. It simulates thousands of fire seasons with random ignitions and weather. It spreads each fire over fuel and terrain grids to estimate burn probability across the continental United States. River flood maps come from hydrologic and hydraulic models such as LISFLOOD-FP, routed over a digital elevation model.
Damage functions are the least standardized module. For earthquakes, Kircher, Nassar, Kustu, and Holmes (1997) developed the building damage functions behind FEMA's HAZUS. Their fragility curves give the probability of each level of damage from how far the building sways in the shaking. Scawthorn and colleagues (2006) documented the HAZUS-MH (HAZUS Multi-Hazard) flood methodology. It applies depth-damage curves by occupancy from the Federal Insurance Administration and the US Army Corps of Engineers.
European flood research moved from depth alone to many variables. After the 2002 Elbe flood, Thieken and colleagues (2005) analyzed 1,697 household interviews. They found water level, flood duration, and contamination to be the most influential factors for building and contents damage. Merz, Kreibich, Schwarze, and Thieken (2010) reviewed the methods for assessing economic flood damage. Huizinga, de Moel, and Szewczyk (2017) harmonized depth-damage curves for six continents and six sectors, with maximum damage values for 214 countries.
Uncertainty is the first open problem. Jongman and colleagues (2012) ran seven flood damage models on the same past events in Germany and the United Kingdom and found results that differed widely. Hazard rates for the rarest events come from records of a century or less. Exposure data has its own errors in location, construction, and value.
Climate conditioning is the second. An event set calibrated to the historical record takes its event rates from the climate of that record. The World Meteorological Organization (WMO) assessment led by Knutson and colleagues (2020) projects higher tropical cyclone rainfall rates and a higher proportion of intense storms with warming. Climate-conditioned catalogs adjust event rates to a target climate. Fiedler and colleagues (2021) warned that the climate analytics sold to businesses can overstate what global climate models resolve at the scale of a single asset.
Scale changes the exposure module most. A portfolio once described as aggregate values per ZIP code can now be described building by building from open footprints, roof attributes, and parcel records. A national exposure set then has one row per building. Each building must be tested against every event footprint that covers it. That test is a spatial join, repeated for every event, peril, and model version.
That workload needs spatial partitioning, which splits data into groups of nearby records. Yu, Wu, and Sarwat (2015) introduced GeoSpark, now Apache Sedona. GeoSpark spreads spatial joins and range queries, searches for everything inside an area, across a cluster of machines running Apache Spark. Yu, Zhang, and Sarwat (2019) described its spatial partitioning and indexing. WherobotsDB extends that engine with out-of-database rasters: grids read in place from files in cloud storage. The Dresden query used them to clip seven COGs once and sample them at every building without copying the grids.
Join your exposure to hazard layers in WherobotsDB at cloud.wherobots.com.
In insurance, cat modeling estimates the losses a portfolio could suffer from hurricanes, floods, earthquakes, wildfires, and severe convective storms before those events happen. Primary insurers use the results to price policies and to set how much reinsurance to buy. Reinsurers use them to price treaties. Rating agencies use them to assess capital, and investors use them to price catastrophe bonds.
The four modules are hazard, exposure, vulnerability, and financial. The hazard module generates a catalog of simulated events, each with a map of its strength at every location. The exposure module holds the insured buildings, their locations, and their attributes. The vulnerability module converts event strength at a building into damage, with a separate damage curve for each construction type. The financial module applies deductibles, limits, and reinsurance to turn damage into insured loss.
Actuarial pricing projects future losses from historical claims experience, which works for frequent, independent events such as auto accidents. Catastrophe modeling simulates events that are too rare for claims history to capture, such as a 1-in-250 year hurricane, and produces a full loss distribution. Insurers use both. Cat modeling covers the rare, large losses.
AAL, average annual loss, is the mean loss per year across all simulated years in a catastrophe model, typically tens of thousands. It is the pure premium: the premium a portfolio needs to cover expected catastrophe losses over the long run, before expenses and profit. AAL is reported alongside the exceedance probability curve, which shows the loss at specific return periods, such as the 1-in-100 year loss.
Verisk and Moody’s RMS are the longest-established commercial vendors. Verisk’s models trace to AIR Worldwide, founded in 1987 and acquired in 2002. Moody’s acquired RMS in 2021. Karen Clark & Company, founded in 2007, and CoreLogic, which acquired EQECAT in 2013, also license models. The Oasis Loss Modelling Framework is a not-for-profit, open-source platform that runs models from many developers on one engine.
A cat is a catastrophe: a single event that causes large insured losses across many policyholders. In the United States, Property Claim Services designates an event as a catastrophe when it causes $25 million or more in insured property losses. The event must also affect a significant number of policyholders and insurers. Cat losses are tracked, priced, and reinsured separately from everyday attritional losses.
Catastrophe modelers start as analysts at an insurer, reinsurer, broker, or model vendor. Most hold a degree in actuarial science, statistics, engineering, geography, or an earth science. The work combines running vendor models, cleaning exposure data, and explaining results to underwriters. The CAS Institute and the International Society of Catastrophe Managers offer two credentials for the field. They are the Certified Specialist in Catastrophe Risk (CSCR) and the Certified Catastrophe Risk Management Professional (CCRMP).
Pay for catastrophe modelers depends on seniority, employer type, and market. Entry roles are analyst positions at insurers, reinsurers, and brokers; senior roles lead model evaluation or a cat modeling team, and pay rises with responsibility for capital and reinsurance decisions. Industry salary surveys and job postings give current ranges for a specific market.
Catastrophe theory is a branch of mathematics, unrelated to insurance catastrophe modeling, that René Thom developed in the 1960s to describe sudden jumps in systems that change smoothly. Christopher Zeeman popularized it in the 1970s. His best-known example is the cusp catastrophe model of a dog that switches abruptly from fear to attack as its anger and fear change.
An event set, or stochastic catalog, is the list of simulated events a catastrophe model runs. Each event has an annual rate and a hazard footprint, a map of its strength at every location. Developers fit statistical models to the historical record and sample tens of thousands of years of plausible events. The sample includes events larger than any yet observed, so that losses at rare return periods can be estimated.
Catastrophe models carry large uncertainty, most of all for the rarest, largest losses. Hazard rates for rare events come from short historical records, damage functions differ between studies, and exposure data is often incomplete. Studies that run several flood damage models on the same event find results that differ widely. Insurers compare several models and adjust them to their own claims experience.
What is a Geofence? How Geofencing Works, With Examples
A geofence is a virtual boundary that triggers an action when a device enters or leaves it. How geofencing works, its uses and limits, and a test on ship data.
What is Map Matching? GPS Traces, Methods and Examples
Map matching places each GPS record on the road a vehicle drove. How it works, nearest-road snapping vs hidden Markov models, and a test on Ann Arbor drives.
Geospatial Big Data: Why Analytics Is Hard to Scale
Teams struggle to scale geospatial analytics for five reasons: data volume, mixed formats, many coordinate systems, spatial joins and pipeline upkeep.
share this article
Awesome that you’d like to share our articles. Where would you like to share it to: