Configuration client

Introduction

La configuration client permet de définir et stocker les paramètres de mapping propres à un client. Il s’agit d’une configuration statique qu’il convient de créer une seule fois. Elle devra évoluer dans les cas suivants:

  • évolution des exports utilisés depuis les systèmes de la banque;
  • évolutions du modèle de données interne de la solution (ajout de nouveaux produits notamment)

Une configuration client est nécessaire pour l’import des données.

Elle est constituée de quatre éléments :

Élément Rôle
Nom Identifie la configuration dans les écrans d’import. Plusieurs configurations peuvent coexister.
Format des données La structure des fichiers d’entrée. C’est elle qui détermine la façon dont les fichiers sont lus. Obligatoire.
Client Un simple libellé d’affichage : il ne détermine plus la structure des fichiers.
Fichier de mapping Le fichier JSON décrit ci-dessous.

Le mapping se lit en cinq sections — Extractions & produits, Courbes & conventions, Comptes des opérations, Classification, Modèles d’écoulement — qui sont les onglets du détail d’une configuration (Les sections de la configuration). La classification (mapping_compta) et les modèles d’écoulement (le contenu d’un model_*.json) en font partie : l’import ne les lit plus dans l’archive.

La configuration est versionnée d’un bloc : chaque enregistrement crée une version, et une situation garde la version avec laquelle elle a été importée (Versions et rejeu d’un arrêté).

Format des données

Le format des données est choisi dans une liste déroulante alimentée par la solution. Une seule valeur est disponible aujourd’hui :

Valeur Libellé
CREDIT_LOGEMENT Fichiers Crédit Logement
Note

Auparavant, la façon de lire les fichiers était déduite du champ Client : une faute de frappe dans ce libellé faisait échouer tous les imports de la configuration. Le Client n’est désormais qu’un libellé, et le format est déclaré explicitement. Les configurations existantes ont été reprises en CREDIT_LOGEMENT.

Les fichiers de configuration ont la forme suivante :

{
  "compoundCurve": {},    // courbes composées à partir des courbes du fichier de taux
  "indexes": {},          // libellé de taux de la banque → courbe
  "curveQuotations": {},  // cotation des courbes : ZERO (défaut) ou PAR
  "model": {
    "loan": {},
    "swap": {}
  },                      // champ du moteur → colonne du fichier, par produit
  "products": {},         // mapping entre les produits client et les produits définis dans la partie 'model'
  "rateBase": {},         // mapping des conventions de calcul de jours
  "frequency": {},        // mapping des fréquences de calcul de taux
  "rateType": {},         // mapping des types de taux (FIXED, FLOATING)
  "tags": [],             // colonnes recopiées en étiquettes sur chaque opération
  "accountingMapping": {}, // type des comptes de la balance (écran Bilan, encours comptable)
  "instrumentAccounts": {} // compte comptable des opérations, par famille, sous-famille ou type d'instrument
}
Astuce

Le détail de chaque section, colonne par colonne, est donné dans l’application, sous Situations › Guide de l'import, et la page Crédit Logement du menu d’aide (? de la barre du haut) déroule une ligne d’extraction à travers chaque section du mapping Crédit Logement. Ce chapitre explique les règles appliquées ; voir aussi Import Crédit Logement et, pour chaque clé et chaque produit, Import : traitements et conversions.

Contenu d’une configuration client

Courbes de taux

{
  "indexes": {
    "CMS (20-2)": "EURIBOR 6M SWAP",
    "ESTR": "ESTR_PROJECTION",
    "EURO INTERBANK OFFERED RATE": "EURIBOR 6M SWAP",
    "EURO INTERBANK OFFERED RATE|3M": "EURIBOR 3M SWAP",
    "EURO INTERBANK OFFERED RATE|6M": "EURIBOR 6M SWAP",
    "EURO OVERNIGHT INDEX AVERAGE": "EONIA_PROJECTION",
    "Palliers TF": "EURIBOR 6M SWAP",
    "iESTER": "ESTR_PROJECTION"
  },
  "compoundCurve": {
    "DISCOUNT_EUR": { "1d": "ESTR", "1Y": "EURIBOR", "100y": "ESTR SWAP" },
    "ESTR_PROJECTION": { "1d": "ESTR", "1y": "ESTR CASH", "100y": "ESTR SWAP" },
    "EONIA_PROJECTION": { "1d": "EONIA", "2w": "EONIA CASH", "100y": "EONIA SWAP" }
  }
}

