Règles de valeurs par défaut
Quand une donnée manque, est vide, illisible ou inconnue, la solution ne s’arrête pas toujours : elle retient une valeur ou un comportement de repli (une devise, une fréquence, une convention de calcul, une autre courbe). Cette page recense chaque règle de ce type dans l’import, les courbes, le calcul des flux, la projection du bilan, le reporting et l’application.
Le principe retenu est qu’aucune valeur par défaut n’est silencieuse : chaque règle est appliquée, documentée ici, et signalée par un avertissement codé (WARNING, effet FLAG, voir la Référence des anomalies), regroupé par fichier ou par run avec le nombre d’opérations concernées. Chaque règle a son code et sa fiche ; seules les conventions de calcul, appliquées à toutes les opérations, n’ont pas d’avertissement.
Comment lire les tableaux. Donnée nomme le champ ou la valeur concernée, Condition le cas où la règle s’applique, Valeur retenue ce que la solution fait à la place. Signalement donne :
- le code de l’avertissement qui signale la règle, avec un lien vers sa fiche dans la Référence des anomalies : message, cause, conséquence sur les chiffres et que faire (le niveau est précisé lorsqu’il n’est pas
WARNING). Plusieurs règles voisines peuvent partager un même code ; - convention pour une hypothèse de calcul appliquée à toutes les opérations, documentée sans avertissement.
Où voir les avertissements
Un avertissement est montré à l’un de trois endroits, selon ce dont il dépend :
- le journal d’anomalies de l’import, du run ou du reporting (onglets
Import AnomaliesetCalculation Logs, et leur export Excel), pour une règle qui ne dépend que des données enregistrées. Elle est évaluée une seule fois, quand la solution enregistre le résultat du moteur, et listée une seule fois par code et par référence : métriques sans ligne pour le scénario de référence (RUN-018) ou opérations de même référence (RUN-021) dans le journal du run ; dossier ALCO sans rapprochement comptable (RPT-061) ou sans vue comportementale (RPT-062) dans celui du reporting ; lignes de balance écartées (RPT-063) et postes à plusieurs lignes de classification (RPT-064) dans celui de l’import. Les imports, runs et reportings enregistrés avant cette version ne sont pas recalculés : leur journal ne porte pas ces codes ; - un bandeau d’avertissements au-dessus du résultat, pour une règle qui dépend aussi de ce que vous demandez (projection, scénario de référence, génération de comparaison) : sur les métriques, l’onglet
Gapset son rapport, le sous-ongletReconciliationet l’emplacementInformations de la situationde l’import guidé. Il donne une ligne par code avec le nombre d’occurrences, le message et le lien vers la fiche du code. Il se replie d’un clic et n’apparaît pas quand rien n’est à signaler ; - une notification avant le téléchargement, qui reste affichée jusqu’à sa fermeture, avec les mêmes lignes et les mêmes liens : la solution vérifie, avec les paramètres choisis, ce que le fichier va rencontrer (dossier ALCO et son aperçu, gap en Excel, CSV ou parquet, export des métriques), l’affiche, puis le téléchargement suit. La même notification suit un enregistrement qui ferme l’écran (courbe de l’éditeur de courbes, référentiel de classification créé).
1. Import : fichiers et parseurs
Lecture de l’archive, des fichiers d’opérations, de la classification et de la balance (Import : traitements et conversions, Import Crédit Logement).
1.1 Archive, format et cellules
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Référence du portefeuille | absente des informations de la situation | ‘default_reference’ | IMP-029 |
| Nom du portefeuille | absent des informations de la situation | ‘default_name’ | IMP-030 |
| Montant / nombre (toute cellule numérique texte) | texte à un seul séparateur suivi de trois chiffres, ambigu (‘1.234’ ou ‘1,234’) | lu comme décimal (1,234) et non comme milliers (1234) : les formes décimales sont essayées avant les formes groupées | IMP-031 |
| Entier (classification : colonne Sign) | cellule absente ou vide | 0 | IMP-032 |
| Booléens de la classification (opération financière, actif modélisé, valeur brute, nominal, EVE, NIM, sensible au taux, MV) | cellule absente ou vide | false | IMP-033 |
| Date de la balance comptable | cellule date Excel antérieure au 31/12/1910 | null (date absente) | IMP-034 |
| Date de la balance comptable | cellule ni Date ni texte (nombre : série Excel d’une formule, booléen…) ou cellule nulle | null (date absente), ligne gardée | IMP-035 |
| Type de taux (TR/TF) | valeur ni ‘tr’/‘taux revisable’ ni ‘tf’/‘taux fixe’, ou non texte | non appliquée : aucun importeur ne lit cette colonne | aucun (IMP-036 retiré) |
| Ligne d’un fichier texte délimité (balance .txt/.csv) | ligne plus courte que la première ligne (colonnes finales manquantes) | colonnes manquantes remplies par une chaîne vide | IMP-037 |
| Ligne d’un fichier texte délimité | ligne plus longue que la première ligne | colonnes en trop ignorées | IMP-038 |
| Séparateur du fichier texte | aucun de ; tab , | sur la première ligne, ou égalité de fréquence | ‘;’ (ou le premier de la liste ; tab , | en cas d’égalité) | IMP-039 |
| En-tête d’un fichier texte délimité | deux colonnes portent le même nom (après minuscules/NFD) | la dernière colonne écrase la précédente | IMP-040 |
| Fichiers de l’archive | nom contenant ‘~’, ‘.ds_store’ ou ‘_macos’ (n’importe où dans le nom) | fichier retiré de l’import | IMP-041 |
| Rôle de fichier donné par la requête d’import (import guidé) | le nom donné pour un rôle n’existe pas dans l’archive | le rôle retombe sur la détection par nom de fichier | IMP-044 |
| Rôle de fichier donné par la requête d’import | plusieurs fichiers listés pour un rôle à fichier unique | le premier listé gagne (putIfAbsent), les suivants ne sont pas des deals non plus | IMP-045 |
| Fichier de l’archive sans rôle dans la requête | la requête donne des rôles mais pas à ce fichier | rôle déduit du nom ; à défaut, lu comme fichier de deals | IMP-046 |
| Résumé d’un fichier de l’import guidé | exception pendant la construction du résumé | fichier validé sans résumé | IMP-047 |
| Format de données de la configuration client | configuration sans dataFormat | format déduit du libellé client (‘credit logement’ -> CREDIT_LOGEMENT) | IMP-049 |
| Fichier info_*.json de l’archive | présent dans l’archive, alors que l’arrêté vient de l’écran d’import ou de la requête | fichier ignoré : ni lu, ni pris pour un fichier de deals | IMP-060 |
1.2 Opérations
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Fichier de deals CSV | erreur de lecture en cours de fichier | les lignes lues jusque-là sont conservées, la suite est perdue | TRX-003 (ERROR) |
| Fichier de deals Excel | erreur de lecture en cours de classeur | les deals lus jusque-là sont conservés | TRX-004 (ERROR) |
| Deal : devise | cellule vide ou pas de colonne ‘Currency’ (extraits swaps et titres) | EUR | TRX-046 |
| Deal : produit | nom de fichier contenant ‘securities’ | produit SECURITY quel que soit le mapping products de l’Instrument Type | TRX-047 |
| Deal : tags requis (dataMapping.tags) | colonne du tag absente de l’extrait | deal importé sans ce tag | TRX-048 |
| Titre : marge d’un fixe / coupon d’un variable | cellule vide ou non numérique | 0 %, sans avertissement | TRX-049 |
| Titre : Instrument Type (pour le sens) | clé instrumentType non mappée | lu sous la clé isin | TRX-050 |
| Référence du deal | cellule de référence vide | référence ‘<préfixe>_null’ (ex. ‘LO_null’), deal gardé | TRX-051 |
| Toute cellule lue comme texte (référence, contrepartie, devise, libellé de taux, fréquence…) | cellule numérique (Double) | partie entière (intValue) ; au-delà de 2 147 483 647 plafonnée à cette valeur | TRX-052 |
| Mode d’intérêt (prêt, dépôt à terme) lu dans le type d’instrument | type d’instrument non vide qui ne contient pas ‘capitalise’ | intérêts simples (SIMPLE) | TRX-053 |
| Libellé du taux de référence (index) | cellule vide | aucun index ; un deal flottant est valorisé à son taux courant | TRX-054 |
| Ténor de la base de taux (colonne *Tenor) | clé *Tenor non mappée, colonne absente, cellule vide ou ténor illisible (‘ACTUAL’, texte libre) | recherche sur le seul libellé (courbe du libellé nu) | TRX-055 |
| Libellé du taux (deal à taux fixe) | libellé absent de dataMapping.indexes | aucun index, libellé conservé | TRX-020 |
| Libellé du taux (deal flottant, fichier de deals validé seul) | libellé absent de dataMapping.indexes et courbes inconnues | aucun index | TRX-021 |
| Libellé du taux (deal flottant) | libellé absent de dataMapping.indexes mais égal (sans casse) au nom d’une courbe | le libellé est utilisé comme index | TRX-022 |
| Libellé du taux (deal flottant) | libellé absent de dataMapping.indexes et d’aucune courbe | aucun index : valorisé au taux courant, insensible aux chocs | TRX-023 |
| Sens du deal (Borrow or Invest) | cellule ni BORROWING ni INVESTMENT | BUY | TRX-024 |
| Sens du deal (Borrow or Invest) | clé ‘nature’ non mappée, ou cellule vide / colonne absente | sens déduit du type d’instrument (CAT * = placement, Emprunt * = emprunt ; règles propres aux titres et pensions) | TRX-027 |
| Sens du deal | sens absent et type d’instrument non reconnu | BUY | TRX-025 |
| Taux d’intérêt (prêt, dépôt à terme flottants) | taux à 0 sur un deal FLOATING | fixing inconnu (null) : le coupon courant est lu sur la courbe | CFW-072 |
| Nominal restant (Remaining Face Value) | clé remainingNominal non mappée ou cellule vide | nominal d’origine | TRX-056 |
| Nominal restant | nominal restant différent du nominal d’origine (ou origine vide) | deal booké sur le nominal restant (0 inclus) | TRX-029 |
| Fréquence de révision du taux (repricingPeriod) | valeur non reconnue (ex. quotidienne) | période de révision non renseignée | TRX-057 |
| Cellule numérique d’un deal (montant, taux, marge) | cellule absente ou vide | null | TRX-058 |
| Dates du deal (opération, règlement, échéance, call…) | date texte ou série Excel antérieure au 01/01/1950 | null (date absente) | TRX-059 |
| Dates du deal | cellule vide (clé mappée, colonne présente) | null | TRX-060 |
| Dates texte du deal | date ambiguë jj/mm ou mm/jj (ex. ‘01/02/2025’) | lue jour d’abord (1er février) ; format mm/jj seulement si jj/mm échoue | TRX-061 |
| Dates du deal en série Excel (cellule formule numérique) | cellule numérique | lue comme série Excel système 1900, heure ignorée ; le drapeau 1904 du classeur est ignoré | TRX-062 |
| Fréquence de paiement | cellule vide ou non texte | null (puis annuelle pour prêts et dépôts) | TRX-063 |
| Base de calcul des intérêts (convention de jours) | cellule vide | entrée ‘default’ de dataMapping.rateBase | TRX-064 |
| Contrepartie (nom) | cellule vide | contrepartie ‘DEFAULT_NAME’ | TRX-065 |
| Type et notation de la contrepartie | toujours (aucune colonne lue) | type RETAIL, notation ‘A’ sur l’échelle ‘A’ | TRX-066 |
| Type de taux d’une jambe de swap (Pay/Rec Fixed/Floating) | clé non mappée, cellule vide ou valeur ni FIXED ni FLOATING | FLOATING si la jambe cite un libellé de taux, FIXED sinon | TRX-067 |
| Jambe de swap | jambe déclarée FLOATING sans libellé de taux | valorisée à son taux courant | TRX-030 |
| Jambe de swap | jambe déclarée FIXED qui cite un libellé de taux | bookée fixe, index retiré, libellé conservé | TRX-031 |
| Convention de jours d’une jambe de swap | colonne vide, règle de jour ouvré (FOLLOWING, ACTUAL DATE…) ou valeur non reconnue | convention de marché : EUR fixe 30/360, EUR flottant EURIBOR/€STR/EONIA ACT/360, sinon rateBase.default | TRX-028 |
| Marge d’une jambe de swap | cellule vide | spread null | TRX-068 |
| Échéancier d’une jambe de swap | toujours ; date de 1er paiement à plus de 4 jours de l’échéancier | échéancier reculé depuis l’échéance (stub au début), date de 1er paiement ignorée | TRX-032 |
| Date d’opération du swap | clé dealDate non mappée ou cellule vide | date de règlement | TRX-069 |
| Taux de coupon d’un titre (couponRate) | cellule vide ou non numérique | 0 % | TRX-034 |
| Marge de coupon d’un titre (couponMarginRate) | cellule vide ou non numérique | 0 % | TRX-035 |
| Date de call d’un titre | callDate vide | date de call de l’émetteur (issuerCallDate), exercée avec certitude | TRX-070 |
| Date de call d’un titre | callDate et issuerCallDate renseignées et différentes | la plus tôt des deux | TRX-033 |
| Devise d’une pension | toujours (aucune colonne lue) | EUR | TRX-071 |
| Taux d’une pension (deux jambes) | toujours | taux FIXED, spread 0 | TRX-072 |
| Taux d’une pension (interestRate, rateLeg1) | cellule vide | taux null | TRX-058 |
| Fréquence de paiement des intérêts d’un prêt | cellule vide ou non texte | annuelle (YEAR) | TRX-073 |
| Marge d’un prêt / dépôt à terme (interestMargin) | cellule vide | spread null | TRX-068 |
| Marges de liquidité et commerciale d’un prêt | clé non mappée, colonne absente ou cellule vide | null : le spread de liquidité du contexte s’applique | TRX-074 |
| Courbe de liquidité d’un prêt | clé non mappée ou cellule vide ; libellé non mappé | aucune courbe de liquidité propre (null) | TRX-075 |
| Fréquence de paiement d’un dépôt à terme | type d’instrument contenant ‘capitalise’ | paiement à l’échéance (AT_MATURITY), quelle que soit la fréquence du fichier | TRX-076 |
| Fréquence de paiement d’un dépôt à terme | cellule vide ou non texte | annuelle (YEAR) | TRX-073 |
1.3 Classification
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Classification : code FINREP (mapping_compta_irrbb) | nom non reconnu par FinrepEnum | la catégorie n’a pas de code FINREP ; ses deals sortent du reporting | CLS-005 |
| Classification : code FINREP (côté / Row Code) | côté bilan ou Row Code incohérent avec le code FINREP | la ligne FINREP est écartée : catégorie sans code FINREP, deals exclus du reporting | CLS-006 (ERROR) |
| Classification : catégorie comptable | catégorie ‘<Bilan> <Contrepartie>’ absente de mapping_compta_irrbb | lignes construites avec un code FINREP null ; deals exclus du reporting | CLS-010 |
| Classification : rôle de couverture (colonne 3 de mapping_compta_irrbb) | cellule vide, colonne absente ou ligne courte | UNSPECIFIED sur une ligne dérivée | CLS-020 |
| Classification : rôle de couverture | valeur qui n’est pas un HedgeRole | UNSPECIFIED | CLS-007 |
| Rôle de couverture d’un deal | pas de classification / pas de code FINREP, ou code FINREP non dérivé | NONE, même si la catégorie déclare un rôle | CLS-021 |
| Classification : numéro de compte (mapping_compta, histo) | cellule numérique avec partie décimale | tronqué à l’entier (intValue) | CLS-022 |
| Classification : feuille ‘histo’ (deal -> compte) | feuille absente | aucune correspondance explicite ; tous les deals passent par le mapping instrument | CLS-023 |
| Feuille histo : compte du deal | compte non déclaré dans mapping_compta | ligne ignorée ; le deal retombe sur le mapping instrument | CLS-012 |
| Feuille histo : deal en double | deal présent plusieurs fois sur le même compte | première occurrence conservée | CLS-013 |
| Feuille histo : deal sur deux comptes | deal présent sur deux comptes différents | correspondance supprimée ; le deal retombe sur le mapping instrument | CLS-014 (ERROR) |
| Côté de bilan d’une catégorie ‘<Bilan> <Contrepartie>’ | catégorie ne commençant par aucun mot de bilan connu | null (côté inconnu) | CLS-024 |
1.4 Balance, écoulement et flux préfixés
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Fichier de flux préfixés (feuille) | plusieurs feuilles portent un en-tête de flux | seule la première feuille par ordre alphabétique est lue | BAL-003 |
| Fichier de flux préfixés (feuille) | aucune feuille ne porte d’en-tête (‘Deal No’ / ‘action_dt’) | la première feuille par ordre alphabétique est lue | BAL-004 |
| Fichier de flux préfixés (ligne d’en-tête) | aucune ligne d’en-tête reconnue | lecture des données à partir de la ligne 3 (position historique) | BAL-004 |
| Flux préfixés : numéro de deal | cellule numérique avec partie décimale | tronqué à l’entier (intValue) | BAL-014 |
| Flux préfixés : fréquence du taux de base | cellule vide | aucune fréquence de révision (null) | BAL-015 |
| Ligne de balance modélisée : compte | toujours (ligne rattachée à une stratégie d’écoulement) | classée sur le préfixe de la stratégie (référence sans ‘*’), pas sur son propre compte | convention |
| Ligne de balance modélisée : devise | toujours (la balance n’a pas de colonne devise) | EUR | BAL-016 |
| Ligne de balance modélisée : contrepartie | toujours | contrepartie ‘DEFAULT’, type CORPORATE | BAL-017 |
| Ligne de balance modélisée : sens et dates | toujours | BUY ; dates de transaction et de règlement = date d’arrêté | convention |
| Ligne de balance modélisée : classification | fichier de classification inutilisable | ligne modélisée sans code FINREP | CLS-018 |
| Stratégie d’écoulement : préfixe de compte | même préfixe listé plusieurs fois | la première stratégie est appliquée, les autres ignorées | BAL-012 |
| Stratégie d’écoulement : préfixes qui se recouvrent | un compte correspond à plusieurs préfixes | le préfixe le plus long l’emporte | BAL-013 |
| Ligne de balance comptable | compte qu’aucune stratégie d’écoulement ne couvre | ligne ignorée (pas de transaction modélisée) | BAL-018 |
| Compte du grand livre : type | ni la classification ni accountingMapping ne le type | compté comme compte de bilan (à couvrir par deals ou stratégie) | BAL-011 |
2. Courbes
Construction des courbes à l’import et lecture des taux pendant le calcul (Courbes de taux).
2.1 À l’import
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Indice d’actualisation | ni clé de dataMapping.indexes ni nom de courbe | le libellé brut est gardé comme indice | CRV-003 (ERROR) |
| Fichier de courbes (feuille) | plusieurs feuilles avec un en-tête de courbe | seule la première feuille par ordre alphabétique est lue | CRV-005 |
| Fichier de courbes (xlsx) : ligne | moins de 8 cellules remplies | ligne ignorée (ni en-tête ni point) | CRV-019 |
| Point de courbe (xlsx) : ratedate | cellule vide ou non typée date (texte, nombre) | date absente (null) ; la courbe est clé ‘<nom>_null’ | CRV-020 |
| Point de courbe | même indice, même date, même maturité en double | la dernière valeur lue écrase les précédentes | CRV-021 |
| Courbe : devise | points d’un même indice/date avec des devises différentes | devise du premier point lu | CRV-022 |
| Courbe : période de refixation | le nom de l’indice ne porte pas de maturité (EURIBOR, TEC2…) | null ; en aval 3 mois (RateCurveHelper DEFAULT_FIXING_PERIOD) | CRV-023 |
| Courbe : instrument coté | nom d’indice sans ‘SWAP’ | MONEY_MARKET | convention |
| Courbe : cotation (dataMapping.curveQuotations) | courbe non listée | null, lu comme taux zéro-coupon | CRV-024 |
| Courbe : date | à plus de 50 jours de la date d’arrêté | courbe utilisée quand même | CRV-011 |
| Courbe de spread de liquidité | toujours (le fichier n’en fournit pas) | courbe LIQUIDITY_SPREAD EUR plate à 0 (1d, 1m, 10y) | CRV-025 |
| Courbe composée | une des courbes feuilles absente du fichier | courbe composée non construite | CRV-012 (ERROR) |
| Courbe composée : date de la feuille | plusieurs dates pour un indice feuille | date la plus proche de l’arrêté ; la plus récente si arrêté inconnu | CRV-026 |
| Courbe composée : points communs à deux feuilles | une maturité présente dans deux feuilles sous leurs seuils | la feuille du seuil le plus long écrase la valeur de la plus courte | CRV-027 |
| Courbe composée : devise | toujours | EUR, quelles que soient les devises des feuilles | CRV-028 |
2.2 Au calcul
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Taux lu sur une courbe | échéance avant le premier point ou au-delà du dernier point de la courbe | extrapolation plate : taux du premier (resp. dernier) point | CFW-059 |
| Courbe de taux à un seul point | la courbe ne porte qu’un pilier | taux constant sur toutes les maturités | CFW-060 |
| Maturité lue sur la courbe | nombre de jours négatif (date cible avant la date de la courbe) | taux 0 | convention |
| Courbe d’un index (date de référence) | plusieurs courbes du même index ou aucune à la date d’évaluation | courbe dont la date est la plus proche de la date d’évaluation (avant ou après), la première de la liste en cas d’égalité ; signalé seulement au-delà de 10 jours | CFW-057 |
| Courbe de change (paire) | pas de courbe pivot/devise | courbe inverse devise/pivot utilisée telle quelle ; première courbe FX de la paire si plusieurs | convention |
| Courbe de change / courbe de spread de liquidité | plusieurs courbes FX d’une même paire, ou plusieurs courbes LIQUIDITY_SPREAD d’une même devise | la première de la liste est prise | CFW-061 |
| Cotation de la courbe (PAR/ZERO) | cotation absente | courbe lue comme zéro-coupon (pas de bootstrap) | CRV-024 |
| Instrument d’un pilier de courbe PAR | instrument non renseigné pour le ténor (ou carte des instruments absente) | monétaire jusqu’à 365 jours, swap au-delà | CFW-062 |
| Facteur d’actualisation annuel manquant (bootstrap PAR) | année avant le premier pilier swap sans point monétaire à ce nombre de jours | taux monétaire interpolé linéairement en jours, plat au-delà des points monétaires (ex. 1y = taux 12m prolongé de 360 à 365 j) | convention |
| Pilier swap annuel manquant (bootstrap PAR) | année entre deux piliers swap, ou avant le premier pilier swap au-delà des points monétaires | taux par interpolé linéairement en années entre les piliers ; avant le premier pilier, taux par du premier pilier prolongé à plat | CFW-063 |
| Devise de la courbe (calibrage des chocs IRRBB) | devise absente ou hors des 11 devises calibrées (EUR, USD, GBP, JPY, CHF, CAD, AUD, SEK, SGD, HKD, CNY) | tailles de chocs EUR (parallèle 200 bp, court 250 bp, long 100 bp) | CFW-064 |
| Type de courbe (RATE/FX/LIQUIDITY_SPREAD) | type absent | courbe reprise non choquée dans tous les scénarios | CFW-065 |
| Courbe PAR choquée | la courbe de base ne se bootstrappe pas | aucune courbe zéro choquée enregistrée ; la lecture échoue ensuite (CFW-048) | CFW-066 |
| Spread de liquidité lu sur la courbe LIQUIDITY_SPREAD | la lecture de la courbe échoue (courbe vide, date antérieure à sa date de référence, date nulle) | spread de liquidité 0 | CFW-067 |
| Date du flux actualisé | flux à la date d’évaluation ou avant | facteur d’actualisation 1 | convention |
| Période de refixing d’un index variable (flux sans échéancier : tranches d’écoulement) | nom d’index sans ténor reconnu et courbe sans refixingPeriod | refixing supposé trimestriel : prochaine fixation à la prochaine fin de trimestre civil | CFW-041 |
| Ténor d’un index variable (mode LAST_FIXING) | nom d’index sans ténor reconnu et courbe sans refixingPeriod | ténor 3 mois pour lire le « taux courant » de l’index | CFW-068 |
| Ténor d’un index variable | toujours (avant refixingPeriod de la courbe) | ténor déduit par sous-chaîne du nom : estr/eonia/o/n -> 1d, ‘12m’ ou ‘1y’ -> 12m, ‘6m’, ‘3m’, ‘1m’ | CFW-069 |
| Date de prochaine fixation (flux sans échéancier) | ténor 1d/1m/3m/6m/12m | fin du mois / trimestre / semestre / année civil(e) suivant(e), lendemain pour l’overnight ; autre ténor : date d’évaluation + ténor | convention |
3. Cash-flows et projection
Génération des flux par opération, projection du bilan et calculs de solvabilité.
3.1 Flux par opération
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Tout BigDecimal d’un deal cloné (taux, spread, montants) | valeur null au clonage (production nouvelle, repricing du bilan) | 0 | CFW-070 |
| Produit d’un cash-flow | produit null | ‘ALL’ | convention |
| Montant d’intérêts global (composante GLOBAL) | globalAmount null | 0 | CFW-071 |
| Facteur d’actualisation d’un flux | lecture de la courbe d’actualisation impossible (index absent, taux <= -100 %, courbe vide…) | flux conservé sans facteur d’actualisation (null) | CFW-024 (ERROR) |
| Taux variable (index) | index vide / non mappé (aucune courbe à lire) | coupon valorisé au taux courant du deal (rate.value, 0 si absent), insensible aux chocs, coupon CERTAIN | CFW-031 |
| Fixing courant d’un taux variable (rate.value) | valeur nulle ou égale à 0 | fixing considéré inconnu : le coupon en cours est lu sur la courbe (forward depuis la date d’évaluation) | CFW-072 |
| Début de période d’un coupon variable | début absent, antérieur à la date d’évaluation ou non antérieur à la fin | forward lu depuis la date d’évaluation jusqu’à la fin de période (pas de fixing historique) | convention |
| Mode de projection des taux (EngineParameterModel.rateProjectionMode) | paramètres ou mode absents de la requête | FORWARD | convention |
| Dernier taux connu (mode LAST_FIXING) | coupon variable INCERTAIN | ligne de préfixing couvrant la date d’évaluation, sinon fixing du deal, sinon taux courant de l’index sur la courbe du scénario (+ choc du scénario sur les deux premiers) | convention |
| Spread / marge du taux | spread absent | 0 | CFW-073 |
| Base de calcul (day count) du taux | base absente | EXACT_365 pour la lecture du forward ; ailleurs NPE (deal rejeté CFW-004) | CFW-074 |
| Taux d’un dépôt (non échéancé) | taux absent | taux FIXE 0 %, EXACT_365, intérêts simples | CFW-014 |
| Taux d’un produit à terme (prêt in fine, dépôt à terme) | taux absent | flux de capital émis, intérêts omis | CFW-015 |
| Taux d’un repo / reverse repo | taux absent, sans type, ou FIXE sans valeur (cellule ‘Interest Rate’ vide) | flux de capital émis, intérêt omis | CFW-016 |
| Coupon d’un produit à terme ou d’un repo | le taux du coupon ne peut être évalué (pas de courbe, courbe vide, date invalide…) | coupon omis, deal conservé ; un WARNING par coupon sauté, qui nomme l’opération et la période | CFW-090 (pas de courbe pour l’index), CFW-091 (autres causes) |
| Coupon variable d’une jambe de swap | forward non évaluable | coupon omis, la jambe et le deal sont conservés | CFW-017 (ERROR) |
| Taux d’une jambe fixe de swap (rate.value) | valeur absente | aucun taux supposé : le swap est écarté du calcul | CFW-089 (ERROR) |
| Fixing courant d’une jambe variable de swap | rate.value renseigné | ignoré : le coupon en cours est lu sur la courbe | CFW-076 |
| Date de call d’un swap | date de call avant l’échéance | coupons postérieurs au call supprimés et nominal final au call, y compris dans la vue CONTRACTUELLE ; pas de coupon brisé au call | convention |
| Date de repricing du nominal variable | aucun coupon CERTAIN (départ forward, production nouvelle) | fin du premier coupon à venir ; aucun coupon : date d’échéance contractuelle | CFW-022 |
| Taux du flux (type) | taux absent ou sans type | flux d’intérêt CERTAIN (non choqué) | CFW-077 |
| Certitude d’une tranche d’écoulement à taux variable | prochaine date de fixation non déterminable (courbe introuvable…) | flux INCERTAIN | CFW-028 (ERROR) |
| Taux d’un flux renvoyé par le script comportemental | le script ne renseigne pas de taux | taux du dépôt | convention |
| Paramètres du script comportemental NMD | toujours | outflow_period_in_days = 100, frequency_in_days = 5 (constantes) | convention |
| Résultat du script comportemental | le script ne renvoie pas un ScriptCashflowResult | aucun flux comportemental, sans message | CFW-078 |
| Fonction du script comportemental | nom de fonction absent | ‘main’ | convention |
| Stratégie d’écoulement d’un dépôt | plusieurs stratégies pour le même produit et la même origine | la première de la liste | CFW-079 |
| Tranche d’une loi d’écoulement par buckets | bucket qui tombe à la date d’évaluation ou avant (ex. ‘0d’) | dépôt : tranche ignorée (ni capital ni intérêt) ; solde comptable : capital ignoré mais intérêt nul émis | CFW-080 |
| Dernière tranche d’un écoulement linéaire | horizon non multiple de la fréquence | tranche coupée à l’horizon ; quote-parts arrondies à 4 décimales, la dernière absorbe le reste | convention |
| Échéancier d’un prêt amortissable | toujours | échéancier construit depuis la date de début + nombre d’échéances × périodicité ; la date d’échéance du prêt est ignorée | convention |
| Vue comportementale d’un prêt amortissable | toujours (aucun paramètre de remboursement anticipé lu) | flux BEHAVIOURAL identiques aux flux contractuels (pas de prépaiement) | convention |
| Date de call (produit à terme, repo, titre) | date de call postérieure ou égale à l’échéance | call ignoré, échéance contractuelle retenue | CFW-081 |
| Échéancier de coupons (produit à terme, swap backward) | le roulage de la périodicité n’avance pas | boucle interrompue, coupons restants omis | CFW-082 |
| Périodicité des intérêts d’un repo | toujours | intérêt unique payé à l’échéance ; jambe titres ignorée | convention |
| Prime / décote d’un titre | prime absente | flux initial au nominal | convention |
| Montant d’intérêt / capital de référence d’un coupon | montant non calculé (null) | 0 | CFW-083 |
| Bucket IRRBB d’une date | date antérieure à la date d’évaluation | premier bucket (overnight) | convention |
| Ligne de préfixing d’un flux CERTAIN | aucune ligne pour le deal | taux de la courbe | CFW-039 |
| Lignes de préfixing d’un deal | plusieurs lignes pour le deal | préfixing ignoré, taux de la courbe | CFW-040 (ERROR) |
| Fréquence du taux de base d’une ligne de préfixing | fréquence absente | ligne ignorée, taux de la courbe | CFW-084 |
| Ligne de préfixing | date cible au-delà de date d’action + fréquence | ligne non utilisée, taux de la courbe | convention |
| Référence de transaction (clé de rapprochement préfixing) | référence nulle ou sans segment ‘_<deal>’ | aucun préfixing | CFW-085 |
3.2 Projection du bilan
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Échéance d’un deal (bilan constant / croissant) | échéance absente | deal non renouvelé | CFW-086 |
| Courbe de repricing d’un roll à taux fixe | taux sans index ou index sans courbe dans le contexte | courbe d’actualisation du contexte | CFW-087 |
| Taux d’un roll à taux fixe | taux de marché du roll illisible | taux d’origine conservé | CFW-050 |
| Marge commerciale d’un roll à taux fixe | toujours (courbe d’origination indisponible) | marge = taux client - taux de la courbe BASELINE à la date d’évaluation sur la même durée | convention |
| Taux du remplacement d’un prêt amortissable à taux fixe | durée non calculable (date de début, nombre d’échéances ou périodicité absents, AT_MATURITY) | taux d’origine conservé (pas de repricing) | convention |
| Flux de capital à remplacer (bilan constant) | flux sans taux | non remplacé | CFW-088 |
3.3 Solvabilité et pricing
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Chiffre d’affaires de la contrepartie (solvabilité) | absent | 10 000 pour la classe d’exposition (donc PME si CORPORATE) ; 5 M pour la corrélation (ajustement taille neutre) | RUN-010 |
| Type de prêt (solvabilité, contrepartie RETAIL) | absent | RETAIL_OTHER | convention |
| LGD (solvabilité) | toujours (aucune donnée lue) | 10 % pour tout prêt | convention |
| Nombre d’échéances d’un prêt amortissable (maturité Bâle) | absent | 0 échéance -> maturité 0 an | RUN-011 |
| Change de l’EAD / RWA vers la devise pivot | toujours | fixing 1 : montant pivot = montant en devise d’origine | convention |
| Produit hors prêts (solvabilité) | pas de générateur de paramètres de risque | aucun profil de risque, sans message | RUN-012 |
| Modèle de pricing préféré (API pricer) | absent des préférences | premier pricer enregistré (Black-Scholes) | convention |
| Profil de risque Bâle d’une transaction | le moteur Bâle ne sait pas calculer (SolvencyException ou produit non géré) | transaction absente du résultat, statut PROCESSED | RUN-012 |
4. Reporting
Paramètres de run, reporting IRRBB, valeur comptable et templates EBA (Générer les reportings IRRBB).
4.1 Paramètres du run
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Scénarios demandés (runSettings.scenarios) | liste absente (ou runSettings absent) | base + tous les chocs réglementaires + UP_1_BP | convention |
| Plancher post-choc (runSettings.postShockFloor) | valeur absente | plancher activé | convention |
4.2 Reporting IRRBB et templates
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Liste des templates demandés (reportingTemplates) | liste absente ou vide dans la requête | les 13 templates J 01.00 à J 11.02 sont produits | RPT-029 |
| Statut de la génération des cash-flows | génération terminée en ERRORS mais avec une liste de flux | le reporting est produit quand même sur les flux disponibles (potentiellement incomplets) | RPT-002 (ERROR) |
| Classification FINREP du deal | deal sans classification ou catégorie sans code FINREP ; ou flux d’un deal absent du portefeuille | le deal et tous ses flux sont exclus de tout le rapport (J 01.00 - J 07.00, métriques par transaction, valeur comptable) | RPT-004 |
| Référence de transaction | deux transactions du portefeuille partagent la même référence | la première est retenue pour classer les flux (FINREP, NMD overnight, dérivé, maturité) ; la seconde est ignorée pour ces lookups | RPT-030 |
| Fonds propres (capitalAmount, données additionnelles de la situation) | clé absente, nulle ou égale à 0 (une valeur non numérique est refusée à la saisie) | capital = null ; les ratios J 01.00 lignes 0020 et 0110 sont laissés vides | RPT-005 |
| Dépôt sans échéance (NMD) dans la vue contractuelle J 05.00 - J 07.00 (.a) | produit DepositModel non TermDepositModel, origine CONTRACTUAL | le capital est placé dans le bucket overnight (1 jour) quelle que soit la loi d’écoulement configurée ; ses intérêts ne sont pas ventilés | RPT-031 |
| Période de révision du taux variable (repricingPeriod) | jambe variable sans période de révision (ou AT_MATURITY) et sans flux d’intérêt de période > 366 jours (ou sans dates de période) | la jambe est classée ‘floating’ (révision ≤ 1 an) au sens ITS, donc dans le bloc variable J 05.00 - J 07.00 et hors des lignes ‘dont taux fixe’ de J 02.00 | RPT-032 |
| Taux du flux (rate / type de taux) | flux sans modèle de taux ou type de taux ni FIXED ni FLOATING | le flux n’est ni fixe ni variable : il est absent des deux blocs J 05.00 - J 07.00 (notionnel, rendement, maturité, échéancier) et des lignes ‘dont taux fixe’ de J 02.00 ; il reste dans l’EVE, la MNI et la valeur de marché, sans être reclassé (aucun chiffre ne change) : un WARNING regroupé par devise avec le nombre d’opérations et leur principal, les opérations en détail | RPT-033 |
| EVE / NII / MV par ligne FINREP et scénario | aucune flux sur une ligne FINREP (ou aucun flux pour un scénario du contexte) dans une devise calculée | 0 pour chaque ligne FINREP et chaque scénario (toutes les lignes FinrepEnum sont remplies) | convention |
| Période d’accrual d’un flux d’intérêt (periodStartDate) | date de début absente, ou début non antérieur à la fin | règle de date de paiement : le coupon compte en entier dans le NII s’il tombe dans l’horizon, sinon pas du tout (pas de prorata) | RPT-034 |
| Date d’évaluation des métriques par transaction | toujours (contextes multiples) | la date d’évaluation du premier contexte est utilisée pour tous les scénarios | convention |
| Scénario du flux | flux sans scénario | le flux est ignoré dans EVE / NII / MV agrégés (ne correspond à aucun contexte) | RPT-035 |
| Valeur comptable du deal (carryingAmount) | valeur comptable absente (source DEAL) | le deal contribue 0 à la colonne 0010 de sa ligne | RPT-007 |
| Duration modifiée (J 02.00 - J 04.00 col. 0020) | scénario UP_1_BP non calculé, EVE de base absente ou nulle | cellule laissée vide | RPT-036 |
| Maturité contractuelle (J 05.00 col. 0060 / 0310) | maturité inconnue (balance écoulée par loi, transaction absente, prêt amortissable sans date de début / nombre d’échéances / période) | le flux est exclu du numérateur et du dénominateur de la maturité moyenne pondérée | RPT-008 |
| Maturité contractuelle d’un dépôt sans échéance | produit DepositModel non TermDepositModel | maturité = 1/365 an (overnight) dans la maturité moyenne pondérée J 05.00 col. 0060 / 0310 | convention |
| Montant du flux | montant ou valeur absent | 0 dans le notionnel et l’échéancier J 05.00 - J 07.00 | RPT-037 |
| Détail du flux de swap (cashFlowDetail, type de jambe) | détail vide ou absent | jambe = “” : toutes les jambes du swap sont fusionnées en une seule ; seul le dernier échange de capital compte, s’il est positif | RPT-038 |
| Rendement moyen pondéré (J 05.00 col. 0050 / 0300) | position sans flux d’intérêt dans le bloc ; ou aucun taux du tout | repli sur le taux porté par ses flux de capital ; sans taux, la position est exclue (poids compris) ; cellule vide si plus aucune position | RPT-039 |
| Taux effectif du flux (effectiveRate) | taux effectif absent | le taux nominal du modèle de taux (rate.value) est utilisé | RPT-040 |
| Bucket de révision du flux (adjustedTimeBucket) | bucket ajusté absent | le bucket de la date de paiement (timeBucket) est utilisé | RPT-041 |
| Source de la valeur comptable (carryingAmountSource) | clé absente ou vide | BALANCE si la situation porte une balance comptable et une classification, sinon DEAL (notionnel des deals) | RPT-012 |
| Source de la valeur comptable (carryingAmountSource) | BALANCE demandé mais pas de balance ou pas de classification | repli sur DEAL : colonne 0010 = notionnel des deals | RPT-010 |
| Source de la valeur comptable (carryingAmountSource) | DEAL demandé explicitement | colonne 0010 = notionnel des deals (sans intérêts courus, primes, décotes ; swap hors bilan compté au notionnel) | RPT-011 |
| Source de la valeur comptable (carryingAmountSource) | valeur ni BALANCE ni DEAL | valeur ignorée, défaut appliqué (BALANCE si disponible, sinon DEAL) | RPT-009 |
| Ligne de balance comptable (compte, solde) | compte ou solde absent | ligne ignorée pour la valeur comptable | RPT-042 |
| Devise de la balance comptable | toujours (la balance CL n’a pas de colonne devise) | toute la balance est comptée en EUR ; les deals d’autres devises n’ont pas de valeur comptable (colonne 0010 vide sur leur feuille) | RPT-014 |
| Compte de balance typé PNL / OBS / DERIVATIVE | compte non couvert par la classification et typé hors bilan par l’accountingMapping ; ou couvert, typé PNL, sans ligne FINREP | compte exclu de la valeur comptable | RPT-043 |
| Compte de balance | aucune ligne de classification ne le couvre et l’accountingMapping ne le type pas hors bilan | compte exclu de la valeur comptable | RPT-015 |
| Catégorie comptable du compte (classification) | la ligne de classification n’a pas de ligne FINREP | compte exclu de la valeur comptable | RPT-016 |
| Compte classé sur une ligne FINREP mais typé PNL | Bilan de la ligne de classification = PNL, ligne FINREP renseignée, catégorie non hors bilan | compte exclu de la valeur comptable de sa ligne | RPT-017 |
| Valeur comptable d’une ligne hors bilan (OBS / DERIVATIVE) | ligne FINREP alimentée uniquement par des comptes hors bilan | 0 en colonne 0010 (le hors-bilan ne sert qu’à la réconciliation) | convention |
| Ligne de classification d’un compte (plus long préfixe) | plusieurs lignes ont la même catégorie comptable (même longueur de préfixe) | la première ligne rencontrée gagne | RPT-044 |
| Signe d’un compte selon la ligne FINREP | ligne qui n’est ni L_ ni MEMORANDUM_L_ (actifs, hors bilan, autres dérivés) | le solde est pris avec son signe (débit positif) ; inversé seulement sur les lignes de passif | convention |
| Type de compte (Bilan de la ligne de classification) | valeur Bilan absente ou non reconnue comme AccountType | aucun type : le compte est traité comme compte de bilan | RPT-045 |
| Compte comptable d’un contrat CL (mapping instrument) | pas de compte histo ni pour le type d’instrument exact | repli sur le compte de la sous-famille listant l’instrument, puis sur celui de la famille produit | RPT-046 |
| Clé du mapping instrument / famille | deux clés identiques à la casse et aux espaces près | la première rencontrée dans l’ordre (non déterministe) de la map gagne | RPT-047 |
| Compte étoilé (9431**) : type d’actif, contrepartie | le compte étoilé couvre plusieurs lignes de classification (même ligne FINREP) | type d’actif et contrepartie de la première ligne (tri par catégorie) ; rôle de couverture null si les lignes divergent | RPT-048 |
| Datapoint d’un template | le calcul lève une NullPointerException (map de la vue non alimentée, devise absente) | valeur null : cellule vide, comptée comme non mappée | RPT-025 |
| Datapoint d’un template | aucune valeur calculée ni déclarée | cellule laissée vide (pas 0) | RPT-025 |
| Devise des feuilles | aucune devise dans aucune vue (rapport sans chiffre) | une seule feuille, en EUR | convention |
| Nom de feuille par devise | rapport multi-devises | la première devise par ordre alphabétique occupe la feuille d’origine non suffixée ; les autres vont dans des copies ‘<feuille>_<DEV>’ | convention |
| Réponse déclarée (code EBA) J 10 / J 11 | code EBA absent des listes ‘ei…’ du template | réponse ignorée, repli sur la valeur calculée (vide pour J 10 / J 11) | RPT-026 |
| Position d’un datapoint DPM sur la feuille | code ligne ou colonne du DPM introuvable dans les en-têtes de la feuille | la valeur n’est pas écrite, sans être comptée comme non mappée | RPT-049 |
| Déclarations IRRBB / paramètres NMD (données additionnelles) | données additionnelles absentes, ou clés irrbbDeclarations / nmdParameters absentes | aucune déclaration : J 08 / J 09 (parts, PTR) et J 10 / J 11 restent vides | RPT-050 |
| Clé de déclaration (irrbbDeclarations, nmdParameters, sous-clés) | valeur qui n’est pas un objet JSON | clé ignorée (map vide) | RPT-019 |
| Réponse qualitative J 10 / J 11 | valeur non texte, ou texte vide/blanc | réponse ignorée, cellule vide | RPT-020 |
| Catégorie NMD (clé de nmdParameters) | clé qui n’est pas RETAIL_TRANSACTIONAL, RETAIL_NON_TRANSACTIONAL, WHOLESALE_NON_FINANCIAL ou WHOLESALE_FINANCIAL (sensible à la casse) | catégorie ignorée | RPT-018 |
| Paramètre NMD (behaviouralShare, coreShare, exemptedShare, operationalShare, PTR) | valeur non numérique (ex. texte “0.6”) | null : la cellule correspondante de J 08 / J 09 reste vide ; un PTR non numérique est retiré | RPT-051 |
| Réponses par devise J 10.02 / J 11.02 | aucune réponse pour la devise de la feuille | feuille laissée vide | RPT-052 |
| Signe des lignes de passif J 02.00 - J 07.00 | lignes 0200-0520 et 0610-0640, colonnes EVE/NII/MV (niveaux et Δ) et échéanciers de révision | négation de la valeur moteur (passif présenté positif) ; J 01.00, colonne 0010, colonne 0020, ligne 0530 et lignes 0540-0560 non touchés | convention |
| Ligne DPM J 02.00 - J 07.00 | code ligne sans FinrepEnum correspondant | cellule vide | RPT-025 |
| Δ EVE / NII / MV (J 01.00, J 02.00 - J 04.00) | valeur de base ou valeur choquée absente | cellule vide (pas le niveau choqué) | RPT-025 |
| Lignes mémo 0540-0560 (positions nettes) | aucune ligne FINREP incluse n’a de valeur pour la devise | 0 | convention |
| Valeur comptable d’une ligne J 02.00 - J 04.00 (col. 0010) | la devise a des valeurs comptables mais aucune sur la ligne | 0 | convention |
| % optionalité achetée / vendue / modélisation comportementale (J 05.00 col. 0020-0040, 0270-0290) | toujours (non modélisé) | cellules vides | RPT-025 |
| Notionnel J 05.00 - J 07.00 (col. 0010 / 0260) | aucune position de la ligne, y compris quand la devise n’a aucun détail de notionnel (feuille .a, ou devise présente seulement dans la valeur comptable) | 0 | RPT-053 |
| Échéancier de révision J 05.00 - J 07.00 (col. 0070-0250, 0320-0390) | aucun flux dans le bucket, ou aucune donnée pour la devise | 0 | convention |
| Rendement moyen d’une ligne parente J 05.00 (col. 0050 / 0300) | une classification enfant a un notionnel mais pas de rendement | elle est laissée de côté, notionnel compris : le rendement de la ligne est celui des classifications qui en ont un | RPT-065 |
| Maturité moyenne d’une ligne parente J 05.00 (col. 0060 / 0310) | une classification n’a de maturité que pour une partie de ses flux | elle pèse avec tout son notionnel : la partie sans maturité reçoit la moyenne de la partie couverte | RPT-008 |
| Notionnel d’une catégorie NMD (J 08 / J 09 col. 0010) | la devise a des valeurs comptables mais aucune sur la ligne FINREP de la catégorie | 0 (et donc 0 pour les lignes ‘dont’ si une part est déclarée) | convention |
| Parts déclarées et PTR NMD (J 08 / J 09) | catégorie non déclarée, part ou PTR d’un scénario absent | cellule vide | RPT-025 |
| Pire Δ EVE / NII (J 01.00 lignes 0010, 0100) et ratios 0020, 0110 | pas de valeur de base, ou aucun scénario SOT calculé pour la devise | cellules vides | RPT-066 |
| Taille des chocs par devise (J 01.00 lignes 0180-0200) | devise sans calibrage réglementaire dans IrrbbScenario | tailles de choc EUR (200 / 250 / 100 pb) | RPT-056 |
5. Application (risk-app)
Valeurs que l’application retient quand une requête, une situation ou un écran ne précise rien : lancement des runs, gap, pack ALCO, rapprochement comptable, import guidé, courbes et classification.
| Donnée | Condition | Valeur retenue | Signalement |
|---|---|---|---|
| Hypothèses de simulation (runSettings) | runSettings absent de la requête de génération (ou run officiel IRRBB) | Bilan d’évolution de l’import, tous les scénarios réglementaires, aucun choc personnalisé, plancher post-choc actif (défauts appliqués par risk-engine selon le contrat risk-model) | RUN-013 |
| Liste des scénarios (runSettings.scenarios) | runSettings présent mais scenarios null (non envoyé) | Tous les scénarios réglementaires sont calculés (une liste vide est refusée, null ne l’est pas) | RUN-014 |
| Plancher post-choc (runSettings.postShockFloor) | Champ absent / null | true : les taux choqués sont planchers au plancher réglementaire | RUN-015 |
| Mode de projection des taux variables (rateProjectionMode) | Champ absent de la requête de génération | FORWARD (projection sur la courbe forward), enregistré sur la génération et envoyé à l’engine | RUN-016 |
| Type / scénario de la génération (GenerationRequestDto.type) | Champ absent ou vide | Aucune valeur par défaut : le lancement (simulation ou run officiel) est refusé par une erreur 400 (error.validation sur type), rien n’est enregistré |
aucun (demande refusée) |
| Fonds propres (additional data capitalAmount) | Valeur vide ; une valeur non numérique (ex. 250k, 1.000.000) est refusée à l’enregistrement (erreur 400 qui la cite), seule une valeur saisie avant ce contrôle peut encore l’être |
Clé retirée des données transmises à l’engine (ratios J 01.00 lignes 0020/0110 laissés vides) ; texte normalisé : espaces et espaces insécables supprimés, virgule décimale convertie en point | RPT-005 |
| Données additionnelles d’une nouvelle situation (specificData) | Création d’une situation (upload zip ou brouillon guidé) | Map initialisée avec capitalAmount = null (aucune valeur de fonds propres) | RPT-005 |
| Mise à jour d’une situation (specificData et drapeaux) | Champ null dans la requête PUT /tasks/{id} | La valeur stockée est conservée (stratégie MapStruct IGNORE) | convention |
| Typage des comptes comptables (dataMapping.accountingMapping) | Situation sans configuration client, ou configuration sans dataMapping / accountingMapping | accountingMapping null envoyé à l’engine : les comptes de la balance ne sont typés que par la classification | BAL-011 |
| Type d’un compte de la balance (écran bilan) | Aucune clé d’accountingMapping ne couvre le compte (ou mapping absent) | Type affiché ‘NO_MAPPING’ | BAL-011 |
| Devise des chiffres du gap (devise pivot) | La génération / le contexte n’indique aucune devise pivot (gap_pivot_currency null) | EUR | RPT-057 |
| Projection utilisée par le gap (origin) | origin absent ou null dans la requête de gap | CONTRACTUAL | RPT-058 |
| Type de gap (gapType) | Champ absent | RATE (dates de refixation) plutôt que LIQUIDITY (dates contractuelles) | convention |
| Sens du cumul du gap (cumulativeDirection) | Champ absent | BACKWARD (encours restant), pas le cumul FORWARD d’un gap de liquidité | convention |
| Filtre ‘sensibles au taux seulement’ du gap | filter.rateSensitiveOnly absent | false : toutes les positions, sensibles au taux ou non | convention |
| Fenêtre de dates du gap (startDate / endDate) | Une ou deux bornes absentes | Pas de borne : toute la projection est prise | convention |
| Génération de comparaison du rapport de gap (compareTo) | compareTo absent | Dernière génération de la même configuration client, même scénario/type, dont la date de situation est antérieure | RPT-059 |
| Variation du gap après couverture par bande | La génération précédente n’a pas de montant pour la bande | Montant précédent pris à 0 : la variation vaut le gap courant | convention |
| Montant d’une ligne du rapport de gap Excel par bande | Ligne sans montant pour la bande (ou montants null) | 0 écrit dans la cellule | convention |
| Scénario de référence des deltas EVE/NII (reference) | Paramètre absent de /metrics | BASELINE | convention |
| Projection des métriques (origin) | Paramètre absent de /metrics, /metrics/export ou des métriques par transaction | BEHAVIOURAL | convention |
| Deltas EVE / NII / valeur de marché d’une transaction | La transaction n’a pas de ligne pour le scénario de référence | Deltas laissés null (pas d’erreur) | RUN-018 |
| NII (12 mois) d’une opération, à l’écran et à l’export (earnedNii, deltaEarnedNii) | Le calcul n’a enregistré aucune décision de NII pour l’opération | « — » à l’écran avec un message demandant de relancer le calcul ; valeur vide à l’export | convention |
| Métriques exportées en parquet (eve, deltaEve, earnedNii, deltaEarnedNii, wholeLifeInterest, oneYearCashInterest, deltaWholeLifeInterest, marketValue, marketValueOneYear, deltaMarketValue) | Valeur null (non calculée, pas de ligne de référence) | valeur vide (null), plus 0 ; seuls les écarts de la ligne de référence valent 0, leur vraie valeur |
aucun (pas de valeur par défaut : la valeur reste vide ; RUN-019 retiré) |
| Date de maturité affichée avec les métriques | Plusieurs transactions partagent la même référence dans la génération | La maturité de la première transaction lue est retenue | RUN-021 |
| Flux renvoyés par l’engine | La référence de transaction d’un groupe de flux ne correspond à aucune transaction du portefeuille/génération | Les flux sont ignorés (non enregistrés) ; un avertissement par run donne leur nombre et un échantillon des références | RUN-020 |
| Rattachement des flux à leur transaction | Deux transactions de la génération ont la même référence | Tous les flux de cette référence sont rattachés à la première transaction | RUN-021 |
| Date d’évaluation des contextes renvoyés | Aucune date, ou plusieurs dates distinctes dans les contextes de la réponse | La génération est enregistrée telle quelle (PROCESSED), seul un log.error est écrit | RUN-022 |
| Export des flux (CSV/Excel/parquet) | Aucun filtre origin (ni certitude, nature, scénario, type de taux, bucket) | Tous les flux, projections CONTRACTUAL et BEHAVIOURAL mêlées | convention |
| Date d’évaluation du reporting | Création d’un reporting | Date de référence (arrêté) de la situation au moment du lancement | convention |
| Résultat d’un reporting antérieur à risk-model 0.242.0 | reporting_result sans vues par origine (views null) | Résultat masqué (null) : le reporting apparaît ‘non calculé’ | RPT-060 |
| Tolérance de rapprochement comptable (pack ALCO et écran) | Paramètre tolerance absent (écran) ; toujours pour le pack ALCO | 1 unité de devise du grand livre | convention |
| Section rapprochement comptable du pack ALCO | Pas d’import lié, ou rapprochement en échec (situation non traitée, etc.) | Pack généré sans la section rapprochement | RPT-061 |
| Chiffres EVE / NII / valeur comptable du pack ALCO | Toujours | Seule la vue BEHAVIOURAL est lue ; une valeur null est omise (pas de 0) | RPT-062 |
| Paramètres du pack ALCO (format, langue, modèle, comparaison) | Paramètres absents | PDF, français, modèle par défaut de report-renderer, pas de colonnes ‘date précédente’ (aucune comparaison automatique) | convention |
| Ligne de balance (rapprochement) | Compte ou montant absent | Ligne ignorée du rapprochement | RPT-063 |
| Poste comptable d’une ligne de balance | Aucun poste (classification ou accountCode d’une position) ne couvre le compte | Le compte devient son propre poste (statut NOT_MODELLED ou LEDGER_ONLY selon le périmètre) | convention |
| Poste d’une position (accountCode) | Position sans classification ou sans accountCode | Position regroupée sous un poste vide, affiché en dernier | convention |
| Montant ALM d’une position (principal) | Produit sans principal lisible (type non géré, swap sans jambe 1, valeur null) | Position exclue de la somme ALM, comptée dans withoutAmountCount | convention |
| Ligne de classification d’un poste | Plusieurs lignes de classification pour le même poste | La première est retenue | RPT-064 |
| Limites des informations de la situation : portfolioName, portfolioReference (100), référence de contexte composée avec le client de la configuration (100), pivotCurrency (3) | Valeur plus longue que sa colonne | Formulaire ou requête refusés (erreur 400) avant l’engine ; une archive de l’API dont la référence de contexte dépasse devient une tâche FAIL ; un portfolioReference absent est compté comme le texte ‘null’ (4 caractères) que risk-engine écrira dans la référence du contexte | IMP-005, IMP-007 (ERROR) |
| Portefeuille importé | Aucune transaction renvoyée par l’engine | Import DONE avec un portefeuille vide | IMP-028 |
| Niveau d’une anomalie renvoyée par l’import | Anomalie sans niveau | Comptée comme ERROR dans le décompte de la tâche | IMP-050 |
| Indice d’actualisation (discountFactorIndex) | La valeur saisie est un libellé client (clé de dataMapping.indexes) et non un indice de courbe | Remplacée par l’indice de courbe auquel le libellé est associé ; espaces de début/fin supprimés | IMP-054 |
| Index d’actualisation d’une archive importée | aucun index choisi, ni à l’écran, ni dans situation.json | index par défaut de la configuration pour la devise pivot (discountFactorIndexes) | convention |
| Configuration d’une archive complète (configuration.json) | aucune configuration choisie à l’import | même identifiant, version et contenu ; sinon même mapping, à sa dernière version ; sinon création de « <nom> (importée le …) » | convention |
| Brouillons d’import guidé abandonnés | Aucune activité depuis application.import.draft-purge.retention-days | 30 jours ; brouillon et fichiers supprimés chaque nuit à 03:00 | convention |
| Durée maximale d’une génération ou d’un reporting en PROCESSING | Pas de réponse de l’engine dans application.generation.stuck-timeout | 2 heures ; la génération est passée en ERRORS | RUN-009 (ERROR) |
| Type de contrepartie | Contrepartie inconnue du tenant lors de l’enregistrement des transactions importées ou générées | Contrepartie créée avec le type CORPORATE | TRX-077 |
| Rôle de couverture d’un deal (hedgeRole) | Deal créé à la main (DealRequestDto ne porte pas de hedgeRole) ; modification d’un deal | NONE à la création ; inchangé à la modification | convention |
| Maturité résiduelle d’un deal (années) | Pas de maturité, ou horizon de stratégie linéaire illisible | null (tri en dernier) ; sinon jours / 365 depuis la date de référence du portefeuille | convention |
| Cotation d’une courbe (quotation) | Absente à la création ; absente à la modification | Création : lue comme ZERO (taux zéro-coupon) ; modification : la cotation existante est gardée | CRV-024 |
| Période de refixation d’une courbe (refixingPeriod) | Modification d’une courbe | La valeur existante est reportée ; une courbe créée par l’éditeur n’en a jamais | CRV-029 |
| Instruments cotés par une courbe | Modification sans instruments | Instruments existants gardés pour les maturités encore présentes, les autres supprimés | convention |
| Colonnes 4 à 12 de mapping_compta (Opération financière, Actif modélisé, Gross Carrying Amount, Nominal, EVE, MNI, Sensible taux, Signe, MV) | Classification générée depuis un référentiel (import zip avec classificationId ou brouillon lié) | Cellules vides, lues par l’engine comme false / 0 pour chaque compte | CLS-025 |
| Rôle de couverture d’une catégorie de classification | Catégorie du référentiel sans hedgeRole | Cellule vide dans le classeur généré ; l’engine garde UNSPECIFIED sur les dérivés de couverture, NONE ailleurs | CLS-020 |
| Lignes histo d’un référentiel | histoAccounts absent (null) d’une mise à jour du référentiel | Les lignes existantes sont conservées (et recontrôlées) | convention |
| Anomalies d’un calcul de solvabilité | Réponse de l’engine avec erreurs | Erreurs non enregistrées ; seul le statut est gardé | RUN-023 |
Récapitulatif
| Domaine | Règles | Signalées | Conventions |
|---|---|---|---|
| Import : fichiers et parseurs | 100 | 98 | 2 |
| Courbes | 34 | 28 | 6 |
| Cash-flows et projection | 56 | 35 | 21 |
| Reporting | 66 | 52 | 14 |
| Application (risk-app) | 63 | 39 | 24 |
| Total | 319 | 252 | 67 |