FCA Consumer Duty, PRA SS1/23, proxy discrimination, and model risk governance. These posts translate regulatory requirements into concrete technical tests — not generic compliance checklists, but Python code that produces audit-ready output.
Monthly peeking at champion/challenger results with a t-test inflates your false positive rate to ~25%. The mixture SPRT (Johari et al. 2022) is an e-process: valid at every int...
The Python equivalent of the IFoA MLR Working Party's R tutorial: Poisson GLM baseline, EBM GAM, and CatBoost GBM on UK motor data, with the full pipeline from data to governance.
Benchmark results on synthetic UK motor renewal books. The constrained optimiser outperforms flat rate changes on profit and retention simultaneously. What it does not do: fix a...
insurance-deploy provides the champion/challenger infrastructure, audit trail, and ICOBS 6B compliance tooling that MLflow does not. Here is how to use it.
A UK motor frequency model drifts after an upstream vehicle group reclassification. We show how insurance-monitoring's PSI, A/E ratios, and Gini drift test caught the problem be...
We ran the insurance-fairness proxy detection library against a synthetic motor book with planted proxy effects and compared it against the manual correlation check most teams a...
Mutual information, proxy R-squared, and SHAP proxy scores all flag proxy discrimination but catch different things. A practical guide to interpreting conflicting signals in ins...
NannyML is the best general-purpose ML monitoring library for teams without ground truth labels. For insurance pricing, it doesn't do exposure-weighted PSI, segmented A/E ratios...
What pricing actuaries actually monitor and how to do it in Python: Gini coefficient stability, A/E ratios by segment, exposure-weighted PSI, and double-lift curves using the in...
Tutorial on monitoring insurance pricing models using actuarial KPIs. Gini tracking, segmented A/E, double-lift for champion/challenger. Why generic drift tools miss what matters.
Evidently is excellent for generic ML monitoring. It doesn't do exposure-weighted PSI, Poisson A/E ratios, Gini drift testing, or anytime-valid sequential tests. For UK insuranc...
EP25/2 requires non-life insurers to test whether rating factors act as proxies for protected characteristics. Here is exactly how to run that test in Python, with the correct s...
Fairlearn is excellent for classification fairness. It was not built for insurance pricing, the Equality Act 2010, or the FCA's specific concern: proxy discrimination in a multi...
EquiPy is a technically excellent fairness correction tool built on optimal transport theory, from Arthur Charpentier's group at UQAM. insurance-fairness is an FCA-focused proxy...
Alibi Detect is a solid general-purpose drift detection library. It doesn't do exposure-weighted PSI, segmented A/E ratios, Gini discrimination drift, or PRA SS3/17 regulatory f...
Evidently and NannyML are excellent tools. They do not understand exposure weighting, development lags, or the Gini drift test. insurance-monitoring does.
The FCA expects pricing teams to demonstrate their models don't proxy-discriminate under Consumer Duty. Most teams do this in Excel. Here is how to do it properly in Python, usi...
Most UK insurers don't hold ethnicity, religion, or disability status. Consumer Duty still requires evidence of fair outcomes. PrivatizedFairnessAudit solves this with local dif...
Active Consumer Duty investigations in home and travel insurance. What a defensible pricing model actually requires under PRIN 2A, and what the FCA thematic review said about mo...
Champion/challenger testing is the right way to evaluate pricing model changes. Most teams do it badly or not at all — ad-hoc scripts, no audit trail, no...
GLMComparison and MonotonicityEditor in insurance-gam close the governance gap between EBM shape functions and the GLM factor table your pricing committee...
How to run covariate shift detection as a recurring monthly check: monitoring cadence, ESS ratio trends, and the thresholds that trigger a retraining...
insurance-governance merges insurance-validation and insurance-mrm. PRA SS1/23 statistical validation and MRM governance in one install - no version conflicts.
CausalForestDML separates causal price effect from risk-lapse correlation in UK motor renewal. insurance-elasticity - per-customer CATE and ENBP optimiser.
Champion/challenger with ICOBS 6B.2.51R compliance for UK insurers. SHA-256 routing, SQLite logging, bootstrap LR tests, SMF-signable report - insurance-deploy.
Pairwise Interaction Networks produce exact tabulatable 2D rating factor surfaces, not SHAP approximations. Beats GBMs on French MTPL benchmark. Python.
Joint conformal prediction sets for frequency and severity in UK insurance. Fan and Sesia coordinate-wise standardization - simultaneous coverage across both.
Distributionally robust rate optimisation: worst-case demand within a Wasserstein ball. Price-of-robustness curve for UK pricing committee papers - Python.
Correct covariate shift when acquiring an MGA book for UK motor pricing. Importance weighting, density ratio estimation, segment-level diagnostics - Python.
Logistic regression treats all non-lapsers the same. Mixture cure models split them into two groups: structural non-lapsers who will never leave, and...
Bandit algorithms for FCA GIPP-compliant price experimentation in UK general insurance. ENBP constraints and compliance reporting built in - insurance-online.
Bayesian Causal Forests for heterogeneous lapse effects in UK insurance pricing. Segment-level elasticity with posteriors - insurance-bcf wrapping stochtree.
Automatic Debiased ML via Riesz Representers for continuous price elasticity. insurance-causal - no GPS density blow-up at tails. UK personal lines Python.
Survival models for UK personal lines retention: cure models, survival-adjusted CLV, actuarial lapse tables, MLflow deployment. What lifelines does not do.
PRA SS1/23 requires quantitative pass/fail tests, not narrative. insurance-governance automates the full validation suite and generates auditable HTML reports.
Regression Discontinuity Design tests if UK motor risk drops at age 25. Exposure-weighted Poisson outcomes, geographic boundaries, Consumer Duty output.
Actuarially faithful synthetic data via vine copulas and AIC-selected marginals. insurance-synthetic fixes Poisson semantics and tail behaviour SDV gets wrong.
Champion/challenger testing is the right way to evaluate pricing model changes. Most teams do it badly or not at all — ad-hoc scripts, no audit trail, no...
Step-by-step tutorial: plant two interactions in synthetic motor data, detect them with CANN + NID, validate with SHAP, confirm with A/E surfaces, and...
Detect and correct proxy discrimination in UK insurance using SHAP and insurance-fairness. Protected characteristic leakage detection under FCA Consumer Duty.
Assumes familiarity with the Murphy decomposition framework. Focuses on the operational question: given a monitoring alert, how do you read GMCB vs LMCB...
GLMComparison and MonotonicityEditor in insurance-gam close the governance gap between EBM shape functions and the GLM factor table your pricing committee...
OLS elasticity in formula-rated books is contaminated by your own risk model. insurance-elasticity fixes this with CausalForestDML and CatBoost nuisance.
How to run covariate shift detection as a recurring monthly check: monitoring cadence, ESS ratio trends, and the thresholds that trigger a retraining...
Logistic regression treats all non-lapsers the same. Mixture cure models split them into two groups: structural non-lapsers who will never leave, and...
PRA SS1/23 requires quantitative pass/fail tests, not narrative. insurance-governance automates the full validation suite and generates auditable HTML reports.