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.
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.
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).
Your column G computes Xi(t) = P(cross-sell)ₜ × $150 + P(upsell)ₜ × $100 and adds it to the
margin of every term. Two consequences:
p(1−p)^(t−1), which sum to at most 1 by
construction — on your inputs, 0.9718 over ten terms.1 − (1−q)^t, rising toward 1, not a flat 10%
chance of \$100 each year.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.
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".
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.
| # | 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) |
The passage you could not follow was compressed, and the missing piece was why. §3.5 now walks it in three steps:
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.
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.
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.