La configuration des courbes de taux comporte trois éléments :

  • une entrée indexes qui contient les mappings entre les indexes ou références de courbes de taux présents dans les données d’imports ;
  • une entrée compoundCurve qui permet de définir des courbes composées à partir des courbes de taux existantes ;
  • une entrée facultative curveQuotations qui déclare la cotation de chaque courbe (voir plus bas).

Dans l’exemple ci-dessus, la courbe DISCOUNT_EUR est composée de trois courbes de taux : ESTR SWAP, EURIBOR et ESTR. - la courbe ESTR pour le taux à 1 jour ; - la courbe EURIBOR pour les taux jusqu’à 1 an ; - la courbe ESTR SWAP au-delà.

Le sens des entrées mérite d’être précisé, car il conditionne les contrôles décrits ci-après :

  • dans indexes, la clé est le libellé de taux tel que les opérations de la banque le citent, et la valeur est l’index de courbe attendu dans le fichier de taux — ou le nom d’une courbe composée ;
  • une clé peut préciser le ténor du libellé, sous la forme libellé|ténor (EURO INTERBANK OFFERED RATE|3M). Elle s’applique lorsque le produit mappe une colonne de ténor (clés payIndexTenor, rateBasisTenor, payRateBasisTenor, recRateBasisTenor) et que la cellule de l’opération porte ce ténor. Les ténors sont comparés après normalisation (3M, 3 MONTHS, 1Y, 12M, 1 YEAR se valent). Sans colonne de ténor, sans valeur ou sans clé correspondante, la clé sans ténor s’applique ;
  • chaque clé de compoundCurve devient une courbe à part entière, construite à partir des courbes élémentaires qu’elle référence. Chaque courbe élémentaire apporte ses points dont la maturité ne dépasse pas son seuil (1d, 1Y, 100y…), les seuils étant parcourus du plus court au plus long ; à maturité égale, le point de la courbe de seuil le plus long l’emporte. Pour chaque courbe élémentaire, la date de cotation retenue est la plus proche de la date d’arrêté.

Les courbes de projection ESTR_PROJECTION et EONIA_PROJECTION du mapping Crédit Logement illustrent l’intérêt des courbes composées : les courbes ESTR SWAP et EONIA SWAP ne commencent qu’à 2 et 4 ans. Projetée sur elles seules, une jambe au jour le jour lirait le premier pilier de swap extrapolé à plat. Composée du fixing au jour le jour, des points monétaires (ESTR CASH jusqu’à 1 an, EONIA CASH jusqu’à 2 semaines) puis des swaps, la courbe de projection a une vraie partie courte.

Cotation des courbes (curveQuotations)

{
  "curveQuotations": {
    "DISCOUNT_EUR": "PAR",
    "ESTR_PROJECTION": "PAR"
  }
}

Une courbe absente de curveQuotations est cotée ZERO : ses points sont lus comme des taux zéro-coupon. Une courbe déclarée PAR porte des taux monétaires et des taux de swap au pair ; elle est bootstrappée en courbe zéro-coupon, qui sert à l’actualisation comme à la projection, et ses scénarios de choc s’appliquent à cette courbe zéro-coupon (Cadre de calcul, §1.3). Une courbe élémentaire se désigne par son index, une courbe composée par son nom, sans tenir compte de la casse ni des espaces superflus.

À l’import, chaque point reçoit son instrument d’après le nom de la courbe dont il provient : un point d’une courbe dont le nom contient SWAP (ESTR SWAP, EURIBOR 3M SWAP) est un taux de swap, tout autre point (ESTR, EURIBOR, ESTR CASH…) un taux monétaire. Un point d’une courbe composée garde l’instrument de la courbe élémentaire dont il est copié. Aucun écran n’affiche la cotation : elle se règle dans le mapping, avant l’import.

Note

Le mapping Crédit Logement livré ne déclare pas de curveQuotations : ses courbes sont lues en taux zéro-coupon tant que la cotation au pair n’est pas activée.

Contrôles de cohérence

