Implemented
The calculation is built: it validates inputs and repeats the result with the same data.
How to read this project
Each result has its own level of support. The question is not whether the code calculates, but what can be claimed about the number and what an insurer would still need to use it.
Where the library stands
The entire repository sits, at most, at level 02: verified. No figure reaches level 03.
It is not an oversight: it is a declared decision. The missing data — published mortality, calibrated factors, sourced morbidity — is inventoried in the audit, each entry with its replacement path. That list is also the list of help this project is looking for.
The three levels
The calculation is built: it validates inputs and repeats the result with the same data.
On top of that, an independent check (an identity, a hand-worked case, or another oracle) is able to find known defects.
A real decision still needs approved data, corporate governance, an institutional method, and actuarial judgment. This repository does not claim to have them.
The concrete part
Which check pins each domain, which data sets its ceiling, and its primary limit. Each row links the domain's explained case and its calculator.
| Domain | What is validated | Data ceiling | Primary limit | Explore |
|---|---|---|---|---|
| Life | Commutation identities (Aₓ + d·äₓ = 1) and the Fackler recursion for endowment reserves. | Synthetic mortality | The mortality table is synthetic and does not validate a professional tariff. | |
| P&C | Hand-calculated cases and monotonicity of factors and deductibles. | Illustrative tariffs | Rating tables are not current official AMIS data. | |
| Health | Contract boundaries for deductible, coinsurance, cap, and sum insured. | Illustrative morbidity | There is no frequency-severity model fed by experience data. | |
| Pensions | The zero-interest identity (äₓ = 1 + eₓ) and Ley 73 legal cases. | Simplified rules | Ley 97 omits survivor insurance required in a complete model. | |
| Reserves | Mack reproduces the published Taylor–Ashe case; the ODP bootstrap, the published φ. | Reproducible triangles | Mack and ODP do not cover model risk, mix change, or unobserved inflation. | |
| Reinsurance | Canonical hand-worked layers (5 xs 5, 5 xs 10, 10 xs 20) and aggregate erosion. | Illustrative treaties | Reinstatement proration considers neither time nor tiered rates. | |
| Regulatory | Aggregation identity: the aggregate RCS never exceeds the sum of the modules. | Heuristic factors | Factors do not implement the complete CNSF stochastic model. |
Commutation identities (Aₓ + d·äₓ = 1) and the Fackler recursion for endowment reserves.
The mortality table is synthetic and does not validate a professional tariff.
Hand-calculated cases and monotonicity of factors and deductibles.
Rating tables are not current official AMIS data.
Contract boundaries for deductible, coinsurance, cap, and sum insured.
There is no frequency-severity model fed by experience data.
The zero-interest identity (äₓ = 1 + eₓ) and Ley 73 legal cases.
Ley 97 omits survivor insurance required in a complete model.
Mack reproduces the published Taylor–Ashe case; the ODP bootstrap, the published φ.
Mack and ODP do not cover model risk, mix change, or unobserved inflation.
Canonical hand-worked layers (5 xs 5, 5 xs 10, 10 xs 20) and aggregate erosion.
Reinstatement proration considers neither time nor tiered rates.
Aggregation identity: the aggregate RCS never exceeds the sum of the modules.
Factors do not implement the complete CNSF stochastic model.
The numbers
1,380
Python tests, all green
92%
line coverage of the package
10
Class A defects closed against an external oracle, an identity, or a hand calculation
36
inventoried assumptions with source, limit, and replacement path
Figures taken on 2026-08-03 by running the full suite.
The ceilings, turned into tasks
Each task comes from the audit's Class B inventory: the record of every assumption with its source, its limit, and its replacement path. It is where an outside professional adds more than the project itself can.
Today: The bundled table is synthetic: a linear qx ramp with q₆₅ ≈ 0.0135 against ≈ 0.02 in the real EMSSA. It is the ceiling on life, pensions, and part of capital.
The contribution: License the published table, replace the CSV, and update its content_hash: the loader already verifies sha256 and rejects a mismatched file. Then recompute and republish the benchmarks. It is the single most valuable replacement in the project.
See the inventory row →Today: The factors and correlation matrices are pedagogical heuristics, not the CNSF model. The whole regulatory module inherits that ceiling.
The contribution: Document a verifiable CNSF/CUSF source per factor and replace each heuristic with its matching test.
See the inventory row →Today: The risk margin uses a declared simplification instead of the CUSF cost-of-capital method.
The contribution: Implement the CUSF method with its cited source and contrast it against the current simplification.
Propose it in an issue →Today: Mack and ODP are checked against fixed published cases; the chainladder dependency is declared and unused.
The contribution: Cross-check Mack, ODP, and Bornhuetter-Ferguson against chainladder on arbitrary triangles, not only the Taylor–Ashe case.
Propose it in an issue →Today: Morbidity rates are illustrative laboratory bands; a health premium today is a contractual exercise, not a tariff.
The contribution: Contribute a public, usable morbidity source with declared validity and units, and the tests that pin it.
Propose it in an issue →Today: No domain has been disputed by an actuary from outside the project. Identities catch calculation errors, not framing errors.
The contribution: Read one domain's explained case and dispute it using the six-step format. It is the lowest-friction contribution and the only one that sees what identities cannot.
Read the contribution format →CONTRIBUTING.md asks for a model described in six steps, in this order. A result without a source or an explicit limit is marked illustrative; nothing is presented as current without verifiable evidence.