Projet · 2025—2026

Taux sans risque effectif

Le taux sans risque n'est pas un seul chiffre. Il dépend de l'échéance, du marché et de la convention que le calcul attend. Ce moteur règle la question. Choisissez une date, prenez les États-Unis ou le Canada, et obtenez le taux effectif dans la forme exacte requise par chaque application, à partir de deux courbes en direct côte à côte.

Rôle Seul concepteur et développeur Pile Python, JavaScript pur, GitHub Actions Données Fed de New York, FRED, Banque du Canada

01 Aperçu

Un taux, exprimé comme chaque usage l'exige

Demandez le taux sans risque à trois pupitres et vous obtenez trois réponses. Le pupitre d'options veut un taux continu en base ACT/365 pour Black-Scholes. Le pupitre obligataire veut un rendement équivalent obligataire semestriel. Le pupitre monétaire veut un taux simple, et la base est ACT/360 aux États-Unis mais ACT/365 au Canada. Même idée, habits différents.

Je voulais un outil qui garde l'idée fixe et ne change que les habits. Tout le moteur repose sur une seule primitive, le facteur d'actualisation pour un horizon donné. Chaque taux coté en découle, donc le taux d'options, le taux obligataire, le taux monétaire et le taux à terme implicite restent cohérents entre eux par construction.

Il couvre deux marchés. Les États-Unis, avec les rendements du Trésor via FRED et le SOFR pris directement auprès de la Fed de New York qui le publie, et le Canada, via la Banque du Canada. Chaque marché montre une courbe zéro gouvernementale et une courbe ancrée sur le taux à un jour, pour lire d'un coup le taux sans risque et le taux de financement.

Le bon taux est celui coté dans la convention que votre modèle suppose déjà. Le reste est une erreur d'arrondi qui attend son heure.

02 Ce qu'il calcule

À partir du facteur d'actualisation

Une primitive, quatre conventions, deux courbes, deux marchés.

Toutes les conventions

Continu ACT/365 pour les grecques d'options, équivalent obligataire semestriel pour la valorisation, et taux monétaires simples sur la bonne base ACT/360 ou ACT/365. Le tout à partir d'un seul facteur d'actualisation.

Deux courbes par marché

Une courbe zéro gouvernementale amorcée à partir des taux au pair, et une courbe ancrée sur le taux à un jour réalisé. Lisez le taux sans risque et le taux de financement l'un contre l'autre.

Toute échéance

Saisissez une date ou une durée jusqu'à l'échéance et la courbe est interpolée sur-le-champ, de façon log-linéaire sur le facteur d'actualisation, ce qui maintient le taux à terme constant entre les nœuds. Des pastilles rapides mènent aux fenêtres publiées, de 1 mois à 30 ans. L'axe du graphique est un choix distinct : linéaire sur les six premiers mois, puis logarithmique, de sorte qu'une option à trois mois et une obligation à trente ans restent toutes deux lisibles sur un même axe.

Taux à terme implicites

Choisissez deux dates futures et obtenez le taux à terme entre elles, sous forme continue et simple, directement à partir du rapport des facteurs d'actualisation.

Là où s'arrêtent les données

La courbe à un jour est constituée de données publiées jusqu'à 180 jours. Au-delà, elle devient une approximation étiquetée, car aucun flux gratuit ne porte de cotations de swap OIS. L'outil trace la limite sur le graphique et la signale dans le tableau.

Conçu pour la lecture

Choisissez un marché, puis travaillez en français ou en anglais, en thème clair ou sombre. Un onglet méthodologie liste les séries exactes derrière chaque courbe avec leur propre date d'observation.

03 Sous le capot

Le calcul des courbes en Python, la valorisation dans le navigateur

Une tâche Python planifiée récupère les données et amorce les courbes. Les taux au pair gouvernementaux passent par la récurrence obligataire au pair semestrielle standard vers les facteurs d'actualisation zéro-coupon. Le court terme ancré sur le taux à un jour est authentique : côté américain, ce sont les moyennes SOFR officielles à 30, 90 et 180 jours de la Fed de New York, et côté canadien l'indice composé CORRA, où le facteur d'actualisation sur une fenêtre est le rapport exact réalisé de l'indice, sans aucune hypothèse de décompte des jours.

La version d'origine faisait tourner un petit serveur qui gardait la clé FRED et valorisait à la demande. Pour la version publique je l'ai retournée. La tâche écrit un instantané statique par marché, et le calcul de valorisation est porté dans le navigateur, donc l'interpolation du facteur d'actualisation et sa conversion dans chaque convention se font sur votre appareil. Aucun serveur à faire tourner, aucune clé exposée, et le chargement est instantané.

Une action GitHub reconstruit les deux marchés chaque jour ouvrable à 9 h 00 (HE), puis valide les instantanés pour que le site se redéploie tout seul. La clé FRED n'existe que comme secret chiffré du dépôt. Les flux de la Fed de New York et de la Banque du Canada ne demandent aucune clé.

Python API Fed de New York API FRED Banque du Canada Valet GitHub Actions JavaScript pur Interface bilingue

04 Méthode