Ces deux entrées sont vérifiées à chaque import, et dès l’envoi du fichier de taux en import guidé :

  • toute valeur de indexes et toute courbe élémentaire d’une compoundCurve doit exister dans le fichier de taux. Un index introuvable est signalé en erreur sur le fichier de taux, avec le nom de l’index et les libellés de la banque qui le visent. La comparaison ignore la casse et les espaces superflus. Une clé à ténor est contrôlée comme les autres : mapper un ténor sur une courbe que le fichier ne porte pas est une erreur, et non un repli silencieux. Une courbe composée dont une courbe élémentaire manque n’est pas construite ;
  • une opération citant un libellé de taux absent de indexes n’est plus rejetée : un avertissement nommant le libellé à ajouter est émis et l’opération reste valorisée. Le détail du comportement est décrit dans le chapitre Import d’une situation ALM.

Index d’actualisation

Les écrans d’import demandent obligatoirement un index d'actualisation, c’est-à-dire la courbe utilisée pour tous les facteurs d’actualisation de la situation. La liste proposée est construite à partir de cette configuration : les clés de compoundCurve, puis les entrées de indexes — affichées sous le libellé de la banque, mais enregistrées sous l’index de courbe correspondant.

Note

Une configuration qui ne déclare ni indexes ni compoundCurve ne permet donc aucun import : la liste des index d’actualisation est vide et son fichier de mapping doit être corrigé.

Index d’actualisation par défaut (discountFactorIndexes)

discountFactorIndexes associe à chaque devise pivot l’index d’actualisation à proposer par défaut :

"discountFactorIndexes": {
  "EUR": "DISCOUNT_EUR"
}

L’écran d’import propose cet index tant qu’aucun autre n’est choisi, pour la devise pivot saisie. Une archive importée sans index retient celui de sa devise pivot. Chaque valeur doit être une courbe que la configuration construit, c’est-à-dire une clé de compoundCurve ou une valeur de indexes. Sinon, un contrôle de l’onglet Courbes & conventions le signale, car l’import refuserait cet index (Contrôles de la configuration).

Mappings

Mapping des produits

{
  "model": {
    "loan": {
      "callDate": "DateCall",
      "counterparty": "Counterparty",
      "currency": "currency",
      "dealDate": "Deal Date",
      "instrumentType": "Instrument Type",
      "payIndex": "Basis",
      "payIndexTenor": "Basis Rate Frequency Time Band",
      ...
    },
    "repo": {
      "counterparty": "Counterparty",
      "dealDate": "Deal Date",
      "instrumentType": "Instrument Type",
      "interestAmount": "Interest Amount",
      "interestConvention": "Interest Days Convention",
      "nature": "Borrowing  Investing",
      ...
    }
  },
  "products": {
    "Asset Swap Fix Fix": "swap",
    "Asset Swap Fix Float": "swap",
    "Asset Swap Inflation Fix Float": "swap",
    "CAT Actions": "term_deposit",
    "CAT PPD Taux Variable": "term_deposit",
    "CAT Progressif": "term_deposit",
    "CAT Progressif Capitalise SEM A": "term_deposit",
    "CAT Sub Taux Variable": "term_deposit",
    "CAT Taux Fixe": "term_deposit",
    "CAT Taux Fixe Capitalise": "term_deposit",
    "CAT Taux Variable": "term_deposit",
    "Collateral Pret de titres": "repo",
    "Emprunt Gage Coll Taux Fixe": "loan",
    "Emprunt PPD Taux Variable": "loan",
    "Emprunt Sub Taux Variable": "loan",
    "Mise en pension de titres": "repo",
    "NANT-Creance Entreprise": "nantissement",
    "NANT-Creance Interne": "nantissement",
    "NANT-Titre": "nantissement",
    "Pret de titres": "repo",
    "Prise pension de titres (In fine)": "repo",
    "Prise pension de titres (Periodic)": "repo",
    "Swap Fix Float": "swap",
    "Swap Float Fix": "swap",
    "Swap Float Float": "swap"
  }
}

Dans model, la clé est le champ du moteur et la valeur le nom exact de la colonne du fichier, espaces compris. Une colonne nommée dans le mapping doit exister dans le fichier, même vide : sinon chaque ligne est rejetée (« Record does not contain field ‘…’ »). Les clés facultatives (remainingNominal, callDate sauf pour loan et term_deposit où elle est obligatoire, issuerCallDate, reviewFrequency, les clés de ténor, nature…) peuvent être absentes du mapping : l’import se fait alors comme avant leur introduction. La section products choisit le produit d’après la colonne Instrument Type ; une valeur absente de products fait rejeter l’opération (« Cannot parse ‘ProductMapping’ with value ‘…’ »).

Mapping des conventions

