The FCA’s Consumer Duty and EP25/2 have sharpened regulatory attention on pricing fairness. The obligation is not simply to avoid using protected characteristics directly — that was already the case under the Equality Act 2010. The harder problem is proxy discrimination: a rating factor that is genuinely predictive of risk but also highly correlated with a protected characteristic can produce systematically different premiums for protected groups without the protected variable ever appearing in the model.

Detecting proxy discrimination requires testing the model’s pricing distribution against an external reference — or, more rigorously, testing whether the pricing relativities for a suspect variable can be explained by risk differences alone, or whether they reflect the variable’s correlation with a protected characteristic. Correcting it requires either removing the proxy or applying an optimal transport adjustment that preserves the risk signal while eliminating the discriminatory component. Both of these steps need to be documented in a way that would survive FCA scrutiny.

The insurance-fairness library implements the full audit workflow: correlation decomposition to identify suspect proxies, LRTW-based discrimination testing, optimal transport discrimination-free pricing, and structured output for Consumer Duty documentation. It works with and without sensitive attribute data — for cases where you do not hold protected characteristics directly.

Library: insurance-fairness on GitHub · pip install insurance-fairness


Tutorials and introductions


Techniques and methods


Benchmarks and validation


Library comparisons


Regulatory context