Import d’une situation ALM
Deux pré-requis sont nécessaires à l’import d’une situation ALM.
- L’existence d’une configuration client, qui déclare le
format des donnéesattendu et le mapping des index de courbes de taux ; - La constitution des fichiers d’arrêté décrits ci-dessous.
Le menu Situations › Guide de l'import de l’application décrit le parcours écran par écran et chaque fichier colonne par colonne, et propose le modèle Excel et le mapping Crédit Logement au téléchargement. Les règles de lecture propres au format Crédit Logement (sens déduit, bases des swaps, comptes par défaut, courbes de projection…) sont décrites dans Import Crédit Logement. Chaque traitement et chaque conversion appliqués à l’import, fichier par fichier et colonne par colonne, sont rassemblés dans Import : traitements et conversions.
Un seul écran d’import
Une situation s’importe depuis un seul écran, l’import guidé, accessible par le menu Situations › Importer une nouvelle situation ou depuis la liste des situations. Les fichiers y arrivent de deux façons :
- un par un, chacun dans son emplacement ;
- d’une archive
.zip: ses fichiers sont rangés dans leurs emplacements et l’arrêté est repris (Partir d’une archive).
Dans les deux cas, chaque fichier est contrôlé avant que l’import ne démarre, et le brouillon se relit puis se soumet de la même façon. L’ancien écran Upload, qui lançait l’import d’une archive sans contrôle préalable, a disparu ; l’API garde ce lancement direct (Partir d’une archive). Les fichiers sont lus par l’application elle-même ; le moteur de calcul n’en reçoit aucun (La chaîne de traitement).
Les fichiers d’une situation
Une situation est constituée des fichiers de l’arrêté suivants, lus avec une version de la configuration client. Tous sont obligatoires ; seules les opérations financières peuvent être réparties sur plusieurs fichiers. La classification et les modèles d’écoulement ne sont plus des fichiers de la situation : ce sont deux sections de la configuration client (Les sections de la configuration). Un classification*.xlsx ou un model_*.json laissé dans l’archive est ignoré (IMP-056).
| Fichier | Contenu | Formats acceptés |
|---|---|---|
| Informations de la situation | L’arrêté — date, portefeuille, devise pivot, index d’actualisation — saisi à l’écran ; aucun fichier | saisie |
| Balance comptable | Extrait des balances comptables d’arrêté | .xlsx, .csv, .txt |
| Flux préfixés | Valorisation des cash flows déjà fixés | .xlsx |
| Courbes de taux | Synthèse des taux de marché à la date d’arrêté | .xlsx, .csv, .txt |
| Opérations | Les transactions financières, un ou plusieurs fichiers | .xlsx, .csv, .txt |
Import guidé
L’écran Import guidé est accessible depuis le bouton du même nom, en haut de la liste des situations. Il se déroule en deux étapes.
Étape 1 — Configuration
Sélectionnez la configuration client avec laquelle la situation doit être lue, et sa version : la dernière est proposée par défaut, une version antérieure rejoue un arrêté avec les règles de l’époque (Versions et rejeu d’un arrêté). Cliquez ensuite sur Suivant. Le brouillon est créé à ce moment-là : l’adresse de la page porte désormais son identifiant, si bien qu’un rafraîchissement ou un retour ultérieur reprend le travail là où il s’est arrêté.
Sous le bouton Suivant, Déposer une archive crée le brouillon à partir d’une archive .zip, ses emplacements déjà remplis (Partir d’une archive).
La configuration d’un brouillon existant ne peut plus être modifiée : elle détermine la façon dont chaque fichier est lu, et donc le résultat des contrôles déjà effectués. Pour utiliser une autre configuration, démarrez un nouvel import guidé.
Étape 2 — Fichiers
Chaque ligne de l’étape Fichiers correspond à un emplacement, c’est-à-dire à l’un des fichiers du tableau ci-dessus. La colonne de gauche rappelle ce que l’emplacement attend, la colonne de droite liste les fichiers qu’il contient déjà.
- un emplacement simple ne conserve qu’un fichier : pour le remplacer, supprimez-le puis déposez le nouveau ;
- l’emplacement
Opérationsaccepte plusieurs fichiers, qui s’ajoutent les uns aux autres ; un fichier redéposé sous le même nom remplace le précédent ; - les extensions non attendues et les fichiers vides sont refusés avant même d’être envoyés, avec le motif affiché sur l’emplacement concerné.
Renseigner les informations de la situation
La ligne Informations de la situation, en tête de l’étape Fichiers, porte un formulaire : la date de référence, le nom et la référence du portefeuille, l’index d’actualisation et la devise pivot. Le bouton Enregistrer les range sur le brouillon ; aucun fichier n’est écrit, et rien n’est importé avant le lancement de l’import. La Date de référence, l’Index d'actualisation et la Devise pivot (EUR par défaut) sont obligatoires.
Le formulaire ne demande pas de client : c’est celui de la configuration client du brouillon. Il compte encore pour la longueur de la référence du portefeuille, que l’import compose avec lui dans la référence du contexte d’évaluation (IMP-007).
L’Index d'actualisation est une liste déroulante alimentée par la configuration client sélectionnée : elle propose les courbes composées (compoundCurve) et les index déclarés dans indexes, sous le libellé utilisé par la banque. C’est l’index de courbe correspondant qui est enregistré, et non le libellé. Tant qu’aucun index n’est choisi, le formulaire propose l’index par défaut que la configuration associe à la devise pivot (Index d’actualisation par défaut).
Une coche verte indique que les informations sont enregistrées. Après une modification du formulaire, enregistrez à nouveau : l’import ne se lance qu’avec ce qui est enregistré. Un info_*.json n’a plus d’emplacement ; s’il reste dans une archive, il est ignoré (IMP-060).
Si la liste est vide, la configuration client ne référence aucun index : aucune courbe d’actualisation ne peut être construite et son fichier de mapping doit être corrigé au préalable.
Contrôle de chaque fichier
Un fichier est contrôlé pendant son dépôt : l’application le lit avec la configuration client du brouillon, et la réponse au dépôt porte déjà son statut, ses anomalies et le résumé de son contenu (Contrôle d’un fichier au dépôt). Les anomalies s’affichent donc dès que le dépôt se termine, sans attente ni rechargement. La ligne du fichier affiche l’issue du contrôle :
| Statut | Signification |
|---|---|
Vérification… |
Le contrôle n’a pas encore eu lieu. Ne se voit plus que sur un fichier déposé avant la version actuelle : il est contrôlé à la réouverture du brouillon. S’il reste dans cet état, l’écran le signale au bout de deux minutes ; supprimez-le puis déposez-le à nouveau. |
Valide |
Aucune anomalie bloquante. Le nombre d’avertissements éventuels est indiqué. |
n anomalie(s) |
Le fichier comporte au moins une anomalie de niveau ERROR. |
Le lien Afficher les anomalies déplie la liste complète des anomalies du fichier, avec leur niveau, leur message et l’objet ou la référence concernés — le même détail que la liste des anomalies d’un import par archive. La liste s’affiche dans le journal des anomalies : le code de chaque anomalie mène à sa fiche dans la référence des anomalies, et la liste se filtre ou se regroupe par code.
Contenu de chaque fichier
Une fois le contrôle passé, la ligne indique également ce que la solution a effectivement lu dans le fichier : un total, puis une répartition. C’est le moyen le plus simple de vérifier qu’un fichier est bien celui de l’arrêté attendu.
| Fichier | Total | Répartition |
|---|---|---|
| Modèle d’écoulement | Nombre de stratégies | Par type de stratégie (LinearOutflowStrategy, …) |
| Classification | Nombre de lignes de correspondance | Par classe IRRBB (ASSET / Retail, …) |
| Courbes de taux | Nombre d’index | Nombre de points par index |
| Balance comptable | Nombre de lignes comptables | Par classe de compte (le premier chiffre du numéro de compte) |
| Flux préfixés | Nombre de flux | Par opération |
| Opérations | Nombre d’opérations | Par type de produit (Swap, Loan, …) |
Lancer l’import
Le bouton Lancer l'import reste inactif tant qu’un fichier n’est pas vérifié ou est porteur d’anomalies ; un message le rappelle sous la liste des emplacements. Si des emplacements sont encore vides, un clic sur le bouton les énumère au lieu de démarrer l’import, et les emplacements concernés sont signalés dans leur en-tête. Il en va de même des informations de la situation tant qu’elles ne sont pas enregistrées.
L’import démarre ensuite exactement comme un import par archive : la situation apparaît dans la liste avec le statut en cours, puis terminé, ou échec si l’import n’a pas pu construire la situation.
Statut de l’import
L’import se déroule en tâche de fond dans l’application. L’écran reste ouvert et le suit : « La situation est en cours d’import ; cette page en suit l’avancement. » Il relit le statut toutes les 3 secondes et affiche l’issue dès la fin de l’import :
| Issue | Message |
|---|---|
terminé |
« La situation est importée. » |
échec |
« L’import a échoué avec n erreur(s). », suivi des erreurs de l’import |
Les boutons Ouvrir la situation et Retour à la liste mènent ensuite à la situation (et à son journal des anomalies) ou à la liste des situations. Vous pouvez aussi quitter l’écran pendant l’import : il continue, et une notification annonce sa fin. Le détail est dans La tâche d’import.
Reprendre ou rouvrir un brouillon
Le bouton Terminer plus tard quitte l’écran sans rien perdre. Un brouillon apparaît dans la liste des situations avec le badge Brouillon ; le lien Reprendre le brouillon — également disponible dans le menu de la ligne — réouvre l’écran sur l’étape Fichiers.
Un import guidé qui a échoué peut être rouvert en brouillon depuis le menu de sa ligne : les fichiers déjà déposés sont conservés, seuls ceux qui posent problème sont à remplacer. Cette action n’est proposée que pour les situations construites fichier par fichier ; un import par archive doit être relancé depuis son archive.
Un brouillon sans activité depuis 30 jours est purgé automatiquement, avec les fichiers qu’il contient.
Partir d’une archive
À l’étape Configuration, Déposer une archive envoie une archive .zip non vide. Chaque fichier est rangé dans l’emplacement de son rôle, le brouillon s’ouvre sur l’étape Fichiers, et chaque fichier y est contrôlé comme s’il avait été déposé à la main. Rien n’est importé tant que le brouillon n’a pas été relu et soumis.
- Une archive complète — téléchargée depuis une situation (Archive complète d’une situation) — dit elle-même le rôle de chaque fichier, l’arrêté et la configuration. Il n’est pas nécessaire de choisir une configuration.
- Une autre archive est lue avec la configuration choisie au-dessus, qui est alors obligatoire. Les fichiers
model_*etclassification*sont reconnus à leur nom, tous les autres sont rangés dansOpérations: déplacez la balance, les flux préfixés et les courbes dans leur emplacement, puis saisissez et enregistrez les informations de la situation. Uninfo_*.jsonde l’archive n’est pas repris.
Archive complète d’une situation
Le bouton Télécharger la situation complète d’une situation produit situation_<référence>_<arrêté>.zip. Cette archive se réimporte telle quelle, dans le même espace ou dans un autre. Elle contient :
| Entrée | Contenu |
|---|---|
situation.json |
L’arrêté (referenceDate, portfolioName, portfolioReference, pivotCurrency, discountFactorIndex), le rôle de chaque fichier (files : RATE_CURVES, ACCOUNTING, CASHFLOWS, TRANSACTIONS) et la configuration utilisée (configuration : id, name, revision). formatVersion vaut 1. |
configuration.json |
La configuration client à la version utilisée par l’import, avec sa classification et ses modèles d’écoulement. |
| Les fichiers d’entrée | Courbes, balance, flux préfixés et opérations, sous leurs noms d’origine. |
Le classeur de classification et le model_*.json n’y figurent pas : configuration.json les remplace.
Au réimport, la configuration de configuration.json est recherchée dans l’espace. Une configuration existante n’est jamais modifiée. La règle appliquée est indiquée à l’ouverture du brouillon.
| Règle | Condition | Configuration utilisée |
|---|---|---|
| Même version | Même identifiant, même version et même contenu | Cette configuration, à cette version |
| Même mapping | Une configuration de l’espace a le même format de données et le même mapping | Cette configuration, à sa dernière version |
| Création | Aucune ne correspond | Une nouvelle configuration, <nom> (importée le jj/mm/aaaa), créée à partir du fichier |
L’API POST /api/v1/import garde le lancement direct de l’import : submit vaut true par défaut, et la tâche se suit comme celle de l’écran (La tâche d’import). Avec une archive complète, configurationId et discountFactorIndex deviennent facultatifs. Avec une autre archive, la requête donne la configuration, l’index, l’arrêté (referenceDate, pivotCurrency, et au besoin portfolioName, portfolioReference) et le rôle des fichiers (fileRoles) ; sans configuration, index, date ou devise, la tâche passe FAIL. submit: false laisse un brouillon, comme l’écran. Une demande qui porte un arrêté sans dire le rôle de chaque fichier est refusée à l’import (IMP-058). Le détail figure dans Informations de la situation.
Détail des fichiers
Informations Générales
Les informations de la situation ne forment plus un fichier : elles se saisissent à l’écran d’import (Renseigner les informations de la situation) et sont enregistrées avec le brouillon. Ce sont les suivantes ; seules les valeurs marquées [*] changent d’ordinaire d’une situation à l’autre.
| Champ | Contenu | Obligatoire |
|---|---|---|
Date de référence (referenceDate) |
[*] La date d’arrêté de la situation, au format aaaa-mm-jj |
oui |
Nom du portefeuille (portfolioName) |
Le nom du portefeuille importé, 100 caractères au plus | non |
Référence du portefeuille (portfolioReference) |
[*] Une référence du portefeuille, 100 caractères au plus |
non |
Index d'actualisation (discountFactorIndex) |
La courbe qui actualise les flux | oui |
Devise pivot (pivotCurrency) |
La devise des résultats, 3 caractères | oui |
La date de référence est aussi la date d’évaluation retenue pour la valorisation : il n’y a pas de champ distinct à renseigner.
- Le client n’est plus saisi : c’est celui de la configuration client. La façon de lire les fichiers est déterminée par le
format des donnéesde cette configuration. - L’index d’actualisation doit désigner une courbe que la configuration client sait construire (une clé de
compoundCurveou une valeur deindexes). Un index absent ou inconnu est refusé avant que l’import ne démarre, avec la liste des index possibles. Il est enregistré déjà résolu. - Les noms des fichiers ne se déclarent plus : chaque fichier est dans son emplacement.
Modèle d’écoulement
Le contenu d’un model_*.json se charge dans la section Modèles d’écoulement de la configuration client ; il n’est plus déposé avec la situation. Il décrit les stratégies d’écoulement appliquées aux postes du bilan qui ne portent pas d’opération financière (dépôts à vue, fonds propres, immobilisations…). Chaque stratégie précise le poste comptable visé, le taux à appliquer, la fréquence et l’horizon d’écoulement :
{
"outflowStrategies": [
{
"@type": "LinearOutflowStrategy",
"rate": { "type": "FIXED", "value": 0.015, "interestMode": "SIMPLE", "base": "EXACT_EXACT" },
"productName": "accounting",
"reference": "291200**",
"frequency": "YEAR",
"timeHorizon": "6Y"
}
]
}Une ligne de balance écoulée par une stratégie est classée sur la référence de la stratégie sans ses étoiles (291200), qui doit figurer dans l’onglet mapping_compta de la classification, et non sur son propre compte (Import Crédit Logement).
Les stratégies lues sont ensuite consultables dans le sous-onglet Modeled Outflows du détail de la situation.
Classification des transactions
Le classeur se charge dans la section Classification de la configuration client ; il n’est plus déposé avec la situation. C’est un classeur Excel qui relie les catégories comptables de la banque aux classes réglementaires. L’onglet mapping_compta associe chaque catégorie à un couple type d’actif / contrepartie (par exemple ASSET / Retail), et l’onglet mapping_compta_irrbb résout ce couple en code FINREP et en classe IRRBB pour les besoins des modèles EVE et MNI. Une opération reçoit son compte de l’onglet facultatif histo (numéro d’opération → compte) ou, à défaut, du mapping instrumentAccounts de la configuration client (Import Crédit Logement). Une ligne de mapping_compta sans catégorie est signalée par un avertissement et ne classe aucune opération. Les comptes de mapping_compta doivent être des cellules numériques : une ligne dont le compte est du texte est écartée en erreur.
Balances comptables
Extrait des balances comptables à la date d’arrêté, accepté sous deux formes :
- un classeur Excel (
.xlsx), dont l’ongleti1-balanceporte la balance ; les colonnes sont, dans l’ordre : date, numéro de compte, libellé du compte, montant ; - un fichier texte délimité (
.txtou.csv), sans ligne d’en-tête : la première ligne est déjà une ligne de compte. Le séparateur (;, tabulation,,ou|) est détecté sur cette première ligne, et les colonnes sont, dans l’ordre : numéro de compte, libellé du compte, montant, date au formatJJMMAAAA(30062025). Une ligne d’en-tête ajoutée serait lue comme un compte, et écartée en erreur.
Toute autre extension — comme un fichier de balance illisible — interrompt l’import, car les postes modélisés du bilan en dépendent.
Les montants sont lus dans les formats effectivement produits par les systèmes des banques : séparateur décimal , ou ., séparateurs de milliers en espace (y compris les espaces insécables produites par Excel), et notation scientifique. Un numéro de compte texte (comptes hors bilan H96…) est lu comme du texte. Lorsque les deux séparateurs sont présents, le plus à droite est le séparateur décimal (1,234.56 et 1.234,56 valent la même chose). Une cellule vide n’est pas interprétée comme un montant nul : la ligne est signalée en anomalie.
Cash Flows Pré-fixés
Classeur Excel portant les flux déjà fixés des opérations, utilisé en lieu et place du calcul pour les échéances connues. Les flux sont rattachés à l’opération dont ils portent la référence.
Courbes de taux
Le fichier des taux de marché est accepté sous deux formes : un classeur Excel, ou un fichier texte délimité par des points-virgules (.csv ou .txt). Dans les deux cas, une ligne d’en-tête nomme les colonnes — la première ligne du fichier délimité ; dans le classeur, la première ligne d’au moins huit cellules remplies de l’onglet qui porte les colonnes ci-dessous — et les colonnes suivantes, en minuscules, sont obligatoires :
| Colonne | Contenu |
|---|---|
ratename |
L’index de la courbe (par exemple EONIA, EURIBOR 6M SWAP) |
ratedate |
La date de cotation |
timeband |
La maturité du point de courbe |
offer |
Le taux, exprimé en pourcentage (2,40 pour 2,40 %) |
currency |
La devise de la courbe |
Les colonnes supplémentaires du fichier (bid, ratetype, INEO, …) sont ignorées. Dans un classeur, une ligne de moins de huit cellules remplies est ignorée : un classeur réduit aux cinq colonnes obligatoires ne donne aucune courbe (Import : traitements et conversions).
La colonne timeband accepte les libellés suivants ; tout autre libellé fait l’objet d’un avertissement et la ligne est ignorée :
| Libellé | Point de courbe |
|---|---|
ACTUAL |
Le jour même (point spot) |
OVERNIGHT |
1 jour |
<n> WEEKS / <n> WEEK |
n semaines |
<n> MONTHS / <n> MONTH |
n mois |
<n> YEARS / <n> YEAR |
n années |
Exemple de fichier délimité :
bid;currency;INEO;offer;ratedate;ratename;ratetype;timeband
2,10;EUR;;2,10;31/03/2026 18:00;EONIA;End of Day;ACTUAL
2,40;EUR;;2,40;31/03/2026 18:00;EONIA;End of Day;OVERNIGHT
2,60;EUR;;2,60;31/03/2026 18:00;EONIA;End of Day;1 MONTH
3,00;EUR;;3,00;31/03/2026 18:00;EONIA;End of Day;1 YEAR
Dans un fichier délimité, la date de cotation est au format dd/MM/yyyy HH:mm. Dans un classeur, ratedate doit être une vraie date Excel : une date saisie en texte interrompt l’import (Import Crédit Logement).
Une courbe cotée à plus de 50 jours de la date d’arrêté — avant comme après — fait l’objet d’un avertissement nommant l’écart : la courbe est construite, mais elle ne décrit pas le marché de l’arrêté. Ce contrôle n’est possible qu’à l’import, la date d’arrêté n’étant pas connue lors de la vérification du fichier de taux seul.
Opérations
Les opérations financières sont réparties sur un ou plusieurs fichiers, généralement un par famille de produits (swaps, prêts et emprunts, titres, pensions…). Les colonnes attendues sont celles déclarées dans la partie model de la configuration client, et les valeurs des colonnes de produit et de convention doivent être couvertes par ses mappings. Une colonne nommée dans le mapping doit exister dans le fichier, même vide. Les règles appliquées ligne par ligne au format Crédit Logement — sens des opérations monétaires, base des jambes de swap, encours restant, calls, compte comptable par défaut — sont décrites dans Import Crédit Logement.
Contrôles de cohérence des index
Les courbes de taux sont la source d’erreur la plus fréquente, parce qu’elles font intervenir trois éléments qui doivent s’accorder : la configuration client, le fichier de taux et les opérations. Trois contrôles y veillent.
- Chaque index mappé doit exister dans le fichier de taux. Toutes les valeurs de
indexeset toutes les courbes élémentaires descompoundCurvede la configuration client sont recherchées dans le fichier de taux dès sa lecture. Un index introuvable fait l’objet d’une erreur portée sur le fichier de taux, qui nomme l’index manquant et les libellés de la banque qui le visent. La comparaison ignore la casse et les espaces superflus. - L’index d’actualisation doit être connu. Un index absent ou que la configuration client ne sait pas construire est refusé avant le démarrage de l’import (voir plus haut).
- Une opération citant un taux non mappé est conservée. Lorsqu’une opération porte un libellé de taux absent de
indexes, elle n’est plus rejetée : un avertissement nommant le libellé à ajouter est émis, et l’opération est valorisée. Une opération à taux fixe l’est sans changement ; une opération à taux variable dont le libellé désigne malgré tout une courbe du fichier utilise cette courbe ; à défaut, elle est valorisée au taux qu’elle porte actuellement. Le mapping reste à compléter, mais l’arrêté est exploitable et le nombre d’opérations du portefeuille reste juste.
Les mappings de produit et de classification restent bloquants : une opération dont le produit n’est pas mappé est rejetée, car la solution ne saurait pas quel modèle de calcul lui appliquer.
Exemple de situation d’import
Télécharger un exemple de fichier d’import.
Cette archive d’exemple n’est plus importable en l’état : son RT_indices.txt suit l’ancien format index;valeur;date sans ligne d’en-tête, et son mapping_cl.json mappe tous les libellés sur des index (ISWAP, ISAP) que le fichier de taux ne porte pas. Elle ne contient plus d’info_*.json : ses informations de la situation se saisissent à l’écran (date de référence 2024-12-31, portefeuille Swap Portfolio, référence ptf_swap_1_31_12_24, index DISCOUNT_EUR, devise EUR). Elle reste utile comme illustration de la composition d’une situation, mais pas comme jeu d’essai ; référez-vous aux formats décrits ci-dessus.