La courbe, écrite noir sur blanc

Deux décisions définissent une courbe. Ce qui se trouve aux nœuds, et ce qui se passe entre eux. La première est une question de données et la section précédente y répond. La seconde est un choix de modélisation, et c'est celle que la plupart des outils laissent dans l'ombre.

La primitive

Tout est facteur d'actualisation. Le taux zéro continu n'est pas un second objet, c'est le même nombre lu sur une échelle logarithmique.

DF(t) = ez(t)t , z(t)= lnDF(t) t
Le temps est en ACT/365 partout dans l'objet courbe. Les conventions de décompte des jours arrivent plus tard, au moment de la cotation, de sorte que la courbe elle-même ne porte jamais de convention.

Interpolation : log-linéaire sur les facteurs d'actualisation

Entre deux nœuds, la courbe interpole linéairement dans le temps le logarithme du facteur d'actualisation. Chaque valeur que le calculateur renvoie à une échéance qui n'est pas un terme publié provient de cette seule règle.

lnDF(t) = lnDF(ti) + tti ti+1ti [ lnDF(ti+1) lnDF(ti) ]
De façon équivalente, le taux à terme instantané est constant par morceaux. Dériver la droite ci-dessus donne un taux à terme plat sur chaque intervalle, soit la même méthode sous son autre nom.
f(t) = d dt lnDF(t) = lnDF(ti) lnDF(ti+1) ti+1ti , t(ti,ti+1]
Au-delà du dernier nœud, la règle se prolonge au lieu de s'arrêter : le taux à terme du dernier intervalle est maintenu plat, donc la courbe ne se courbe jamais sur des preuves qu'elle n'a pas. Le même traitement s'applique avant le premier nœud.

Pourquoi cette méthode plutôt qu'une autre

Trois raisons, par ordre d'importance ici.

Elle est sans arbitrage par construction. Tant que les nœuds ont des facteurs d'actualisation décroissants, aucun point interpolé ne peut produire un taux à terme négatif, car le taux à terme sur chaque intervalle est une constante unique déduite des extrémités. La propriété est structurelle plutôt qu'à vérifier après coup.

Elle reproduit les nœuds exactement. Demandez le taux à 180 jours et la moyenne SOFR publiée ressort inchangée plutôt qu'approchée, ce qui est précisément l'aller-retour sur lequel s'appuie la section Provenance.

Elle n'oscille pas. Une spline cubique passant par les mêmes nœuds paraît plus lisse et le paie en taux à terme qui ondulent entre les points, devenant parfois négatifs près d'une cassure dans les rendements d'entrée. Le compromis est mauvais pour une courbe dont tout le métier est d'être lue à des échéances arbitraires. La méthode monotone convexe est la véritable marche au-dessus et c'est la bonne réponse quand il faut des taux à terme lisses et bien tenus pour un modèle de structure par terme. Pour coter un facteur d'actualisation, elle apporte très peu par rapport aux taux à terme constants par morceaux, et elle coûte la reproduction exacte des nœuds évoquée plus haut.

D'où viennent les nœuds

Les taux au pair gouvernementaux sont amorcés sur une grille semestrielle. Chaque nœud est résolu à partir des précédents, ce qui est la récurrence obligataire au pair standard écrite comme une substitution avant.

DF(Tn) = 1c k=1 n1 DF(Tk) 1+c , c= y(Tn) 2 , Tn= n2
Une obligation au pair vaut 1, donc son flux de coupons et son principal doivent s'actualiser au pair. Résoudre cette identité pour le facteur d'actualisation le plus récent donne la ligne ci-dessus. Les taux au pair entre les termes publiés sont interpolés linéairement avant d'entrer dans la récurrence, et l'amorçage lève une erreur plutôt que de borner si un rendement d'entrée implique un facteur d'actualisation impossible.

Le court terme à un jour n'est pas amorcé du tout, car les administrateurs publient directement la capitalisation réalisée. Une moyenne SOFR sur une fenêtre est un taux monétaire simple, et l'indice composé CORRA est un niveau dont le rapport est déjà un facteur d'actualisation sans aucune hypothèse de décompte des jours.

DF(t) = 1 1+rd360 DF(t) = I(t0) I(t)
À gauche, une moyenne SOFR publiée r sur d jours en base ACT/360. À droite, l'indice composé CORRA I, où le facteur d'actualisation réalisé est un rapport d'indice exact.

Au-delà de la dernière fenêtre à un jour publiée, la courbe est une approximation étiquetée, et voici la formule ainsi étiquetée. Un écart unique est mesuré à l'ancrage puis ajouté à la courbe zéro gouvernementale, de sorte que la forme au-delà de ce point est celle de la courbe gouvernementale et ne porte aucune information indépendante sur le taux à un jour.

zon(t) = zgov(t) +s , s= zon(ta) zgov(ta) , t>ta
L'ancrage ta est à 180 jours, la dernière fenêtre publiée. Le calculateur étiquette chaque valeur au-delà, le graphique passe la ligne en pointillés, et l'onglet méthodologie affiche l'écart mesuré en points de base.

Lire le facteur d'actualisation

