Interactive CLV scenario planner

CAS Ratemaking Working Group · every lever predict_clv() has, driven from a browser · toolkit cas_clv v1.1 · seed 42

Research preview — shared for Project Oversight Group review. This calculator accompanies a Casualty Actuarial Society research project on customer lifetime value in property-casualty ratemaking. The manuscript is under review and not yet published, and the figures here are not a published result.

Every coefficient comes from a seeded synthetic book of 5,000 customers — no real carrier or agency data is used anywhere in this project. The research was funded by the Casualty Actuarial Society under an agreement executed 21 May 2026, and all rights in the work, including copyright, are assigned to the CAS. The companion toolkit will be released at github.com/casact under the Mozilla Public License 2.0. Please do not redistribute these figures ahead of publication.

What this is, and which mode you want

Two calculators. They answer different questions, and only one of them can be exact about retention.

Book average
Values the fitted 5,000-customer synthetic book, one model family at a time. A faithful factorisation of predict_clv() — not an approximation. Use it to ask “what does this assumption do to the book?”
Single customer
A discrete term-by-term calculation on an explicit flat retention path. No fitted model, every cell checkable by hand. Use it to ask “does this reproduce my spreadsheet, and where does it differ?”

The page verifies itself: it recomputes a suite of Python-generated golden vectors on load and reports the worst deviation. checking…

Assumptions

Preset
Model family
Tenure basis

Customer lifetime value

Base variant — P − L − E
P − L − E only. Defensible in an indication.
With-growth variant — adds cross-sell and upsell
Net of acquisition — new business

Year-by-year build-up

Discounted contribution to with-growth CLV by future policy year

The same numbers as a table

YearExpected renewals Loss multiplierEffective loss ratio Discount factorBase contribution Growth contributionCumulative (with growth)

The footer row is the headline, by construction — base sums to the base card and base + growth sums to the with-growth card. A number you cannot trace to a row is a number you should not trust.

How it computes

CLV = Σt=1..H (1+r)−t × [ (1−eren)·At·sP − mt·Bt·sL − F·Nt + Xt·Nt ]

At, Bt and Nt are the book's premium-weighted, loss-weighted and plain expected renewals for future year t, exported undiscounted so the page applies your own discount rate. sP and sL scale them to your premium and loss ratio, F is fixed expense per term, and Xt is the growth weight — cross-sell carrying the one-time first-occurrence weight (1−p)t−1p and upsell the permanent step-up 1−(1−q)t.

The tenure multiplier mt is exact at any horizon and discount rate, not interpolated from a grid. Writing At for the loss-weighted mean relative multiplier at full trend, the blend is 1 + trend·(At−1) — linear, because the loss weights do not depend on the trend. The revenue-neutral basis then applies one scalar, k = 1/(1+trend·(B−1)), with B the same ratio pooled across the horizon under your discount factors.

Try this. On the revenue-neutral basis, drag the tenure trend from 0 to 1. The two headline figures do not move — but every row of the table does. That is the revenue-neutral property, visible rather than asserted: the curve redistributes expected loss across tenure without changing the book's total. Switch to level-effect and the headline moves, because that basis is a forward-looking assumption about loss improvement rather than a relativity.

Honest limits

Payload and golden vectors generated by python scripts/build_clv_planner.py (set_seed(42)), which refuses to write unless the Python reference in cas_clv.planner_reference reconciles to predict_clv() across a sweep of lever combinations and reproduces the reviewed worked example both as written and as corrected. Related: review-response register · cohort deep dive.

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