{
  "frequency": {
    "ANNUAL": "YEAR",
    "AT MATURITY": "AT_MATURITY",
    "QUARTERLY": "QUARTER",
    "SEMI ANNUAL": "SEMESTER"
  },
  "rateType": {
    "FIXED": "FIXED",
    "FLOATING": "FLOATING",
    "Taux Fixe": "FIXED",
    "Taux Révisabl": "FLOATING"
  },
  "rateBase": {
    "30/360": "ABB_30_360",
    "30E/360": "ABB_30_360",
    "ACTUAL/360": "EXACT_360",
    "ACTUAL/365": "EXACT_365",
    "ACTUAL/ACTUAL": "EXACT_EXACT",
    "default": "ABB_30_360"
  }
}
  • rateBase traduit la convention de calcul de jours lue sur l’opération en base du moteur (EXACT_EXACT, EXACT_365, EXACT_360, ABB_30_360, voir Cadre de calcul, §1.6). Une cellule vide prend la valeur default ; une valeur absente de la table fait rejeter l’opération (« Cannot parse ‘RateBase’ with value ‘…’ »), sauf pour les jambes de swap décrites ci-dessous.
  • Une règle de jour ouvré n’est pas une base de calcul. FOLLOWING, MODIFIED FOLLOWING, PRECEDING, ACTUAL DATE, UNADJUSTED… disent comment décaler une date tombant un jour non ouvré, pas comment compter les jours. Pour une jambe de swap, une telle valeur n’est jamais lue comme une base, même si la table rateBase la liste : la jambe prend la convention de marché (Import Crédit Logement). N’ajoutez pas ces libellés à rateBase.
  • frequency et rateType ne sont pas lus par le moteur. Ces deux sections figurent dans les mappings pour mémoire, mais l’import Crédit Logement reconnaît directement les valeurs des extractions :
    • périodicité : MONTHLY (mois), QUARTERLY (trimestre), SEMI ANNUAL (semestre), ANNUAL (année), AT MATURITY ou NONE (coupon unique à l’échéance), écrites exactement ainsi. Toute autre valeur fait rejeter l’opération (« Cannot parse ‘Frequency’ with value ‘…’ »). Une fréquence de révision (reviewFrequency) inconnue, comme DAILY, est seulement laissée vide, avec un message d’information ;
    • type de taux : FIXED ou FLOATING, sans tenir compte de la casse. Sur les prêts, comptes à terme et titres, toute autre valeur, ou une cellule vide, fait rejeter l’opération ; sur une jambe de swap, la colonne est facultative et une autre valeur est ignorée. Un libellé comme Taux Fixe n’est donc pas traduit par la section rateType.

Étiquettes et libellés du bilan

{
  "tags": ["Entity"],
  "accountingMapping": { "6": "PNL", "7": "PNL", "9": "OBS", "943": "DERIVATIVE", "H": "OBS" }
}
  • tags liste des colonnes recopiées sur chaque opération comme étiquettes : la valeur de la colonne Entity devient une étiquette, qui permet de regrouper et de filtrer les résultats. Dans un classeur Excel, une cellule vide d’une colonne de tags fait rejeter la ligne (Import Crédit Logement).

  • accountingMapping type les comptes de la balance d’après le début de leur numéro : ASSET, LIABILITY, DERIVATIVE, PNL ou OBS. Une clé est un préfixe de compte, écrit avec ou sans étoiles finales (6, 6* et 6** sont la même clé) ; quand plusieurs clés couvrent un compte, la plus longue l’emporte, quel que soit leur ordre (avec 9 → OBS et 943 → DERIVATIVE, le compte 94310002 est un dérivé, 90100000 du hors bilan). Le type étiquette les lignes de l’écran Bilan (NO_MAPPING pour un compte qu’aucune clé ne couvre) et dit quels comptes entrent dans l’encours comptable des états J 02.00 à J 04.00 (§3.5) :

    • PNL (résultat), OBS (hors bilan) et DERIVATIVE (notionnels des dérivés, hors bilan en normes françaises) n’y apportent rien ;
    • ASSET, LIABILITY et un compte qu’aucune clé ne couvre sont des comptes de bilan : la classification les range sur leur ligne FINREP, et un compte de bilan qu’elle ne range nulle part est signalé avec son solde.

    accountingMapping est déprécié et facultatif. Le type d’un compte vient désormais de la classification (mapping_compta, colonne Bilan : Actif, Passif, HB, Résultat), qui doit couvrir tous les comptes de la balance (couverture de la balance). accountingMapping ne type plus qu’un compte que la classification ne couvre pas. Un compte que ni l’une ni l’autre ne type est signalé à l’import par un avertissement qui regroupe ces comptes par classe (trois premiers chiffres), avec leur nombre et leur solde ; il est traité comme un compte de bilan.

