Aller au contenu

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 de actuariat_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 documentaire references/ (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)

  1. 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_lib est 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.

  2. 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 :

  1. 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.
  2. 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éthodeporte 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

\(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) :

\[q^{(\tau)}_x \;=\; \min\!\Big(1,\; q^{(d)}_x + q^{(w)}_x + q^{(\iota)}_x\Big), \qquad p^{(\tau)}_x = 1 - q^{(\tau)}_x. \tag{1}\]

Probabilité de rester en service \(n\) années :

\[ {}_n p_x^{(\tau)} \;=\; \prod_{s=0}^{n-1} p^{(\tau)}_{x+s} \;=\; \prod_{s=0}^{n-1}\big(1 - q^{(\tau)}_{x+s}\big). \tag{2}\]

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

\[S_r = S_0\,(1+g)^{\,n}, \qquad k_r = k + n. \tag{3}\]

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 :

\[ G(\kappa) \;=\; \sum_j \big[\min(\kappa,\,b_j^{\sup}) - b_j^{\inf}\big]_+ \cdot \tau_j, \qquad [u]_+ = \max(u,0). \tag{4}\]

⚠️ 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)

\[ \text{PP} \;=\; \underbrace{G(k_r)}_{\text{mois}} \cdot \underbrace{S_r}_{\text{FCFA/mois}} \cdot (1 + \tau_{\text{cs}}), \qquad \text{puis plafonnement}: \text{PP} \leftarrow \min\big(\text{PP},\; \text{plafond}\big). \tag{5}\]

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

\[ \boxed{\; \text{DBO}_i \;=\; \text{PP} \cdot \underbrace{A(k, k_r)}_{\text{attribution}} \cdot \underbrace{v^{\,n}}_{\text{actualisation}} \cdot \underbrace{{}_n p_x^{(\tau)}}_{\text{maintien}} \;} \tag{6}\]

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éfaut droite_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

\[\text{CSR} = \text{PP}\cdot\big[A(k{+}1,k_r) - A(k,k_r)\big]\cdot v^{\,n}\cdot {}_n p_x^{(\tau)}, \qquad \text{IC} = \big(\text{DBO}_{t_0} + \text{CSR}\big)\cdot i. \tag{7}\]

⚖️ 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.

\[\text{DBO}_{t_1} = \text{DBO}_{t_0} + \text{CSR} + \text{IC} - \text{Prestations versées} + \text{Réévaluations} + \text{Modifications de régime}. \tag{8}\]

Le bouclage de (8) (DecompositionDBO.verification) est une contrainte dure, pas un indicateur : il devient le kill criterion K2.

6.5 Agrégation

\[\text{DBO}_{\text{tot}} = \sum_{i\,:\,\text{inclus}} \text{DBO}_i, \quad \text{puis répartitions par tranche d'âge / catégorie, médiane, moyenne.} \tag{9}\]

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_ans restent 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

  1. 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.
  2. base_calcul légal = moy_12_mois → défaut corrigé en §7.
  3. Renommer 'CIMA_2018_M'CIMA_H_2012 / CIMA_F_2012action d'implémentation (Temps 3, actuariat_lib/models.py), notée pour le code.
  4. 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).