The Loss-Load-to-Price Ratio, Explained: How InsightUW Surfaces the One Metric Every Property UW Actually Cares About
Loss load ratio is the single most important lens a property UW has. It answers: "what fraction of the premium we're quoting is expected loss?" InsightUW computes it automatically on every quote, colors it RAG, weights it into a per-LOB risk scorecard, picks a tier (Platinum / Gold / Silver / Bronze), and — if the tier says Bronze — auto-routes the submission to a senior UW for review.
The Problem
Ask any seasoned property UW what matters most on a quote and they'll say some version of: is the premium big enough to cover the expected loss, cover my expenses, pay the broker, and leave a margin?
The math, at its most compressed:
If this number is 0.55, the UW has 45¢ on the dollar left for expenses, profit, CAT capital, and uncertainty — which is enough for most property books. If it's 0.72, they have 28¢, which is thin. If it's 0.85, they're pricing the account at a structural loss and someone needs to stop the quote.
Most workstations don't compute this at all. Some compute it only inside an actuarial spreadsheet three days after binding. A few surface "loss ratio" without distinguishing attritional from CAT — which is useless for CAT-exposed risks because the AAL hasn't been added in.
InsightUW treats loss load ratio as a first-class metric. It sits in a catalog of seven rating metrics, each with a Jinja formula, each with RAG zones, each consumable by a risk scorecard that weights factors into a composite score and tier band. This blog walks through what the metric is, how it's defined, how the scorecard consumes it, and why this specific quote landed at Gold tier with a composite score of 78.3.
The Account
- Insured: Vanguard Manufacturing Complex, Ohio
- LOB: Commercial property
- TIV: $50M
- Rating model: us property loss aware v1 2026
- Current quote: $478,000 final premium (post-override, from the previous blog's scenario)
- CAT modeling: RMS run completed, AAL net = $62,000 (wind + flood + tornado)
- Loss history:
loss_ratio_5y = 0.32,loss_count_5y = 5,max_single_loss_5y = $285k - Technical premium config: us property technical v1 — expense 25%, profit 5%, CAT capital 8%, uncertainty 5%
Part 1 — The Metric Catalog
The UW opens the Quote Summary page and scrolls to the Risk Scorecard section. Seven metric cards render at the top of the scorecard, each RAG-colored:
Each one is a Risk Metric Definition row with a Jinja formula over a rich context. The context has six blocks:
loss load ratio — the UW-requested metric
For this account:
Zone: 0.451 is inside the green zone (0.0 - 0.55) → GREEN.
The direction flag is lower is better — so unlike a "score" where higher is better, the engine interprets "green" as the LOW end of the range and "red" as the HIGH end. A loss load ratio of 0.85 would be red; 0.45 is comfortably green.
attritional loss ratio
Simpler: just the prior-year loss ratio pulled from the feature store.
Value: 0.32 → green. Accounts with loss_ratio_5y > 0.55 show red and that's typically an immediate scorecard penalty.
cat loss ratio
Value: 62,000 / 478,000 = 0.130. Between green max (0.10) and red min (0.25) → AMBER. For this submission, CAT is taking 13% of the premium — a normal but not excellent position.
rate adequacy pct
The UW-friendly version: what's left after loss load and standard loads?
For this account: 1.0 - 0.451 - (0.25 + 0.05 + 0.08 + 0.05) = 1.0 - 0.451 - 0.43 = 0.119 → GREEN (inside 0.08-0.50).
combined ratio and profitability index
Values: combined = 0.451 + 0.25 = 0.701 (green); profitability = 1/0.701 = 1.43 (green).
technical deviation pct
How much above/below technical are we quoting?
technical_indicated_premium = 215,600 / (1 - 0.43) = $378,245. Deviation = 478,000 / 378,245 - 1 = +0.264 → green (quoting 26% above technical). If the UW applied the market-hardening override from the previous blog, this would be even higher.
Part 2 — The Scorecard
Individual metrics are half the picture. The scorecard combines them (and other feature/override-sourced factors) into a weighted composite score, maps the score to a tier, and surfaces the tier as a badge UWs respond to.
Seeded scorecard for US property:
Part 3 — Normalizing the Factors
Each factor gets normalized to a 0-100 score using one of four modes.
min max
Building age: raw year_built = 1988. Min = 1950, max = 2025. Normalized = (1988 - 1950) / (2025 - 1950) × 100 = 38/75 × 100 = 50.7.
inverse (min_max with flip)
Used when lower is better. Loss load ratio: raw = 0.451, min = 0.30, max = 0.90. Normalized = (1 - (0.451 - 0.30) / 0.60) × 100 = (1 - 0.2517) × 100 = 74.8.
Attritional loss ratio: raw = 0.32, min = 0.0, max = 1.0. Normalized = (1 - 0.32) × 100 = 68.0.
threshold
Maps raw to discrete scores. Construction class = 4 (masonry-non-combustible) → excellent_min = 4 → 100. FEMA flood zone = "X" → excellent_min = "X" → 100. If it had been "AE" (flood zone), it would map to fair min → 50.
passthrough
Raw value is already 0-100 or 0-1. Sprinklered = true → 1.0 → normalized = 100. Sprinklered = false → 0.0 → 0.
Part 4 — Weight, Composite, Tier
Per-factor weighted score = normalized × weight. Sum the weighted scores, divide by sum of weights (which is 1.0 if the scorecard is well-defined):
| Factor | Raw | Normalized | Weight | Weighted |
|---|---|---|---|---|
| Loss load | 0.451 | 74.8 | 0.35 | 26.18 |
| Construction | 4 (MNC) | 100 | 0.20 | 20.00 |
| Building age | 1988 | 50.7 | 0.15 | 7.60 |
| FEMA flood | X | 100 | 0.15 | 15.00 |
| Sprinklered | True | 100 | 0.10 | 10.00 |
| Loss experience | 0.32 | 68.0 | 0.05 | 3.40 |
| Total | 1.00 | 82.18 |
Wait — 82.18 puts this in the Platinum tier (≥ 85)? Let me recheck. Loss load's normalized should reflect the full range:
- 0.30 → 100
- 0.451 →
(1 - (0.151/0.60)) × 100 = 74.8✓
Construction class 4 scores 100, FEMA X scores 100, but building age (1988) is middling and loss experience is moderate. Composite at 82.18 is actually Platinum-bordering-Gold. After applying proper rounding and the tier bands' max_score: 84.99 ceiling for Gold, the quote lands at 82.2 → Gold tier.
The scorecard panel renders:
Part 5 — The Tier Drives Workflow
Because the tier is Gold, no mandatory referral. The submission flows through normal approval.
Had it been Bronze (composite < 55, often driven by a loss load ratio > 0.75), a workflow rule would auto-route:
The risk scorecard tier Jinja helper returns just the tier code, making workflow gating trivial.
Similar rule for cat_loss_ratio > 0.20:
Part 6 — Where Each Source Lives
The scorecard reads factor values from six different sources, each declared by source-kind:
| Source kind | Example | Where the value comes from |
|---|---|---|
metric |
loss_load_ratio | Risk Metric Service.compute_metric run at scorecard time — recomputed each time |
feature |
loss_ratio_5y, sprinklered, year_built | Rating Feature Value current row for insured — populated by exposure sources / internal aggregators |
override |
— | Rating Override latest applied for (submission, target_field) — used when an override supplies the value |
quote |
inputs.construction_class | Dotted path into the quote inputs_json |
cat |
aal_net_total | CATResult sum aggregated at ctx build time |
technical |
loads.expense_pct | Cap Renewals #1 technical bundle |
This composition is important. It means a UW's override of loss ratio 5y (via cap Rating Decisions #1) flows through to the scorecard — the tier can shift because of the override, and the workflow engine can react accordingly.
Part 7 — The Metric Formula Sandbox
Every metric formula runs inside a Jinja2 SandboxedEnvironment with ChainableUndefined. That means:
- Missing data (e.g. no CAT results yet, no loss history) produces
None, not a crash. The formula's| default(0)filter coerces to 0 so the metric returns a legitimate number. - No loops, no recursion, no imports. Pure expressions. Formulas are safe to let ops write without review — worst case a formula renders an empty string and the metric goes to the
neutralzone. - Rich context. Every value the formula might need is pre-loaded: current quote, current features, current CAT, the technical-premium bundle, the buildup. Ops builds complex formulas (e.g. experience-modifier formulas that consult five features) without touching Python.
Ops preview formulas before saving. The metrics-admin page at /uw/admin/risk-metrics lets the UW manager paste a Jinja formula, pick a submission, hit Preview — the service builds context and renders the formula, returning both value and zone. Typos and divide-by-zeros surface before publish.
Part 8 — Configuring a New Metric
Ops wants a new metric — premium per 1m tiv — to complement the existing ones:
For this account: 478,000 / (50,000,000 / 1,000,000) = 478,000 / 50 = $9.56 per $1M TIV → GREEN. Metric catalog now has 8 entries; scorecards can reference the new metric as a factor if ops wants.
Part 9 — Why the Scorecard Matters Beyond the UI
The scorecard isn't just visual. It:
-
Shapes routing. risk scorecard tier in workflow rules is the single cleanest way to trigger referral, rush handling, or senior UW review. No hard-coded thresholds scattered across 40 effect rules.
-
Drives portfolio views. The Risk Scorecard Result table is a flat cache of composite scores across all active submissions. Aggregations like "show me all Silver-tier property submissions in the Northeast this week" are one query.
-
Feeds renewal benchmarking. On a renewal, the prior-year scorecard result is visible next to the current year's — a UW instantly sees tier movement (Silver → Gold means improvement; Gold → Bronze is a red flag).
-
Carries authority hints. Each tier band can declare
requires_referral: trueand max authority. A workflow rule consumes this: "Bronze requires referral regardless of UW authority."
Part 10 — A Real-World Scenario
UW opens the quote for Vanguard Manufacturing. Scorecard panel shows Gold, 82.2, driven by construction. UW reads:
- loss_load_ratio: 0.451 (green) — margin is healthy
- cat_loss_ratio: 0.130 (amber) — CAT takes 13% of premium; not alarming but worth noting
- rate_adequacy_pct: 0.119 (green) — 12 points of margin after all loads
She binds the quote with confidence. Six months later a Q3 market shift requires a re-quote — fresh exposure fetches update cyber security rating (wait, wrong LOB, skip), fema flood zone stays X, loss ratio 5y ticks up to 0.38 after a new claim. Re-computed scorecard:
- loss_load_ratio rises to 0.49 (still green)
- composite drops to 78.9 → still Gold
On the next renewal, the prior-year scorecard shows Gold with 82.2, the current year renders Gold with 78.9 — UW sees a 3.3-point drop and investigates the cause (the new claim). Tier didn't change but the narrative did.
What This Replaces
Before the risk-scorecard framework, carriers solve UW tier assignment one of three ways:
- UW gut feel. Zero consistency. New UWs get different tiers from senior UWs on identical risks. No portfolio aggregation possible.
- Spreadsheet scorecards. Ops maintains an Excel file per LOB with weights and thresholds. UWs download, fill, save a copy. Zero audit, zero portfolio roll-up, zero integration with rating.
- Rigid policy-admin-system flags. "Priority 1 / Priority 2" with no math behind them. Manager decides manually.
InsightUW's approach is declarative, auditable, portfolio-consumable, and integrated with rating + workflow. A new LOB gets a new scorecard and new metrics — zero code changes. A bad factor weight shows up in post-bind loss development reports and ops tweaks it, re-publishes, next quote run picks it up.
Quick Reference
Compute scorecard for a submission:
Get bundle (scorecard + metrics together):
Applicable scorecards for a submission (by LOB):
Preview a metric formula:
Workflow effect: compute risk scorecard with scorecard code in effect config json.
Jinja helpers:
Loss load ratio is the one number every property UW's eye should track. The framework makes sure it's always on-screen, always correct, always traceable to the inputs it depends on, and always connected to the workflow decisions it drives.