Compte comptable des opérations (instrumentAccounts)

Une opération importée ne porte pas de compte comptable : instrumentAccounts lui en donne un, d’après ce qu’elle est. Le principe est décrit au chapitre 7 de la méthodologie.

"instrumentAccounts": {
  "families": { "swap": "943100", "term_deposit": "131200", "loan": "541900", "security": "304120" },
  "subFamilies": [
    { "name": "Asset swaps", "instruments": ["Asset Swap Fix Fix", "Asset Swap Fix Float"], "account": "943101" },
    { "name": "Prises en pension", "instruments": ["Prise pension de titres (In fine)", "Prise pension de titres (Periodic)"], "account": "301110" }
  ],
  "instruments": { "CAT Actions": "131223", "Emprunt PPD Taux Variable": "541200", "Mise en pension de titres": "301210" }
}
  • families : une famille, c’est-à-dire une valeur du mapping products (swap, repo, term_deposit, loan…), ou security pour le fichier des titres.
  • subFamilies : un groupe nommé de types d’instrument d’une même famille qui partagent un compte. Un type d’instrument appartient au plus à une sous-famille.
  • instruments : la valeur exacte de la colonne Instrument Type de l’extraction (pour les titres, la colonne porte l’ISIN ou le libellé du titre).

La règle la plus précise l’emporte : type d’instrument, puis sous-famille, puis famille. Les clés se comparent sans tenir compte de la casse ni des espaces autour. Un compte s’écrit en chiffres, suivis d’étoiles si une précision moindre suffit (9431**). L’onglet histo du classeur de classification l’emporte sur ces règles, opération par opération. Une opération qu’aucune règle ne couvre est importée sans compte : elle n’a pas de ligne FINREP, et l’import le signale (Import Crédit Logement). La section est facultative, mais sans elle aucune opération importée n’est classée.

La section accruedInterestAccounts, de même forme, donne le poste des intérêts courus de l’opération (ses créances ou dettes rattachées) ; elle se résout dans le même ordre. L’opération couvre ainsi ce poste de la balance en plus de celui de son capital (couverture de la balance).

"accruedInterestAccounts": {
  "families": { "term_deposit": "131700", "loan": "547100", "security": "304720" },
  "instruments": { "CAT Actions": "131723", "Mise en pension de titres": "301270" }
}

La section secondLegAccounts, de même forme, donne le poste de la seconde jambe d’un prêt ou d’un emprunt de titres : l’opération est importée aussi en jambe miroir de sens opposé sur ce poste (opérations à deux jambes).

"secondLegAccounts": {
  "instruments": { "Collateral Pret de titres": "302710", "Pret de titres": "304120" }
}

Elle se modifie dans le détail d’une configuration client, au-dessus de l’éditeur JSON : comptes par famille, sous-familles et comptes par type d’instrument. L’enregistrement est refusé tant qu’une règle est invalide (compte mal formé, type d’instrument dans deux sous-familles).

Liste des configurations client

La liste des configurations client est accessible ici

Liste des configurations client

Détail d’une configuration client

Détail d’une configuration client

Le détail présente un onglet par section, un onglet Versions et l’onglet JSON (avancé), qui montre le mapping complet tel qu’il est enregistré. Enregistrer enregistre toutes les sections à la fois et crée une nouvelle version.

Les sections de la configuration

Section (onglet) Contenu du mapping Se modifie
Extractions & produits model, products, tags en JSON, limité à ces clés
Courbes & conventions indexes, compoundCurve, discountFactorIndexes, curveQuotations, rateBase, frequency, rateType en JSON, limité à ces clés
Comptes des opérations instrumentAccounts (et accruedInterestAccounts, secondLegAccounts) par l’éditeur de règles (ci-dessus)
Classification classification : le mapping_compta en tableau, ou en chargeant un classeur
Modèles d’écoulement balanceSheetStrategy : le contenu d’un model_*.json en JSON, ou en chargeant un fichier

Classification

