← Project hub

Superseded, 27 September 2026. This page is the record of Call #4 (6 Aug) as presented, and keeps the figures and vocabulary of that date. In paper v5.2 (27 September 2026): the seven-policyholder cohort earns +$5,306.98 (was $3,126.62); the ten-year renewer is $1,093.62, breaking even in year 2 (was $782.14, year 4); mean CLV rises 4.3× across tenure (was 4.1×); filing / planning basis are now the revenue-neutral / level-effect basis. The current state is on the project hub.

CAS CLV Pricing — Bi-Weekly Call Brief

Call: Thursday, August 6, 2026 · 4:30 PM ET · Call #4 of the bi-weekly series Rescheduled: moved from Thu Jul 30 at the group's request on the Jul 16 call (POG travel). Hard stop: 5:00 PM ET — 30 minutes, agenda timed accordingly. Project: Customer Lifetime Value Pricing (CAS Ratemaking Working Group) Phase: 4 — Ratemaking Integration & Regulatory Analysis (CAS window Jul 15–28) — closed complete; Phase 5 (Cross-Functional Validation & Case Studies, Jul 29 – Aug 19) underway Researcher: Pramod Misra (5G Vector partner: Neha Tiwari) CAS staff / coordinators: Elizabeth Smith, Heather Davis POG: Mondello (QBE) · Robinson (Allstate) · Paik · Werner (Werner Advisory) · Kozlowski (RTK) Master log: docs/calls/README.md


0. Decision summary — the five lines that matter

  1. Mark was right about tenure, and the effect is large. Measured loss ratio falls 0.625 → 0.416 across tenure; mean CLV rises 4.1× from the newest to the 10+ year cohort.
  2. But it inverts at filing. On a revenue-neutral basis, recognising that new business improves with tenure means long-tenured business carries relatively more loss — the 10+ cohort's mean CLV falls 7.0%. "Loss improves with tenure" is not "give loyal customers a discount".
  3. Default is unchanged and provably so. loss_trend=0.0 is an exact no-op, asserted per model family. Nothing previously published moved.
  4. The web UI you were promised exists — an interactive scenario planner, reconciling to predict_clv() to the cent.
  5. The big caveat is honest and unresolved: the gradient is measured on one synthetic book. The NAIC five-year cross-carrier test is not yet run.

1. Agenda (~30 min, hard stop 5:00 PM ET)

Min Item Ref
0–3 Phase 4 closed; tranche-2 bundle delivered — what's in it §2, §6
3–8 Mark's cohort, hand-checkable: two renew once, five renew ten years §3
8–14 Tenure-varying loss: what we measured, and the finding that inverts it §4
14–19 Scenario planning + live demo of the planner §5
19–27 Decisions Q1–Q4 (poll slide) §7
27–30 Aug-14 feedback window, RPM priority, open items §8, §9

If we run long, Q1 and Q3 are the two that must be answered — by email is fine.


2. Phase 4 — closed complete

Delivered inside the CAS window (Jul 15–28), unchanged since the Jul 30 brief:

Deliverable Status
clv_rate_relativities — credibility-weighted, loss-cost basis, premium-balanced ✅
retention_adjusted_loss_ratio — survival-weighted lifetime loss ratio by tenure ✅
expense_recovery_exhibit — acquisition recoupment + discounted breakeven ✅
cross_sell_adjusted_premium — business-optimization only, firewalled from indications ✅
disparate_impact_test · rate_adequacy_check · filing_exhibit_generator ✅
docs/regulatory_mapping.md — CA Prop 103 · TX Title 28 Ch.5 · NY §2304 · CO SB21-169 + Reg 10-1-1 · NAIC model laws + AI Model Bulletin · GDPR Arts. 21–22 ✅

Structural compliance is unchanged: filing exhibits consume the unconstrained variant (cross-sell term = 0) on renewal-expense margins, so NY §2304 / CA no-price-optimization compliance is by construction rather than by procedure.


3. Follow-through on Mark's case-study ask — the cohort you described

"Even if it's a very simple case study. You have again like a very small cohort of policyholders. Two people renew, five people renew for ten years. … how would this model account for that and what would it show? … it'd be interesting to see how this adds to the lens of how you evaluate that in terms of profit." — Mark Mondello, Jul 16

Built as cas_clv.cohorts.mark_cohort() + micro_cohort_walkthrough() — seven named policyholders, term-by-term arithmetic, checkable with a calculator. Persistence is stated, not modelled, so no model is involved and nothing is hidden.

