Fiches produits

Une fiche par famille de produits. Chaque fiche décrit : le générateur qui la traite, l’échéancier, les formules des flux de capital et d’intérêt, la certitude, la différence entre vue contractuelle et vue comportementale, et les cas particuliers. Les notations sont celles de la page Méthodologie ; les mécanismes communs (taux forward, décomposition du coupon, certitude, date de repricing) sont au chapitre 1.

Produits couverts

Produit Type (@type) Fiche
Prêt / emprunt in fine InFineLoan 2.1
Dépôt à terme TermDeposit 2.1
Prêt amortissable AmortizableLoan 2.2
Titre (obligation) SecurityPosition 2.3
Swap de taux Swap 2.4
Repo / pension livrée Repo 2.5
Dépôt sans échéance (dépôt à vue, épargne) Deposit 2.6
Solde comptable AccountingBalance 2.7
Fonds propres, nantissement, option — 2.8

Le moteur produit les flux de chaque opération dans chacun des 8 scénarios et pour les deux origines . Sauf mention contraire, seuls les flux payés après la date d’arrêté (\(t_k > t_0\)) sont produits.

Les certitudes indiquées dans les tableaux valent pour le portefeuille existant : pour une opération de production nouvelle (renouvellement du bilan constant), tous les flux sont incertains (§1.8).


2.1 Prêt in fine et dépôt à terme

Données utilisées : nominal \(N\), date de début \(t_s\), date de fin \(t_e\), date de call \(t_c\) (facultative), périodicité de paiement des intérêts, taux (type, valeur, spread \(m\), base, mode d’intérêt).

Signe

\[\varepsilon = s \times \begin{cases} -1 & \text{prêt in fine (la banque décaisse au départ)} \\ +1 & \text{dépôt à terme (la banque encaisse au départ)} \end{cases}\]

L’échange initial porte \(\varepsilon\), les coupons et le remboursement portent \(-\varepsilon\). Pour un prêt accordé : décaissement \(-N\), coupons positifs, remboursement \(+N\).

Échéancier

Les périodes sont construites en avançant depuis la date de début, de période en période (\(t_k = t_{k-1} + 1\) mois / trimestre / semestre / an), la dernière étant tronquée à \(t_e\) :

\[[t_s, t_1],\ [t_1, t_2],\ \dots,\ [t_{n-1}, t_e]\]

Flux

Flux Date Montant Certitude
INITIAL (si \(t_s > t_0\)) \(t_s\) \(\varepsilon \cdot N\) CERTAIN
Coupon \(k\) (si \(t_k > t_0\)) \(t_k\) \(-\varepsilon \cdot I_k\) voir §1.8
FINAL (si \(t_e > t_0\)) \(t_e\) \(-\varepsilon \cdot N\) CERTAIN

avec le coupon calculé sur le nominal entier, selon le mode d’intérêt du taux :

\[I_k = N \cdot R_k \cdot \tau_B(t_{k-1}, t_k) \quad (\texttt{SIMPLE}) \qquad I_k = N \cdot \big[(1+R_k)^{\tau_B(t_{k-1}, t_k)} - 1\big] \quad (\texttt{COMPOUND})\]

  • Taux fixe : \(R_k = r + m\), constant.
  • Taux variable : \(R_k = r_{taux,k} + m\), où \(r_{taux,k}\) suit l’ordre de priorité du §1.7 — en règle générale le forward \(F(\max(t_{k-1}, t_0),\ t_k)\) de l’index, lu sur la courbe BASELINE si le coupon est certain (coupon en cours) et sur la courbe du scénario sinon.

Paiement des intérêts à l’échéance (AT_MATURITY) : un seul coupon couvrant toute la vie, \(I = N \cdot R \cdot \tau_B(t_s, t_e)\) (ou sa version composée), payé en \(t_e\). Il est certain dès que l’opération a commencé (\(t_s \le t_0\)).

Sans taux : seuls les flux de capital sont produits, avec un avertissement.

