Technical Notes#
Status: Draft, 2026-08-26 (all cited sources accessed 2026-08-26).
Scope note. These notes specify the reference liability cash-flow projection model
ADE_FR_S for the standardized composite product defined in product-spec.md (same
directory). This is not any single insurer’s product. [S#]/[R#] tags refer to the source
list in sources.md, whose numbering is carried verbatim from
_research/assurance-emprunteur.md; [REG-R#] tags refer to the cross-product reference
library references/regulatory-and-actuarial-references.md (its own frozen R1–R49
numbering). std marks standardizations introduced for the reference implementation;
unverified marks claims not confirmed against a retrieved document. Parameter values are
identical to those in product-spec.md. Every name that becomes a cells or a CSV column
is English lower_snake_case; French terms of art are kept in French.
Model scope and conventions#
Purpose. Project gross best-estimate liability cash flows — premiums, benefit outgo and expenses — for a single-policy model point of French assurance emprunteur on a monthly grid. Reserves are not computed (see Valuation and reserve pointers).
What this model inherits, and where it deviates. The death leg is the
temporaire_deceschassis (TD_FR_S,products/temporaire_deces/technical-notes.md): the same non-annuity mortality basis — TH 00-02 / TF 00-02 with the annexed décalage d’âge REG-R22 REG-R23, never shipped, replaced by an INSEE-derived std proxy REG-R24 — the same annual-to-monthly conversion, the same “no surrender value, so lapse generates no cash flow” rule, and the same income-positivenet_cfsign convention. Four deviations define ADE: (i) the sum insured is not a level capital garanti but the capital restant dû of an amortising loan, recomputed every month from the loan’s own parameters; (ii) the monthly grid the chassis also runs on is here forced by the product rather than chosen for resolution, because the benefit dominating the incapacity side is a monthly échéance and the franchise is counted in days; (iii) the state space is healthy / ITT / IPT / dead, theincome_protectionthree-state chassis (IP_UK_S) with a fourth state and a duration-triggered forced transition; (iv) every guarantee carries its own cover-end age, so the decrements switch off at different times and the premium does not.One head, one loan, deterministic amortisation. A model point is one insured life with a quotité, on one fixed-rate amortising loan whose schedule the model computes. The states are
healthy,itt(indexed by claim durationz),iptanddead, with résiliation and PTIA as additional exits fromhealthy. Deliberately excluded, with reasons: multi-head aggregation, because the anti-duplication rule and the quotité interaction are a portfolio-level constraint, not a per-life cash flow [S1] [S9] [S12]; perte d’emploi, a separate module with its own carence, franchise, eligibility test, duration cap and decrement that no retrieved source quantifies [S1] [S8]; and IPP and every partial benefit below the 66 % IPT threshold, because the benefit shape is not agreed across the market — a linear ramp (N − 33)/33 at two insurers [S1] [S11] against a flat 50 % at three others [S5] [S9] [S10] — so one reference number would misrepresent half of it. Mi-temps thérapeutique, garantie aide à la famille, invalidité AERAS and the exclusion buy-backs are excluded on the same grounds.Time index std.
tis the 0-based policy month:t = 0is the contract’s first month, the frame ist = 0..proj_len − 1withproj_len = loan_term_months(240 in the base cell, so the last projected month ist = 239), and the contractual policy year is the 1-based labely = floor(t/12) + 1, derived fromtand never indexed by. Monthtruns from timetto timet + 1. The quantities carried at a time point keep their own 0-based indexk,k = 0at adhesion: the loan balancecrd(k), withcrd(0) = capital_initialandcrd(T) = 0, and the state probabilitiesl_h(k),l_itt(k, z)andl_ipt(k), withl_h(0) = 1. Monthttherefore opens oncrd(t)andl_h(t)and closes oncrd(t + 1)andl_h(t + 1).Timing and horizon std. All cover ends at the loan’s contractual expiry [S1] [S9]. Premiums arrive at the beginning of the policy month (BOM) from lives in
healthy; the échéance falls at end of month (EOM), socrd(t + 1)is the principal outstanding immediately after the month-tinstalment; transitions occur at EOM. Claim benefit for monthtis paid at EOM to lives in a paying state at BOMtthat have neither recovered nor died during the month — monthly in arrears, so a claim incepting at EOMtis first paid at EOMt+1. Death and PTIA benefits are paid at EOMtagainstcrd(t + 1), the instalment falling on the day of death being deemed due [S9].Age and duration std.
age(t) = entry_age + floor(t/12); one insurer computes age by difference of calendar years [S3] and two set the rate by age at adhesion [S9] [S11], so the annual step is a pure convention.zis months since claim payment inception, i.e. since the end of the franchise, runningz = 1..itt_max_monthson a clock of its own that the policy-month index never touches; the 1 095-day cap [S1] [S11] [S12] givesitt_max_months = 36.Units. EUR.
capital_initial,crdand death benefits are amounts;echeance,premand monthly benefits are EUR per month; rates are probabilities per period unless labelled “per mille”. Model points are projected on an expected basis; an in-force portfolio needs claims-in-payment cells carryingstatusandclaim_duration_months.
Model point attributes#
Attribute |
Type |
Example (worked configuration) |
|---|---|---|
|
int |
1 |
|
int |
52 std (spec footnote 1) |
|
enum {M, F} |
M std (spec footnote 1); tariffs are sex-rated except where unisex [S3] |
|
currency |
200,000 std (spec footnote 1); definition [S9] |
|
float (taux nominal; monthly rate = /12) |
0.0300 std (spec footnote 2) |
|
int |
240 std (spec footnote 1); band 1–35 years [S1] [S9] |
|
float, 0 < q ≤ 1, 1 % steps |
1.00 std (spec footnote 1); 1 % steps [S9], ≤100 % per head [S1] [S5] [S9] [S11] |
|
enum {capital_initial, capital_restant_du} |
capital_initial [S9] [S11] [S13]; alternative [S2] [S7] [S8] [S10] |
|
float (used when |
0.0084 std (spec footnote 7) |
|
enum {forfaitaire, indemnitaire} |
forfaitaire [S1] [S3] [S6] [S11]; alternative [S10] |
|
float ≤ 1 (used when |
1.00 std (9) |
|
enum {30, 60, 90, 120, 180} |
90 [S9]; pick std (spec footnote 4) |
|
int |
1095 [S1] [S11] [S12] |
|
enum {echeance, crd} |
echeance [S5] [S9] [S11]; alternative [S1] [S2] [S7] |
|
int |
85 [S9] [S11] |
|
int |
70 [S9] [S11] |
|
int |
70 [S9] |
|
enum {healthy, itt, ipt} |
healthy |
|
int (in-claim cells only) |
0 |
Occupation class and smoker status are not attributes. They are real tariff drivers [S1] [S11], but no public French table is graded by them and no rate card was retrieved; adding a column the shipped rate tables cannot serve would produce model points that do not project.
State variables#
Variable |
Description |
Updated |
|---|---|---|
|
Capital restant dû at time |
at each instalment, deterministic |
|
Level monthly loan instalment, capital and interest |
once, at issue |
|
Monthly premium per policy in force |
at each policy anniversary |
|
Probability in |
monthly |
|
Probability in ITT payment at time |
monthly, two-dimensional |
|
Total ITT probability = Σ_z |
derived |
|
Probability in IPT payment at time |
monthly |
|
New ITT claim-payment inceptions in month |
monthly |
|
Exits from ITT: recoveries, transitions to IPT, deaths in claim |
monthly |
|
ITT mass reaching the 1 095-day assessment at EOM |
monthly |
|
Exits from |
monthly |
|
Deaths in IPT |
monthly |
There is no account value, no surrender value and no unit fund: the state is the insured
population plus the deterministic loan schedule. l_h(t) + l_itt(t) + l_ipt(t) + Σ_{s < t} (dth_h + ptia_h + lapses + dth_itt + dth_ipt)(s) = 1 for every t — the states
at time t plus everything that has left in months 0 .. t − 1. That identity is
check_states().
Assumption inputs#
(a) Contractual / guaranteed elements (cited; from the spec)#
Input |
Value |
Basis |
|---|---|---|
Loan spine |
|
read from the échéancier contractually [S1] [S5] [S9]; computed here std (spec footnote 3) |
Décès / PTIA benefit |
|
[S1] [S5] [S9] [S10] [S11] |
ITT / IPT benefit |
|
[S1] [S9] [S11] |
Franchise |
90 days, embedded in the inception basis |
[S9]; pick std (spec footnote 4) |
ITT duration cap |
1 095 days = 36 months, then a forced consolidation assessment |
[S1] [S11] [S12]; consolidation ≤3 years [S10] |
IPT threshold |
Combined invalidity ≥ 66 % on the barème croisé |
[S1] [S5] [S9] [S10] [S11] [S12] |
Cover-end ages |
Décès 85, PTIA 70, ITT/IPT 70 |
Décès 85 and PTIA 70 [S9] [S11]; ITT/IPT 70 [S9] alone — MAIF ends ITT/IPT/IPP at 67 [S11]; ranges in the spec |
Premium waiver in claim |
No premium from lives in |
[S5] [S11]; advance-and-refund elsewhere [S9] |
Premium levelling |
The premium does not fall when the PTIA/ITT/IPT guarantees cease |
[S13] |
Résiliation |
Cancellation at any time from signature of the loan offer; no surrender value |
|
Expiry |
All cover and any claim in payment cease at the loan’s contractual expiry |
[S1] [S9] |
(b) Insurer-discretionary current elements#
Thin by construction: no participation aux bénéfices is credited to the individual
contract, there is no bonus and no account value, and the net-of-tax premium is guaranteed
for the whole term [S1] [S11]. What discretion exists is recorded, not projected. Premium
revision — one insurer revises downward on a risk-reducing change of life habits and may
revise the perte d’emploi rate only, at renewal, with three months’ notice [S1]; two others
pass on tax changes [S5] [S11]; base model: no revision std. Underwriting outcome —
standard terms, a surprime and/or guarantee restrictions, or refusal [S1]; the model
projects a standard-terms life only std, the surprime being a rate multiplier rather
than a mechanic. One published scale does exist — the AERAS grille de référence states a
capped surcharge per guarantee for its list II pathologies R17 — but the grid itself
was not retrieved here (spec, Underwriting) and its rates must not be invented; no
insurer’s standard-risk rate card is public at all, so there is no base rate to multiply.
Claim adjudication — declines are material, 2.5 %–4.4 % on death/PTIA and 7.7 %–16.3 % on
incapacity/invalidity for external alternative contracts against 2.5 %–3.8 % and
10.2 %–12.8 % for bank group contracts R12; the base admits every claim std, and
a portfolio calibration should scale ben_itt and ben_ipt by an admission ratio. The 2025
garantie aide à la famille is a market undertaking, not a priced element, and is out of
scope [S9] R12.
(c) Behavioral / experience assumptions (modeler’s view)#
No decrement, incidence or termination table for this product was retrieved. Nothing in the corpus gives a mortality basis, an ITT inception rate, a recovery rate or an ITT → IPT transition rate: insurer rate cards are proprietary, the CCSF publishes tariff levels only as chart series R12, and the homologated mortality tables are cited by name but are not redistributable REG-R22 REG-R23. Every rate below is therefore std. The tables are shaped like the quantities a real basis would carry, so licensed tables drop in without changing the recursions.
Input |
Reference basis |
Basis tags |
|---|---|---|
Healthy-life mortality |
std proxy table below (male); female = 0.60 × male |
|
PTIA incidence |
0.10 × |
ratio std (2) |
ITT inception |
std proxy table below × |
values std (3) |
ITT termination by duration |
std proxy table below: recovery / IPT transition / death in claim |
values std (4) |
1 095-day assessment split |
0.35 to IPT, 0.65 back to |
value std (4) |
Mortality in IPT |
3.0 × |
value std (5) |
Résiliation |
std table below, by policy year |
values std (6) |
CRD-basis premium scale |
std table below, annual rate on the CRD by attained age |
values std (7) |
Maintenance expense |
EUR 30 per policy per year, inflating 1.8 %/yr |
std (8) |
Claim management expense |
EUR 250 per year per claim in payment, inflating 1.8 %/yr |
std (8) |
|
1.00 in base |
std (9) |
Claim admission ratio |
1.00 in base |
|
Discount |
EIOPA risk-free term structure for valuation REG-R5; flat 2.5 %/yr in the worked example |
rate std (11) |
INSEE population mortality is the only freely redistributable French series and is the data source behind every decrement CSV this library ships REG-R24. It is heavier than medically-selected insured experience, so the proxy overstates death cost for a standard-risk book and understates it for a Lemoine-waiver book written with no medical selection at all. The 0.60 female factor is a pick; one insurer is unisex instead [S3].
No public French PTIA incidence rate exists. PTIA pays the same benefit as Décès and is a subset of severe morbidity, so it is a fixed fraction of the death rate. The ratio matters mainly through the different cover-end ages: above
ptia_end_agethe PTIA decrement is off while Décès continues.Shaped as a claim-payment inception rate specific to the franchise, as a real basis would be published per deferred period.
franchise_factor= 1.60 / 1.25 / 1.00 / 0.85 / 0.65 for 30 / 60 / 90 / 120 / 180 days andsex_factor= 1.00 male / 1.30 female, both std placeholders; the menu itself is sourced [S9].Falling recovery and rising IPT transition with duration is the qualitative structure of any disability termination basis: short claims mostly recover, long claims mostly consolidate. The 0.35 split at the cap stands in for the medical assessment against the 66 % barème croisé threshold [S1] [S9]; nothing public quantifies what fraction of three-year ITT claims clears 66 %.
Claimant mortality above healthy-life mortality is universal in disability experience; the ×3.0 factor has no French anchor.
The behavioural heart of the product — see Policyholder behavior modeling.
A rate on the outstanding balance re-read annually with the attained age [S2] [S5] [S7] [S8], calibrated so its present value over the base cell matches the level 0.84 % scale to 0.11 % (Checks) and the margin over the std benefit basis is about 10 %.
No French ADE expense study was retrieved. EUR 30/policy/year is about 1.8 % of the base cell’s annual premium; the claim expense reflects that an incapacity claim is medically managed, unlike a death claim. Both are placeholders.
Indemnitaire contracts cap the benefit at the actual income loss, revenu de référence less revenu de remplacement [S10]. Modeling that properly needs a distribution of employer sick pay and prévoyance cover across the book, which nothing retrieved supplies. At 1.00 the indemnitaire cell equals the forfaitaire cell, which is the honest base — the model exposes the lever rather than inventing its value.
Claims are admitted in full because the model has no way to distinguish an admitted claim from a declined one: the only public French figures are portfolio decline rates by guarantee and contract type R12, with no split between late notice, cover-age breach and medical dispute. A portfolio calibration should set the ratio from its own claims register.
No numeric EIOPA curve value was extracted anywhere in this library, so the worked example’s discount rate is a flat modeling convention REG-R5; it affects only the present values quoted in Checks, never the projected cash flows.
std proxy healthy-life mortality (annual, per mille, male; linear interpolation between pivot ages; female = 0.60 × male):
Age a |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
0.6 |
0.8 |
1.2 |
2.0 |
3.2 |
5.0 |
7.6 |
11.5 |
17.5 |
27.0 |
45.0 |
78.0 |
std proxy ITT claim-payment inception rates (annual, per mille of lives in healthy;
male, franchise 90 days; linear interpolation between pivot ages):
Age a |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
69 |
|---|---|---|---|---|---|---|---|---|---|
|
2.0 |
2.8 |
4.0 |
6.0 |
9.0 |
13.5 |
20.0 |
28.0 |
36.0 |
std proxy ITT termination rates (annual, by claim duration year since payment inception; the three exits compete in the stated order):
Claim duration year (months z) |
1 (1–12) |
2 (13–24) |
3 (25–36) |
|---|---|---|---|
Recovery |
0.55 |
0.30 |
0.15 |
Transition to IPT |
0.02 |
0.06 |
0.12 |
Death in claim |
0.02 |
0.03 |
0.04 |
std résiliation table (annual rates from healthy; lives in itt or ipt do not
lapse — premiums are waived and the benefit is in payment std):
Policy year y |
1 |
2 |
3 |
4–5 |
6+ |
|---|---|---|---|---|---|
|
4 % |
12 % |
12 % |
10 % |
7 % |
std CRD-basis premium scale (annual rate applied to the CRD at the policy
anniversary, by attained age; linear interpolation; used only when
premium_basis = capital_restant_du):
Age a |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
|---|---|---|---|---|---|---|---|---|---|
Rate |
0.14 % |
0.18 % |
0.26 % |
0.40 % |
0.62 % |
0.95 % |
1.45 % |
2.10 % |
2.90 % |
Cash flow components and recursions#
Notation (defined once, used throughout)#
Symbol |
Meaning |
|---|---|
|
policy month, 0-based: |
|
a time point, 0-based: |
|
policy year |
|
monthly loan rate = |
|
échéance = |
|
|
|
|
|
indemnity ratio: 1.00 if |
|
annual-to-monthly conversion = |
|
monthly |
|
monthly |
|
monthly |
|
monthly recovery, IPT-transition and death-in-claim rates at duration |
|
monthly ITT persistency = |
|
monthly |
|
guarantee-in-force indicators for Décès, PTIA, ITT/IPT |
|
monthly maintenance and claim expense = |
|
discount factor for month |
Dimensional check: q_h, q_ptia, w, ι, ρ, τ, q_s, q_ipt are monthly
probabilities; crd and death benefits are EUR; ech, prem and monthly benefits are EUR
per month; every cash flow below is EUR per month per policy issued.
Every annual rate in the tables above is converted with the same uniform-force approximation
1 − (1 − r)^(1/12), which makes each monthly rate strictly below its annual rate and keeps the twelve monthly survival factors multiplying back to the annual one. No retrieved source states a conversion convention for any French decrement.
The loan spine and the guarantee indicators#
crd is computed, never read from a table. Two equivalent forms, both of which the model
must satisfy to floating-point tolerance — that is check_crd():
crd(k) = ech x (1 - (1 + i)^(-(T - k))) / i
crd(k) = crd(k - 1) x (1 + i) - ech with crd(T) = 0 exactly
crd is the only thing linking the loan to the insurance: the death benefit in month
t is crd(t + 1) × Q, the disability benefit is ech × Q. The guarantee indicators are
D(t) = 1 if a < deces_end_age else 0 (85 base cell -> in force for all t)
P(t) = 1 if a < ptia_end_age else 0 (70 base cell -> t <= 215)
I(t) = 1 if a < itt_ipt_end_age else 0 (70 base cell -> t <= 215)
At the first month where I(t) = 0, at BOM and before any transition, all l_itt and
l_ipt mass moves into l_h: cover has ended, benefit stops, and those lives remain alive,
death-covered and premium-paying [S13]. ι is zero from that month.
Transitions (EOM)#
Out of healthy, in the order death, PTIA, résiliation, ITT inception std:
dth_h(t) = l_h(t) x q_h
ptia_h(t) = l_h(t) x (1 - q_h) x q_ptia x P(t)
lapses(t) = l_h(t) x (1 - q_h) x (1 - q_ptia x P(t)) x w
n_itt(t) = l_h(t) x (1 - q_h) x (1 - q_ptia x P(t)) x (1 - w) x i_rate, i_rate = ι x I(t)
h_stay(t) = l_h(t) x (1 - q_h) x (1 - q_ptia x P(t)) x (1 - w) x (1 - i_rate)
Out of ITT, in the order recovery, transition to IPT, death in claim std, for each
duration cohort z:
rec_itt(t, z) = l_itt(t, z) x rho(z)
trn_ipt(t, z) = l_itt(t, z) x (1 - rho(z)) x tau(z)
dth_itt(t, z) = l_itt(t, z) x (1 - rho(z)) x (1 - tau(z)) x q_s(z)
stay(t, z) = l_itt(t, z) x s_itt(z)
For z < itt_max_months the survivors advance, l_itt(t+1, z+1) = stay(t, z). For
z = itt_max_months (36, the 1 095-day cap) they are assessed instead of advanced:
cap_itt(t) = stay(t, itt_max_months), of which ipt_share_at_cap passes to IPT and the
remainder returns to healthy. Out of IPT there is no recovery — the only exits are death
and the age limit: dth_ipt(t) = l_ipt(t) × q_ipt, ipt_stay(t) = l_ipt(t) − dth_ipt(t).
State update, from the states opening month t to those closing it:
l_h(t+1) = h_stay(t) + SUM_z rec_itt(t, z) + (1 - ipt_share_at_cap) x cap_itt(t)
l_itt(t+1,1) = n_itt(t); l_itt(t+1, z+1) = stay(t, z) for z < itt_max_months
l_ipt(t+1) = ipt_stay(t) + SUM_z trn_ipt(t, z) + ipt_share_at_cap x cap_itt(t)
Recovered lives return to healthy and are again exposed to inception std. When
ipt_benefit_basis = crd, IPT is not a state at all: the mass that would enter IPT instead
triggers a single payment crd(t + 1) × Q and leaves the model, exactly as a death does
[S1] [S2] [S7].
Benefit outgo, expenses and net cash flow (EOM)#
ben_deces(t) = crd(t+1) x Q x (dth_h(t) + SUM_z dth_itt(t,z) + dth_ipt(t)) x D(t)
ben_ptia(t) = crd(t+1) x Q x ptia_h(t)
ben_itt(t) = ech x Q x IR x SUM_z stay(t, z)
ben_ipt(t) = ech x Q x IR x (ipt_stay(t) + SUM_z trn_ipt(t, z))
expenses(t) = e_m(y) x (l_h + l_itt + l_ipt)(t) + ec_m(y) x (l_itt + l_ipt)(t)
liability_cf(t) = ben_deces + ben_ptia + ben_itt + ben_ipt + expenses - prem
net_cf(t) = -liability_cf(t)
ben_itt includes the capped cohort — a life in ITT throughout month t is paid for that
month whether it then stays, passes to IPT at the cap, or returns to healthy — and
ben_ipt includes lives that transitioned at EOM t, so the ITT → IPT move creates no
unpaid month. New inceptions n_itt(t) are not paid for month t. Death, PTIA,
résiliation and expiry generate no other payment: no surrender value, no maturity benefit.
Monthly processing order std#
At month t = 0..T − 1 (nothing survives the frame; at t = T − 1, the last month, all
cover and any claim in payment terminate without value [S1] [S9]):
Anniversary (BOM,
t = 0, 12, 24, …): advanceyanda; setD(t),P(t),I(t); re-readprem_pp(y)on the CRD basis, leave it unchanged on the capital initial basis.Guarantee-cessation transfer (BOM): if
I(t) = 0and anyl_itt/l_iptmass remains, move all of it intol_hand zero those states.Premium income (BOM):
prem(t) = prem_pp(y) × l_h(t).Loan instalment (EOM): the schedule carries
crd(t)tocrd(t + 1)— deterministic, unaffected by any decrement.Transitions out of
healthy(EOM): death, PTIA, résiliation, ITT inception.Transitions out of ITT (EOM): recovery, IPT transition, death in claim, per duration cohort; then the 1 095-day assessment on cohort
z = itt_max_months.Transitions out of IPT (EOM): death.
State update to time
t + 1forl_h,l_itt(·, z),l_ipt.Benefit outgo (EOM):
ben_deces,ben_ptia,ben_itt,ben_ipt.Expenses (EOM), then discount at
v(t)and accumulate.
Known modeling pitfalls#
Each of these produces a model that looks right and is wrong. They are the test list.
Reading the CRD from a table instead of computing it. The whole product hangs off
crd; a pasted schedule will not satisfycrd(k) = crd(k−1) × (1 + i) − echat everykandcrd(T)will not be zero. Assert both.Using the wrong CRD, or the wrong rate conversion.
crd(t)(opening montht, before its instalment) andcrd(t + 1)(closing it, after the instalment) differ by the month’s capital repayment — EUR 609.20 over montht= 0 in the base cell; the convention here is the closing balancecrd(t + 1)and whichever is chosen must be used everywhere. A model that indexescrdon the month rather than on the time point pays a whole month’s capital too much or too little. Separately, French loans quote a taux nominal annuel whose monthly rate is nominal ÷ 12, not(1 + nominal)^(1/12) − 1; the effective conversion changesech, and therefore every benefit and the TAEA.Collapsing Décès and PTIA into one decrement. They pay the identical benefit, so the temptation is strong — and it is wrong, because
deces_end_age(85) andptia_end_age(70) differ. A collapsed decrement either pays PTIA after 70 or stops paying death before 85.Letting the premium fall when the ITT/IPT guarantees cease. The rate is nivelé: the cover shrinks at 70 and the premium does not [S13]. In the base cell that is 24 months × EUR 140.00 = EUR 3 360.00 of premium per surviving policy against death cover alone; a model that switches the premium off with the guarantee understates premium income by exactly that. The mirror error is letting
ben_ittorben_iptrun past the age limit: both must be exactly zero whereverI(t) = 0, and the in-claim mass must be moved, not deleted — deleting it breaks the state identity and destroys the death cover those lives still hold.Collapsing the ITT duration dimension, or dropping the cap. A single ITT bucket with duration-independent terminations misstates runoff badly — the proxy recovery rate falls 0.55 → 0.15 while the IPT transition rate rises 0.02 → 0.12 across the three duration years — and the 1 095-day assessment cannot be expressed at all without
z. If cohortz= 36 simply advances toz= 37, ITT claims run for ever and IPT is never fed from the cap: in the base cell that is 35 % of the 0.198077 of each inception still in ITT at three years.Paying the ITT → IPT movers twice, or not at all. A life moving from ITT to IPT at EOM
tmust be paid exactly once for montht. Assertben_itt(t) + ben_ipt(t) = ech × Q × IR × (l_itt(t+1) − n_itt(t) + l_ipt(t+1) + (1 − ipt_share_at_cap) × cap_itt(t))— the paying mass equals the closing disabled mass, less the month’s new inceptions, plus the share of the capped cohort sent back tohealthy: those lives were in ITT throughout monthtand are paid for it, but they end the month in neither disabled state, so an identity written without that term is short byech × Q × IR × (1 − ipt_share_at_cap) × cap_itt(t)— up to EUR 0.13 a month in the base cell. Relatedly, benefit is monthly in arrears: includingn_itt(t)inben_itt(t)pays a full month at the instant of inception.Charging premium to lives in claim, or lapsing them. Premiums come from
l_honly [S5] [S11];prem_pp × (l_h + l_itt + l_ipt)overstates premium income and is easy to write by accident when the model also tracks total lives in force. Symmetrically, applying the résiliation decrement tol_itt/l_iptsilently cancels claims in payment.Quotité applied twice, or to the wrong leg.
quotitescales the benefit and the premium, once each. Applying it to the CRD and again to the benefit is invisible atquotite= 1.00 — the base cell will not catch it. Test atquotite= 0.60. For the same reasonindemnitairemust be the same formula withIR < 1, not a second benefit expression that can drift from the forfaitaire leg.Assuming the “decreasing” premium decreases. On the CRD basis at entry age 52 the premium rises from EUR 125.33 in policy year 1 to a peak of EUR 164.03 in year 10 before falling to EUR 31.65 in year 20, because the attained-age rate climbs faster than the CRD falls. A monotonicity assertion on the CRD-basis premium will fail — correctly.
Policyholder behavior modeling#
All dynamic formulas are std reference constructions. No public French ADE policyholder-behaviour study was retrieved, and the CCSF’s published series are counts of substitution requests, not portfolio lapse rates R12.
Base résiliation std.
lapse_rate(y)per the table above; monthlyw = 1 − (1 − lapse_rate)^(1/12), applied tol_honly. The shape — low in year 1, tripling in year 2, then decaying to a 7 % ultimate — is a reading of the statutory mechanics rather than of data. Cancellation is available à tout moment from signature of the loan offer R1 R3 REG-R35, so nothing legal holds year 1 down; what holds it down is that the borrower has just signed, the lender’s ten-business-day answer and the substitute’s effective-date rule put real friction in the path R1 R3 R8, and the fiche standardisée has only just been read R4 R5. From year 2 the insurer’s own annual reminder of the cancellation right arrives R1, brokers solicit, and the substitution machine engages. This is materially higher than a classic protection lapse: substitution requests to banking networks rose from 99 265 in H1 2021 to 181 600 in H1 2023, the alternative share of insured portfolios rose from 15.3 % to 16.0 % between 2021 and May 2023, and about 215 000 external alternative contracts were added in 17 months R12.Substitution as a response to the premium gap std. Résiliation here is not a lapse in the ordinary sense — the cover does not stop, it moves — so the rate is made to respond to the gap between the premium in force and the price of an equivalent contract in the market:
gap(y) = max(0, prem_pp(y) / market_prem_pp(y) - 1) w_dyn(y) = min(w_max, lapse_rate(y) x (1 + beta x gap(y)))
with
beta= 3.0 andw_max= 0.35 std andmarket_prem_ppa scenario input (base: equal toprem_pp, sogap= 0 andw_dyn=lapse_rate). The sensitivity is deliberately steep: the CCSF measured bank group tariffs falling 14 %–30 % across the age range between 2019 and 2023 while medically-selected external alternative contracts moved between −40 % and +16 % by age R12, so a book written at an older tariff faces a two-digit gap without doing anything. Acceptance is not automatic — lenders accept 88 %–90 % of requests through banking networks and 70 %–87 % through intermediaries R12 — so an acceptance ratio of 0.88 std multiplies the substitution component, refused requests remaining in force R3.Selective withdrawal [std note]. Substitution requires an equivalent-guarantee offer from another insurer R7 REG-R36, which on a medically-selected contract means passing underwriting again: healthy lives leave, impaired lives stay, and the residual book’s morbidity is worse than the table. The socio-professional skew is consistent — CSP1 are 58 % of substitutions and 69 % of external alternative contracts taken at origination but only 27 % of the banks’ mortgage portfolios R12. The base applies no anti-selection loading std; the scenario lever is
itt_inception_rate × (1 + selection_load).Lapse in claim is zero std — premiums are waived and the benefit is in payment [S5] [S11]. Early repayment ends the cover if total [S1] [S9] and rebases the premium on the guaranteed CRD less the amount repaid if partial [S9] [S10]; the base holds the amortisation schedule fixed std, an early-repayment decrement being a documented extension. The questionnaire waiver and the droit à l’oubli are underwriting effects, not projection decrements: they change who is in the book and at what rate, not how a policy runs. The waiver applies only where the insured share of the cumulative encours is ≤ EUR 200 000 and repayment falls before the 60th birthday R1 R2, which is narrow — 58.5 % of borrowers were under the amount threshold but only 23 % of those contracts were eligible, and contracts without medical selection are only 31 % of substitutions R12. Where it does apply, external alternative contracts without medical selection were repriced up by about 10 % on average against 2021 tariffs R12 — an anti-selection loading with a public number. The base carries no such loading and no
underwriting_basiscolumn std.
Worked example#
The base cell, run from issue for 15 months. Configuration: male, entry_age 52,
capital_initial EUR 200 000, loan_rate_annual 3.00 % (i = 0.0025), loan_term_months
240, quotite 1.00, premium_basis = capital_initial, premium_rate_annual 0.84 %,
indemnity_basis = forfaitaire (IR = 1.00), franchise_days 90, itt_max_days 1 095,
ipt_benefit_basis = echeance, deces_end_age 85, ptia_end_age 70, itt_ipt_end_age
70. All decrements are the std proxy tables above and the discount is 2.5 %/yr flat
std (used only for present values in Checks); every assumption is std except the
guarantee structure, the benefit bases and the age limits, which are [S9] [S11] [S13] as
tabulated in the spec.
Derived constants: ech = 1 109.1952; prem_pp = 200 000 × 1.00 × 0.0084 / 12 = 140.00.
Monthly rates at a = 52: q_h = 0.000327255, q_ptia = 0.000032673, ι = 0.000904486,
w = 0.003396053 in year 1 and 0.010596241 in year 2, each from 1 − (1 − r)^(1/12) on the
annual rates 0.00392, 0.000392, 0.01080, 0.04 and 0.12. Duration-year-1 terminations:
ρ = 0.064376669, τ = q_s = 0.001682143, so s_itt = 0.932478274. At a = 53,
q_h = 0.000357368 and ι = 0.000980268.
Months are 0-based, so the first row is t = 0 (policy year y = 1 throughout the first
twelve). The CRD and state columns are the closing quantities of month t, i.e. the
values at time t + 1; the cash flow columns are the flows of month t.
t |
crd(t+1) |
l_h(t+1) |
l_itt(t+1) |
l_ipt(t+1) |
prem(t) |
ben_deces(t) |
ben_ptia(t) |
ben_itt(t) |
ben_ipt(t) |
|---|---|---|---|---|---|---|---|---|---|
0 |
199,390.80 |
0.995344 |
0.000901 |
0.000000 |
140.00 |
65.25 |
6.51 |
0.00 |
0.00 |
1 |
198,780.09 |
0.990768 |
0.001737 |
0.000001 |
139.35 |
65.03 |
6.46 |
0.93 |
0.00 |
2 |
198,167.84 |
0.986267 |
0.002513 |
0.000004 |
138.71 |
64.79 |
6.41 |
1.80 |
0.00 |
3 |
197,554.07 |
0.981837 |
0.003232 |
0.000008 |
138.08 |
64.54 |
6.36 |
2.60 |
0.01 |
4 |
196,938.76 |
0.977474 |
0.003898 |
0.000013 |
137.46 |
64.28 |
6.32 |
3.34 |
0.01 |
5 |
196,321.91 |
0.973174 |
0.004516 |
0.000019 |
136.85 |
64.01 |
6.27 |
4.03 |
0.02 |
6 |
195,703.52 |
0.968933 |
0.005088 |
0.000026 |
136.24 |
63.72 |
6.22 |
4.67 |
0.03 |
7 |
195,083.58 |
0.964750 |
0.005617 |
0.000034 |
135.65 |
63.42 |
6.17 |
5.26 |
0.04 |
8 |
194,462.09 |
0.960620 |
0.006107 |
0.000043 |
135.06 |
63.12 |
6.13 |
5.81 |
0.05 |
9 |
193,839.05 |
0.956540 |
0.006561 |
0.000053 |
134.49 |
62.81 |
6.08 |
6.32 |
0.06 |
10 |
193,214.46 |
0.952509 |
0.006980 |
0.000063 |
133.92 |
62.48 |
6.04 |
6.79 |
0.07 |
11 |
192,588.30 |
0.948524 |
0.007367 |
0.000074 |
133.35 |
62.16 |
5.99 |
7.22 |
0.08 |
12 |
191,960.57 |
0.937659 |
0.007789 |
0.000085 |
132.79 |
67.31 |
6.49 |
7.62 |
0.09 |
13 |
191,331.28 |
0.926937 |
0.008184 |
0.000099 |
131.27 |
66.54 |
6.40 |
8.07 |
0.11 |
14 |
190,700.41 |
0.916356 |
0.008553 |
0.000114 |
129.77 |
65.77 |
6.30 |
8.49 |
0.13 |
Column sums over t = 0..14: prem 2 032.99, ben_deces 965.23, ben_ptia 94.16,
ben_itt 72.95, ben_ipt 0.71, expenses 38.10.
Supplementary — one ITT cohort through the 1 095-day cap. S(z) is the probability that
a claim incepting at z = 0 is still in ITT at the end of duration month z:
z |
ρ(z) |
τ(z) |
q_s(z) |
s_itt(z) |
S(z) |
|---|---|---|---|---|---|
1 |
0.064377 |
0.001682 |
0.001682 |
0.932478 |
0.932478 |
6 |
0.064377 |
0.001682 |
0.001682 |
0.932478 |
0.657404 |
12 |
0.064377 |
0.001682 |
0.001682 |
0.932478 |
0.432180 |
13 |
0.029286 |
0.005143 |
0.002535 |
0.963274 |
0.416308 |
24 |
0.029286 |
0.005143 |
0.002535 |
0.963274 |
0.275843 |
25 |
0.013452 |
0.010596 |
0.003396 |
0.972779 |
0.268335 |
35 |
0.013452 |
0.010596 |
0.003396 |
0.972779 |
0.203620 |
36 |
0.013452 |
0.010596 |
0.003396 |
0.972779 |
0.198077 |
At z = 36 the surviving 0.198077 is assessed: 0.069327 passes to IPT (35 %) and
0.128750 returns to healthy (65 %). Expected months of ITT payment per inception =
Σ_{z=1..36} S(z) = 14.721231, i.e. EUR 16 328.72 of ITT benefit per inception at
ech × Q = 1 109.1952.
Checks.
The loan spine, two ways. From the annuity formula, crd(1) = 1 109.1951957 ×
(1 − 1.0025^(−239)) / 0.0025 = 199 390.8048. By roll-forward,
crd(0) × (1 + i) − ech = 200 000 × 1.0025 − 1 109.1951957 = 199 390.8048 — identical.
At the far end crd(239) = 1 106.4291 and crd(239) × 1.0025 = 1 109.1952 = ech, so
crd(240) = 0 exactly. Total instalments 240 × 1 109.1952 = 266 206.85, of which 66 206.85
is interest.
The state recursion, from the four decrements. l_h(1), the state at the end of month
t = 0, should be
(1 − 0.000327255)(1 − 0.000032673)(1 − 0.003396053)(1 − 0.000904486) = 0.995344, which is
the table’s first row. The residual mass is the four exits of that month — dth_h(0) =
0.000327255, ptia_h(0) = 0.000032662, lapses(0) = 0.003394831, n_itt(0) = 0.000901090
— and 0.995344 plus those four is 1.000000. Over the whole 15 months l_h + l_itt + l_ipt =
0.925024 and cumulative exits = 0.074976, summing to 1.000000000000: check_states().
l_h then falls 0.4598 % per month through policy year 1 (0.995344 → 0.990768) and 1.1455 %
per month in year 2 (0.948524 → 0.937659) — the loi Lemoine substitution assumption
arriving, monthly w going from 0.003396053 to 0.010596241, a factor of 3.12 diluted by the
unchanged mortality and inception decrements. The mortality step at t = 12, the first
month of policy year 2, shows separately in ben_deces, which rises 62.16 → 67.31 as a
goes 52 → 53 (mort_rate 0.00392 → 0.00428) on a CRD that is still falling.
The in-arrears benefit rule. ben_itt(0) = 0.00 because the only ITT mass at the end of
month 0 is that month’s own inception. ben_itt(1) = ech × s_itt(1) × n_itt(0) =
1 109.1952 × 0.932478274 × 0.000901090 = 0.93 — the month-0 inceptions, one month later,
net of one month’s terminations (s_itt is on the claim-duration clock z, where the first
month in payment is z = 1). ben_deces(0) = crd(1) × q_h = 199 390.8048 × 0.000327255 =
65.25, and ben_ptia(0) / ben_deces(0) = 6.512472 / 65.251648 = 0.0998, the
ptia_rate ratio of 0.10 less the month of death exposure that precedes PTIA in the
decrement order — the ordering is visible in the arithmetic.
Aggregates over the full 240 months, at 2.5 % flat. PV of premium income is
EUR 12 602.19 on the level 0.84 % capital initial basis and EUR 12 588.82 on the
CRD basis (ratio 1.001062; equivalent level rate 0.8391 %, rounded to 0.84 % for the spec),
the CRD basis being non-monotonic — EUR 125.33 in year 1, EUR 164.03 at its year-10 peak,
EUR 31.65 in year 20. PV of outgo is ben_deces 7 170.56 + ben_ptia 635.87 + ben_itt
1 932.71 + ben_ipt 1 293.18 + expenses 334.17 = EUR 11 366.49, a margin of 9.81 % on
premium, with death and PTIA 70.8 % of the benefit PV and ITT plus IPT 29.2 % against
the market’s published premium split of 69 % / 30 % REG-R37 — a coincidence of
calibration rather than evidence, but the only external check available on the shape of the
basis. Finally I(t) = 0 from t = 216 (a = 70): crd(216) = EUR 25 806.51 is still
owed as that month opens, 0.009266 + 0.013982 of mass in ITT and IPT moves to l_h,
ben_itt and ben_ipt are exactly zero for t = 216..239, and premium income continues
— EUR 3 360.00 nominal per surviving policy (24 × EUR 140.00), EUR 638.67
survivorship-weighted.
Valuation and reserve pointers#
This library projects gross best-estimate liability cash flows; valuation layers consume them and are NOT reproduced here.
Solvabilité II. Technical provisions = best estimate + risk margin, the best estimate being the probability-weighted average of future cash flows discounted at the relevant risk-free term structure REG-R4, with curves published monthly by EIOPA REG-R5 — exactly the projections above, on both the premium and the claim side. No cost-of-capital rate in this library rests on a retrieved instrument REG-R2, so any risk-margin figure would be std; none is specified.
French statutory provisions. Art. R. 343-3 of the Code des assurances enumerates eleven technical provisions REG-R6; the two an ADE book touches are the provision mathématique — which for a French contract includes future management costs, so it is not a pure net-premium reserve — and the provision pour égalisation for mortality fluctuations on group death business. How a French insurer actually reserves the increasing-risk pattern created by a nivelé premium was not established by any retrieved source and is unverified (spec, Regulatory context). The model supplies the cash flows such a provision consumes; it does not compute one.
Claims in payment are a disabled-life annuity: the expected present value of
ech × Q × IRuntil recovery, transition, death, the age limit or loan expiry, run from(a, z)with the recursions above andl_h(0)= 0; the supplementary table is that annuity’s survival column forz= 0. IFRS 17 REG-R45 consumes the same projections with its own discounting, risk adjustment and CSM layers (cited-not-specified), and the professional frame is NPA 1 REG-R43 and NPA 2 REG-R44, the Institut des actuaires’ pratiques recommandées on general actuarial practice and on actuarial models.
Key sensitivities and model risks#
Résiliation. First-order and product-defining: it sets premium income, the effective duration of the book and, through selective withdrawal, the morbidity of what remains. The whole table is std with no French anchor and the dynamic response to the premium gap is a construction, not a calibration; the observable facts are counts of substitution requests and a 15.3 % → 16.0 % market-share shift R12, neither of which is a lapse rate. Test
lapse_rate,betaand the acceptance ratio independently.ITT inception and termination. Inception drives claim frequency; the recovery / IPT-transition split drives claim length and therefore the whole disabled-life annuity — a small change in
itt_recovery_ratecompounds over 36 months and again through the 0.35 split at the cap. Both proxy tables are std placeholders.Mortality level and the CRD profile together. Death is 70.8 % of the benefit PV and its cost is
crd(t + 1) × q_h(a), a falling schedule times a rising rate; the peak of that product, not either factor alone, is where the death cost sits, and the loan term moves it.The premium basis, and the age limits. Level on capital initial against annually re-read on the CRD is a different cash flow shape for the same cover, and the difference is largest exactly where lapse is highest; the two are PV-equivalent here by construction and would not be in a real tariff. The cover-end ages are cited rather than std, but their interaction with loan term is under-appreciated — 24 uncovered months in the base cell, worse for a longer loan or an older entrant, and the CCSF records “maximum cover age exceeded” among the commonest causes of claim decline R12.
The 1 095-day assessment split, indemnitaire exposure, expenses and claim admission.
ipt_share_at_capconverts a bounded three-year claim into an annuity that can run to the end of the loan; nothing public quantifies it and the liability is roughly linear in it. Atincome_loss_ratio= 1.00 the indemnitaire cell equals the forfaitaire cell, but real indemnitaire business pays materially less to employees whose salary is maintained [S6] [S10]. Expenses (EUR 334.17 of PV) and the assumed 100 % claim admission — against observed declines of 7.7 %–16.3 % on incapacity claims R12 — are second-order for the total and first-order for the margin.