Causal Elasticity Estimation for Renewal Pricing

Standard renewal demand models overestimate price sensitivity for bad risks and underestimate it for good ones — because risk drives both premium and lapse. ...

Read article →
Survival Models for Insurance Retention

Why standard churn models fail for UK personal lines, and what to do instead. Introducing insurance-survival: covariate-adjusted cure models, survival-adjust...

Read article →
Your Retention Campaign Has No Targeting Rule

Every insurer runs discount campaigns at renewal. Most target by propensity to lapse — who will leave? The correct question is who will respond to a discount...

Read article →
Your Age-25 Premium Cliff Has No Causal Evidence

UK motor insurers charge under-25s roughly three times the premium of 25-30 drivers. The risk discontinuity at age 25 is assumed, not demonstrated. insurance...

Read article →
Individual Experience Rating Beyond NCD: From Bühlmann-Straub to Neural Credibility

NCD is a crude proxy for individual risk. insurance-experience implements actuarially correct posterior experience rating at policy level: static Bühlmann-St...

Read article →
Double GLM for Insurance: Every Risk Gets Its Own Dispersion

R has had the dglm package since 1998. Python has had nothing. insurance-dispersion is a Double GLM implementation that gives every policy its own dispersion...

Read article →
Your SIU Referral Threshold Is Arbitrary. Here Is How to Fix It.

Every SIU referral threshold in UK motor insurance is arbitrary — 'refer the top 5%' or 'anything above 0.7'. Conformal p-values fix this by giving each clai...

Read article →
Detecting Threshold Gaming in Insurance Portfolios

Policyholders game rating thresholds. Mileage declarations cluster just below 10,000. Claimed ages spike just above 25. Declared sums bunch at £100k, £200k, ...

Read article →
The Attention Head That Is Also a Credibility Weight

The CLS token's self-attention weight in the Credibility Transformer is not an analogy for Bühlmann-Straub credibility — it is mathematically identical to it...

Read article →
Distribution-Free Solvency Capital from Conformal Prediction

insurance-conformal v0.2 adds SCRReport for distribution-free 99.5% upper bounds, LocallyWeightedConformal for intervals ~24% narrower than standard split co...

Read article →
The ENBP Counterfactual Problem Has a Statistical Answer

FCA EP25/2 admitted that individual-level ENBP counterfactual analysis 'is unable to be conducted'. Lei & Candès 2021 weighted conformal inference says other...

Read article →
HMM-Based Telematics Risk Scoring for Insurance Pricing

Most UK insurers receive a black-box telematics score from vendors like Octo or The Floow. They cannot inspect it, tune it, or connect it to their rating met...

Read article →
Which Rating Factors Actually Drive Your Premium Variance?

SHAP explains individual predictions. Shapley effects decompose portfolio-level variance. insurance-sensitivity brings Owen 2014, Song 2016 and Rabitti-Tzoug...

Read article →
500 Vehicle Makes, One Afternoon, Zero Reproducibility

Factor level collapsing is the highest-labour, lowest-reproducibility activity in GLM development. insurance-glm-cluster automates it using the R2VF algorith...

Read article →
Discrimination-Free Pricing in Python: Causal Paths, Optimal Transport, and the FCA

insurance-fairness-ot implements discrimination-free insurance pricing via Lindholm (2022) marginalisation, Côté-Genest-Abdallah (2025) causal path decomposi...

Read article →
Your Pricing Model Is Discriminating. Here's Which Factor Is Doing It.

insurance-fairness-diag implements D_proxy (LRTW 2026, SSRN 4897265), Owen (2014) Shapley attribution, and Côté-Charpentier (2025) local vulnerability scores...

Read article →
Distributional Refinement Networks for Insurance Pricing: insurance-drn

Your GLM predicts a mean. DRN refines it into a full predictive distribution — per risk, per policy, with parametric tails for the extremes that matter for c...

Read article →
GAMLSS in Python, Finally

GLMs model the mean. GAMLSS models everything. insurance-distributional-glm is the first production-ready Python implementation of Generalised Additive Model...

Read article →
GLMs Predict Means. DRN Predicts Everything Else.

A GLM that prices your motor book correctly on average will still misprice the tail. insurance-drn wraps any baseline model with a neural network that refine...

Read article →
Whittaker-Henderson Smoothing for Insurance Pricing

Raw experience rating tables are noisy at the edges -- young drivers, high-mileage vehicles, rare postcodes. Whittaker-Henderson smoothing is the actuarial s...

Read article →
Getting Spatial Territory Factors Into Production

How to go from a fitted CatBoost frequency model to BYM2 spatial territory factors for Emblem or Radar - with the actual data engineering, convergence checks...

Read article →
Nested GLMs with Neural Network Embeddings for Insurance Ratemaking

How to handle 800+ vehicle makes and 9,000+ postcode sectors in a standard GLM without sacrificing interpretability. A four-phase pipeline that uses neural n...

Read article →
Why Generic Synthetic Data Fails Actuarial Fidelity Tests

Generic synthetic data tools — SDV, CTGAN, TVAE — produce portfolios that look plausible column-by-column and break down as soon as you run a pricing model o...

