Aller au contenu

ADR-0015 — Waterfall IAS 19 · rapprochement réel à deux photos (flavor B, OCI)

Statut : accepté (2026-06-16). Contexte : ADR-0011 a livré le pont attendu (flavor A, volet compte de résultat) : DBO_0 + CSR + IC′ − Prestations = DBO_clôture attendue, réévaluations ≡ 0 par construction, sur une seule photo. Il y notait flavor B comme « Reste (Lot 2) ». Un actuaire ne s'arrête pas au P&L : IAS 19 §141 impose aussi le volet OCI — les écarts de réévaluation qui ne passent jamais en résultat. C'est le rapprochement réel à deux photos, déroulé au FCFA sur l'employé tiré au sort dans docs/formalisation/d-attrib_exercice-annuel.md (§6-8). Cet ADR le construit.

🎯 À retenir

flavor B livre le volet OCI : un rapprochement réel à deux photos appariées par matricule (ouverture / clôture revalorisée) qui décompose la réévaluation en expérience puis hypothèses, le tout bouclant exactement au FCFA. Maison = le Labo (deux photos), pas le Studio. Aucune colonne de base ajoutée.

La question

Le pont réel décompose la clôture observée au-delà de l'attendu :

DBO_clôture_réelle = DBO_0 + CSR + IC′ − Prestations + Réév_expérience + Réév_hypothèses
  • Réév_expérience (OCI) — démographie et salaires réels vs attendus, à hypothèses CONSTANTES. Sur un restant qui a survécu, c'est la levée de la décote de mortalité DBO_t1·q_x : la provision pariait q_x sur une sortie qui n'a pas eu lieu.
  • Réév_hypothèses (OCI) — effet de la re-détermination du taux d'actualisation (et des autres paramètres) à la clôture, à population RÉELLE constante. En milieu de carrière, ce terme domine d'un ordre de grandeur (duration × choc).

Le tout exige une seconde photo (clôture revalorisée) qu'on n'avait pas en flavor A.

Décisions

# Décision Arbitrage
D-WFB-1 Deux photos appariées par matricule. Flavor B rapproche t0 (ouverture) et t1 (clôture) sur la primitive « photo datée à matricule stable » — exactement le garde-fou 2 de ADR-0005. Flavor B et l'étage 1 des trajectoires sont frères : ils reposent sur la même primitive. 2026-06-16
D-WFB-2 Split en deux pas, bouclage exact. Réév_exp = DBO(restants, état t1, hyp_0) − DBO_clôture_attendue (geler les hypothèses) ; Réév_hyp = DBO(restants, t1, hyp_1) − DBO(restants, t1, hyp_0) (geler la population). Par construction exp + hyp = réelle − attendue au FCFA. Réutilise roll_forward_attendu (flavor A) + dbo_population_puc (oracle K1) — une seule source de vérité. découle de §6-8
D-WFB-3 Périmètre fermé = les restants. Sortis (présents à t0, absents à t1) et entrants (nouveaux à t1) sont portés hors du bouclage : dbo_entrants + compteurs n_sortis/n_entrants, drapeau perimetre_ferme. Honnêteté de périmètre dans la lignée de D-WF-5 : un pont honnêtement incomplet plutôt qu'un faux bouclage. L'attribution complète de l'expérience des décréments est différée. honnêteté de périmètre
D-WFB-4 Oracle K-WATERFALL-B. Le cas-témoin temporel A2′ (employé seed 20260610 avancé d'un an) reproduit au FCFA : Réév_exp = 62 705,31 ; clôture réelle (hyp inchangées) = 9 256 620,16 ; sous choc de taux 4 % → 4,5 % : Réév_hyp = −433 485,01, clôture réelle = 8 823 135,15. Vérifié en lib et à travers la base (apparié par matricule). d-attrib §6-8
D-WFB-5 Maison = Labo, pas le Studio. Le Studio est mono-photo (un dossier) ; flavor B exige le choix de deux photos, naturel dans le Labo qui charge déjà tous les dossiers + jeux. Panneau autonome RapprochementReel. nature à deux photos

Mécanique

Libactuariat_lib.engagements.dbo.roll_forward_reel() : appelle roll_forward_attendu sur les restants (pont attendu) puis dbo_population_puc deux fois (hyp_0 et hyp_1 sur l'état t1) pour les deux moteurs OCI. Renvoie une DecompositionOCI (models.py). Oracle = 4 tests K-WATERFALL-B (tests/test_engagements.py).

Backendpersistance.calculer_waterfall_reel_jeu apparie par matricule (restants = t0∩t1), partitionne par sexe (tables CIMA H/F, D-GENRE ; l'OCI est additif sur des sous-populations disjointes), calcule les entrants via calculer_dbo_jeu. Endpoint POST /api/dbo/dossier/waterfall-reel (_get_scoped × 4, 404 cross-tenant) — 4 tests test_labo.py (oracle expérience + hypothèses à travers la base, périmètre ouvert, 404).

FrontWaterfallReelChart (app/labo/Graphes.tsx) : le pont attendu prolongé par les deux barres OCI violettes (expérience puis hypothèses, flottantes et signées), jusqu'à la clôture réelle ; pixels explicites (leçon tornado). Panneau RapprochementReel (sélection des deux photos + deux jeux). Route proxy app/api/dbo/dossier/waterfall-reel/route.ts.

Conséquences

  • + Le pont publie enfin le mouvement OCI : la lecture IAS 19 §141 est complète (P&L et réévaluations), le réel s'impute au bilan via l'OCI comme l'exige la norme révisée 2011.
  • + Aucune colonne de base ajoutée : flavor B exploite la persistance existante (deux dossiers, deux jeux). Pas de risque de migration.
  • + La primitive « deux photos à matricule stable » est désormais en place — socle partagé avec l'étage 1 des trajectoires (événements de carrière), à ne pas re-bâtir.
  • −/assumé Périmètre restants : sortis/entrants sont des lignes frontière, pas une expérience de décréments pleinement attribuée — drapeau perimetre_ferme.
  • Reste : attribution de l'expérience des décréments (départ/décès réels vs attendus) et décomposition fine de l'écart de salaire réel vs projeté dans Réév_expérience.

Voir mémoire projet « Waterfall IAS 19 ActuaryLab ». S'appuie sur docs/formalisation/d-attrib_exercice-annuel.md (§6-8) et prolonge ADR-0011.