Releases: burning-cost/insurance-fairness
Releases · burning-cost/insurance-fairness
v1.2.0
New features
- PrivatizedFairPricer: sklearn-compatible pricing wrapper with local differential privacy (LDP), supporting randomised response and Laplace mechanisms for protected-attribute obfuscation
- OptimalLDPMechanism / LDPEpsilonAdvisor: analytical optimal LDP mechanism selection and epsilon calibration tool (v1.1.1)
- LocalizedParityCorrector / LocalizedParityAudit / LocalizedParityReport: localised fairness correction pipeline implementing arXiv:2603.25224 for spatially heterogeneous portfolios
- MultiStateTransitionFairness: fairness audit for multi-state transition models (disability, lapse, mortality)
- CCdCov intersectional fairness: conditional covariance decomposition for intersectional protected groups (Lee et al. 2025, v1.0.0)
- sensitivity subpackage: proxy discrimination measures based on LRTW EJOR 2026, with Databricks notebook demo
- LocalGLMMulticalibrationCorrector: Algorithm C from arXiv:2603.16317 — local GLM multicalibration correction
- proxy_sufficiency_test(): implements Proposition 6.5 of Denuit et al. 2026
- SequentialOTCorrector: fixes K>=2 calibration bug in WassersteinCorrector; correct sequential optimal transport for multi-group corrections
- IndirectDiscriminationAudit: Côté et al. proxy vulnerability scoring (v0.6.4)
- IterativeMulticalibrationCorrector: iterative correction with isotonic post-processing; fix to credibility target in MulticalibrationAudit
Improvements
- LipschitzMetric integrated as optional 4th objective in the NSGA-II Pareto front, penalising rate discontinuities across the protected-attribute boundary
- Multicalibration stopping criterion aligned to paper specification; isotonic corrector replaces ad-hoc smoothing
- Stratified group resampling replaces broken non-stratified bootstrap in confidence interval estimation
- ausprivauto0405 real-data benchmark added for gender fairness validation
- Regulatory references audited: fabricated FCA TR24/2 citation removed; foundational Solvency II and Consumer Duty references added throughout
- 87 new tests covering v0.8.x–v1.2.0 modules; additional path coverage for bootstrap CI, log-space transforms, binary thresholds, and multi-group flows
- Polars
pl.Utf8deprecation resolved across all modules; pandas 3.x dtype API updated
Bug fixes
- Fixed
IndexErrorin_build_summarywhenwmeanre-indexed a pre-sliced array - Fixed string dtype detection and integration test for
DiscriminationInsensitiveReweighter - Removed phantom
statsmodelsandPOTrequired dependencies (moved to dev / optional) - Fixed
NameErrorin README quickstart (missing model fitting step)
v0.6.3 — DiscriminationInsensitiveReweighter
New features
- DiscriminationInsensitiveReweighter — propensity-based sample reweighting to achieve feature independence from protected attributes without removing them from the model. Implements KL-divergence minimisation (Miao & Pesenti 2026). Supports logistic regression and random forest propensity models.
- ReweighterDiagnostics — diagnostic dataclass with effective sample size and per-group propensity scores.
Bug fixes
- Handle pandas 2.x
StringDtypecolumns in feature preparation (alongside legacyobjectdtype).
v0.6.0
What's Changed
New Features
- Added
DoubleFairnessAudit— joint action and outcome Pareto optimisation (Bian et al. 2026, arXiv:2601.19186). Separates action fairness (Delta_1: premium equity) from outcome fairness (Delta_2: loss ratio equity) and recovers the full Pareto front via lexicographic Tchebycheff scalarisation - Added
MarginalFairnessPremium— closed-form Stage 2 fairness correction for distortion risk measure premiums (Expected Shortfall, Wang transform) without an iterative solver (Huang & Pesenti 2025, arXiv:2505.18895) - Added
ProxyVulnerabilityScoreandParityCost— per-policyholder proxy vulnerability and £/year parity cost (Côté, Côté & Charpentier 2025) - Added
MulticalibrationAudit— ensures E[Y | mu(X)=p, A=a]=p for every protected group and prediction bin (Denuit et al. 2026) - Added
PrivatizedFairnessAudit— discrimination-free pricing via Local Differential Privacy (Zhang, Liu & Shi 2025, arXiv:2504.11775) - Exported
detect_proxiesat the top-level package for quick proxy checks without a full audit run
Improvements
- Added IFoA AIDSET talk demo notebook — four-act narrative covering proxy detection, Lindholm correction, and FCA audit trail
DoubleFairnessAudit.report()maps directly to FCA Consumer Duty PRIN 2A Outcome 4 (Price and Value) and TR24/2- Removed false EP25/2 citations; corrected to Consumer Duty PS22/9, Equality Act 2010 s.19, FCA TR24/2, FCA FG22/5
- Python 3.11 and 3.13 added to test matrix
Bug Fixes
- Fixed column order bug in
_predict_best_estimate_both_groups— CatBoost was silently receiving wrong feature order when column insertion order differed from training - Fixed README quickstart double-exposure issue:
calibration_by_groupexpects a rate, not a total premium - Fixed overflow in
proxy_vulnerability_pctwhen aware premium is zero
Full Changelog: v0.1.0...v0.6.0
v0.1.0
Initial release of insurance-fairness.
- Proxy discrimination auditing for UK insurance pricing models
- FCA Consumer Duty (PRIN 2A) and Equality Act 2010 Section 19 compliance checks
- Tests whether rating factors act as proxies for protected characteristics
- Produces audit-ready evidence pack addressing the gaps found in FCA's 2024 multi-firm review