Vue comportementale (call)

  • Taux périodique : le coupon qui chevauche le call (début \(< t_c <\) fin, avec \(t_c > t_0\)) est proratisé jusqu’au call, \(I_{stub} = N \cdot R \cdot \tau_B(t_{k-1}, t_c)\) (ou version composée), et payé au call avec le remboursement ; les coupons suivants sont supprimés.
  • Taux AT_MATURITY : le coupon est recalculé sur \([t_s, t_c]\).
  • Remboursement : à \(\min(t_c, t_e)\).
  • Call passé (\(t_c \le t_0\)) : l’opération est déjà remboursée, la vue comportementale ne produit aucun flux (ni coupon ni remboursement), comme un titre appelé (§2.3).

Sans date de call, la vue comportementale est identique à la vue contractuelle.

Exemple

Prêt in fine accordé de 1 000 000 €, du 31/03/2025 au 31/03/2028, 3 % fixe, intérêts annuels, Exact/365 simple, arrêté au 30/06/2025 :

Date Nature Montant Certitude
31/03/2026 Intérêt (365 j) \(1\,000\,000 \times 3\,\% \times 365/365 = 30\,000\) certain, couru \(91/365\)
31/03/2027 Intérêt 30 000 certain
31/03/2028 Intérêt (366 j) \(1\,000\,000 \times 3\,\% \times 366/365 = 30\,082{,}19\) certain
31/03/2028 Capital FINAL 1 000 000 certain

2.2 Prêt amortissable

Données utilisées : montant initial \(A\), date de début \(t_s\), nombre d’échéances \(n\), périodicité (paymentPeriod, \(p\) échéances par an), type d’amortissement (instalmentType), taux.

Échéancier

L’échéancier complet est reconstruit depuis la date de début sur les \(n\) échéances, \(t_k = t_{k-1} + 1\) période ; seules les échéances \(t_k > t_0\) produisent des flux, mais le rang \(k\) de l’échéance est compté depuis l’origine du prêt (le capital restant dû à l’arrêté découle donc du tableau contractuel, pas d’un encours importé).

Taux de la période

\[R_k = r_{taux,k} + m \qquad j_k = \frac{R_k}{p}\]

  • Taux fixe : \(r_{taux,k} = r\).
  • Taux variable : les règles du §1.7 — pas d’index → taux porté par l’opération ; mode LAST_FIXING et échéance incertaine → dernier taux connu ; sinon forward \(F(\max(t_{k-1}, t_0),\ t_k)\) sur la courbe BASELINE (échéance certaine) ou du scénario (échéance incertaine). Pour l’échéance en cours, le fixing connu de l’opération est utilisé lorsqu’il est fourni (règle 2 du §1.7).

Le taux périodique est \(R_k / p\) : la base de calcul et le mode d’intérêt du taux ne sont pas utilisés pour ce produit.

Échéances constantes (FIX_INSTALLMENT)

Annuité, intérêt et capital de l’échéance \(k\) (formules PMT / IPMT d’un tableur) :

\[PMT_k = A \cdot \frac{j_k}{1 - (1 + j_k)^{-n}}\]

\[CRD_{k-1} = A\,(1+j_k)^{k-1} - PMT_k \cdot \frac{(1+j_k)^{k-1} - 1}{j_k} \qquad I_k = j_k \cdot CRD_{k-1} \qquad K_k = PMT_k - I_k\]

(si \(j_k = 0\) : \(PMT_k = A/n\), \(I_k = 0\)). Pour un taux variable, l’annuité est recalculée à chaque échéance avec le taux de la période, sur le tableau d’origine.

Amortissement constant (FIX_AMORTIZATION)

\[K_k = \frac{A}{n} \qquad CRD_{k-1} = A \cdot \frac{n - k + 1}{n} \qquad I_k = CRD_{k-1} \cdot \frac{R_k}{p}\]

Flux

Flux Date Montant Certitude
INITIAL (si \(t_s > t_0\)) \(t_s\) \(-s \cdot A\) CERTAIN
Capital \(k\) \(t_k\) \(+s \cdot K_k\) CERTAIN (le tableau est contractuel), UNCERTAIN en production nouvelle
Intérêt \(k\) \(t_k\) \(+s \cdot I_k\) règle du §1.8

