Your Rating Factor Might Be Confounded

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 →
Your Pricing Model Might Be Discriminating

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 →
Your Pricing Model is Drifting (and You Probably Can't Tell)

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 →
Your Demand Model Is Confounded

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 →
Your NCD Threshold Advice Is Wrong at 65%

A Python library for NCD/bonus-malus systems, experience modification factors, and schedule rating. Includes the non-obvious finding that optimal NCD claimin...

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 →
Your Territory Banding Is Wrong

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 →
Partial Pooling for Thin Rating Cells: Introducing bayesian-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 →
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 →