← Project hub

Superseded, 27 September 2026. This page is the record of round-1 review response (21 Aug) as presented, and keeps the figures and vocabulary of that date. In paper v5.2 (27 September 2026): filing / planning basis are now the revenue-neutral / level-effect basis. The current state is on the project hub.

Response to Mark Mondello's review — paper v2.0 comments and the discrete CLV example

To: Mark Mondello (QBE), CAS CLV Pricing Project Oversight Group From: Pramod Misra, Principal Researcher Date: 21 August 2026 · for Call #6 Concerns: six comments added to CAS_CLV_Paper_v2.0_AJR+MM.docx (17 Aug) and My_Simple_CLV_Discrete_Example_001.xlsx Manuscript: all six comments are addressed in paper v3.1, and the loose end your red cell N17 exposed is now resolved in v3.2. No reported figure changed in either.


Summary

Thank you — and specifically, thank you for building the spreadsheet. It did something no written comment could have: it reproduced, independently, the exact defect AJ found. You built it from the v2.0 text, and the v2.0 text led you to credit cross-sell in every renewal term. That is comment 16, arrived at from the opposite direction, and it is strong evidence that the old wording invited the misreading rather than merely permitting it.

Your worksheet reproduces to the cent in our code before any correction: CLV_with_X \$1,759.73, CLV_without_X \$1,610.15, development gap \$149.58. We would not propose corrections to a model we could not first reproduce exactly.

Two things in the sheet do not match what v3.0 implements, and one thing you got exactly right that is worth saying out loud.

Item Effect on your total
✅ Acquisition vs renewal expense split — 0.40 at inception, 0.20 thereafter correct as written; this is the paper's inception view
⚠ Correction 1 — growth shape (cross-sell one-time, upsell a permanent step-up) +\$101.23
⚠ Correction 2 — tenure credit is multiplicative, not additive −\$199.76
v3.2-consistent total \$1,661.20 (net −\$98.53)

clv_base on your assumptions is \$1,410.39, and the corrected growth gap is \$250.81 against your \$149.58.

Corrected workbook: docs/calls/2026-08-21_CLV_Discrete_Example_reconciled.xlsx — your layout, both loss-ratio and both growth columns side by side, plus a sheet answering each red cell. Reproduce it with python docs/calls/phase6_mondello_example_reconciliation.py. The script reproduces your sheet first and then corrects it, one change at a time, so each correction carries its own dollar impact; its growth weights are checked against the toolkit's own _growth_weights rather than a reimplementation (max absolute difference 0.00).


The two corrections

1. Growth: cross-sell happens once; upsell is permanent

Your column G computes Xi(t) = P(cross-sell)ₜ × $150 + P(upsell)ₜ × $100 and adds it to the margin of every term. Two consequences:

This is why v3.0 stopped calling both of them "growth" and split them. At book level the same correction moved the reported growth gap from \$693.40 to \$376.21.

2. The tenure credit compounds

Your column H applies LR(t) = MAX(LR(t−1) − 0.0422, floor) — 0.0422 loss-ratio points subtracted each year. The paper's 4.22%/year is a multiplicative credit from a premium-weighted log-linear fit, so it compounds: LR(t) = LR(1) × (1 − 0.0422)^(t−1), floored at 0.70 of base.

Term 1 2 3 4 5
Yours (additive) 0.6250 0.5828 0.5406 0.4984 0.4562
Paper (multiplicative) 0.6250 0.5986 0.5734 0.5492 0.5260

Yours falls faster and reaches the floor by term 6; the fitted curve never does within ten years. This is the larger of the two corrections, worth −\$199.76 on your total.

One caveat that matters more than either correction: in the shipped toolkit loss_trend defaults to 0.0 and is an exact no-op, asserted by tests in every model family. Your sheet has the curve switched on. Since your email we have completed the external validation (limitation L4): the designed cross-carrier test is not executable on public data by anyone, and neither real panel we could obtain reproduces the shipped magnitude. The curve ships as a mechanism, not a parameter — so the right reading of your tenure column is "here is how the machinery would work if you fitted it on your own book", not "here is the industry number".


Your five red cells

Answers are also on the Answers_to_red_cells sheet of the corrected workbook.

P10 — "I assume the \$150 would be estimated by its own CLV." Correct, and that is now the documented definition. cross_sell_value is the CLV of the secondary product — the homeowners policy valued on the same P−L−E basis over its own expected life. Your reading and AJ's coincide, and the code was changed to match. The only thing to change is when it is credited (correction 1).

P11 — "How would the \$100 be estimated?" As the incremental annual margin from the upgrade, not a one-time \$100: the added premium for the higher limit, less the expected loss and variable expense it brings. It then applies in every term from the upgrade year onward.