La part de capital est certaine même quand le coupon de la même échéance ne l’est pas : le montant amorti ne dépend pas du taux (pour l’amortissement constant ; pour l’échéance constante, voir §6.3).

Vue comportementale

Identique à la vue contractuelle : aucun remboursement anticipé (CPR) n’est modélisé.

Exemple

Prêt de 120 000 €, 12 mensualités constantes, 6 % fixe, arrêté avant la première échéance : \(j = 0{,}5\,\%\), \(PMT = 120\,000 \times 0{,}005 / (1 - 1{,}005^{-12}) = 10\,327{,}97\). Échéance 1 : \(I_1 = 600{,}00\), \(K_1 = 9\,727{,}97\) ; échéance 2 : \(CRD_1 = 110\,272{,}03\), \(I_2 = 551{,}36\), \(K_2 = 9\,776{,}61\) ; etc.


2.3 Titre (obligation)

Données utilisées : nominal \(N\), prime (facultative), date de début \(t_s\), date d’échéance \(t_e\), date de call \(t_c\) (facultative), fréquence de coupon (\(p\) par an), taux.

Flux

Flux Date Montant Certitude
INITIAL (si \(t_s > t_0\)) \(t_s\) \(-s \cdot (N - \text{prime})\) CERTAIN
Coupon \(k\) (si \(t_k > t_0\)) \(t_k\) \(+s \cdot I_k\) règle du §1.8
FINAL (si \(t_e > t_0\)) \(t_e\) \(+s \cdot N\) CERTAIN

L’échéancier avance depuis \(t_s\) de période en période jusqu’à \(t_e\). Si l’échéance ne tombe pas sur une date du calendrier de coupons, le dernier coupon est un coupon brisé jusqu’à l’échéance, calculé comme le stub de call ci-dessous : \(I = N \cdot R \cdot \tau_B(t_{k-1}, t_e)\), au taux de sa propre période \([t_{k-1}, t_e]\).

Coupon périodique

Le coupon est une fraction \(1/p\) du taux annuel, sans base de calcul :

\[I_k = \frac{N \cdot R_k}{p} \qquad R_k = r_{taux,k} + m\]

Pour un taux variable, \(r_{taux,k}\) est : le taux porté par l’opération (pas d’index) ; le fixing connu pour le coupon en cours (certain) ; le dernier taux connu en mode LAST_FIXING ; sinon, comme pour les autres produits, le forward de l’index sur la période du coupon \(F_B(\max(t_{k-1}, t_0),\ t_k)\), dans la base du taux (§1.4). Le coupon en cours lit donc le taux simple de l’arrêté à la fin de sa période, \(F_B(t_0, t_k)\) ; un coupon à venir, le forward de sa propre période, et non le taux de l’arrêté à sa date de paiement. Le préfixing reste prioritaire sur le coupon certain.

Coupon unique (AT_MATURITY)

Un titre sans coupon périodique a un seul coupon couvrant toute sa vie, avec la base et le mode d’intérêt du taux : \(I = N \cdot R \cdot \tau_B(t_s, t_e)\) (ou version composée). Un zéro-coupon (taux nul) ne produit donc que ses flux de capital.

Vue comportementale (call émetteur)

Si \(t_c < t_e\) :

  • les coupons payés jusqu’au call sont conservés ;
  • le coupon qui chevauche le call (début \(< t_c <\) fin, avec \(t_c > t_0\)) est proratisé jusqu’au call, au taux de sa période raccourcie, \(F_B(\max(t_{k-1}, t_0),\ t_c)\) pour un taux variable : \[I_{stub} = N \cdot R \cdot \tau_B(t_{k-1}, t_c)\]
  • les coupons suivants sont supprimés ;
  • le nominal est remboursé en \(t_c\).

2.4 Swap de taux

Chaque jambe (leg1, leg2) est générée séparément et ses flux portent le nom de la jambe (LEG1 / LEG2) comme produit.

