Tier 1 · Statutory Reserves

Group-Benefits IBNR Claim Reserving

M-007 · lifecycle: monitoring · RAT-007-v1.0.2

Intended Use

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.


Components

Inputs, processing, outputs

data sources
DS-082
engines
insmodel.L4.group_ibnr
dimensions
D7

Methodology & Mechanics

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 ultimate CDF_i = (Π_{j≥d_i} f_j)·tail. The ultimate develops the latest observed diagonal, U^CL_i = C[i,d_i]·CDF_i; IBNR is U^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

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

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 textbook earned premium × expected loss ratio form 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 active is effective-challenge sign-off (per AP-26 for Tier-1) — not the data binding, which is now resolved. status: under_development until 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

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 Evidence

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

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

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_ibnr v1.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-triangle tests/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 in tests/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.

2L Inventory Review

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.

HIGH INV-029 · P5 · validation-gap

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.


Validation Coverage

Per-tier expectations

Per MRM Framework §10.2 + §10.3, this model's regulatory_frameworks tag list activates the following overlays:

asc_944 asop_56 internal
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

Ratification

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.