Group-Benefits IBNR Claim Reserving Estimate the IBNR / unpaid-claim liability (ultimate settlement cost) for short-duration group life, disability, dental and vision coverages.
Short-duration claims-reserving model (development triangles / Bornhuetter-Ferguson or equivalent) estimating incurred-but-not-reported and reported-but-unpaid liabilities for group morbidity/mortality lines. A DISTINCT methodology from the platform's long-duration FPB / statutory reserves (M-001..M-005): short-duration incurred-but-not-reported claim development rather than projected policy cash flows. Grounded in PRU and MET FY2025 group-benefits disclosures (vertical 10-K study, gap #3). Planned: the engine and group-claims-experience data source do not yet exist in code — this entry is a documented planned model (status: under_development) per the issue's scope question.
Inputs, processing, outputs
- data sources
- DS-082
- engines
-
insmodel.L4.group_ibnr
- dimensions
- D7
Methodology
Estimates the IBNR / unpaid-claim liability via two standard short-duration methods:
- Chain-ladder. Volume-weighted age-to-age development factors
f_j = Σ_i C[i,j+1] / Σ_i C[i,j]are accumulated into a cumulative development factor to ultimateCDF_i = (Π_{j≥d_i} f_j)·tail. The ultimate develops the latest observed diagonal,U^CL_i = C[i,d_i]·CDF_i; IBNR isU^CL_i − C[i,d_i]. - Bornhuetter-Ferguson. Blends reported claims with an exposure-based a-priori ultimate
A_i(earned premium × expected loss ratio):IBNR^BF_i = A_i·(1 − 1/CDF_i), stabilising the greenest accident periods.
A distinct run-off methodology from the platform's long-duration FPB / statutory engines (M-001..M-005). See firmmodel/governance/legacy_metadata/GroupIBNREngine.yaml for the full SR 11-7 narrative.
Key Assumptions and Their Justification
The model carries no formally-bound A-NNN entries; its substantive assumptions (transcribed from legacy_metadata/GroupIBNREngine.yaml) are:
- Chain-ladder stationarity. Historical claim development (age-to-age factors) is predictive of future development for open accident periods. This is the core chain-ladder premise — the past run-off pattern repeats.
- Stable development pattern across accident periods. No material mix, coverage, or claims-handling shifts distort the triangle. Justifies pooling all accident periods into a single volume-weighted age-to-age factor per development age.
- Credible exposure-based Bornhuetter-Ferguson a-priori. For the BF path, the a-priori expected loss ratio is a credible, exposure-based prior (earned premium × expected loss ratio) independent of the emerging development. This is what stabilises the greenest accident periods, where the chain-ladder is most volatile.
- Tail factor captures beyond-triangle development. A tail factor extends the cumulative development factor past the oldest observed development age to capture residual run-off.
Engine default configuration (visible in the ENGINE_CONTRACT and calculate() of group_ibnr_engine.py):
- method = "both" — runs both chain-ladder and Bornhuetter-Ferguson.
- tail_factor = 1.0 — no tail extension applied by default (assumes the triangle is fully developed at the oldest observed age).
- Selection rule: when method = "both", the selected IBNR prefers the Bornhuetter-Ferguson estimate when an a-priori prior exists (more stable for green periods) and falls back to chain-ladder when no premium/ELR (or explicit expected ultimate) is supplied.
Limitations and Known Gaps
The engine is built, unit-tested, and bound to a disclosed firm triangle (DS-082). The earlier "internal firm data not disclosed in 10-Ks / data-binding is the gate" framing is stale: DS-082 transcribes MetLife's disclosed ASC 944-40 10-K incurred-claims-development triangle and the engine reconciles to the disclosed liability for unpaid claims (see Validation Packet). The real remaining gaps are:
- Single-firm, two-LOB coverage. DS-082 currently covers MetLife only, across two Group Benefits LOBs (Group Life – Term and Group Long-term Disability). The model is not yet exercised across the remaining Group Benefits LOBs or against multiple firms.
- Bornhuetter-Ferguson a-priori now exercised against disclosed exposure (one residual on the a-priori form). As of 2026-06-07 the BF path is exercised against a disclosed-exposure a-priori for the green accident years and reconciled to the chain-ladder (validation pack §10.5 element 3b): the disclosed "Total IBNR Liabilities Plus Expected Development on Reported Claims" column forms
A_i. Residual: the textbookearned premium × expected loss ratioform is not used because MetLife does not disclose earned premium by LOB by incurral year (only the Group Benefits segment aggregate, Schedule III). Forming EP×ELR at that granularity would require an invented split (fabrication), so the disclosed IBNR-plus-expected-development column is used instead. - No claim-count / severity or calendar / seasonality decomposition. The model develops aggregate triangle values only — no explicit claim-count-vs-severity decomposition, large-loss smoothing, calendar-period (inflation) effects, or seasonality.
- Chain-ladder volatility on green periods. The chain-ladder is volatile for the most recent (greenest) accident periods where few claims have reported; BF mitigates this and the mitigation is now demonstrated against disclosed exposure — e.g. Group LTD 2025 BF ultimate 1,922.23 vs chain-ladder 1,965.59 (−2.21%), the disclosed-exposure anchor tempering the volatile green diagonal (validation pack §10.5 element 3b).
- Gating item for
activeis effective-challenge sign-off (per AP-26 for Tier-1) — not the data binding, which is now resolved.status: under_developmentuntil 2L effective challenge completes.
Tracked for ratification (not applied in this documentation pass): promotion to active; extending DS-082 to remaining LOBs / multiple firms; exercising the BF path with disclosed-exposure a-prioris; capturing a formal validation-evidence pack + 2L ratification (INV-029); reconciling the card-vs-registry exposure-axis materiality (card medium vs registry high).
Output Snapshot
Deterministic, no-live-data snapshot transcribed from the frozen hand-computed-triangle unit test tests/test_group_ibnr_engine.py (GroupIBNREngine v1.0.0). These are the test's already-asserted values — no new numbers were generated.
Input (textbook cumulative-paid triangle, accident period × development age):
| AP | dev 1 | dev 2 | dev 3 | dev 4 |
|---|---|---|---|---|
| 1 | 100 | 150 | 175 | 180 |
| 2 | 110 | 165 | 192 | |
| 3 | 120 | 180 | ||
| 4 | 130 |
Hand-computed age-to-age factors: f1 = 495/330 = 1.5, f2 = 367/315 = 1.165079, f3 = 180/175 = 1.028571; tail_factor = 1.0.
Chain-ladder output (method = "chain_ladder"):
| AP | ultimate_chain_ladder | ibnr_chain_ladder |
|---|---|---|
| 1 | 180.00 | 0.00 (fully developed) |
| 2 | 197.49 | |
| 3 | 215.71 | |
| 4 | 233.68 | |
| total | ≈ 144.88 |
Bornhuetter-Ferguson output (AP 4, with a-priori earned_premium = 230, expected_loss_ratio = 0.95): expected_ultimate = 218.5, ibnr_bornhuetter_ferguson = 96.95 (% reported = 1/CDF(1.79755) = 0.55631). Without a prior, BF columns are NaN and ibnr_selected falls back to the chain-ladder value.
Source: tests/test_group_ibnr_engine.py (frozen unit-test values). Deterministic, no live firm data.
Validation Packet
Real-firm reconciliation (2026-06-05). The chain-ladder was run on MetLife's disclosed ASC 944-40 Group Benefits (Group Life – Term) incurred claims-development triangle (FY2025 10-K, Note 4, SEC accession 0001099219-26-000013; InsModel firmmodel/data_feeds/group_benefits_met.py, DS-082). It reconciles to the disclosed liability for unpaid claims of $3,216M within ~7% (engine implied unpaid ≈ $3,441M): the fully-developed incurral years (2016–2019) tie to the disclosed incurred within 0.5%, and the residual is the chain-ladder's independent development of the green (2024–25) diagonal sitting modestly above MetLife's booked incurred — the independent-challenger signal expected of a reserve model. Test: tests/test_group_ibnr_met_reconciliation.py (4 cases) + tests/test_group_ibnr_engine.py (hand-computed triangle).
DS-082 now covers two MetLife LOBs that exercise the chain-ladder in opposite regimes and both reconcile tightly: Group Life – Term (fast run-off, develops up, unpaid ties to $3,216M within ~7%) and Group Long-term Disability (slow run-off — yr1 5.2% payout — incurred trends down as claims terminate, total ultimate within 2% of disclosed $14,568M).
Remaining for active: (1) extend DS-082 to the remaining Group Benefits LOBs + multi-firm; (2) ~~Bornhuetter-Ferguson a-priori from disclosed exposure for the green years~~ — done 2026-06-07 against the disclosed IBNR-plus-expected-development column (the textbook EP×ELR form is not disclosable at LOB×incurral-year granularity; see Limitations); (3) effective-challenge / 2L sign-off (per AP-26 for Tier-1).
References
Regulatory / accounting: - ASC 944-40 — Short-duration contract claim liabilities (unpaid claims and claim adjustment expenses); the Tier-1 reserve trigger for M-007.
Actuarial standards: - ASOP No. 43 — Property/Casualty Unpaid Claim Estimates (IBNR estimation standards for short-duration claim development). - ASOP No. 5 — Incurred Health and Disability Claims (incurred-claim and unpaid-claim liability estimation for health/disability lines).
Methodology literature: - Bornhuetter, R. & Ferguson, R. (1972), "The Actuary and IBNR", Proceedings of the Casualty Actuarial Society (PCAS) LIX.
Internal:
- Decision 018 (MRM Framework) — Management/decisions/018-mrm-framework-multi-regime.md.
- Decision 046 (Model / Engine / Assumption Identification & Tracking Standard) — Management/decisions/046-model-engine-assumption-identification-standard.md.
- Component SR 11-7 archive: firmmodel/governance/legacy_metadata/GroupIBNREngine.yaml.
- Data source: DS-082 (ASC 944-40 short-duration claims-development tables) — see modelling/data_source_registry.yaml.
Change Log
Card change history. Code-side change history lives in git log of the component files.
- 2026-06-05 — stub created from registry data per Decision 023 Phase 5 / B-07.
- 2026-06-05/06 — engine build events documented:
insmodel.L4.group_ibnrv1.0.0 built (group_ibnr_engine.py), DS-082 (MetLife disclosed ASC 944-40 triangle) bound, and MET reconciliation tests added (tests/test_group_ibnr_met_reconciliation.py+ hand-computed-triangletests/test_group_ibnr_engine.py). Documentation of events already in git/registry — not new validation. - 2026-06-06 — Tier-1 documentation pass: filled Standards Coverage, Dependencies, Key Assumptions, Output Snapshot (transcribed from frozen unit-test values), and References sections from the SR 11-7 archive + engine source; corrected the stale "internal data not disclosed / data-binding is the gate" framing in Limitations (DS-082 is bound and active; the gate is effective-challenge sign-off); pinned engine version 1.0.0. No model outputs or validation results were generated. Output-changing / lifecycle items left for ratification.
- 2026-06-07 — COND-001-r sub-item (4): BF path exercised against a disclosed-exposure a-priori for the green years. DS-082 extended with the disclosed "Total IBNR Liabilities Plus Expected Development on Reported Claims" column per LOB per incurral year (
group_benefits_met.py::disclosed_ibnr_plus_expected/disclosed_apriori_ultimate/engine_input_with_apriori); +5 tests intests/test_group_ibnr_met_reconciliation.py(BF-vs-CL green-year reconciliation for both LOBs, a-priori provenance, aggregate BF-to-disclosed-unpaid, DS-082 LTD-unpaid correction). Validation pack §10.5 element 3b added. No-fabrication finding: MetLife does not disclose earned premium by LOB by incurral year (only Group Benefits segment aggregate, Schedule III), so the textbook EP×ELR a-priori is not formed — the disclosed IBNR-plus-expected-development column is used instead. Also corrected DS-082: Group LTD total unpaid = $8,591M, prior-to-2016 = $1,463M (were None/0). Engine unchanged; no ENGINE_CONTRACT change.
Open findings (1)
Independent 2nd-line review (INV-2026-06) — implemented capability vs registered scope. Each carries a recommended fix and is tracked in insightalm-mrm until closed.
Validation evidence + change logs missing across most of the inventory
Only M-001/M-020/M-050 carried full documentation packs before this pass. Most models record validation_evidence: missing and change_log: missing with peer_review: pending. Gold tests freeze behaviour but many assert only structural invariants (e.g. reserve>0), not correctness against external truth. The flagship T0-vs-10-K match is circular (BV-032).
Recommendation: For each Tier-1 model: produce a validation-evidence pack (back-test vs disclosed results once BV-032 re-calibration lands, sensitivity suite, challenger comparison), a change log, and a 2L ratification. Sequence behind BV-032 (firm-data) for anything needing 10-K reconciliation.
Per-tier expectations
Per MRM Framework §10.2 + §10.3, this model's regulatory_frameworks tag list activates the following overlays:
| component | tier-1 expectation | status |
|---|---|---|
| Registry entry | required | present |
| Model card (§10.5 doc pack) | required | present |
| Validation evidence | required | present |
| Change log | required | present |
| Independent effective challenge (2L) | required | attested |
Ratified — RAT-007-v1.0.2
Latest ratification on file: RAT-007-v1.0.2. Authored by 2L (mrm-peer-reviewer) per Decision 028 charter §5 Pattern A.