At premium $1,450, loss ratio 0.66, renewal expense 0.20, acquisition 0.40, discount 8%:

The profit lens: an identical 0.66 loss ratio on every policy produces CLVs from −$392 to +$782. Persistence, not loss experience, is doing the work. Two of seven policyholders destroy value and the cohort still earns. A book written entirely of one-renewal policyholders at a "profitable" 0.66 would lose money.

Scaled to the book (5,000 customers, hybrid model, 5-year horizon):

Tenure cohort Customers Mean CLV P25 P75 Loss ratio Share of value
1 yr 919 1,870.71 146.36 4,649.52 0.6468 9.8%
2–3 yrs 1,350 1,570.73 0.00 4,504.36 0.6034 12.1%
4–5 yrs 943 3,111.95 0.00 5,855.88 0.5593 16.8%
6–9 yrs 1,268 5,275.14 1,126.73 8,993.79 0.5290 38.3%
10+ yrs 520 7,706.53 2,869.66 11,688.08 0.4564 22.9%

Two things we are not hiding: the 2–3 year cohort's mean sits below the 1-year cohort's (early lapses concentrate there; its P25 and median are both $0.00), and the bands are enormous relative to the means. A single customer's CLV is not a quotable number; a cohort with its band is.

The profit bridge answers "where does the value come from": net of acquisition cost the 1-year cohort keeps only 28% of its gross value and the 2–3 year cohort just 12% ($247K net on $2.12M gross), against 73% for the 10+ cohort. That trough is where retention spend has the highest return.


4. Follow-through on Mark's tenure-loss ask — and the finding that inverts it

"The losses might actually differ by how long you have had them renew. … is this a dynamic or are we just saying everything is a static thing?" — Mark Mondello, Jul 16 "…versus having like a consistent sixty-six percent loss ratio across every renewal." — POG chair

This was a real gap, and the repo contradicted itself. retention_adjusted_loss_ratio() already measured the gradient, but predict_clv() charged a constant loss at every future renewal.

What changed. CLV = DERT × margin cannot express a margin that varies by year, so CLV is now Σ_t n_t × margin(t) where n_t = DERT(t) − DERT(t−1) — differenced from each model's own cumulative number, so it adds no new estimation, sums back exactly (error 0.0 on all six families), and lives in the shared base so all six model families inherit it.

The curve. Measured 0.6252 → 0.4163 against a pooled 0.5246, then smoothed by a premium-weighted log-linear fit: 4.22% loss-ratio credit per renewal year, R² 0.887, floored at 0.70. Raw yearly ratios are unusable for pricing (tenure 6 rebounds to 0.5174 on thin premium). The floor is the analog of a selected development pattern with a tail cut-off.

The indexing point that matters. The multiplier is curve[τ+t] / curve[τ] — relative to each customer's own current tenure. A customer's observed loss already embeds the tenure they have lived through, so an absolute-tenure discount would credit it twice. So: tenure value is mostly already in the observed loss; what the curve adds is the improvement still ahead of the not-yet-mature.

And then the inversion. Applied revenue-neutrally — which is what makes it a relativity rather than a rate decrease — the book total does not move at all ($17,470,511 either way), but:

Cohort Change in mean CLV
1 yr +$48.77 (+2.6%)
2–3 yrs +$53.38 (+3.4%)
4–5 yrs +$97.77 (+3.1%)
6–9 yrs +$56.95 (+1.1%)
10+ yrs −$540.94 (−7.0%)

Long-tenured customers have almost no forward improvement left to credit; rescaling to revenue-neutrality then raises their multiplier. A tenure relativity built naively from a loss-ratio-by-tenure exhibit is likely to be backwards. This is poll Q3.

The two bases, mirroring the existing filing/planning split:

Basis Book CLV Use for
Filing (tenure_loss_normalize=True, default) — revenue-neutral relativity $17.47M (unchanged) Rate relativities. rate_adequacy_check unaffected by construction.
Planning (=False) — genuine level effect $20.09M (+$2.62M) Acquisition budgets, retention ROI. Must not enter an unfiled indication.

On the planning basis the entire uplift is exactly the modelled loss saving ($27.60M → $24.99M expected loss; +$2.62M CLV). Asserted in the test suite.

Default remains loss_trend=0.0, an exact no-op verified per model family with assert_frame_equal on the whole prediction frame. Every previously published figure is unchanged.