Données utilisées : date de début \(t_s\), date de fin \(t_e\), date de call \(t_c\) (facultative) ; par jambe : sens (payée / reçue), nominal \(N\), fréquence, construction de l’échéancier (FORWARD / BACKWARD), taux.

Signe d’une jambe

\[\varepsilon = s \times \begin{cases} +1 & \text{jambe reçue (}\texttt{RECEIVING}\text{)} \\ -1 & \text{jambe payée (}\texttt{PAYING}\text{)} \end{cases}\]

Échéancier

Soit \(t_{fin} = \min(t_c, t_e)\).

  • FORWARD : périodes construites depuis \(t_s\) en avançant, la dernière tronquée à \(t_{fin}\).
  • BACKWARD : périodes construites depuis \(t_{fin}\) en reculant, la première tronquée à \(t_s\) (période brisée en début de vie).
  • Fréquence AT_MATURITY : un seul coupon sur \([t_s, t_e]\).

Seules les périodes payées après \(t_0\) sont retenues ; le coupon en cours (commencé avant \(t_0\)) en fait partie.

Coupon

Le coupon d’une jambe est toujours en intérêts simples sur la fraction d’année de la période :

\[I_k = N \cdot R_k \cdot \tau_B(t_{k-1}, t_k)\]

  • Jambe fixe : \(R = r + m\) (valeur contractuelle + spread). Coupons CERTAIN. La composante RATE est \(r\) ; le spread apparaît dans la composante MARGIN.
  • Jambe variable : \(R_k = r_{taux,k} + m\). La valeur rate.value de la jambe (dernier fixing, à titre informatif dans les fichiers d’import) n’est pas ajoutée. \(r_{taux,k}\) est le forward \(F(\max(t_{k-1}, t_0),\ t_k)\) de l’index — sur la courbe BASELINE pour le coupon en cours (certain), sur la courbe du scénario pour les coupons à venir (incertains) — ou, à défaut d’index, le taux porté par la jambe, ou, en mode LAST_FIXING, le dernier taux connu. Un coupon dont le forward ne peut être calculé est ignoré, avec une erreur.

Échanges de nominal

Flux Date Montant
INITIAL (si \(t_s > t_0\)) \(t_s\) \(-\varepsilon \cdot N\)
FINAL, jambe fixe \(\min(t_c, t_e)\) \(+\varepsilon \cdot N\)
FINAL, jambe variable prochaine date de repricing : fin du dernier coupon certain ; à défaut, fin du premier coupon à venir ; à défaut \(\min(t_c, t_e)\) \(+\varepsilon \cdot N\)

Les échanges de nominal fictifs n’ont pas d’effet net sur un swap mono-devise dont les deux jambes ont le même nominal, mais ils portent la sensibilité de chaque jambe : la jambe fixe se comporte comme une obligation à taux fixe jusqu’à l’échéance, la jambe variable comme un placement jusqu’au prochain refixing.

Vue comportementale

Le call s’applique aux deux vues : les coupons après le call sont supprimés et le nominal est échangé au call, en contractuel comme en comportemental. Les deux vues d’un swap sont donc identiques.

Exemple

Swap payeur fixe 2 % contre Euribor 3M + 0, nominal 10 M€, trimestriel, arrêté au 30/06/2025, dernier fixing le 15/05/2025 :

  • jambe payée fixe : coupons \(-10\,000\,000 \times 2\,\% \times \tau\) à chaque trimestre, certains, nominal \(-10\) M€ à l’échéance ;
  • jambe reçue variable : coupon du 15/08/2025 certain (forward lu sur la courbe BASELINE de \(t_0\) au 15/08/2025), coupons suivants incertains (forwards de la courbe du scénario), nominal \(+10\) M€ positionné au 15/08/2025.

2.5 Repo / pension livrée

Seule la jambe espèces est modélisée : les titres remis en garantie reviennent à leur propriétaire au dénouement et leurs coupons ne changent pas de mains, ils ne portent donc pas de risque de taux pour la banque.

Données utilisées : montant d’espèces \(N\) (originalFaceValue), dates de début \(t_s\) et de fin \(t_e\), date de call (facultative), taux du repo.