N17 — "Are premium and cross-sell in day-0 terms, with inflation in the discount factor?" Day-0 terms, yes — and you have found a genuine loose end. The toolkit applies no premium or loss inflation index (loss_trend is a no-op), while the discount rate is anchored to the cost of equity, which is a nominal rate. Discounting real cash flows at a nominal rate is a mismatch. It is conservative — it understates CLV — so it does not threaten any filing-side conclusion, but it should be stated rather than left implicit. Now done at v3.2: §3.1 states the convention explicitly, gives the two clean resolutions, and limitation L14 records that the bias is one-sided, conservative, and immaterial to every relativity result — though it does affect level figures. This is a change we would not have made without your question.

N18 — "This is the premium for the base product, not the cross-sell product." Correct and intended. Pᵢ(t) is base-product premium only; the second product's economics live entirely inside cross_sell_value. Adding its premium to Pᵢ(t) as well would double-count it.

N19 — "This will be estimated using the multi-state Markov and HMM models (§5.4)." Partly, and the distinction is worth drawing. MarkovCLV does estimate transitions among product-portfolio states from policy history, so it produces the empirical rate at which households go from one product to two. But in the CLV calculation the growth hazards are explicit assumptions on Economics (cross_sell_prob, upsell_prob), not quantities the BTYD or survival families estimate. That is deliberate: growth value is business-planning content, architecturally barred from the filing-defensible base, so it must be a stated assumption a reviewer can see and change — not an estimate buried inside a fit.


Your six comments on the manuscript

# Anchor Comment Disposition
4 "churn" Should this be defined? Done. §3.1 defines churn as termination of an existing relationship — non-renewal at anniversary or mid-term cancellation — and states it is the complement of Sᵢ(t), explicitly not lapse in the life sense
13 CLV = m·r/(1 + d − r) Define m, r, d Done. Defined inline at the Gupta closed form in §2
14 BTYD/ML paragraph Define BG/NBD, GBM, ML, GLM at first mention Done. All six abbreviations expanded at the head of the §2 paragraph where they first appear together
22 "Unconstrained" "I have the same comment" Done, and it found a real error. AJ's c14 renamed the variants, but the global rename overwrote the old names inside the paragraph explaining the rename, leaving it self-contradictory — it claimed the columns were called clv_base/clv_with_growth "through v2.0", which is the new naming. §3.2 now reads correctly
30 "The filing basis inverts the intuition…" "I was not able to follow this. Let's discuss at our next call." Rewritten, and it is on the Call #6 agenda. §3.5 now gives a three-step mechanism (below), and it remains the single item most worth discussing live
44 — Overlap between lapse and non-renewal churn in Sᵢ(t)? Answered in §3.1 (below)

Comment 30 — why revenue-neutral rescaling inverts the result

The passage you could not follow was compressed, and the missing piece was why. §3.5 now walks it in three steps:

  1. The fitted curve gives each attained tenure a loss multiplier that keeps falling as a customer seasons — loss improves with tenure.
  2. What a customer's CLV responds to is not the level of that multiplier but how much improvement remains ahead of them. A first-year customer has the whole descent still to come. A ten-year customer has almost none left: their improvement is behind them and is already embedded in their realized experience.
  3. The filing basis divides every multiplier by the book's loss-weighted mean, so the book total cannot move and only the split between cohorts can. Cohorts with more remaining improvement than average land below 1 and gain; cohorts with less land above 1 and lose. The ten-plus cohort has the least remaining improvement of any group, so it is the one that loses.

Nothing about long-tenured customers got worse. The exhibit stopped crediting them for an improvement they had already banked, and under revenue neutrality someone else must receive what they no longer do. This is why we recommend against a tenure relativity in a filed exhibit without further work — it is Q3 on the Aug 6 poll, still open, and the one we would most like answered.

Comment 44 — lapse and churn are one event, not two

They are the same event seen from two directions, not two deductions applied in sequence. Sᵢ(t) is the probability the relationship has not terminated by term t; a lapse is precisely the failure whose absence Sᵢ(t) measures. Where a family carries an explicit absorbing lapsed state — the multi-state model of §5.4 — that state is the generator of its Sᵢ(t), not a further charge on top of it. No model in Section 5 subtracts a lapse cost from the margin.

What the framework does not do is separate the ways a relationship can end. Non-renewal at anniversary, mid-term cancellation and switching to a competitor are causally distinct events with different covariate profiles, and a single absorbing state cannot tell them apart. That is recorded as limitation L10 and is the competing-risks point in §2 (Milhaud and Dutang 2018). Your question is the right one, and the honest answer is that the current framework simplifies it deliberately.


What changed, and what did not

Changed at v3.1: five passages of exposition, one corrected sentence in §3.2, and this memo. Not changed: any toolkit code, any reported figure, any exhibit. The drift gate reports 0 unmatched across both documents. The paper renders at 49 pages (v3.2 adds §3.1's convention statement and L14) with the executive summary at 3 — inside the contractual 2–3.

Adopted at v3.2, arising from N17: §3.1 now states the real-versus-nominal convention explicitly and limitation L14 records its direction and scope. It was flagged to the POG before being made rather than changed silently, because it is a substantive change prompted by your question.

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