5. Scenario planning, and the promised web UI

"It won't be like a static model which will give you one number and that's it. It's more about you have a few levers to change and basis those changes, you can see how this value will evolve."

Seven named scenarios now ship (cas_clv.scenarios), plus docs/sensitivity_appendix.md — an eight-dimension grid, generated not hand-written.

Scenario Book CLV vs base
base 17,470,511 1.00
soft_market 17,555,664 1.00
hard_market 15,013,753 0.86
adverse_retention 12,391,567 0.71
recession 8,001,896 0.46
long_horizon 28,750,972 1.65

Two results worth your attention.

The web UI (2026-08-06_scenario_planner.html) — sliders for premium, loss ratio, both expense ratios, horizon, discount, cross-sell and upsell; a model selector; a tenure-loss toggle. Runs entirely client-side. It reconciles to predict_clv() to the cent on all six families, and BG/NBD's $2,805 / $3,499 are the same two numbers as case study 3 from July 16.


6. Tranche-2 bundle (milestone ~Aug 7 — $16,166.67)

Delivered as of this call:

  1. Paper draft — paper/paper.md, plus the new tenure-loss section and the updated sensitivity-discipline statement.
  2. Preliminary toolkit — cas_clv with data, models (six families), features, ratemaking, regulatory, and new cohorts + scenarios. QA gate green: 108 tests, ruff clean, mypy clean.
  3. Executive summary — paper/executive_summary.md, 2–3 pages non-technical.
  4. Supporting: docs/sensitivity_appendix.md, docs/regulatory_mapping.md, notebooks 01–06, the Call #4 materials on the hub.

This starts the agreed one-week feedback clock — feedback by ~Fri Aug 14.


7. Questions for POG input

Full poll slide: 2026-08-06_poll.html. Summarised:

  1. Q1 — Tenure-varying loss default. Flat headline with the gradient as a published sensitivity (★ recommended, pending the NAIC test) / filing basis as headline / planning basis as headline / publish both side-by-side.
  2. Q2 — Curve source. Fit on the user's own book with ours as illustration (★) / ship ours as a general default / credibility-blend to an industry curve / judgmentally selected, no default.
  3. Q3 — May a tenure relativity enter a filed exhibit? Planning use only, publishing the inversion as a cautionary finding (★) / permit on the unconstrained variant with the four-fifths screen extended to age bands / stay silent / dedicated state-by-state section.
  4. Q4 — Case-study grain for the paper. Lead with the 7-policyholder cohort then scale (★) / tenure bands only / CLV quintiles only / all as appendix.

Reserve (for Call #5): the NAIC five-year cross-carrier reproducibility protocol — which lines, how many carriers, and what dispersion in the fitted credit you would accept before calling it reproducible.


8. Open action items

CAS side - ScholarOne + casact repo provisioning [CONFIRM] — overdue since ~Jun 19. - RPM date [CONFIRM]. - Hub access: the project hub is a private Hugging Face Space, so only the owner can open it. POG members need HF accounts added as collaborators, or we send PDF exports instead. This is Mark's Jul-16 request ("export as a PDF … send this out afterwards") still unresolved — we need a decision on which route.

Researcher side - NAIC five-year cross-carrier reproducibility test — not yet run. Scheduled inside Phase 5 (window closes Aug 19); results at Call #5 or by email sooner. Biggest outstanding caveat. - Disparate-impact screen extended to age bands (currently region only) before any filing use of a tenure relativity. - Phase 5 validation + case studies continue to Aug 19. - RPM ratemaking call paper remains the priority if the two compete, per the Jul-16 call.


9. Artifacts

New this call: src/cas_clv/cohorts.py · src/cas_clv/scenarios.py · tests/test_cohorts.py · tests/test_scenarios.py · tenure-loss path in src/cas_clv/models.py (+ tests in tests/test_models.py) · scripts/build_sensitivity_appendix.py · docs/sensitivity_appendix.md · docs/calls/phase4_cohort_scenario_data.py

Call materials: 2026-08-06_poll.html · 2026-08-06_cohort_scenarios.html · 2026-08-06_scenario_planner.html

Reproduce every figure: python docs/calls/phase4_cohort_scenario_data.py (seeded, set_seed(42)). QA gate: pytest -q 108 passed · ruff check . clean · mypy src/ clean.

This research project has been funded by the Casualty Actuarial Society.