Flux

Le repo est traité comme un placement / emprunt in fine dont l’intérêt est payé à l’échéance. \(\varepsilon = -s\) : une prise en pension est un actif, une mise en pension un passif.

Flux Date Montant Certitude
INITIAL (si \(t_s > t_0\)) \(t_s\) \(\varepsilon \cdot N\) CERTAIN
Intérêt \(t_e\) \(-\varepsilon \cdot N \cdot R \cdot \tau_B(t_s, t_e)\) (ou version composée) certain dès que le repo a commencé
FINAL \(t_e\) \(-\varepsilon \cdot N\) CERTAIN

Un repo échu (\(t_e \le t_0\)) ne produit que son éventuel échange initial. Sans taux exploitable, seuls les flux de capital sont produits.

Vue comportementale

Avec un call antérieur à l’échéance, l’intérêt est recalculé sur \([t_s, t_c]\) et le remboursement a lieu en \(t_c\). Un call passé (\(t_c \le t_0\)) ne laisse aucun flux comportemental : le repo est déjà dénoué.


2.6 Dépôt sans échéance

Opérations Deposit : dépôts à vue, comptes d’épargne.

Un dépôt sans échéance n’a pas d’échéancier contractuel : son écoulement est conventionnel. La loi d’écoulement est cherchée dans la stratégie de bilan de la situation, par nom de produit et par origine : une loi peut être définie pour la vue contractuelle et une autre pour la vue comportementale. Sans loi pour une origine, l’opération est en erreur.

Échange initial

Si le dépôt démarre après l’arrêté : \(+N\) en \(t_s\) (dans les deux vues).

Loi par buckets

La loi donne, pour chaque bucket \(b_j\) (1m, 3m, 1y, …), la part \(w_j\) de l’encours qui s’écoule à \(t_0 + b_j\). Les parts doivent sommer à 1 (à \(10^{-6}\) près) ; sinon l’opération est rejetée, plutôt que de déclarer silencieusement 80 % ou 120 % de l’encours. Les buckets sont parcourus dans l’ordre calendaire (\(T_j = t_0 + b_j\)).

\[\text{Tranche}_j = w_j \cdot N \qquad RD_{j-1} = N - \sum_{i<j} \text{Tranche}_i\]

Flux Date Montant
Capital \(j\) \(T_j\) \(\text{Tranche}_j\)
Intérêt \(j\) \(T_j\) \(I_j = RD_{j-1} \cdot r \cdot \tau_B(T_{j-1}, T_j)\) (ou version composée), avec \(T_0 = t_0\)

L’intérêt de chaque tranche court sur l’encours encore présent au bilan entre le bucket précédent et le sien. Le taux est celui du dépôt :

  • taux fixe : rate.value seul (sans spread), composantes liquidité et marge nulles ;
  • taux variable : le coupon de chaque tranche est calculé comme un coupon in fine sur la période \([T_{j-1}, T_j]\) — composante taux selon les règles du §1.7 (en général le forward de l’index), plus le spread, avec la base et le mode d’intérêt du taux et la décomposition taux / liquidité / marge.

Le signe des flux est celui du montant importé.

Chaque flux, tranches de capital comprises, porte le taux du dépôt : c’est ce taux qui le range dans le bloc taux fixe ou taux variable de J 05.00 – J 07.00 (§3.6), et le capital d’un dépôt à taux variable est placé à son prochain repricing (§1.9). Un dépôt sans taux est lu comme un dépôt non rémunéré, à taux fixe 0 % : intérêts nuls, capital dans le bloc taux fixe, un avertissement par dépôt.

Certitude : capital certain (incertain en production nouvelle) ; intérêt selon la règle sans période du §1.8 (certain pour un taux fixe).

Loi par script

La loi est une fonction Python exécutée par GraalPy, qui reçoit le contexte, l’opération, le dépôt et les paramètres outflow_period_in_days = 100 et frequency_in_days = 5, et renvoie directement la liste des flux. Un flux renvoyé sans taux reçoit celui du dépôt. Une erreur d’exécution est journalisée et l’opération n’a pas de flux pour cette origine.