Read article →
Calibration Testing That Goes Beyond the Residual Plot

A Poisson z-test tells you if your totals balance. An auto-calibration test tells you if each price cohort is self-financing. The Murphy decomposition tells ...

Read article →
EBMs for Insurance Pricing: Better Than a GLM, Readable by a Pricing Committee

interpretML's ExplainableBoostingMachine already handles Poisson/Gamma/Tweedie loss and exposure offsets natively. What it doesn't do is wrap those capabilit...

Read article →
DML for Insurance: Practical Benchmarks and Pitfalls

Where double machine learning outperforms naive regression in insurance pricing -- and where it doesn't. Practical benchmarks on synthetic motor data.

Read article →
Constrained GLM Optimisation for Rate Adequacy

A GLM gives you technically adequate prices. Constrained optimisation finds the factor adjustments that hit your LR target, satisfy FCA PS21/5 ENBP, respect ...

Read article →
Quantile GBMs for Insurance: TVaR, ILFs, and Large Loss Loadings

CatBoost's MultiQuantile loss gives you quantile predictions. It does not give you TVaR, large loss loadings, ILF curves, or exceedance probabilities. insura...

Read article →
Constrained Portfolio Rate Optimisation with FCA ENBP Enforcement

Applying rate changes without solving the demand-constraint system simultaneously is a guaranteed route to suboptimal profit. insurance-optimise is an open-s...

Read article →
When exp(beta) Lies: Confounding in GLM Rating Factors

When exp(beta) from a GLM is not what you think it is. How omitted variable bias and confounding distort rating factor estimates, and how Double Machine Lear...

Read article →
Distributional GBMs for Insurance: Pricing Variance, Not Just the Mean

Two risks with identical expected loss can have wildly different variance. Standard Tweedie GBMs cannot tell them apart. insurance-distributional — the first...

Read article →
Proxy Discrimination in UK Motor Pricing: Detection and Correction

How to detect and correct proxy discrimination in UK insurance pricing models. Using SHAP and the insurance-fairness library to identify protected characteri...

Read article →
Three-Layer Drift Detection for Deployed Pricing Models

PSI and aggregate A/E are not enough. A three-layer monitoring framework - feature drift, segmented calibration, and a formal Gini test - that tells you whet...

Read article →
Double Machine Learning for Insurance Price Elasticity

Naive price elasticity estimates from insurance quote data are biased - risk drives both premium and lapse. The insurance-demand library implements Double Ma...

Read article →
From CatBoost to Radar in 50 Lines of Python

An open-source Python library that distils GBM models into multiplicative GLM factor tables for Radar, Emblem, and other rating engines. The first open-sourc...

Read article →
Finding the Interactions Your GLM Missed

UK motor GLMs test a handful of interactions out of hundreds of possible pairs. insurance-interactions automates the search using CANN residual modelling, Ne...

Read article →
Experience Rating: NCD and Bonus-Malus

A Python library for NCD/bonus-malus systems in UK motor insurance. Includes the non-obvious finding that optimal NCD claiming thresholds peak at 20% NCD, no...

Read article →
Demand Modelling for Insurance Pricing

How to build a demand model for UK personal lines pricing: conversion, retention, price elasticity, and demand curves. Covers FCA GIPP requirements and the t...

Read article →
How Much of Your GLM Coefficient Is Actually Causal?

GLM coefficients measure association, not causation. How Double Machine Learning isolates the causal effect of rating factors from confounding, and why this ...

Read article →
Why Your Cross-Validation is Lying to You

Standard k-fold cross-validation is wrong for insurance pricing models. How temporal leakage and IBNR contamination inflate CV scores, and how walk-forward v...

Read article →
BYM2 Spatial Smoothing for Territory Ratemaking

Why postcode sector k-means banding is statistically wrong for territory ratemaking, and how to use the BYM2 spatial model in PyMC to borrow strength across ...

Read article →
From GBM to Radar: A Complete Databricks Workflow for Pricing Actuaries

A complete Databricks workflow for UK pricing actuaries: CatBoost training with MLflow tracking, SHAP relativities extraction, and export to Radar. End-to-en...

Read article →
Constrained Rate Optimisation and the Efficient Frontier

How to build a rate change that meets a target loss ratio, respects movement caps, and minimises cross-subsidy simultaneously. Linear programming for UK pers...

Read article →
Conformal Prediction Intervals for Insurance Pricing Models

Conformal prediction intervals for insurance GBMs that are statistically honest. Distribution-free coverage guarantees for individual risk predictions, not c...

Read article →
Bühlmann-Straub Credibility in Python: Blending Thin Segments with Portfolio Experience

Buhlmann-Straub credibility in Python for blending thin segment experience with portfolio rates. Covers the mathematics, its equivalence to mixed models, and...

Read article →
Extracting Rating Relativities from GBMs with SHAP

How to extract multiplicative rating relativities from CatBoost GBMs using SHAP values - the same format as exp(beta) from a GLM, with confidence intervals, ...

Read article →
Bayesian Hierarchical Models for Thin-Data Pricing

Partial pooling for thin rating cells in UK motor pricing. How the bayesian-pricing library uses hierarchical Bayesian models to stabilise sparse segments wi...

Read article →