Une ligne par poste comptable : son côté du bilan (Actif, Passif, Hors-bilan, Résultat), sa contrepartie, sa classe FINREP, son rôle de couverture, son signe et les drapeaux du périmètre IRRBB : GCA, Nominal, EVE, MNI, VM, ainsi que Op. fin., Modélisé et Sensible. Les lignes se modifient dans le tableau, se filtrent par poste, contrepartie ou classe FINREP, et s’enregistrent avec la configuration.

  • Charger un classeur : le classeur mapping_compta (onglets mapping_compta, mapping_compta_irrbb et, s’il existe, histo) est lu pendant son dépôt, et le résultat de la lecture (classeur lu, vide ou illisible, anomalies) s’affiche aussitôt (Contrôle d’un fichier au dépôt) ; il remplace ensuite la section et la configuration reçoit une nouvelle version. Le classeur ne part jamais avec un import. Le chargement attend que les modifications en cours soient enregistrées.
  • Exporter le classeur : la section au format mapping_compta, drapeaux compris ; il se recharge tel quel.

La classification est stable d’un arrêté à l’autre : une même version sert plusieurs arrêtés, une nouvelle version n’apparaît qu’à un changement. Une configuration sans classification arrête l’import (IMP-055) ; un classeur encore présent dans l’archive est ignoré (IMP-056).

Modèles d’écoulement

Les stratégies d’écoulement des postes de la balance qu’aucune opération ne porte (par exemple l’OPCVM 303130** écoulé sur 1 jour) et l’évolution du bilan. L’onglet les liste (référence, stratégie, horizon ou tranches) et les montre en JSON. Charger un fichier de modèles lit un model_*.json : chaque stratégie est contrôlée comme dans un contexte d’évaluation, puis la section est remplacée et la configuration reçoit une nouvelle version. Une configuration sans modèles d’écoulement arrête l’import (IMP-055).

Contrôles de la configuration

À la lecture de la configuration, des avertissements s’affichent sur les lignes concernées ; ils n’empêchent pas l’enregistrement :

  • un compte des opérations qui ne tombe sur aucun poste de la classification (préfixe le plus long ; un compte étoilé doit couvrir au moins un poste) : les opérations rangées sur ce compte ne seraient classées nulle part ;
  • une configuration sans classification ou sans modèles d’écoulement : un import lu avec elle s’arrêterait.

Côté balance, l’import signale les comptes que la classification ne type pas (Import Crédit Logement) ; le rapprochement est inchangé (Rapprochement avec la balance).

Versions et rejeu d’un arrêté

L’onglet Versions liste les versions de la configuration, de la plus récente à la plus ancienne : date, auteur, et sections modifiées. Chaque enregistrement, chaque classeur ou fichier de modèles chargé crée une version.

  • Un import lit la dernière version par défaut ; l’écran d’import permet d’en choisir une antérieure.
  • Importer avec cette version ouvre l’import avec la configuration et la version choisies : c’est ainsi qu’on rejoue un arrêté avec les règles de l’époque.
  • Une situation garde la version avec laquelle elle a été importée ; les calculs lancés ensuite sur cette situation lisent la configuration dans cette version. Une situation importée avant le versionnement lit la configuration actuelle.

Import d’une configuration client

Les données suivantes sont nécessaires pour l’import d’une configuration client:

  • le nom de la configuration client;
  • le format des données (obligatoire, choisi dans la liste déroulante);
  • le nom du client (libellé d’affichage);
  • le fichier de configuration.

Remarque:

  • on peut définir plusieurs configurations client, notamment pour réaliser des tests en cas d’évolution des exports.

Import d’une configuration client

Exemple de mapping

Le mapping Crédit Logement, qui suit les vues IRRBB_MM, Swaps_IRRBB, Securities_IRRBB et REPO telles qu’exportées, est le mapping de référence de la solution : mapping-credit-logement.json. C’est le même fichier que celui proposé au téléchargement dans Situations › Guide de l'import et dans la page Crédit Logement du menu d’aide. Ce qu’il mappe est décrit dans Import Crédit Logement. Il porte aussi les sections Classification (176 postes, drapeaux du périmètre IRRBB compris) et Modèles d’écoulement de la configuration Crédit Logement d’intégration.

Un exemple plus ancien, antérieur aux courbes de projection et aux colonnes de ténor, reste disponible : mapping.json. Ses index (ISWAP, ISAP) ne correspondent à aucune courbe du fichier de taux Crédit Logement ; il n’est pas importable en l’état.