>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Jupyter

Comment calculer les risques et les prix des dérivés en Python à la vitesse du C++

Si vous avez déjà essayé d'écrire des modèles financiers pour le pricing d'options, de swaps ou d'obligations en Python, vous avez probablement rencontré un dilemme bien connu. D'un côté, vous avez le pur Python lent, où les simulations Monte Carlo prennent trop de temps. De l'autre côté, il y a des bibliothèques lourdes comme QuantLib avec des wrappers C++, où la lecture du code source ou le débogage du comportement des modèles devient une tâche non triviale.

La bibliothèque FinancePy offre une approche différente. Elle a été créée par Dominic O'Kane, un ancien professeur de finance à l'EDHEC Business School avec douze ans d'expérience dans le secteur financier. Il s'est donné pour mission de développer un outil open source où tout le code est écrit en Python, et où les résultats des calculs sont aussi proches que possible des systèmes professionnels comme Bloomberg.

Comment le projet est structuré

L'architecture de la bibliothèque repose sur un concept clair. Tout calcul d'évaluation est décrit par la formule :

Évaluation = Produit + Modèle + Marché

En code, cela semble logique. Les modules de la bibliothèque sont divisés en plusieurs répertoires principaux :

  • utils : dates, calendriers financiers et générateurs de calendriers de paiements
  • market : courbes de taux, surfaces de volatilité et prix du marché
  • models : modèles mathématiques de pricing du Black-Scholes au modèle de Vasicek
  • products : instruments spécifiques, répartis en catégories Obligations, Crédit, Actions, FX et Taux

Chaque produit possède une méthode value(). Vous créez un objet instrument financier, vous lui transmettez un modèle et la situation actuelle du marché, puis vous obtenez la valeur ou les paramètres de risque. Pour la plupart des produits, l'auteur a ajouté des simulations Monte Carlo. Cela aide à comprendre comment les paiements de contrats évoluent dans le temps.

Comment la vitesse est atteinte

FinancePy est écrit en pur Python, mais utilise activement la bibliothèque Numba. Lors du premier appel de fonction, le compilateur JIT transforme les mathématiques du modèle en code machine. De ce fait, la première importation d'un module peut prendre quelques secondes.

Cependant, tous les appels suivants prennent des fractions de milliseconde. Les fonctions compilées sont stockées en cache. Vous obtenez ainsi une vitesse de niveau C/C++ tout en conservant la possibilité d'ouvrir un fichier de code source et de lire l'algorithme ligne par ligne sans compiler Cython ni écrire d'extensions C.

Un exemple clair et des notebooks

L'installation se fait avec un appel pip standard :

pip install financepy

Vous pouvez ensuite importer les utilitaires de dates :

from financepy.utils import Date

start_date = Date(19, 2, 2026)
future_date = start_date.add_days(2)
print(future_date) # 21-FEB-2026

Les développeurs n'auront pas à deviner les signatures des fonctions à partir du code source. Dans le dépôt, vous trouverez plus de 90 Jupyter notebooks avec des exemples prêts à l'emploi. Ceux-ci contiennent des scénarios détaillés : de l'évaluation de base d'obligations d'entreprise et des options barrières sur devises à la construction de courbes d'actualisation complexes et de swaps sur défaut de crédit.

Style de code et contribution

L'auteur évite délibérément l'héritage complexe et les architectures surchargées. La lisibilité et la performance sont prioritaires par rapport aux astuces de langage élaborées. Une simple boucle for dans le code FinancePy est préférée à une compréhension de liste élaborée, car Numba optimise les boucles régulières plus efficacement.

Si vous souhaitez soumettre une pull request au projet, l'auteur a des exigences claires :

  • Conformité stricte avec la norme PEP8
  • Commentaires clairs pour chaque fonction et classe
  • Présence de tests unitaires et d'au moins un test d'intégration pour chaque méthode

Faut-il l'utiliser

FinancePy convient aux analystes quantitatifs, aux gestionnaires de risques et de portefeuille qui ont besoin d'un outil clair pour une vérification rapide des prix et des sensibilités. Le projet sera également utile aux étudiants et aux enseignants de cours de finance pour l'apprentissage des mathématiques des dérivés.

Le projet ne nécessite que NumPy, SciPy et Numba comme dépendances. La licence GPL-3.0 donne accès à tout le code source. Le projet est en statut bêta, et l'auteur avertit honnêtement des éventuelles divergences dans la génération de dates ou les méthodes d'interpolation par rapport aux terminaux propriétaires. Cependant, pour la recherche personnelle, le test de stratégies de trading et l'évaluation rapide de dérivés, les capacités de la bibliothèque sont plus que suffisantes.

Projets similaires