Skip to content

Releases: burning-cost/insurance-fairness

v1.2.0

03 Apr 17:20

Choose a tag to compare

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.Utf8 deprecation resolved across all modules; pandas 3.x dtype API updated

Bug fixes

  • Fixed IndexError in _build_summary when wmean re-indexed a pre-sliced array
  • Fixed string dtype detection and integration test for DiscriminationInsensitiveReweighter
  • Removed phantom statsmodels and POT required dependencies (moved to dev / optional)
  • Fixed NameError in README quickstart (missing model fitting step)

v0.6.3 — DiscriminationInsensitiveReweighter

25 Mar 05:03

Choose a tag to compare

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 StringDtype columns in feature preparation (alongside legacy object dtype).

v0.6.0

21 Mar 16:14

Choose a tag to compare

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 ProxyVulnerabilityScore and ParityCost — 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_proxies at 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_group expects a rate, not a total premium
  • Fixed overflow in proxy_vulnerability_pct when aware premium is zero

Full Changelog: v0.1.0...v0.6.0

v0.1.0

09 Mar 08:16

Choose a tag to compare

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