Skip to content

Financial Modelling · Section 2

Dissecting a contract

Watch a CatXoL transform a single trial one financial term at a time — filter, coverage period, occurrence layer, aggregate limit, and participation.

Financial modelling turns a cedent’s subject loss into the reinsurer’s gross loss by applying a contract’s terms. The fastest way to understand the mechanism is to watch it happen: take one contract, one simulated year, and apply each term in turn.

Financial modelling is the application of financial terms, and a contract is where those terms are written down. A reinsurance program is a stack of contracts, and each contract specifies how it reshapes the losses it sees: which perils it covers, when it attaches, how much it pays, and where it stops.

Each financial term is a transformation on trial loss data: it takes a TELT — or the output of a preceding term — as input and produces a modified set of losses as output. Applying a contract means composing its terms into a pipeline that transforms the cedent’s subject losses into the reinsurer’s gross loss.

Foundations introduced the common contract types — quota share, catastrophe excess of loss (CatXoL), and aggregate excess of loss (AggXoL, also called stop loss). Each comes in flavours and carries optional features — reinstatements, event limits, franchise deductibles — that we will meet later in this chapter. But underneath the taxonomy, contracts are far less varied than their names suggest:

The same few operations keep reappearing across contract types:

Financial termQuota ShareCatXoLAggXoL
Contract period
Filter (covered losses)
Occurrence excess (attachment + limit per event)optional
Aggregate excess (attachment + limit on the total)optional
Scaling (cession % or participation)

To see how these terms compose into a working contract, the rest of this page dissects one CatXoL — Helios Re’s Contract 1 — one financial term at a time. We will formalize each term and recompose the other contract types once the dissection has given us the intuition.

One structural property governs how financial modelling is reasoned about and computed: contract terms are applied to each trial independently. Nothing in a contract reaches across trials — an aggregate limit sums occurrences within one simulated year, participation scales that year’s loss, a filter keeps that trial’s covered events. Trial 7 never references Trial 8. This independence lets us decompose the calculation to the level of a single trial, where each term’s effect is transparent.

To illustrate the application of financial terms, we pick one trial — Trial 9 of SunCoast’s TELT — and apply Contract 1’s terms to it step by step, observing how the losses change at each stage.

Contract 1 is the CatXoL in SunCoast Insurance’s reinsurance program. Helios Re takes a 14.5% participation in the layer, sharing it with other reinsurers. Its terms:

TermValue
Covered lossFlorida hurricane (peril = HU, geography = FL)
Coverage period2024-01-01 to 2024-12-31
Occurrence layer$30M limit excess of $10M attachment
Reinstatements1
Participation (Helios Re’s share)14.5%

In contract language: “$30M excess of $10M each and every Florida hurricane, with one reinstatement, for the 2024 year, at 14.5%.”

Our task is to translate that sentence into a sequence of financial terms and apply them to Trial 9.

Trial 9 is one simulated year of SunCoast’s book — 30 occurrences across two perils: earthquakes in California and Arizona, and hurricanes along the Gulf and Atlantic coasts. The timeline below plots each occurrence at its event date, where each bar’s height is the loss amount and its colour encodes the peril.

Earthquake Hurricane

Trial 9 subject losses: 30 occurrences, $272.1M total. Two large Florida hurricanes — $102.4M in September and $80.8M in October — dominate a year otherwise made of small earthquakes and non-Florida storms.

The full subject total is $272.1M. Contract 1 will not see most of it — it covers only Florida hurricane, and only a slice of that. Each term below narrows what reaches the reinsurer.

PerilOccurrencesSubject loss
Earthquake (CA / AZ)22$27.6M
Hurricane (all geographies)8$244.5M
— of which Florida hurricane4$216.8M
Total30$272.1M

The contract covers Florida hurricane. The first term is a filter: keep only occurrences whose peril is HU and geography is FL; drop everything else. The earthquakes and the non-Florida storms fade out.

Earthquake Hurricane

Step 1 — filter to Florida hurricane. Four occurrences survive ($29.7M, $102.4M, $4.0M, $80.8M); the other 26 are dimmed out. FL HU subject total: $216.8M.

Four occurrences survive — a $216.8M Florida hurricane subject total. Note that the colour encodes peril alone, so the filter also has to drop the Texas and Louisiana hurricanes (same colour, wrong geography). We formalize the filter term in the catalog.

Surviving occurrenceSubject loss
Jul 12 — FL hurricane$29.7M
Sep 6 — FL hurricane$102.4M
Sep 6 — FL hurricane$4.0M
Oct 5 — FL hurricane$80.8M
Total$216.8M

The contract period term keeps only events within the coverage window — here, 2024-01-01 to 2024-12-31. All four Florida hurricanes fall inside it, so for Trial 9 the set of surviving occurrences is unchanged. In a different year — a mid-year inception, or a storm that landed in January 2025 — events outside the window would be dropped at this step.