Les conventions relèvent de la cotation, pas de la modélisation. Un facteur d'actualisation, quatre façons de le dire, avec d le nombre réel de jours calendaires jusqu'à l'échéance.

rcont = lnDFd/365 rann = DF365/d1 rsemi = 2(DF365/2d1) r360 = (1DF1)360d r365 = (1DF1)365d
  • r_cont continu ACT/365, le taux que Black-Scholes attend dans e−rT
  • r_semi équivalent obligataire semestriel, pour la valorisation obligataire
  • r_360 simple ACT/360, marché monétaire et swaps américains; r_365 est la même idée en base canadienne

Les taux à terme découlent de la même primitive sous forme de rapport, ce qui explique qu'ils ne puissent pas contredire les taux au comptant ci-dessus.

DF(t1,t2) = DF(t2) DF(t1) , fcont = lnDF(t1,t2) (d2d1)/365
Le facteur d'actualisation à terme se télescope, donc capitaliser le taux à terme d'aujourd'hui jusqu'à t1 puis jusqu'à t2 redonne exactement DF(t2). La suite de tests vérifie cette identité au lieu de lui faire confiance.

Ce que la construction refuse de publier

Les formules ne valent que les données qui les traversent, donc la tâche quotidienne valide avant d'écrire. Une courbe doit avoir des facteurs d'actualisation strictement décroissants, ce qui revient à dire aucun taux à terme négatif nulle part, et chaque taux zéro stocké doit faire l'aller-retour avec son propre facteur d'actualisation. La nouvelle courbe est ensuite comparée à l'instantané de la veille, et un mouvement au-delà du seuil sur n'importe quel terme fait échouer l'exécution. Un marché qui échoue conserve son fichier précédent et l'action passe au rouge. Rien de cassé n'atteint le site en silence.

Chaque instantané accepté est conservé sous sa propre date au lieu d'écraser un fichier unique, donc la sortie est une série temporelle interrogeable, pas seulement une lecture en direct.

Le calcul ci-dessus est testé, pas simplement affirmé. La récurrence obligataire au pair est vérifiée contre sa forme fermée, chaque convention fait l'aller-retour vers le facteur d'actualisation dont elle provient, l'identité des taux à terme est contrôlée, et le portage vers le navigateur est extrait du JavaScript livré puis exécuté contre le moteur Python sur les instantanés en production, de sorte que les deux ne peuvent pas diverger. La suite tourne à chaque poussée.

La tâche de rafraîchissement exécute cette suite avant d'avoir le droit de toucher aux données. Un test qui échoue arrête l'exécution, donc un instantané ne peut atteindre ce site que si la suite est passée sur le commit même qui l'a produit. L'état ci-dessous est lu dans l'instantané publié plutôt que sur un serveur de build, suivant le même principe que le reste de la page : montrer l'artefact, pas une affirmation à son sujet.

05 Provenance

Allez au pupitre qui publie le chiffre

Le SOFR est d'abord entré dans le moteur par FRED, ce qui était commode et faux d'un cran. FRED redistribue le SOFR. La Fed de New York l'administre. Remonter d'un maillon dans la chaîne a coûté un après-midi et rapporté trois choses : la précision publiée complète, cinq décimales sur les moyennes là où la copie redistribuée les avait arrondies; des données le matin même plutôt qu'un décalage de plusieurs jours; et l'indice SOFR officiel, accompagné des indicateurs de révision qui signalent qu'une publication a été corrigée.

Il existe un test discret pour savoir si une courbe respecte ses intrants. Demandez à celle-ci le taux à 180 jours en base simple ACT/360 et elle rend la moyenne à 180 jours publiée par la Fed de New York, inchangée. Le facteur d'actualisation n'est pas une approximation du chiffre officiel, c'est le chiffre officiel dans une autre convention. Tout ce que le moteur en dérive à cet horizon hérite de la même fidélité.

Cette précision a aussi clarifié où commence l'honnêteté. La courbe à un jour est constituée de données réellement publiées jusqu'à 180 jours, de sorte qu'une option à six mois est valorisée sur un taux réel, pas sur une inférence. Au-delà de 180 jours, le moteur n'a aucune cotation de swap OIS pour amorcer, et il le dit plutôt que de prolonger discrètement une ligne. Savoir exactement où s'arrêtent les preuves est la partie que la plupart des outils passent sous silence.

Un chiffre ne vaut que la distance qui vous sépare de celui qui l'a calculé.

Le SOFR, les moyennes SOFR et l'indice SOFR proviennent de la Federal Reserve Bank of New York; les rendements au pair du Trésor américain de FRED (Banque fédérale de réserve de Saint-Louis); les rendements de référence canadiens, les bons du Trésor et le CORRA de la Banque du Canada. Rafraîchi chaque jour ouvrable. Usage éducatif seulement, pas un conseil en placement. La courbe ancrée sur le taux à un jour, au-delà de son ancrage à 180 jours, est une approximation étiquetée, pas une courbe d'actualisation OIS amorcée.

Obtenez le taux dans la bonne convention

Choisissez un marché et une échéance, et lisez le taux sans risque effectif comme votre modèle l'attend.