Exemple

Dépôt rémunéré à 1 % de 1 000 000 €, loi : 20 % à 1 mois, 30 % à 1 an, 50 % à 5 ans, arrêté au 30/06/2025, Exact/365 simple :

Date Capital Encours rémunéré Intérêt
30/07/2025 200 000 1 000 000 \(1\,000\,000 \times 1\,\% \times 30/365 = 821{,}92\)
30/06/2026 300 000 800 000 \(800\,000 \times 1\,\% \times 335/365 = 7\,342{,}47\)
30/06/2030 500 000 500 000 \(500\,000 \times 1\,\% \times 1461/365 = 20\,013{,}70\)

2.7 Solde comptable

Opérations AccountingBalance : encours issus de la balance comptable (lignes ACCOUNTING), rattachés à une loi d’écoulement par préfixe de compte lors de l’import. Chaque ligne de balance donne une seule opération : elle va à la loi dont le préfixe (la référence sans les *) est le plus long parmi ceux que son compte prolonge. Une loi dont le préfixe est déjà déclaré est ignorée (la première déclarée s’applique) et signalée en WARNING ; une ligne que plusieurs préfixes couvrent est signalée en WARNING avec la loi retenue.

Loi par buckets

Même mécanique que le dépôt sans échéance (§2.6) : tranche \(w_j \cdot N\) en \(T_j\), intérêt sur l’encours restant \(RD_{j-1} \cdot r \cdot \tau_B(T_{j-1}, T_j)\) au taux du solde (fixe ou variable, comme pour le dépôt). Les deux vues sont identiques. Le capital est toujours certain ; le taux, le montant et la certitude de l’intérêt sont tous lus sur le taux du solde lui-même.

Loi linéaire

La loi linéaire est convertie en loi par buckets. Avec un horizon \(H\) et une fréquence \(f\) (mois, trimestre, semestre, an), le nombre de tranches \(n\) est le nombre de pas de \(f\) nécessaires pour atteindre \(t_0 + H\) ; la tranche \(i\) s’écoule à \(t_0 + i \cdot f\) (bornée par l’horizon) avec la part :

\[w_i = \text{arrondi}_4\!\left(\frac{1}{n}\right) \quad (i < n) \qquad w_n = \text{arrondi}_4\!\left(1 - (n-1)\,w_1\right)\]

Exemple : horizon 1 an, fréquence mensuelle → 12 tranches de 8,33 % à \(t_0\) + 1 mois, \(t_0\) + 2 mois, …, la dernière (à \(t_0\) + 12 mois) à 8,37 %.

Une loi par script n’est pas acceptée pour un solde comptable (erreur).


2.8 Produits sans générateur

Les fonds propres, les nantissements (Nantissement) et les options (Option) n’ont pas de générateur de flux : une opération de ce type est signalée en erreur (« Cashflow Generator does not exist ») et n’entre dans aucun indicateur IRRBB. Les fonds propres sont exclus de l’EVE par construction réglementaire.


2.9 Synthèse

Produit Base / mode du coupon Taux variable lu par Vue comportementale Capital variable positionné à
Prêt in fine, dépôt à terme \(\tau_B\), simple ou composé forward sur la période call : coupons coupés, remboursement au call prochain repricing (§1.9)
Prêt amortissable \(R/p\) forward sur la période identique au contractuel prochain repricing (§1.9)
Titre \(R/p\) (coupon périodique), \(\tau_B\) (coupon unique, coupon brisé à l’échéance, stub de call) forward sur la période call : stub proratisé, remboursement au call prochain repricing (§1.9)
Swap \(\tau_B\), simple forward sur la période identique (call appliqué aux deux vues) prochain repricing (générateur et §1.9)
Repo \(\tau_B\), simple ou composé forward sur la durée call : intérêt et remboursement au call prochain repricing (§1.9)
Dépôt sans échéance \(\tau_B\) par tranche forward sur la tranche loi propre à chaque origine prochain repricing (§1.9)
Solde comptable \(\tau_B\) par tranche forward sur la tranche identique —