Formalisation du moteur DBO — Temps 1 & 2 (v2)¶
🎯 À retenir
Cette note fixe quoi calculer et pourquoi cette mathématique pour le moteur DBO (Temps 1 & 2), avant tout code. Le noyau est unique : droit acquis × actualisation × maintien. L'arbitrage central est le facteur d'attribution, ratifié sur A2′ (droite dès l'entitlement), qui coïncide avec les autres options pour le barème légal gabonais linéaire. La v2 intègre les corrections de la passe de défendabilité (sources réelles).
Statut méthodologique. Ce document est le livrable des Temps 1 (poser et formaliser) et Temps 2 (résoudre et choisir) de la méthode de travail BFEV (
../../../../../methode_de_travail.md), appliqués au moteur de calcul DBO d'ActuaryLab. Il est produit avant toute écriture deactuariat_lib— le moteur est une porte à sens unique (socle mathématique de tout le module), donc pleine cérémonie : formalisme sourcé, solution caractérisée, critères d'invalidation définis à froid.Ce qu'il n'est pas. Il ne traite ni l'architecture logicielle (Temps 3 — bridge, dispatcher, orchestration FastAPI), ni l'implémentation. Il fixe quoi calculer et pourquoi cette mathématique, pas comment l'organiser en code.
Sources amont consommées :
docs/specs/NOTE_TECHNIQUE_MOTEUR_CALCUL_DBO.md,refs/actuariat_lib/models.py(dataclasses déjà déclarées),docs/specs/Module_IFC_ActuaryLab_v1_0.md,docs/specs/Hypotheses_IFC_BFEV_Gabon_2025.docx. Passe de défendabilité : base documentairereferences/(manifeste + résumés, sources vérifiées).Évolution v1 → v2 (2026-06-05). La v2 intègre les corrections de la passe de défendabilité (confrontation aux sources réelles, cf.
references/et §12) : (a) le barème IFC légal gabonais est LINÉAIRE (20 %/an sur la moyenne des 12 derniers mois, Code du travail, art. 90, loi 022/2021) — la grille à paliers de la v1 est un exemple de convention collective, donc D-ATTRIB ne mord que sur les conventions back-loaded ; (b) réserve vesting levée (IAS 19 §70 vérifié verbatim) ; (c) tables CIMA H / CIMA F 2012 (Code CIMA Art. 338), non « CIMA 2018 » ; (d) base_calcul légal =moy_12_mois. La structure et la logique des Temps 1-2 restent celles de la v1.
0. Deux écarts détectés en passe de découverte (à acter)¶
-
Divergence d'architecture (hors périmètre de cette note, mais bloquante en aval). La note technique amont décrit une orchestration Django / Celery / queryset ; le module ActuaryLab courant est FastAPI + Next.js. La couche
actuariat_libest pure (aucune dépendance framework — c'est sa « règle d'or »), donc le cœur mathématique ci-dessous est portable tel quel. Seule la couche d'orchestration (bridge, dispatcher, persistance, tâche asynchrone) sera retransposée au Temps 3. -
Ambiguïté actuarielle réelle — l'attribution PUC (décision centrale de cette note). La note amont écrit la DBO au prorata linéaire de l'ancienneté (\(k / k_r\), formule (283)), mais la grille IFC est non-linéaire (taux croissant par paliers). IAS 19 demande d'attribuer la prestation selon la formule de prestation du régime, sauf cas de back-loading. Ces deux attributions donnent des DBO différentes. Le choix est tranché et justifié en §6.3 — c'est le point dur du Temps 2. (v2 — nuance issue de la défendabilité : le barème légal gabonais est en réalité linéaire (§5.3), donc cette ambiguïté ne concerne que les conventions collectives back-loaded ; pour le minimum légal, les attributions coïncident.)
TEMPS 1 — Poser et formaliser le problème¶
1. Étape 1 — Le problème central, épuré¶
Énoncé. Étant donné, à une date d'évaluation \(t_0\), une population de salariés (âge, ancienneté, salaire), un jeu d'hypothèses économiques et démographiques, et une règle de prestation (ici l'IFC), calculer la valeur actuelle probable de l'engagement de l'employeur envers chaque salarié — la DBO (Defined Benefit Obligation) — puis ses agrégats et sa décomposition au sens d'IAS 19.
Trois mots portent tout le poids :
- « probable » → l'engagement n'est dû que si le salarié reste en service jusqu'au fait générateur ; il faut donc pondérer par une probabilité de maintien (sortie par décès, démission, invalidité, retraite).
- « valeur actuelle » → la prestation est versée dans le futur (\(n = r - x\) années) ; il faut actualiser.
- « engagement » → on ne valorise pas la prestation entière, mais la part déjà acquise à \(t_0\) au titre des services rendus (principe d'IAS 19 / méthode PUC).
Tout le reste (familles de produits, vectorisation, multi-tenant, rapports) est de l'accessoire vis-à-vis de ce noyau : probabilité × actualisation × droit acquis.
2. Étape 2 — Mapping vers le formalisme (sourcé)¶
2.1 Le cadre théorique retenu¶
Le problème est un cas d'évaluation d'un engagement à prestations définies post-emploi, qui relève de deux corpus établis :
- Le standard comptable IAS 19 Employee Benefits (révisé 2011) — impose la méthode PUC (Projected Unit Credit, « unités de crédit projetées »), définit l'attribution des droits (§70-74), et la décomposition du coût (service cost, net interest, réévaluations en OCI). ✅ Vérifié verbatim — texte endossé UE, §70.
- La théorie des contingences viagères à décréments multiples (multiple-decrement life-contingency theory) — fournit l'appareil probabiliste : tables de mortalité/rotation, probabilité de maintien \({}_n p_x^{(\tau)}\), facteurs d'actualisation viagers, rentes. ✅ Réf. vérifiées : Dickson, Hardy & Waters, Actuarial Mathematics for Life Contingent Risks, 3ᵉ éd. 2020, Cambridge (ch. 9 décréments multiples ; ch. 3 âges fractionnaires) ; Bowers et al., Actuarial Mathematics, 2ᵉ éd. 1997, SOA.
Pour le contexte CEMAC/OHADA (Gabon) : tables de mortalité CIMA H (décès) /
CIMA F (vie), millésime 2012, Code CIMA Art. 338 (taux technique ≤ 3,5 %) ;
barème IFC légal = Code du travail gabonais — art. 87-90, loi n° 022/2021 (ex-art. 71-73, code abrogé ; cf. references/summaries/gabon-ifc.md) — (indemnité de services
rendus, 20 % de la moyenne 12 mois par année de présence — linéaire, cf. §5.3). ✅
Vérifié sur sources réelles (§12).
✅ Note de défendabilité (v2 — vérifié). Sources confrontées au réel (cf. §12,
references/) : IAS 19 §70-71-73 lu verbatim sur le texte endossé UE ; Dickson, Hardy & Waters Actuarial Mathematics for Life Contingent Risks, 3ᵉ éd. 2020, Cambridge (ch. 9 décréments multiples) ; Bowers et al., 2ᵉ éd. 1997, SOA ; tables CIMA H / CIMA F (2012), Code CIMA Art. 338. Reste non vérifiable en open-access : les valeurs \(q_x\) des tables CIMA (annexe réglementaire, §12).
2.2 Formalismes concurrents — et pourquoi on les écarte¶
| Formalisme candidat | Décision | Justification |
|---|---|---|
| PUC (unités de crédit projetées) | ✅ retenu | Imposé par IAS 19 pour l'information financière. Contrainte normative, pas un choix libre. |
| EAN (Entry Age Normal, charge nivelée) | ❌ écarté du livrable | Non conforme IAS 19 pour la DBO publiée. Peut rester optionnel pour analyses internes (le modèle Evaluation.methode prévoit déjà PUC/EAN). |
| Modèle déterministe (espérance, best estimate) | ✅ retenu | La DBO IAS 19 est une meilleure estimation (valeur actuelle attendue sous hypothèses centrales), pas une distribution. |
| Modèle stochastique (simulation de trajectoires) | ❌ écarté du noyau | Réservé à l'analyse de sensibilité / risque (fonction analyse_sensibilite), pas à la DBO publiée. Surdimensionné pour le fait générateur. |
| Décrément multiple exact (multi-état markovien) | 🟡 approximé | On retient l'approximation additive des taux de sortie (§5). C'est une simplification — sous surveillance (kill criterion K-FORMALISME, §8). |
Application de la méthode — porte de sortie à la mathématisation : ici elle ne tire pas. Le problème a une structure mathématique stable, sourcée, et la formalisation réduit l'incertitude (elle rend le chiffre auditable). Mathématiser est adéquat.
3. Étape 3 — Test de fidélité du modèle (avant de résoudre)¶
Avant d'investir dans la résolution, on vérifie que le formalisme reproduit les faits qualitatifs connus de l'IFC. Le modèle est rejeté s'il en viole un :
| # | Fait qualitatif attendu | Traduction formelle |
|---|---|---|
| F1 | Pas d'ancienneté créditée → pas de dette | \(G(\kappa)=0\) sur la 1ʳᵉ tranche (taux 0) ⇒ DBO \(=0\) tant qu'aucun droit n'est acquis |
| F2 | La dette croît avec l'ancienneté, puis plafonne | \(\partial\,\text{DBO}/\partial k \ge 0\) ; saturation au plafond_mois/plafond_fcfa |
| F3 | Un taux d'actualisation plus élevé réduit la dette | \(\partial\,\text{DBO}/\partial i < 0\) |
| F4 | Une revalorisation salariale plus forte augmente la dette | \(\partial\,\text{DBO}/\partial g > 0\) |
| F5 | La probabilité de maintien est dans \([0,1]\) et décroît avec l'horizon | \({}_n p_x^{(\tau)} \in [0,1]\), décroissante en \(n\) |
| F6 | Un salarié déjà à l'âge de retraite n'a plus d'horizon → exclu | \(x \ge r \Rightarrow n \le 0 \Rightarrow\) exclusion |
| F7 | Homogénéité : doubler le salaire double la dette | \(\text{DBO}(\lambda S_0) = \lambda\,\text{DBO}(S_0)\) |
Ces sept faits deviennent des assertions de test (cf. kill criteria §8). Ce test est qualitatif, fait « à la table » ; il ne remplace pas les kill criteria chiffrés, mesurés sur données.
4. Étape 3 (suite) — Les êtres mathématiques¶
Notation fixée pour tout le moteur. Unités explicites — toute grandeur monétaire en FCFA, tout taux annuel effectif, toute durée en années.
| Objet | Symbole | Interprétation | Unité / domaine |
|---|---|---|---|
| Date d'évaluation | \(t_0\) | Clôture de l'exercice | date |
| Âge exact | \(x\) | Âge du salarié à \(t_0\) | années, \(\ge 0\) |
| Ancienneté exacte | \(k\) | Service accompli à \(t_0\) | années, \(\ge 0\) |
| Salaire de référence | \(S_0\) | Base mensuelle (selon base_calcul) |
FCFA/mois |
| Âge de retraite | \(r\) | Hypothèse de départ | années |
| Horizon | \(n = r - x\) | Années jusqu'au fait générateur | années |
| Taux d'actualisation | \(i\) | Taux annuel effectif | \(]0,1[\) |
| Facteur d'actualisation | \(v = (1+i)^{-1}\) | Valeur à \(t_0\) d'1 FCFA dans 1 an | \(]0,1[\) |
| Taux de revalorisation salaire | \(g\) | Croissance annuelle des salaires | réel |
| Taux de décrément cause \(j\) | \(q^{(j)}_x\) | Proba annuelle de sortie par \(j\in\{d,w,\iota\}\) | \([0,1]\) |
| Taux de sortie toutes causes | \(q^{(\tau)}_x\) | Décrément combiné | \([0,1]\) |
| Proba de maintien \(n\) ans | \({}_n p_x^{(\tau)}\) | Rester en service de \(x\) à \(x+n\) | \([0,1]\) |
| Grille IFC | \(G(\kappa)\) | Nombre de mois de salaire dus pour l'ancienneté \(\kappa\) | mois |
| Salaire projeté | \(S_r\) | Salaire à l'âge \(r\) | FCFA/mois |
| Ancienneté projetée | \(k_r = k + n\) | Service à la retraite | années |
| Prestation projetée | \(\text{PP}\) | Indemnité due si carrière menée à \(r\) | FCFA |
| Unité de crédit | \(UC\) | Droit acquis par année de service | FCFA/an |
| DBO individuelle | \(\text{DBO}_i\) | Engagement actualisé probable | FCFA |
où \(d\) = décès, \(w\) = rotation (withdrawal), \(\iota\) = invalidité.
TEMPS 2 — Résoudre et choisir¶
5. Étape 4 — Résolution : les blocs de calcul¶
Convention de numérotation. Les équations en display sont numérotées (1)–(9) (à droite). On les cite ainsi dans tout échange : « éq. (6) » = la DBO individuelle, « éq. (8) » = le waterfall, etc. Les trois facteurs d'attribution gardent leurs étiquettes nommées (A1) / (A2) / (A2′) (§6.3). Quand une équation regroupe deux relations sur une ligne (p. ex. (1), (3), (7)), on précise le membre cité si besoin.
5.1 Probabilité de maintien (décréments multiples)¶
Décrément combiné, approximation additive (celle de TableComposite.qx_total) :
Probabilité de rester en service \(n\) années :
Limite assumée (sourçage à charge). L'additivité \(q^{(\tau)}\approx\sum_j q^{(j)}\) est une approximation ; le traitement exact (décréments en temps continu, ou dépendant/indépendant) diffère au 2ᵉ ordre. Tolérable pour des taux faibles ; à mesurer (K-FORMALISME, §8). Le fractionnement infra-annuel (UDD/CFM/Balducci, champ
hypothese_distribution) raffine \(q_x\) aux âges non entiers — ✅ Réf. vérifiée : Dickson, Hardy & Waters, 3ᵉ éd. 2020, ch. 3.
5.2 Projections¶
5.3 Grille (prestation par paliers)¶
Pour des tranches \((b_j^{\inf}, b_j^{\sup}, \tau_j)\) exprimant un nombre de mois par année d'ancienneté dans la tranche :
⚠️ v2 — barème légal gabonais vs convention collective (vérifié, §12). Le barème légal (Code du travail, art. 90, loi 022/2021) est LINÉAIRE : une tranche unique \((0, \infty, 0{,}20)\) → \(G(\kappa) = 0{,}20\,\kappa\) (en mois-équivalents), sur la moyenne des 12 derniers mois. C'est un minimum obligatoire. La grille à paliers \([(0,5,0),(5,10,1),\dots]\) utilisée en exemple représente une convention collective plus favorable (back-loaded). La forme \(G(\cdot)\) ci-dessus couvre les deux cas ; mais voir §6.3 : l'arbitrage d'attribution ne change rien quand \(G\) est linéaire.
5.4 Prestation projetée (carrière complète)¶
avec \(\tau_{\text{cs}}\) = taux de charges sociales (si la prestation y est assujettie), et plafond exprimé en mois (× \(S_r\)) ou en FCFA.
5.5 DBO individuelle — forme générale PUC¶
Le noyau annoncé à l'étape 1 — droit acquis × actualisation × maintien — apparaît explicitement dans (6). Tout le débat porte sur le facteur d'attribution \(A(k,k_r) \in [0,1]\).
6. Étape 5 — Sélection de la solution alignée¶
6.1 La famille de solutions¶
Le Temps 2 demande de caractériser l'ensemble des solutions pertinentes avant d'en choisir une. Pour la DBO-IFC, l'ensemble se paramètre par trois choix :
- (A) Le facteur d'attribution \(A(k,k_r)\) : linéaire vs formule de prestation vs droite dès l'entitlement (trois options — cf. §6.3, tranché numériquement).
- (B) La base salariale
base_calcul∈ {dernier_salaire, moy_12_mois, moy_3_ans}. - (C) Le traitement infra-annuel
hypothese_distribution∈ {UDD, CFM, Balducci}.
(B) et (C) sont des paramètres portés par les hypothèses (déjà dans models.py) :
ils ne changent pas la forme de la solution, seulement ses entrées. Le vrai arbitrage
structurant est (A).
6.2 Conditions d'existence et de validité¶
- \(n > 0\) (sinon exclusion, fait F6) ; \(G(k_r) > 0\) (sinon DBO \(= 0\), droit jamais acquis).
- Hypothèses centrales constantes par hypothèse sur l'horizon (best estimate IAS 19).
- Tables couvrant \([x, r]\) ; \(\omega \ge r\).
- Validité dégradée si \(g \gtrsim i\) longtemps (croissance salariale ≥ actualisation → poids des horizons lointains amplifié) — à surveiller en sensibilité.
6.3 ⚖️ L'arbitrage central — facteur d'attribution \(A(k,k_r)\)¶
Trois options, pas deux (la passe chiffrée a réfuté la formulation binaire de la note v1). Soit \(s^{\ast} = 5\) ans le seuil d'entitlement (1ʳᵉ ancienneté où la grille crédite, \(G' > 0\)) :
| (A1) Linéaire | (A2) Formule stricte | (A2′) Droite dès l'entitlement | |
|---|---|---|---|
| Définition | \(A = \dfrac{k}{k_r}\) | \(A = \dfrac{G(k)}{G(k_r)}\) | \(A = \dfrac{[\,k - s^{\ast}\,]_+}{k_r - s^{\ast}}\) |
| Sur \(k < s^{\ast}\) | \(A>0\) (dette non nulle) | \(A=0\) | \(A=0\) |
| Cohérence grille | ❌ ignore les paliers | ✅ épouse la grille | ✅ linéarise le back-loading |
| Conformité IAS 19 | acceptable seulement si prestation ~linéaire | défaut si pas de back-loading | forme exigée si back-loading (§~70) |
Interprétation A2 vs A2′ (ajout 2026-06-10). Les deux partent de la même grille et coïncident aux deux bornes (\(A=0\) à l'entitlement, \(A=1\) à la retraite) ; ils diffèrent sur la question posée. (A2) — lecture contractuelle : « quelle fraction de la prestation finale la formule a-t-elle déjà créditée ? » — on suit le calendrier d'acquisition écrit au régime. (A2′) — lecture économique : « quelle part de la période de service génératrice de droit est accomplie ? » — chaque année depuis \(s^{\ast}\) pèse pareil. Géométriquement : pour une grille back-loaded, \(A_2(k)\) est convexe (pente croissante par paliers) et \(A_{2'}\) est exactement sa corde de \((s^{\ast},0)\) à \((k_r,1)\) — d'où \(A_2 \le A_{2'}\) structurellement, écart maximal au coude de la grille, nul aux bornes (le débat D-ATTRIB est un débat de milieu de carrière). Ordre logique du §70 : (A2) est la règle par défaut (attribution selon la formule du régime) ; (A2′) est l'exception qui devient obligatoire dès que la formule attribue aux années tardives un droit « materially higher ». Rationale : les taux élevés des dernières années ne rémunèrent pas seulement ces années-là — le salarié ne les obtient qu'en ayant servi toutes les années depuis l'entitlement ; le back-loading est une rémunération différée (outil de rétention), pas une mesure du service rendu. Comptabiliser selon (A2) sous-provisionnerait le milieu de carrière et, à la limite, une grille créditant tout la dernière année autoriserait une provision quasi nulle pendant toute la carrière — la ligne droite ferme cette porte. En une phrase : A2 suit le calendrier du contrat, A2′ suit le rythme du travail ; IAS 19 considère que c'est le travail qui crée l'engagement — sauf quand les deux coïncident (grille linéaire, où A1 = A2 = A2′).
Évidence chiffrée — échantillon EGCC 250 salariés (49 inclus, population jeune, grille à seuil 5 ans). DBO* \(=\text{PP}\cdot v^n\cdot A\), hors maintien \({}_n p_x\) (commun aux trois → écart % exact) :
| Attribution | DBO* masse (FCFA) | vs A1 |
|---|---|---|
| A1 linéaire | 100 140 193 | — |
| A2 formule stricte | 17 088 043 | −82,9 % |
| A2′ droite dès seuil | 25 429 782 | −74,6 % |
Le choix change le passif d'un facteur ~6. Premier déterminant du chiffre publié, pas un détail de méthode. Reproductible :
d-attrib_comparaison.py.⚠️ v2 — l'écart ci-dessus suppose une grille à paliers. Les montants sont calculés sur une convention collective (grille croissante). Pour le barème légal linéaire (§5.3), \(G(k)=0{,}20\,k\) et \(s^{\ast}=0\) ⇒ \(G(k)/G(k_r)=k/k_r\), donc A1 = A2 = A2′ : l'arbitrage est sans objet. D-ATTRIB ne mord que sur les conventions back-loaded.
Recommandation (ratifiée) : (A2′) comme défaut générique. Pour une grille matériellement back-loaded (convention collective), IAS 19 §70 impose l'attribution en ligne droite depuis la date où le service commence à générer un droit jusqu'à la retraite — exactement A2′ ; A1 provisionne des droits que la formule dit nuls, A2 met zéro sous le seuil. Pour le barème légal linéaire, A2′ coïncide avec A1/A2. A2′ est donc sûr dans les deux régimes. ✅ IAS 19 §70 vérifié verbatim (§12).
Décision. Impact direct sur le passif publié d'un client → décision actuarielle, pas d'ingénierie (méthode, étape 5 : expliciter l'arbitrage). ✅ D-ATTRIB — RATIFIÉ : A2′ (droite-entitlement), 2026-06-05. Code paramétrable (
mode_attribution ∈ {lineaire, formule, droite_entitlement}, défautdroite_entitlement).✅ Réserve vesting — LEVÉE (v2). IAS 19 §70 (verbatim) attribue dès l'entitlement « whether or not the benefits are conditional on further service » : la conditionnalité ne change pas l'attribution. Elle est portée par la probabilité de maintien \({}_n p_x^{(\tau)}\) (décréments) — le current service cost « reflects the probability that the employee may not complete the necessary period of service ». Les 174 salariés à \(k=0\) de l'échantillon sont donc traités par \({}_n p_x^{(\tau)}\), pas par un changement d'attribution. Cf.
references/summaries/ias19-attribution.md.
6.4 Décomposition IAS 19 (waterfall) — pour la cohérence inter-exercices¶
⚖️ D-IC — acté le 2026-06-10 (amendement v2.1 ; étude générale :
d-attrib_exercice-annuel.md, §6). La rédaction initiale \(\text{IC} = \text{DBO}_{t_0}\cdot i\) laissait dans les réévaluations un résidu systématique \(\text{CSR}\cdot i\) — toujours positif, jamais compensé en portefeuille, qui n'est pas de l'expérience mais l'intérêt manquant sur le service de la période. Conséquence : le bouclage K2 était intenable par spécification. La convention retenue — service réputé acquis en début de période — rend le bouclage exact (\(\text{Réév} = \text{DBO}_{t_1}\cdot q_x\) pour un survivant) et \(\mathbb{E}[\text{Réév}] = 0\) sous hypothèses réalisées.
Le bouclage de (8) (DecompositionDBO.verification) est une contrainte dure, pas
un indicateur : il devient le kill criterion K2.
6.5 Agrégation¶
7. La solution particulière retenue pour le Jalon 2¶
Périmètre Jalon 2 : famille
GRILLE_ANCIENNETE(IFC / IFC_RUPTURE) uniquement. Les cinq autres familles (TAUX_REMPLACEMENT, CAPITAL_ACCUMULE, MONTANT_FIXE, CAPITAL_MILLESIMES, ALEATOIRE) réutilisent le même noyau (§5.5, éq. (6)) avec une \(\text{PP}\) et un \(A\) différents → le moteur est générique par construction, ce que le Jalon 4 bis (Épargne salariale) viendra valider.🪨 D-PERIMETRE — borné le 2026-06-10 (finding ouvert par
deterministe-ohada_vs_dbo.md, §6.3). L'éq. (6) valorise la seule composante retraite : \({}_n p_x^{(\tau)}\) y est un pur facteur réducteur, toute sortie avant \(r\) vaut zéro. Cette lecture est exacte pour les régimes où seule la retraite déclenche la prestation ; elle est une approximation basse pour le barème légal gabonais (loi 022/2021, art. 87-90), où presque toutes les causes de sortie paient la même formule (retraite, décès, démission ≥ 2 ans, licenciement hors faute lourde) — l'engagement réel est \(\mathbb{E}\big[v^{T} G(k_T)\bar S_{12}(T)\big]\) avec \(T\) = sortie toutes causes indemnisées. L'ampleur de la sous-évaluation croît avec les taux de rotation ; elle est nulle si aucune sortie avant \(r\) n'est indemnisée. Décision : le Jalon 2 assume cette borne (documentée dans tout livrable) ; la levée passe par l'extension multi-décréments à prestation par cause \(B_j(k)\) — formalisme standard, identique à la machinerie multi-états de la vision trajectoires (étage 1,../explanation/vision-trajectoires-emergence.md) — à instruire en Temps 1 avant toute mission sur le régime légal seul. K1/K1-bis restent les oracles valides de la formalisation actuelle.✅ LEVÉE le 2026-06-11 : extension formalisée dans
multidecrements_v1.md(éq. (10)–(13), registre D-CAUSES-1…5, oracle K-MULTI = 2 912 725,419210 FCFA, soit +23,49 % vs K1-bis sur le cas-témoin). L'éq. (6) reste le cas dégénéré (aucune cause payante) et le mode par défaut ; l'inclusion des causes est un acte d'hypothèse sous contrôle de l'actuaire (D-CAUSES-2).
Choix figés pour la première implémentation :
- Attribution : \(A\) paramétrable, défaut (A2′) droite dès l'entitlement (D-ATTRIB ratifié, §6.3) — coïncide avec A1/A2 pour le barème légal linéaire.
- Décrément : additif (§5.1), table composite mortalité CIMA H (millésime 2012) + rotation.
- Base : défaut
moy_12_mois(barème légal gabonais, art. 90, loi 022/2021) —dernier_salaire/moy_3_ansrestent paramétrables. - Fractionnement : annuel (\(m=1\)), UDD pour les âges non entiers.
- Sortie :
ResultatDBO(déjà déclaré) — DBO, PP, UC, droit acquis, \(v^n\), \({}_n p_x^{(\tau)}\), \(S_r\), \(k_r\), CSR, IC,detail_calcul.
Étape 5½ — Critères d'invalidation (définis à froid, avant de coder)¶
8. Kill criteria du moteur (réfutent une implémentation)¶
Énoncés maintenant, mesurés sur les échantillons data/samples/ :
| Code | Condition de succès | Seuil |
|---|---|---|
| K1 — Cas-témoin | La DBO d'un cas IFC calculé à la main (k1_cas-temoin.md + oracle k1_oracle.py : 1 salarié, grille back-loaded, mortalité CIMA H ; DBO attendue = 2 751 205,018849 FCFA) est reproduite |
\(\lvert\Delta\rvert \le 1\) FCFA et écart relatif \(\le 10^{-6}\) |
| K2 — Bouclage IAS 19 | Le waterfall réconcilie : \(\text{DBO}_{t_1} - (\text{ouv}+\text{CSR}+\text{IC}-\text{prest}+\text{réév})\) | \(\le 1\) FCFA (flag verification) |
| K3 — Monotonies | Les faits F2–F4 tiennent sur l'échantillon 250 : \(\partial_i\text{DBO}<0\), \(\partial_g\text{DBO}>0\), \(\partial_k\text{DBO}\ge0\) sous plafond | signe strict respecté ∀ salarié |
| K4 — Homogénéité | \(\text{DBO}(\lambda S_0) = \lambda\,\text{DBO}(S_0)\) (fait F7) | tolérance flottante \(10^{-9}\) |
| K5 — Bornes & exclusions | \({}_n p_x^{(\tau)}\in[0,1]\) ∀ ; ensemble exclu \(=\{x\ge r\}\) exactement (F5, F6) | égalité ensembliste exacte |
| K6 — Vectorisation fidèle | dbo_population_puc (NumPy) = boucle sur dbo_individuelle_puc, élément par élément |
\(\le 10^{-9}\) par salarié |
| K7 — Oracle externe | DBO totale sur l'échantillon vs recalcul indépendant (tableur de contrôle, ou moteur Django legacy s'il est exécutable) | écart relatif \(\le 0{,}5\%\) |
Pourquoi à froid. Ces seuils sont fixés avant de voir tourner le code, pour que l'invalidation soit un constat objectif et non un jugement post-hoc indulgent envers notre propre implémentation (méthode, étape 5½).
9. Critère de sunset (réfute le formalisme, pas l'implémentation)¶
🪦 K-FORMALISME / sunset. « Si, après 3 cycles d'implémentation-test, l'approximation additive des décréments (§5.1) produit, sur les données de test, un écart \(> 1\%\) sur la DBO totale face à un calcul multi-décrément propre (multiplicatif / multi-état), alors l'hypothèse d'additivité est réfutée pour ce portefeuille : on abandonne la simplification additive et on rebascule vers un décrément exact — ce n'est pas une rustine de l'implémentation, c'est un changement de formalisme. » Budget : 3 cycles. Au-delà sans convergence sous le seuil, escalade méthodologique (retour Temps 1 sur le bloc décrément).
10. Passe de défendabilité — état (sources réelles)¶
Passe de défendabilité réalisée le 2026-06-05 (recherche web + téléchargements). Base
documentaire locale : references/ (manifeste + résumés versionnés, binaires en local).
- [x] D-ATTRIB — ✅ ratifié A2′ (droite-entitlement), 2026-06-05.
- [x] IAS 19 attribution — ✅ vérifié verbatim (§70-71-73, texte endossé UE). A2′
confirmé. Réserve vesting LEVÉE : le §70 attribue dès l'entitlement « whether or not
the benefits are conditional on further service » ; la conditionnalité est portée par
\({}_n p_x^{(\tau)}\) (décréments), pas par l'attribution. Cf.
references/summaries/ias19-attribution.md. - [x] Ouvrages — ✅ Dickson-Hardy-Waters 3ᵉ éd. 2020 (ch. 9 décréments), Bowers 2ᵉ
éd. 1997 confirmés.
references/summaries/etat-de-l-art-actuariel.md. - [x] Tables CIMA — ⚠️ corrigé : CIMA H (décès) / CIMA F (vie), Art. 338,
2012, taux technique ≤ 3,5 % (≠ « CIMA 2018 »).
references/summaries/cima-tables.md. - [x] Valeurs \(q_x\) CIMA H/F — ✅ OBTENUES (2026-06-08) : présentes dans l'annexe
art. 338 du Code CIMA 2019 officiel téléchargé (
references/cima-tables/code-cima-2019.pdf, p. PDF 225-226 : \(l_x\), \(d_x\) par âge ; \(q_x = d_x/l_x\)). N'était pas closed-source. - [x] Cas-témoin K1 — ✅ produit (2026-06-08) :
k1_cas-temoin.md(dérivation à la main) +k1_oracle.py(oracle exécutable auto-vérifié), DBO = 2 751 205,018849 FCFA.
⚠️ Corrections — intégrées dans cette v2¶
- Barème IFC légal gabonais = LINÉAIRE (art. 90, loi 022/2021) → intégré en §5.3 et §6.3
(A1=A2=A2′ pour le légal ; l'arbitrage D-ATTRIB et l'« écart facteur ~6 » ne valent que
pour les conventions back-loaded).
references/summaries/gabon-ifc.md. - base_calcul légal =
moy_12_mois→ défaut corrigé en §7. - Renommer
'CIMA_2018_M'→CIMA_H_2012/CIMA_F_2012— action d'implémentation (Temps 3,actuariat_lib/models.py), notée pour le code. - Distinguer taux technique CIMA (≤ 3,5 %, tarif vie) et taux d'actualisation IAS 19
(taux de marché) → noté en §2.1 et
references/summaries/cima-tables.md.
Plus rien d'ouvert côté défendabilité. (Le cas-témoin K1 est produit (k1_cas-temoin.md)
et les valeurs \(q_x\) CIMA H/F, un temps réputées closed-source, ont été obtenues le
2026-06-08 dans le Code CIMA 2019 officiel — §12.)
11. Ce que cette formalisation débloque (passage au Temps 3)¶
Une fois D-ATTRIB ratifié et K1 produit, l'implémentation de actuariat_lib peut
commencer sous-module par sous-module, chacun adossé à un bloc ci-dessus :
Sous-module actuariat_lib |
Bloc formalisé | Kill criteria gardiens |
|---|---|---|
tables/ (composite) |
§5.1 | K5 |
probabilites/ (maintien) |
§5.1 | K3, K5 |
financier/ (actualisation, rentes) |
§5.5 (facteur \(v^n\) ; rentes pour familles futures) | — |
engagements/dbo |
§5.4, §5.5, §6.3, §6.4 | K1, K2, K3, K4, K6, K7 |
utils/validation |
§3.3 amont (champs requis) | K5 |
12. Bibliographie (passe de défendabilité)¶
Sources confrontées au réel le 2026-06-05. Base documentaire : references/
(manifeste references/README.md + résumés references/summaries/). Statut : ✅ vérifié /
📝 résumé en ligne / 🔒 closed-source.
Normatif — IAS 19 Employee Benefits (révisé 2011), §70-74 attribution, composantes du coût. ✅ texte endossé UE (local) ; 📝 IFRS Community, PwC Viewpoint §2.5 ; SOA study note, Grant Thornton fact sheet (local). 🔒 texte intégral IFRS Foundation (inscription).
Réglementaire — zone CIMA / Gabon. Code CIMA 2019 (édition consolidée officielle, ✅ local) — Art. 338 : tables CIMA H (décès) / CIMA F (vie), millésime 2012 (art. modifié 04/10/2012, inchangé dans la dernière édition ; pas de table 2018), taux technique ≤ 3,5 %. Annexe art. 338 = tables \(l_x/d_x\) par âge (✅ local, p. PDF 225-226) ; + FANAF 2011 (local). Vérifié sur cima-afrique.org le 2026-06-08. Code du travail gabonais, art. 87-90 (loi n° 022/2021) : indemnité de services rendus, 20 % de la moyenne 12 mois / an de présence (✅ local, vérifié verbatim).
Théorie actuarielle. Dickson, Hardy & Waters, Actuarial Mathematics for Life Contingent Risks, 3ᵉ éd. 2020, Cambridge — ch. 9 décréments multiples (🔒 ; frontmatter local). Bowers, Gerber, Hickman, Jones & Nesbitt, Actuarial Mathematics, 2ᵉ éd. 1997, SOA (🔒). État de l'art open-access : arXiv 1107.1380, arXiv 2506.03584, CRR-BC WP 2017-4 (✅ local).
Formalisation moteur DBO — v2 — Temps 1 & 2 — ActuaryLab / BFEV.
Produit selon methode_de_travail.md. Passe de défendabilité réalisée (§10, §12) ;
sources vérifiées sur references/. Cas-témoin K1 produit (k1_cas-temoin.md).
Équations numérotées (1)–(9) le 2026-06-08 pour référence stable (facteurs
d'attribution : étiquettes nommées (A1)/(A2)/(A2′), §6.3).