The Data Space#
Input data shared by every by-policy projection.
The eight input CSVs are read here, once per model, and referenced from
Projection as data. Projection is parameterized
by point_id, so each Projection[N] is a separate ItemSpace with its own cells
cache; if the readers lived there, every model point would re-read every file. Holding
them in an unparameterized Space reads each file once no matter how many policies are
projected.
Inputs are external files: plain CSVs in the model folder’s parent directory,
products/dependance/, rather than data stored inside the model. The model folder
therefore holds nothing but formulas — no _data/, no IOSpec, no embedded values —
so a diff of the model shows logic changes only. This follows annuallife.TradLife_A;
contrast basiclife.BasicTerm_S, which keeps its inputs inside the model through
modelx’s IOSpec machinery.
The consequence worth knowing: the model is not portable on its own. Copying the
Dep_FR_S folder without its parent’s CSVs produces a model that reads and then fails
on first evaluation.
input_dir() resolves the directory from _model.path.parent at run time, so
the model works wherever the repository is checked out. Each table has a filename
Reference and a reader Cells:
Reference |
Cells |
File |
|---|---|---|
model_point_file |
model_point_table() |
model_point_table.csv |
mort_table_file |
mort_table() |
mort_table.csv |
prevalence_file |
prevalence_table() |
prevalence_table.csv |
severity_share_file |
severity_share_table() |
severity_share_table.csv |
lapse_table_file |
lapse_table() |
lapse_table.csv |
cause_mix_file |
cause_mix_table() |
cause_mix_table.csv |
reduction_file |
reduction_table() |
reduction_table.csv |
revision_file |
revision_table() |
revision_table.csv |
Why the decrement basis is four files and not one. Nothing in this product’s
assumption set comes from a single publication, and the four files are four different
kinds of claim. mort_table.csv is a [std] Gompertz proxy shaped like a French
population table; prevalence_table.csv holds the three parameters of a [std]
logistic fitted to two sourced DREES APA prevalence rates per sex;
severity_share_table.csv holds the [std] haircuts that turn public APA take-up
on the AGGIR grid into insured prevalence on the contract’s own trigger grid, which is
the step no retrieved document supports at all; and cause_mix_table.csv holds the
[std] weights of the three carence causes. Keeping them apart keeps their
provenances apart: every one of these files carries a provenance column, and the
words in it say which of the four kinds each row is.
No table in this library is a copy of a homologated French mortality table. TH 00-02 /
TF 00-02 and TGH05 / TGF05 are cited by name and arrêté in technical-notes.md and
are not reproduced here.
Cells Descriptions#
- input_dir()[source]#
The directory holding the input CSVs: the model folder’s parent.
Inputs are external files, not data stored inside the model, so the model folder is pure formulas. The path is resolved at run time from where the model was read, following
annuallife.TradLife_A.
- mort_table()[source]#
The healthy-life mortality rates by sex and age, from mort_table.csv.
Annual rates for a life in the autonomous state. A [std] proxy: a two-parameter Gompertz force
mu(x) = B c^xwithB = 5.2321459244e-06andc = 1.11704543, fitted to the two [std] anchorsmort_rate(60) = 0.00400andmort_rate(90) = 0.10500, shaped like a French female population table with no sourced value behind either anchor. The male rows are the same force times 1.60 [std], a sex multiple introduced here becausetechnical-notes.mdspecifies a female basis only. Rates for the two dependent states are this rate raised to a power inProjection.mort_rate_partialandProjection.mort_rate_total, not a separate table: no impaired-life table for either French dependence state exists in any retrieved source.The
provenancecolumn says so on every row. This is not a copy of TH 00-02 / TF 00-02 or of TGH05 / TGF05, which are cited by name and arrêté in the technical notes and are not reproduced by this library.
- prevalence_table()[source]#
The APA-prevalence logistic parameters by sex, from prevalence_table.csv.
prev_ceil,prev_betaandprev_x_midofprev(x) = prev_ceil / (1 + exp(-beta (x - x_mid))). The two slope parameters are pinned to sourced DREES rates at end 2023 — 20% of women and 13% of men aged 80 to 89, read at the band midpoint 84.5, and 54% of women and 40% of men from age 90, read at 93 — whileprev_ceil = 0.90is [std] and unidentified by the fit. The ceiling governs the tail, which is where the claims are.What this table measures is receipt of the *allocation personnalisée d’autonomie*: a prevalence, not an incidence, and a public classification on the AGGIR grid rather than the insurer’s. Both conversions are explicit steps elsewhere —
severity_share_table()for the first andProjection.inc_rate_partialfor the second.
The public-to-insured severity shares, from severity_share_table.csv.
share_partialandshare_totalare the fractions of APA prevalence the model reads as insured dépendance partielle and dépendance totale, keyed by the contract’strigger_grid. All three rows are [std]. Theavq5row is bounded by two indirect anchors — the sourced GIR 1-2 share of APA beneficiaries, 34.9%, and the market’s ratio of rentes in payment to lives covered, about 0.44 — and theavq6andaggirrows are flat factors on it that no retrieved document supports at all. Theprovenancecolumn says which is which.
- lapse_table()[source]#
The annual lapse rates by policy year, read from lapse_table.csv.
Applied to the autonomous ledger alone: a recognised life is exonerated and a reduced membership is paid up, so neither can lapse for non-payment, and with no surrender value there is nothing to surrender for. The last row is the terminal rate —
Projection.lapse_rate_basecaps the policy year at the largest year in the table, so a lifetime projection does not run off the end of it.
- cause_mix_table()[source]#
The [std] cause mix weighting the three carences, from cause_mix_table.csv.
accident 10% / illness other than neurological or psychiatric 55% / neurological or psychiatric 35%. The three-way structure is close to universal across the retrieved contracts; the weights are what a projection needs and no retrieved document states any.
Projection.carence_factorreads the shares against the model point’s own three carence lengths, so a contract with a different menu changes the model point and not this file.
- reduction_table()[source]#
The barème de maintien des garanties, read from reduction_table.csv.
coefficientis the share of the guaranteed rente totale a paid-up membership keeps, by completed years of premiums. The only published French LTC reduction scale retrieved, the CNP Banque de France annexe 2 in force 1 January 2012, whose own qualifying period is five years; the reference composite applies it from the eight-year qualifying period of the other retrieved contracts [std], so 25% is the coefficient at first qualification and the rows at 5, 6 and 7 years are unreachable on the base cell. The last row applies to 30 years and over.
- revision_table()[source]#
The scheduled tariff-revision path, read from revision_table.csv.
An annual rate by policy year, applied to the premium on top of the revalorisation des garanties. A real tariff revision is a management action, not a projected assumption: the column exists so that the contractual capability is present and testable, and the shipped path — nil for five years, then 1.5% a year — is arbitrary inside the 0-10% band the only retrieved cap allows. The last row is the terminal rate.