Coverage checkOccurrencesSubject
Within 2024-01-01 – 2024-12-314 of 4$216.8M

These are the terms that shape the payout. $30M excess of $10M, each and every occurrence: for every Florida hurricane the contract ignores the first $10M (the attachment) and pays the next $30M (the limit). Anything above $40M returns to the cedent’s retention. Formally, the occurrence gross for each event is:

Loccgross=min(max(Lsubject10,  0),  30)L^{\text{gross}}_{\text{occ}} = \min(\max(L^{\text{subject}} - 10,\; 0),\; 30)

The dashed lines below mark the attachment ($10M) and the top of the layer ($40M); the clear band between them is the layer. The part of each bar inside that band is what the contract pays, while the shaded regions below the attachment and above the limit remain with the cedent as its retained loss.

Hurricane

Step 3 — occurrence layer, $30M xs $10M. The $102.4M and $80.8M storms exceed the limit and cap at $30M each; the $29.7M storm pays $19.7M; the $4.0M storm does not reach the $10M attachment and pays nothing.

Reading off each bar’s portion within the layer band:

  • $102.4M and $80.8M both exceed the $30M limit → each caps at $30M
  • $29.7M falls inside the layer → pays $29.7M − $10M = $19.7M
  • $4.0M does not reach the $10M attachment → pays nothing

The occurrence layer is applied to each event independently; the per-occurrence results sum to $79.7M. The aggregate limit comes next.

OccurrenceSubjectOccurrence gross
Jul 12$29.7M$19.7M
Sep 6$102.4M$30.0M
Sep 6$4.0M$0.0M
Oct 5$80.8M$30.0M
Total$216.8M$79.7M

The number of reinstatements determines how many times the occurrence layer can be reinstated once its limit has been eroded — in other words, how many times the occurrence layer can be used during the contract period. Mathematically, that is how many times the occurrence limit can be exhausted, which is equivalent to an aggregate limit of (nreinst+1)×(n_{\text{reinst}} + 1) \times \ell. With one reinstatement, that is (1+1)×30M=60M(1 + 1) \times 30\text{M} = 60\text{M}. Sum the per-occurrence payouts in event order and cap the running total at $60M. Toggle the cumulative line on to watch it accumulate.

Hurricane

Step 4 — aggregate limit, $60M. Bars are the per-occurrence gross from step 3. The cumulative line climbs to $49.7M after the July and September storms, then the October storm would push it to $79.7M — but the aggregate limit clips it at $60M.

The red cumulative line climbs to $49.7M after the July storm and the two September storms (one of which did not reach the occurrence attachment and contributes nothing). The October hurricane’s $30M payout would push the total to $79.7M — but the aggregate limit clips it at $60M. The contract has exhausted its cover; the $19.7M of the final event that exceeds the remaining aggregate capacity is retained by SunCoast. The aggregate limit binds.

OccurrenceOccurrence grossCumulativeAfter $60M cap
Jul 12$19.7M$19.7M$19.7M
Sep 6$30.0M$49.7M$49.7M
Sep 6$0.0M$49.7M$49.7M
Oct 5$30.0M$79.7M$60.0M
Trial gross$60.0M

Helios Re does not hold the entire layer — it takes a 14.5% participation, sharing the contract with other reinsurers. Participation is a scaling term: it multiplies the gross loss by the reinsurer’s share. For Trial 9, the $60M standalone layer gross becomes Helios Re’s booked share of 0.145×60M=8.7M0.145 \times 60\text{M} = 8.7\text{M}.

Trial 9Standalone (100% layer)Helios Re’s share (14.5%)
Gross loss$60.0M$8.7M

Five financial terms, applied in sequence, turn Trial 9’s $272.1M of subject loss into a $60M standalone gross loss — of which Helios Re books its 14.5% share, $8.7M:

The runnable version evaluates all five terms on Trial 9 and reproduces the numbers above:

helios_re/contract1_trial9.py Python

Trial 9 was one trial. Run the same sequence of terms across all 20 of SunCoast’s trials, collect the standalone gross losses, and sort them, and you have Contract 1’s loss distribution — reported at 100%, before participation. Only the input losses differ between trials; the terms are the same. The chart below shows the EP curve at each stage of the pipeline; click the legend pills to toggle curves, hover to emphasize one. Helios Re’s 14.5% participation scales the whole distribution down proportionally at roll-up.

Contract 1 pipeline across all 20 trials, reported at 100% (before participation). Trial 9 (the trial we dissected) and Trial 19 are where the aggregate limit binds: toggle 'Standalone gross' to see it clip both to $60M, the gap from the orange curve marking the cover SunCoast retains.

The dissection gave us the intuition: a contract is a pipeline of financial terms applied per trial. Next, Contracts as compositions formalizes each term and shows how every contract type is built from the same blocks.