RAPPORT DE STAGE STAGE D INGÉNIEUR FINANCIER RÉPLICATION DE CALCULS Présenté par Benjamin GUILLET Elève ingénieur en Mathématiques Appliquées et Modélisation (MAM) Parcours Informatique et Mathématiques Appliquées à la Finance et à l Assurance (IMAFA) Anne-Marie HUGUES... Tuteur académique Philippe ESCOFFIER... Maître de stage Misys 6 rue Godefroy 92800 PUTEAUX ÉCOLE POLYTECHNIQUE DE L UNIVERSITÉ DE NICE-SOPHIA ANTIPOLIS Département Mathématiques Appliquées et Modélisation 930 Route des Colles - 06903 SOPHIA ANTIPOLIS Tél +33 (0)4 92 96 50 50 Fax +33 (0)4 92 96 50 55 www.polytech.unice.fr
SOMMAIRE Sommaire... 2 Remerciements... 3 I. Introduction... 4 I.1 Rôles de l ingénieur financier... 4 I.1.1 Spécification... 4 I.1.2 Validation... 4 I.2 Composition de l équipe d ingénierie financière... 5 II. Travaux proposés... 6 III. Travaux effectués... 7 III.1 Participation aux projets... 7 III.1.1 Kondor+ Services... 7 III.1.2 Genesis... 8 III.1.3 Bilan... 8 III.2 Corrections de bugs... 9 III.2.1 Options sur futures... 9 III.2.2 FX Points Digit... 9 III.3 Réplication d algorithme de génération de courbes de taux... 10 III.3.1 Méthodes de calcul... 11 III.3.2 Calcul des coefficients d actualisation... 14 III.3.1 Gestion des calendriers... 20 III.3.2 Interface graphique et connexion aux bases de données... 23 III.4 Organisation du travail... 25 IV. Conclusion... 26 V. Annexes... 27 V.1 Présentation de l entreprise... 27 V.1.1 Thomson Reuters Financial Software... 27 V.1.2 Turaz... 27 V.1.3 Misys... 28 V.2 Méthode agile Scrum... 28 V.2.1 Personnes composant une équipe Scrum... 28 V.2.2 Les éléments clefs de Scrum... 29 V.2.3 Moments clefs d un sprint lors d un projet Scrum... 29 V.3 Environnement de travail... 30 V.3.1 Kondor+... 30 V.3.2 JIRA... 32 V.4 Méthode de Newton-Raphson... 33 V.4.1 Définition... 33 V.4.2 Application lors de l implémentation... 34 V.5 Démonstration de la relation avec un taux zéro-coupon constant... 34 Liste des figures... 35 Bibliographie... 35 Table des matières... 36 Résumé - Abstract... 38
REMERCIEMENTS Par ces lignes, je tenais à remercier les personnes qui ont fait de ce stage un moment très enrichissant en termes de connaissances et de compétences acquises, mais également un moment convivial et agréable au quotidien. Je tiens à remercier particulièrement les personnes que j ai côtoyées au sein des projets Kondor+ Services (Olivier Collard, Mohamed El Ouadi, Alexei Perchine et Franck Sicard) et Genesis (Mathieu Barcikowski, Fazil Bennai, Guy Dauchet, Gerard Iglesias, Adnene Manai et Diego Vallarta). Par leurs explications et leur considération, elles ont su parfaitement m intégrer dans leurs équipes. Je remercie également toute l équipe d ingénierie financière pour sa disponibilité et sa bonne humeur tout au long de mon stage. L ambiance de travail a toujours été très plaisante durant les six mois que nous avons partagés. Enfin je tenais à remercier Pierre Perras, ingénieur financier senior, de qui je dépendais directement. Il a su me faire confiance et me mettre à l aise dès le début de mon stage. Par la suite, il a partagé avec moi ses connaissances, en faisant preuve d une grande pédagogie. Il m a également intégré aux deux projets sur lesquels il travaillait et n hésitait pas à me déléguer certaines tâches qui lui étaient dédiées. Les six mois en sa compagnie on été une expérience très enrichissante, aussi je tenais à le remercier particulièrement pour son temps, ses explications et la confiance qu il a eu en moi. -3-
I. INTRODUCTION Dans le cadre de mon cycle ingénieur, j ai effectué mon stage de fin d études d une durée de six mois au sein de la société Misys (ex Thomson Reuters). Misys est un éditeur de logiciels spécialisé dans les progiciels financiers destinés aux établissements bancaires (pour plus d informations sur l entreprise, se référer à l annexe 1). Partenaire emblématique de la filière IMAFA, cette société regroupe un nombre important d anciens élèves de la formation et vient chaque année proposer des stages lors d une journée de recrutement organisée dans les locaux de l école. A l issue du processus de recrutement, j ai intégré l équipe d ingénierie financière. Au sein de l entreprise, l ingénieur financier tient une place centrale dans le cadre du développement des produits puisque son rôle se situe aux extrémités de la chaine de fabrication d un module. Les deux fonctions principales de l ingénieur financier sont la spécification et la validation. I.1 Rôles de l ingénieur financier I.1.1 Spécification La première tâche de l ingénieur financier est de spécifier, i.e. d expliquer précisément comment doit être intégrée une nouvelle fonctionnalité. Cette tâche est avant tout une tâche de conception et de renseignement : la première phase consiste à imaginer comment le logiciel peut intégrer une nouvelle fonctionnalité en cherchant par exemple au sein de quelle fenêtre viendront s ajouter les fonctionnalités. Vient ensuite la phase plus quantitative où l ingénieur doit spécifier l ensemble des formules régissant le produit ou le modèle à implémenter. A l issue du travail d explication un document de spécification est rédigé (une «spec» dans le vocabulaire de l entreprise) qui sera le manifeste et le guide d utilisation du nouveau module au sein du logiciel. Le document de spécification est ensuite transféré à l équipe de développement qui sera chargée de l implémentation. Cette implémentation effectuée, une équipe de test vérifiera que les algorithmes fonctionnent correctement, puis le produit développé sera intégré sur la version interne du logiciel afin d être validée. C est là que l ingénieur financier exercera sa seconde fonction principale, la validation. I.1.2 Validation La validation consiste à vérifier que, bien que ne provoquant aucun problème d ordre informatique, l algorithme implémenté permet d obtenir les résultats attendus d après les formules rédigées dans le document de spécification. Si ce n est pas le cas, l ingénieur financier envoie un retour de «bug» vers l équipe de développement, expliquant que le comportement n est pas identique à celui attendu et s ensuit une boucle jusqu à ce que le produit fini ait un comportement correct. L ingénieur valide alors le module qui peut ensuite être transféré aux services de gestion de produits, puis présentés et vendus dans les versions du logiciel. -4-
I.2 Composition de l équipe d ingénierie financière Au sein de l entreprise, l équipe d ingénierie financière est une équipe de taille réduite. En effet, pendant la durée de mon stage elle était composée de seulement 11 personnes, dont 4 stagiaires ou apprentis. La spécificité de cette équipe réside dans son aspect transverse : avec le déploiement des méthodes agiles, les ingénieurs financiers ont été amenés à apporter leur expertise sur de nombreux projets. C est un des atouts de cette équipe, puisqu à travers l ensemble des ingénieurs de l équipe, on parvient à appréhender une grande partie des projets en cours dans l entreprise. Pour plus de clarté quant à l organisation de l équipe, j ai réalisé un organigramme en décrivant la hiérarchie : Figure 1 : Organigramme de l équipe d ingénierie financière au sein de Misys -5-
II. TRAVAUX PROPOSÉS J ai intégré l équipe d ingénierie financière avec un sujet de stage intitulé «réplication de calculs» et portant sur la réplication de calculs financiers, notamment sur les courbes de taux. Le voici tel qu il apparait sur ma convention de stage : L objectif du stage sera de mettre en place des feuilles de calculs Excel pour les applications suivantes : Réplication d algorithme de génération de courbes et de surfaces de volatilité Réplication de calculs de P&L pour chaque instrument financier Calculs de greeks correspondant à des scénarios de bump définis Réplication de calculs de prix théoriques sur des options Lors de mes différents échanges avec mon responsable de stage dans la période précédant mon entrée dans l équipe, celui-ci m a indiqué que je ne serai certainement pas limité à ce travail et que je pourrais également être amené à intervenir sur d autres projets. Aujourd hui le logiciel Kondor+ intègre un éventail très large de fonctionnalités et de calculs financiers. Dans le cadre de validations de nouvelles implémentations ou d investigations lorsqu un bug est confirmé, un ingénieur financier peut être chargé de refaire ces calculs dans le but de valider les résultats du logiciel. Si ces calculs sont longs, et doivent être répétés, il devient alors judicieux d automatiser le procédé en fournissant un outil de validation. C est ce travail que j ai réalisé sur les courbes de taux, afin de fournir un outil permettant de calculer les coefficients d actualisation sur une courbe passée en paramètre. Une courbe de taux, est la fonction qui à une date donnée et pour chaque maturité en abscisse, indique le niveau du taux d intérêt associé en ordonnée. Cette courbe correspond à une date donnée : c est une «photo» de la structure par termes des taux d intérêts à cette date. Le terme «courbe de taux» suggère l idée d une représentation géométrique, néanmoins celle-ci n est pas indispensable : on peut en effet se contenter d analyser les valeurs numériques sans visualiser de courbe. Il existe en réalité une multitude de courbes de taux, car peuvent varier : (1) La nature du taux représenté (2) Les instruments de marché à partir desquels la courbe est construite Concernant le point (1), on peut en effet représenter un taux de marché en fonction de sa maturité : taux swap, taux de rendement obligataire, taux FRA, etc. On parle dans ce cas de courbe de marché car le taux représenté est directement observable dans le marché. A l inverse, une courbe peut représenter un taux implicite, non observable en tant que tel : taux zéro-coupon ou taux forward (futur) instantané par exemple. Il s agit alors d une courbe implicite. Lors de mon stage j ai travaillé sur la construction de courbes de taux zéro-coupon à partir de courbes de marché. Pour comprendre la nature de ces courbes il est nécessaire de rappeler ce qu est un zéro-coupon : le zéro-coupon de maturité T est le titre financier qui verse un flux unique de 1 euro (une unité monétaire) à la date T, On note DF(t) sa valeur à la date. Cette grandeur est également appelée facteur d actualisation (discount factor en anglais) L intérêt de la courbe zéro-coupon est clair : comme elle permet d obtenir la valeur des zérocoupons pour toute maturité T, on pourra par son biais calculer le prix de n importe quel instrument à revenus fixes, et plus généralement celui des instruments standards. -6-
III. TRAVAUX EFFECTUÉS Mon travail au sein de l équipe d ingénierie financière peut se décomposer en trois parties : la première se rapporte aux projets auxquels j ai progressivement été intégré, la seconde comprend la résolution de bugs sur des aspects financiers du logiciel Kondor+, tandis que la troisième consiste en la construction d une feuille de calcul sous Excel qui reproduit la construction d une courbe de taux zéro-coupon. III.1 Participation aux projets Durant ma période de stage, j ai participé à deux projets de l entreprise : Kondor+ Services et Genesis. Mon responsable direct, Pierre Perras, étant l ingénieur financier rattaché à ces deux projets, je l ai assisté dans ses tâches quotidiennes. La gestion de ces projets est faite selon la méthode agile Scrum : le projet est découpé en incréments (sprints) d une durée moyenne de trois semaines, avec une courte réunion chaque matin (daily Scrum) lors de laquelle nous échangeons sur ce que nous avons effectué la veille, sur ce que nous allons faire le jour même et, le cas échéant, sur les difficultés que nous avons rencontrées. (Plus d informations sur la méthode agile Scrum sont disponibles en annexe 2). III.1.1 Kondor+ Services Dès le début de mon stage, j ai été intégré au sein d un groupe de projet composé de 5 personnes. Ce projet a pour objectif de fournir des services qui pourront être utilisés dans d autres projets de l entreprise, principalement dans Genesis. L un des objectifs principaux était de travailler sur les deals «transients» ou transitoires. Ce sont des transactions qui ne sont pas encore stockées en base de données, elles permettent à l utilisateur de faire des simulations sans impacter les données. Il y a notamment eu un important travail réalisé sur les scénarios de modification des courbes de taux : on modifie des taux dans une courbe et celle-ci doit être recalibrée correctement. Aussi j ai pu tester l implémentation de ma réplication au sein de ce projet. Mon travail quotidien a d abord consisté en la préparation de scénarios de tests permettant de valider l implémentation des développeurs. Une fois que les développeurs me fournissaient les résultats correspondant aux scenarios définis, j étais alors chargé de vérifier leur exactitude. Finalement, si ces derniers ne correspondaient pas aux résultats attendus je remontais le problème aux développeurs pour qu ils corrigent leur implémentation. J ai par la suite travaillé sur les règles de saisie d un swap. Pour l intégration de l interface de saisie des transactions au sein du projet Genesis, il a été demandé à l équipe Kondor+ Services de travailler sur un moteur de règles permettant à l utilisateur de saisir les informations de manière interactive. Ce moteur de règles utilise un nouveau format de transaction appelé KRecord créé par l équipe d ingénierie financière, plus générique, et appelé à remplacer le format actuel de Kondor+ dans les prochaines années. Un exemple simple de règle sur un swap est que si l on choisit la devise à utiliser sur l une des deux jambes, on applique une règle afin d affecter la valeur de la devise à l autre jambe. Un grand nombre de règles sont ainsi appliquées, celles-ci pouvant être de 3 types : rendre visible ou cacher un champ, griser ou dégriser un champ et enfin affecter une valeur à un champ. Pour ce dernier cas d utilisation, des fonctions complexes sont parfois nécessaires, permettant notamment de gérer les jours fériés en fonction des calendriers correspondant aux devises sélectionnées. -7-
Concrètement, mon travail a été de faire fonctionner le moteur de règles et de tester son comportement lors de l exécution des règles. J ai pour cela eu accès au projet Java d un des développeurs de l équipe, et ai travaillé en utilisant un modèle de transaction vide, un fichier de test Java et un fichier de règles (en format XML). Je modifiais les valeurs du modèle dans le fichier de test, et lançais l exécution du moteur de règles pour voir les champs impactés. Une sortie console m affichait alors les champs modifiés par les règles avec leurs nouvelles valeurs. J ai alors pu remonter au développeur les différents problèmes d utilisation rencontrés afin qu il puisse améliorer le fonctionnement du moteur de règles. J ai également commencé la saisie des règles pour un swap. En utilisant comme support l interface de Kondor+, j ai écrit les règles de saisie en les adaptant au nouveau modèle KRecord. Le but n était pas d écrire toutes les règles pour un swap mais de travailler sur de petits périmètres (indexation, méthodes d intérêts ). En effet, la saisie complète des règles devait être réalisée par un développeur, chargé de récupérer informatiquement les règles de saisie de Kondor+ et de les retranscrire dans le nouveau format KRecord. J ai finalement pu rédiger plus de 60 règles d utilisation pour la saisie d un swap. III.1.2 Genesis Le projet Genesis est un projet ayant pour but de définir une nouvelle interface graphique pour le logiciel Kondor+. En ayant pris la mesure des imperfections de l interface actuelle, les développeurs se sont attelés à proposer un outil au design novateur. Pour cela, ceux-ci se sont appuyés sur la solution de développement Flex d Adobe. L équipe de Genesis se compose de 6 développeurs auxquels vient s ajouter un ingénieur financier, Pierre Perras. A partir du mois de juin, Pierre m a intégré dans l équipe et j ai travaillé à ses cotés sur le projet jusqu'à la fin de mon stage. Une partie de mon travail consistait à tester l application et à remonter les bugs d affichage ou les lenteurs d exécution de l application. D un autre coté, j étais également chargé de vérifier la validité des données financières affichées dans Genesis et le cas échéant, de rechercher d où pouvait provenir l erreur. III.1.3 Bilan Outre les connaissances techniques et financières que j ai pu acquérir dans le cadre de ma participation aux projets, j ai appris beaucoup de la gestion de projets au sein d une grande entreprise. En faisant partie de ces deux projets, j ai ainsi pu suivre au quotidien la vie d une équipe d ingénieurs. Les différentes réunions ont été très enrichissantes, notamment la rétrospective de fin de sprint lors de laquelle un tour de table est réalisé afin d exprimer ses impressions sur le déroulement du sprint et sur les possibilités d amélioration de l équipe. On notera que pour faciliter la transition aux méthodes agiles, certains projets (notamment Genesis) reçoivent l apport d un consultant agile extérieur à l entreprise qui vient faire le point régulièrement avec l équipe et apporter son point de vue sur la conduite du projet. -8-
III.2 Corrections de bugs Une seconde partie de mon travail a consisté au suivi de la résolution de bugs sur le logiciel Kondor+. En effet, sur des problématiques financières, les ingénieurs financiers peuvent être appelés à spécifier les formules à utiliser lors de la correction de bugs et à valider cette correction en en vérifiant le comportement. Ce sont des travaux ponctuels, qui ne durent généralement pas plus d une semaine. Cette partie sera l occasion de présenter brièvement les problématiques que j ai pu rencontrer lors de mon travail sur ces derniers. III.2.1 Options sur futures Lors de l exécution d un rapport permettant de visualiser différentes informations sur les options sur futures ayant l or comme sous-jacent contenues dans un portefeuille, il avait été constaté qu un certain nombre de grandeurs étaient nulles. Une correction ayant été apportée, j ai alors été chargé de vérifier la validité des résultats en reproduisant les calculs. Pour cela, j ai réutilisé le document de spécification de la correction et refait chacun des calculs sur Excel afin de comparer avec les résultats de la correction. Finalement, j ai rapporté les erreurs que j avais rencontrées afin que les développeurs corrigent leur implémentation. III.2.2 FX Points Digit Les forward fx points sont la différence entre la valeur spot (à la date de valeur) d un taux de change entre deux devises, et la valeur dans le futur de ce même taux. Ces points peuvent être intégrés dans une courbe de taux et il est possible de récupérer leurs valeurs en temps réel via un outil d information en temps réel du type Reuters Eikon. Lors de l import des valeurs dans une courbe de taux, un utilisateur avait relevé un mauvais comportement et s était tourné vers l équipe d ingénierie financière pour identifier le problème. Celui-ci constatait que les valeurs affichées étaient divisées d une puissance de dix par rapport aux résultats attendus. Après investigation, il s est avéré que l import devait prendre en compte à la fois les digits de l outil de temps réel et les digits de la paire des devises. En effet, lorsque l outil de temps réel fournit son information sur les fx points, il utilise une certaine valeur pour ajuster ces points : imaginons qu aujourd hui l EUR/USD s échange à 1.2288 pour la date spot et que le forward à 3 mois soit de 1.3288 pour cette même paire. Alors avec un facteur (digit) de 3 les fx points de maturité 3 mois auront pour valeur 100 (. Mais une valeur de digit est aussi configurée dans Kondor+ pour chaque paire (typiquement égal à 4). Après plusieurs échanges avec l utilisateur afin de comprendre au mieux ses besoins, il est apparu que la formule correcte à utiliser pour intégrer correctement ces points dans la courbe de taux était :. Une fois cette formule identifiée, j ai spécifié la correction de ce bug afin que la formule soit implémentée par un développeur. -9-
III.3 Réplication d algorithme de génération de courbes de taux Le sujet principal de mon stage consiste en la réplication de calculs effectués par le progiciel Kondor+, notamment sur la construction de courbes de taux zéro-coupon. Cette construction repose non seulement sur les instruments qui composent la courbe mais aussi sur les différents paramètres de calculs choisis par l utilisateur. Voici ci-dessous (Figure 2) un aperçu de l interface de construction d une courbe de taux, telle qu elle peut apparaître pour un trader. Figure 2 : Interface de construction d une courbe de taux dans Kondor+ A première vue, on constate qu un grand nombre de champs (pour la plupart des listes déroulantes) sont laissés au libre choix de l utilisateur. Derrière ces listes déroulantes, il existe différents paramètres qui influenceront les méthodes de calcul de la courbe. On se propose de décrire brièvement les principaux éléments de construction de la courbe : La devise utilisée (ici EUR pour l euro) est notifiée en dessous des noms de la courbe. On précise à droite le spot lag, i.e. le nombre de jours entre la date de transaction et la date de valeur, exprimé en jours ouvrés (option «standard») ou en jours calendaires (option «calendar»). «Curve type» désigne le type de courbe utilisé, «Discount Factor» la méthode de calcul des taux zéro-coupon à partir des coefficients d actualisation et «Roll Conv.» le mode de report choisi pour les ajustements de dates. Dans la partie intermédiaire de l interface est précisée la méthode d interpolation désirée et la grandeur sur laquelle elle est appliquée. On exprime en dessous la méthodologie de construction de la courbe : Newton-Raphson ou Bootstrap. Les courbes de type Bootstrap sont des courbes de taux qui calculent les coefficients d actualisation de manière itérative. Par exemple pour déterminer le coefficient d actualisation d un swap de maturité 15 ans, il est nécessaire d avoir déterminé au préalable tous les coefficients d actualisation pour chacune des années 1 à 14. D autre part, ces courbes de taux ne peuvent -10-
comporter que des taux de dépôt, des taux swaps et des futures/fra. Ce type de courbe est assez limité et ne permet pas de choisir quels taux utiliser, tous les taux disponibles étant utilisés lors de la construction de la courbe. Les courbes Newton-Raphson sont quant à elles beaucoup plus souples, elles peuvent être construites à partir des taux de dépôt, des taux swaps des futures/fra, d obligations, de forward fx points et permettent d ajuster les taux en fin de mois et en fin d année. Ce type de courbe hybride faite à partir de produits très différents permet ainsi d utiliser les instruments les plus liquides de chaque marché. On choisit quel taux utiliser pour chaque instrument lors de la définition de la courbe, et tous les types d instruments sont facultatifs. La méthode de Newton-Raphson représente chaque instrument comme une série de flux avec une valeur actualisée nulle, il suffit ensuite de résoudre un système pour déterminer le coefficient d actualisation correspondant. Il n est pas nécessaire de connaître toutes les informations comme pour une courbe Bootstrap, celles manquantes étant interpolées lors de la résolution numérique du système. En dessous est précisée la convention de décompte des jours utilisée. Cette dernière sera utilisée afin de déterminer la relation entre le coefficient d actualisation et le taux zéro-coupon. Les 5 boutons alignés en bas de la fenêtre sont les liens qui nous permettront de choisir parmi les différents instruments proposés afin de construire notre courbe de taux. III.3.1 Méthodes de calcul Apres avoir précisé la nature des paramètres, intéressons-nous maintenant à leur influence sur le calcul. Ce travail est celui que j ai jusqu'à présent réalisé de manière progressive, d abord sur Excel puis sur VBA, dans le but de reproduire les calculs de la construction d une courbe de taux zéro-coupon. III.3.1.1 Coefficient d actualisation Le champ «Discount Factor» de la définition de la courbe de taux détermine la méthode que le logiciel utilise pour calculer le coefficient d actualisation (discount factor en anglais) à partir des taux zéro-coupon. Ces méthodes sont les suivantes : Simple : Par intérêts composés : Exponentielle : Où DF est le coefficient d actualisation, ZC le taux zéro-coupon et YF la fraction d années séparant aujourd hui et la date que l on souhaite actualiser. -11-
III.3.1.2 Interpolation Pour trouver la valeur d un taux zéro-coupon Z c à un date donnée t c, il est parfois nécessaire d interpoler le taux entre deux valeurs connues de la courbe : Z a à la date t a et Z b à la date t b. Pour cela on dispose de 5 méthodes différentes: Linéaire : Logarithmique : Cubique : Quadratique : Spline cubique (non usitée) III.3.1.3 Application de l interpolation Dans le cas d une interpolation linéaire, l utilisateur peut choisir sur quelle valeur il veut appliquer son interpolation : Les taux zéro-coupon L inverse du coefficient d actualisation Le logarithme du coefficient d actualisation Pour les autres types d interpolation, cette dernière se fera toujours sur les taux zéro-coupon. III.3.1.4 Ajustement de dates Dans les cas où les dates de maturités calculées échoient en dehors de jours ouvrés (week-ends, jours fériés, ) il est nécessaire d appliquer un ajustement sur ces dates, on parle alors de report. On distingue 5 modes de report : Following : Report au jour ouvré suivant. Modified following : Report au jour ouvré suivant sauf si l on change de mois : dans ce cas, on reporte au dernier jour ouvré du mois en cours. Preceding : Report au jour ouvré précédent. Modified preceding : Report au jour ouvré précédent sauf si l on change de mois : dans ce cas, on reporte au premier jour ouvré du mois en cours. None : Aucun report (on reste sur le jour en question). -12-
III.3.1.5 Base de zéro-coupon Nous avons rencontré précédemment la notion de fraction d années (year fraction en anglais). En fonction de la base que l on choisit, cette grandeur peut être calculée de différentes façons ; on liste ici les plus couramment utilisées: 30/360 : Le nombre de jours entre les dates D 1 et D 2 est déterminé en considérant que l année comporte 360 jours (12 mois de 30 jours). La fraction d année est donnée par : Où les Y i, M i et DD i représentent respectivement l année, le mois et le jour de la date D i. ACT/360 : On divise n, le nombre de jours calendaires entre D 1 et D 2, par 360. ACT/365 : On divise n, le nombre de jours calendaires entre D 1 et D 2, par 365. ACT/365.25 : On divise n, le nombre de jours calendaires entre D 1 et D 2, par 362.25. ACT/ACT : Si la période entre les dates D 1 et D 2 est inférieure à 2 ans, le calcul de la fraction d années se fait de la manière suivante : Où : n 1 est le nombre de jours calendaires entre la date D 1 et le 1 er janvier de l année suivante. n 2 est le nombre de jours calendaires entre le 1 er janvier de l année de la date D 2 et la date D 2. B 1 est le nombre de jours de l année de la date D 1 (365 ou 366). B 2 est le nombre de jours de l année de la date D 2 (365 ou 366). Si la période entre D 1 et D 2 couvre plus de deux ans, la fraction d année entre les deux dates est donnée par : Avec Y 1 l année de la date D 1 et Y 2 l année de la date D 2. -13-
III.3.2 Calcul des coefficients d actualisation Le logiciel Kondor+ permet, à partir des dates de maturité des instruments et des taux de marché, de construire une courbe zéro-coupon. En utilisant le logiciel Excel, j étais chargé de reproduire les calculs qui permettent cette construction et de finalement comparer mes résultats à ceux du logiciel. Voici comment est représentée la courbe dans Kondor+ : Figure 3 : Courbe de taux dans Kondor+ Cette courbe est composée de différents types d instruments (visibles dans la première colonne du tableau) : des money market, des futures et des swaps. Auxquels peuvent également s ajouter des fx points et des bonds. Etudions alors pour chaque type d instruments les méthodes de calcul des coefficients d actualisation : III.3.2.1 Money Market Le marché monétaire (money market en anglais) est le marché sur lequel les institutions financières empruntent et prêtent de l argent. Ces contrats sont de courtes durées, n excédant généralement pas treize mois, et représentent des investissements peu risqués. Le cœur du marché monétaire réside dans le prêt interbancaire (transaction entre deux banques sur un marché de gré à gré). Les taux moyens pratiqués sur ce marché sont publiés chaque jour pour chaque durée, sous l'appellation d Euribor pour la zone euro. Le taux au jour le jour est pour sa part appelé Eonia. L Euribor est un taux de terme (le taux de l'argent interbancaire à des échéances futures), tandis que l Eonia est un taux constaté (taux de l'argent interbancaire à des échéances passées). Overnight: Le taux Overnight est un taux in fine applicable entre aujourd hui et le jour ouvré suivant. Le coefficient d actualisation correspondant se calcule par : Où YF est la fraction d année entre aujourd hui et le prochain jour ouvré. -14-
Tomorrow/Next: Le taux tomorrow/next est un taux in fine applicable entre demain (jour ouvré) et après-demain (ouvré). Le coefficient d actualisation correspondant se calcule par : Où YF est la fraction d année entre demain (jour ouvré) et après-demain (ouvré). Par la lecture de cette formule, on constate qu il est nécessaire de connaitre pour calculer, or on peut très bien imaginer une courbe de taux dont le premier ténor serait le Tomorrow/Next. Dans le cas où des informations seraient manquantes pour appliquer la formule directe, on utilisera la méthode de résolution de Newton-Raphson en s appuyant sur des hypothèses variant selon la méthode d interpolation de la courbe : Interpolation appliquée au taux zéro-coupon : On suppose que le taux zéro-coupon est constant au début de la courbe : égaux. De ce raisonnement découle la relation : sont où correspond au nombre de jours ouvrés entre aujourd hui et la date du ténor Overnight, et au nombre de jours ouvrés entre aujourd hui et la date du ténor Tomorrow/Next. Pour voir la démonstration de cette relation, vous pouvez vous reporter à l annexe 5. Pour trouver la valeur de, on résout alors l équation suivante : Qui donne : Et finalement : Interpolation appliquée à (1/DF) ou Log(DF) : On suppose ici que. On interpole la valeur de entre aujourd hui et Tomorrow/Next, i.e. en utilisant comme valeur de On résout ensuite l équation suivante par la méthode de Newton-Raphson : -15-
En résumé, cette méthode utilise une valeur initiale, calcule la différence et ajuste la valeur de en utilisant la dérivée de f. S en suit une boucle effectuée tant que la précision souhaitée pour la solution n est pas atteinte. Pour plus d informations sur cette méthode de résolution, vous pouvez consulter l annexe 4 qui en explique le principe. Ténors suivants : Où YF est la fraction d année entre la date de valeur (jour ouvré) et la maturité du ténor. correspond au coefficient d actualisation calculé pour la date spot, il est déterminé selon la valeur du spot lag (défini précédemment, i.e. le nombre de jours entre la date de transaction et la date de valeur) : Si Spot Lag = 0 alors Si Spot Lag = 1 alors Si Spot Lag 2 alors On constate ici que la connaissance de la valeur de est indispensable pour utiliser cette formule. Dans le cas ou les maturités des instruments de la courbe de taux sont toutes supérieures à la date Spot, on utilisera d autres formules pour retrouver la valeur de, distinguées ici aussi par leur méthode d interpolation : Interpolation appliquée au taux zéro-coupon : Le taux zéro-coupon est supposé constant au début de la courbe : a alors : sont égaux. On où correspond au nombre de jours ouvrés entre aujourd hui et la date du ténor recherché, et au nombre de jours ouvrés entre aujourd hui et la date spot. On obtient la relation : D où et En utilisant la relation on a : Et finalement -16-
Interpolation appliquée à (1/DF) ou Log(DF) : On retrouve ici l hypothèse. De la même manière que précédemment, on va interpoler la valeur de entre aujourd hui et la date de maturité du ténor, i.e. en utilisant comme valeur de On résout ensuite l équation suivante par la méthode de Newton-Raphson: III.3.2.2 Futures Un contrat à terme (future en anglais) est un engagement ferme de livraison, négocié sur un marché à terme organisé et dont les caractéristiques suivantes sont connues à l'avance : la quantité d actifs sous-jacents livrables, la date, appelée échéance, et le lieu de livraison. Les contrats à terme sont les instruments financiers les plus traités au monde. Pour calculer le coefficient d actualisation sur un contrat à terne, on interpole le coefficient d actualisation correspondant à la date de début du future, puis on actualise ce coefficient par la formule suivante : Où YF est la fraction d année entre la date de valeur (jour ouvré) et la maturité du ténor. III.3.2.3 Swaps Un swap est un contrat par lequel deux contreparties conviennent de s échanger deux séries de flux financiers (en général de dettes ou de devises) entre deux dates fixées. Ces flux sont calculés à partir d un montant théorique de référence appelé notionnel. Dans le cadre de mon stage, je me suis concentré sur l étude des plain vanilla interest rate swaps, des swaps de taux d intérêts standards où est échangé un taux fixe contre un taux variable. Un tel swap est composé de deux jambes, fixe et variable. La valeur actuelle (Present Value) de la jambe fixe s obtient directement en actualisant l ensemble des flux fixes : Où : est le taux de swap N est le notionnel est la fraction d année de la i-ème période est le coefficient d actualisation de la i-ème période -17-
La valeur de la jambe variable s obtient en actualisant le taux flottant futur : En fonction des coefficients d actualisation, s écrit : D où : A l émission du swap, le taux de swap doit vérifier l égalité suivante : Ainsi pour obtenir les coefficients d actualisation on doit résoudre ce système où : est le coefficient d actualisation correspondant à la date de début du swap est le coefficient d actualisation correspondant à la date de fin du swap J ai d abord implémenté cette résolution selon une méthode de dichotomie classique (convergence linéaire) puis selon la méthode de Newton-Raphson qui est utilisée par le logiciel (convergence quadratique). On remarquera que dans le cas où tous les facteurs d actualisation ne sont pas connus dans la période entre l indice 1 et n-1, ceux-ci devront être interpolés. III.3.2.4 FX Points On a vu que des forward fx points peuvent également être intégrés dans une courbe de taux. Pour le calcul de leurs coefficients d actualisation, plusieurs cas doivent être distingués : lorsque la paire est cotée de manière directe ou de manière indirecte, et lorsque la paire est dans le bon ou le mauvais ordre. La cotation à l incertain ou cotation directe (right quote) indique le nombre d unités de monnaie nationale (ou le prix en monnaie locale) d une unité de devise étrangère. C est notre définition du taux de change. La cotation au certain ou cotation indirecte (left quote) indique le prix -18-
d une unité de monnaie locale en différentes devises étrangères. Exemple : Une cotation de 1.1691 CAD/USD est une cotation directe au Canada, mais une cotation indirecte aux US, où la cotation directe serait 1/1.1691=0.8554. La notion de bon ou mauvais ordre est utilisé pour déterminer quelle paire (e.g. EUR/USD ou USD/EUR) a la priorité quand aucune des deux devises n est une devise locale. Exemple : Une cotation de 1.2288 EUR/USD au Canada n est ni une cotation directe ni indirecte; on se sert donc de l indication bon/mauvais ordre : si EUR/USD est une paire dans le bon ordre on considérera l EUR comme notre devise locale ; dans le cas contraire ce sera l USD. Pour chacun des quatre cas de figures (bon ordre direct, bon ordre indirect, mauvais ordre direct et mauvais ordre indirect), différentes formules s appliquent. Aussi pour ne pas encombrer inutilement le rapport, j ai choisi ici de n exposer que les formules utilisées dans le cas d une paire dans le bon ordre et cotée de manière directe. Les notations utilisées sont : Cur1/Cur2 : paire considérée dans tous les calculs. PairSpotDate : date Spot correspondant à la paire Cur1/Cur2. SpotCross(Cur1/Cur2) : taux d échange Mid Spot de la paire Cur1/Cur2. FwdCross(Cur1/Cur2, T) : taux d échange forward de la paire Cur1/Cur2 à la maturité T. PointsCross(Cur1/Cur2, T) : points de la paire Cur1/Cur2 à la maturité T. DF(Cur, T1, T2) : coefficient d actualisation égal à la valeur à la date T1 d une unité de devise Cur payée à la date T2. Date de maturité supérieure à la date Spot : Date de maturité égale au prochain jour ouvré et différente de la date Spot : Où Date de maturité égale à la date Spot : Où -19-
III.3.1 Gestion des calendriers Au cours de mon travail de réplication, j ai été confronté à la gestion des dates et calendriers, un domaine assez large et nécessitant une attention particulière. III.3.1.1 Gestion des jours fériés La gestion des dates a été un travail important durant mon stage. Celle-ci est au centre des calculs, et il m est en effet parfois arrivé d obtenir une faible erreur dans un calcul pour un jour de décalage. Prenons un exemple d illustration : nous avons vu précédemment que dans le cas d un future, il faut actualiser la date de début de celui-ci. Or lors du calcul, seule la date de maturité est connue, on doit donc retrouver soi-même la date de début du future. Dans le cas d un future 3M dont la date de maturité est le 14/10/2012, on pense intuitivement que la date de début sera le 14/07/2012. Seulement qu en est-il si cette date tombe durant un week-end? Ou si l on est en France et que le 14 juillet est un jour férié? Pour palier ce problème j ai donc du distinguer 3 éléments : les week-ends, les jours fériés fixes et les jours fériés variables. Les jours tombant durant un week-end sont facilement identifiables en VBA, la fonction Weekday retournant la position dans la semaine de la date passée en paramètre (1 pour lundi, 2 pour mardi,, 7 pour dimanche). Ainsi si la fonction renvoie 6 ou 7, j en déduis que la date tombe durant un week-end. Les jours fériés fixes sont récupérés depuis la base de données et sont stockés dans une feuille Excel dédiée. Ceux-ci sont regroupés par villes. On aura par exemple pour la ville de Paris la date du 11 novembre, qui n est pas férié pour la ville de Londres ; et réciproquement Londres admet le jour férié du 26 décembre qui n existe pas à Paris. Figure 4 : Exemples de jours fériés fixes, groupés par villes On constate que l année de chaque date est 1901 : ces jours fériés étant valables chaque année, on ne s attachera qu au couple (jour, mois) lors de la vérification d une date. -20-
La gestion des dates s avère plus complexe pour les jours fériés variables. Ce sont les jours fériés qui ne tombent pas toujours à la même date chaque année. On pense en France au lundi de Pâques, défini comme le lendemain du jour de Pâques qui est lui-même exprimé comme étant le premier dimanche qui suit la première lune de printemps. En Angleterre, en Ecosse et en Irlande du Nord le dernier lundi d Aout est un jour férié (Summer Bank Holiday) tandis qu en Ecosse le Summer Bank Holiday s effectue le premier lundi du mois d Aout. Retrouver toutes les dates de jours fériés variables pour toutes les villes aurait été un travail de titan mais, heureusement, j ai pu récupérer ces informations depuis la base de données. Toutes ces dates ont en effet été générées et sont stockées avec la ville sur laquelle elles s appliquent. Contrairement aux jours fériés fixes, les jours fériés variables dépendent également de l année, j ai donc du récupérer toutes les dates de jours fériés par villes pour chaque année entre 1997 et 2057 (les courbes de taux n excèdent normalement pas 50 ans). J ai stocké ces données sur une feuille Excel (cela représente un peu moins de 10 000 dates!) en les regroupant par ville : sur une même ligne seront affichés tous les jours fériés variables correspondant à la ville. Figure 5 : Exemples de jours fériés variables, groupés par villes Ces trois cas traités, j ai alors été capable de retrouver si une date était un jour ouvré ou non. Pour y parvenir j ai implémenté une fonction qui, en passant une date en paramètre, retourne si elle correspond à un jour ouvré. Cette fonction est décomposée en trois temps : vérifier si la date échoit pendant un week-end, si elle correspond à un jour férié fixe ou un jour férié variable. Si après l une des étapes, il est avéré que la date est fériée, les autres étapes ne sont plus nécessaires et l on sort de la fonction. Le diagramme d activité de la fonction : vérifier si un jour est férié est exposé sur la page suivante. -21-
Figure 6 : Diagramme d activités de la fonction : Vérifier si un jour est férié La disposition des dates dans les feuilles Excel prend alors toute son importance puisque pour la vérification d une date, l ordinateur doit parcourir les identifiants des villes, et lorsque l identifiant correspondant à la ville recherche est trouvé, il doit rechercher parmi les jours fériés si la date recherchée existe. III.3.1.2 Génération de calendriers Cet outil de vérification de jour ouvrés, combiné avec les conventions d ajustement de dates m ont permis de générer des calendriers, notamment dans le cas des swaps. Nous avons vu précédemment que si une courbe de taux comporte les swaps 2 ans et 5 ans, les coefficients d actualisation intermédiaires (correspondant à 3 et 4 ans) doivent être interpolés. Pour cela, il est nécessaire de connaître leur date de maturité. La méthode de génération de ces dates peut s exprimer ainsi : Figure 7 : Diagramme d activités de la fonction : Ajouter des années à une date -22-
III.3.2 Interface graphique et connexion aux bases de données Pour utiliser ma fonction permettant de recalculer les coefficients d actualisation sur une courbe de taux donnée, j ai implémenté un userform en VBA. Figure 8 : Capture d écran de l interface implémentée Cette interface permet de faire la liaison entre le code issu de mon implémentation et les bases de données sur lesquelles sont stockées les informations des courbes de taux. J ai ainsi configuré en VBA des connexions aux bases de données correspondant à différents environnements. Une fois l interface active, l utilisateur peut, d après une liste, choisir l environnement sur lequel il souhaite travailler. L environnement déterminé, les noms des courbes de taux s y rapportant apparaissent dans la partie droite de l interface. Si le nombre de résultats est trop important, l utilisateur peut alors affiner sa recherche en tapant les premières lettres du nom de la courbe dans le champ «Curve Short Name». Lorsque l utilisateur clique sur le nom de la courbe désirée, le reste des champs se remplit automatiquement en fonction des informations de la courbe. Enfin le champ «Starting Cell», correspondant à la cellule de départ du tableau de données sur la feuille Excel, est initialisé à la valeur actuelle du curseur mais peut être modifié manuellement par l utilisateur (tout comme tous les autres paramètres). Il ne reste alors plus qu à cliquer sur le bouton «Compute» pour lancer l exécution du programme. Côté technique, ces interactions (affichage du nom des courbes, remplissage des paramètres) sont réalisées à partir de macros VBA, exécutées automatiquement lorsque l utilisateur fait un choix. Ces macros effectuent des appels aux bases de données en exécutant des requêtes SQL depuis VBA. -23-
Figure 9 : Feuille Excel de calcul d une courbe de taux zéro-coupon On constate dans la colonne verte que l erreur (soustraction entre la colonne DF issue du logiciel et la colonne Computed DF issue de mon implémentation) est toujours inférieure à, la précision des données. -24-
III.4 Organisation du travail Afin d illustrer l organisation de mon temps de travail au sein de l équipe durant mes six mois de stage, j ai réalisé un diagramme de Gantt ainsi qu un diagramme circulaire. Figure 10 : Diagramme de Gantt 10% 12% Réplication de calculs 30% Kondor+ Services 20% 28% Genesis Résolution de bugs Divers Figure 11 : Répartition du temps de travail lors du stage -25-
IV. CONCLUSION Après six mois écoulés au sein de l équipe d ingénierie financière, je peux prendre la mesure des connaissances que j ai acquises. Ce sont en premier lieu des compétences financières : en intégrant l équipe d ingénierie financière dont le domaine de compétences n est pas limité à un type de produit financier prédéfini, j ai pu apprendre sur des sujets variés. Aussi, si mon stage portait sur la construction d une courbe de taux zéro-coupon, j ai pu, au travers de résolutions de bugs ou de lectures des documents financiers de l équipe, m enrichir de connaissances sur de nombreux sujets. Mon travail sur les courbes de taux m a permis d approfondir mes connaissances sur leur construction mais également de travailler sur les produits qui peuvent la composer. L étude des courbes de taux a été un point d entrée vers l étude de divers produits financiers. En étant intégré au sein de deux projets de l entreprise j ai pu échanger avec des personnes qualifiées, appréhender la gestion de projet dans un milieu professionnel, et le rôle des différentes équipes dans l entreprise. Cet aspect du stage a été très enrichissant, j ai ainsi pu prendre conscience des plaisirs mais aussi des difficultés que l on peut rencontrer dans la vie d un projet et, au-delà, appréhender les méthodes pour résoudre les problèmes aussi bien techniques que relationnels. Enfin mon environnement de travail a été un élément moteur durant toute la durée de mon stage. L équipe d ingénierie financière, par sa disponibilité, m a permis de résoudre rapidement les problèmes. Tout particulièrement, l implication de mon maître de stage m a permis d avancer rapidement et efficacement dans mon travail. Celui-ci me laissait travailler en autonomie mais restait disponible pour les questions que je pouvais me poser. Par ailleurs, il me mettait régulièrement en contact avec des personnes l ayant sollicité pour des tâches diverses, me permettant ainsi d élargir mon spectre d applications. -26-
V. ANNEXES V.1 Présentation de l entreprise V.1.1 Thomson Reuters Financial Software Créé en 2002 du fait du regroupement des activités d Effix, de Diagram et de Marvin Software, Reuters Financial Software est un éditeur de logiciels, spécialisé dans les progiciels pour salles de marché financier. En 2008, Thomson et Reuters s associent et forment Thomson Reuters. L'actionnariat de Thomson détient alors 53 % du nouvel ensemble. On peut distinguer deux entités au sein des produits développés par la société : l information en temps réel et le département risk. La première entité est constituée du logiciel Thomson Reuters Eikon (anciennement Reuters 3000 Xtra et Kobra) qui permet l affichage en temps réel d informations financières, et dont le principal concurrent est le groupe financier américain Bloomberg. La partie risk est composée quant à elle des logiciels Kondor+, KSP, K+TP, KGR et TopOffice. Dans ce groupe, le logiciel le plus important en termes de chiffre d affaires comme en termes de fonctionnalités couvertes est Kondor+, utilisé actuellement par 13 000 traders dans plus de 230 banques d investissement réparties dans le monde entier. Les principaux concurrents du logiciel existant sur le marché sont Summit (racheté par Misys en 1996), Murex et Calypso. Au cours de l année 2011, le groupe Thomson Reuters a fait part de sa volonté de recentrer son activité autour du domaine de l information en temps réel en mettant l accent sur son logiciel Eikon, laissant alors la porte ouverte à un rachat du département risk. Ainsi en février 2012, le fonds d investissement américain Vista Equity Partners achète le département risk de Thomson Reuters pour une somme avoisinant les 200 millions d euros. Fondé en 2000, ce fonds privé spécialisé dans l investissement dans le secteur du logiciel est à la tête d un capital estimé à plus de 7 milliards de dollars. Vista investit actuellement dans 15 sociétés, comptant ainsi plus de 10 000 employés dans le monde entier. V.1.2 Turaz Né du rachat du département risk de Thomson Reuters par Vista Equity Partners, Turaz édite les logiciels Kondor+, KSP, K+TP, KGR et TopOffice. Son siège social se trouve à Londres, son centre de développement principal à Puteaux et son centre secondaire de développement à Gdynia en Pologne. Le support est fait dans une soixantaine de succursales à travers le monde. En mars 2012, Vista Equity Partners, la maison mère de Turaz acquiert l éditeur de logiciel Misys pour plus d 1,5 milliard d euros. En juin 2012, Turaz fusionne avec Misys afin de regrouper les récents investissements du fonds Vista en une société, et devient ainsi «The New Misys». -27-
V.1.3 Misys Fondé en 1979, Misys fournissait à l origine des systèmes d exploitation pour brokers en assurance. Au cours des années, Misys s est positionné comme un leader sur les marchés du logiciel pour institutions financières et même dans le secteur de la santé aux Etats-Unis. Grâce à de nombreuses fusions Misys n a cessé de grandir, la dernière en date étant le rachat de Sophis en novembre 2010. Rachetée le 19 Mars 2012 par Vista Equity Partners, la société Misys intégrera la société Turaz en juin 2012 dans le but de fonder une société leader sur le marché des progiciels financiers, connue sous le nom de «New Misys». V.2 Méthode agile Scrum Avant toute chose, il convient de citer une brève définition de ce processus de création de produits. Selon le Guide Scrum 2011 la définition est la suivante : Scrum (nom commun): Un cadre à l intérieur duquel les personnes peuvent traiter (ou même résoudre) des problèmes changeants et complexes, tout en livrant de manière productive et créative des produits de la plus haute valeur possible. Scrum est : Léger ; Facile à comprendre ; Extrêmement difficile à maîtriser. Scrum est un cadre de travail qui a été employé pour gérer le développement de produit complexe depuis le début des années 1990. Scrum n est pas une procédure ou une technique pour construire des produits; il s agit plutôt d un cadre à l intérieur duquel vous pouvez utiliser des procédures et des techniques variées. Scrum met en évidence l efficacité relative de vos pratiques de gestion et de développement de produit afin que vous puissiez les améliorer. Ce procédé, relativement complexe à détailler (voir bibliographie pour le guide complet en 20 pages), peut se résumer autour de quelques axes majeurs qu il est convenable d expliquer ici, en plus de montrer la manière dont nous les avons adaptés à la culture de l entreprise. V.2.1 Personnes composant une équipe Scrum V.2.1.1 Product owner Dans le cadre de Scrum, le product owner est la personne chargée de faire le lien entre les attentes des clients et l équipe en charge du projet. Il est aussi la personne qui définit la valeur commerciale des améliorations apportées au produit. Le product owner ne participe pas directement au développement du produit, il est présent pour donner une ligne conductrice à l évolution du projet en s appuyant sur les personnes en relation avec les clients. (Il définit le backlog) -28-
V.2.1.2 Scrum master Le Scrum master a un rôle très particulier au sein de l équipe, il est chargé de faciliter le déroulement du projet dans son ensemble, que ce soit lors des réunions de planification ou pendant les phases de développement. Le Scrum master est, au sein de Misys, un chef d équipe de développement qui, par son expertise technique et son expérience, est le plus à même de trouver une solution pratique afin de faciliter la vie de son équipe. Le Scrum master a aussi la charge de la transparence de l équipe : ainsi il doit se charger de mettre à disposition de l ensemble de l entreprise l avancement des projets, la planification des tâches, les échéances futures ainsi que les tâches déjà achevées. V.2.1.3 Reste de l équipe Le reste de l équipe est tout simplement l ensemble des personnes qui vont effectivement développer le logiciel. L équipe est une entité qui possède un pouvoir de décision puisqu elle est chargée d estimer les différentes tâches de façon autonome ainsi que de définir si ces dernières sont réalisables lors d un sprint (voir plus bas) V.2.2 Les éléments clefs de Scrum V.2.2.1 Le backlog Dans le cadre usuel (ou waterfall) de développement de logiciels, la vie future d un projet est définie par une liste de besoins qui forment une feuille de route (roadmap) du produit. Ce document est généralement le fruit de tous les agents qui nécessitent une amélioration du produit. Dans le cadre de Scrum la vision de l évolution du produit tient dans un cahier nommé Backlog qui contient l ensemble des tâches futures ordonnées et estimées (plus ou moins précisément en fonction de l importance). La personne en charge du backlog est le Product Owner puisque c est lui qui cristallise l ensemble des retours d informations apportés par le reste de l entreprise. Ainsi à tout moment, le product owner peut choisir d ajouter de modifier ou d enlever une story (élément) du backlog. V.2.2.2 Le sprint Un sprint est un contrat moral défini par l ensemble des membres de l équipe, qui définit la durée de développement requise avant de délivrer une ou plusieurs fonctionnalités. Dans le cadre de l équipe Kondor+ Services nous avons décidé de délivrer des améliorations toutes les trois semaines. Au début de chaque sprint a lieu un planning et à la fin de chacun d entre eux a lieu une démonstration où l équipe met en avant ce qui a été fait lors de cette période. V.2.3 Moments clefs d un sprint lors d un projet Scrum V.2.3.1 Grooming Lors de cette réunion, le product owner se charge de définir les éléments qui seront à mettre dans le ou les prochains sprints. Ces éléments sont estimés par l équipe. -29-
V.2.3.2 Sprint Planning Lors d un sprint planning, les membres de l équipe se mettent d accord sur la mise en place d une solution technique au problème fonctionnel fourni par le product owner, et divisent ce dernier en sous tâches purement techniques. V.2.3.3 Sprint demo Démonstration devant un ensemble de spectateurs des nouvelles fonctions implémentées lors du sprint. Une démo se décompose de la sorte : Ce qui a été planifié Ce qui a été fait Démonstration des solutions implémentées Ce qui sera fait au prochain sprint V.2.3.4 Sprint review Lors de cette réunion, des personnes de la direction et l ensemble de l équipe se retrouvent afin de discuter de l évolution de la vie du produit ainsi que des choses à améliorer pour le futur. V.2.3.5 Sprint rétrospective Réunion pendant laquelle l équipe fait son autocritique et cherche à s améliorer pour les sprints à venir. V.3 Environnement de travail V.3.1 Kondor+ Dans le cadre de mon stage, j ai utilisé quotidiennement le logiciel Kondor+ développé par l entreprise. Celui-ci balaie un éventail très large de fonctionnalités, en regroupant les activités du back, du middle et du front office. Le logiciel, initialement ciblé autour de la gestion du risque permettant notamment : la saisie des transactions (front office) ; leur soumission à un contrôle de respect des limites de contrepartie, de position ou de liquidité (middle office) ; la tenue de position et le suivi temps réel des pertes et profits (P&L) ; la mesure du risque de taux et du risque de change ; le calcul de Value at Risk Concrètement, au sein de mon stage, je l ai principalement utilisé pour la construction de courbe de taux et la saisie d IRS (Interest Rate Swaps) mais j ai également utilisé ponctuellement de nombreuses autres fonctionnalités, notamment lors de la correction de bugs. Pour ouvrir le logiciel nous utilisons Putty Connection Manager qui permet de lancer simultanément plusieurs connexions à des serveurs distants via SSH ou Telnet. -30-
Figure 12 : Interface de Putty Connection Manager Une fois la connexion effectuée, la fenêtre du Deal Manager apparait, c est la fenêtre d accueil du logiciel. Le Deal Manager permet essentiellement de créer les transactions («deals») dans le logiciel, et permet de faire le lien entre les autres applications du logiciel. Ce dernier est en effet composé de plusieurs binaires, dont les principaux (outre le DealManager) sont définis ici : Data Manager : définition des données de marché (caractéristiques d un taux flottant, définition d une devise, d une paire ) Report Manager : accès aux différents types de rapports proposés par Kondor+. Realtime Manager : accès aux positions en temps réel. Administration : gestion des utilisateurs, accès à la structure de base de données. -31-
Figure 13 : Deal Manager, Data Manager et fenêtre d insertion de «Loans & Deposit» V.3.2 JIRA Un second outil fréquemment utilisé au cours de mon stage a été le logiciel JIRA. JIRA est un système de suivi de bugs, de gestion de projets et d incidents développé par Atlassian Software Systems. Il est adapté aux méthodes agiles et permet ainsi de visualiser les tâches en cours d un projet. Sa principale utilisation a cependant été pour moi le suivi de bugs. Tout est centralisé, permettant ainsi de reporter un bug comme de consulter les bugs existants. C était un outil incontournable durant mes six mois de stage. On notera que cet outil venait d être mis en place à mon arrivée, la gestion des bugs étant auparavant effectuée à l aide du logiciel Lotus Notes. -32-
Figure 14 : Feuille de route du projet Kondor+ Services via le logiciel JIRA V.4 Méthode de Newton-Raphson La méthode de Newton ou méthode de Newton-Raphson est une méthode numérique itérative de résolution numérique des équations du type f(x)=0. Elle repose sur la méthode du point fixe avec une fonction g particulière qui dépend de la dérivée de f. V.4.1 Définition La méthode de Newton est une méthode de point fixe avec pour application la fonction g : On voit ainsi que rechercher un point fixe de l application g revient à chercher une solution de l équation. Cette recherche de point fixe se fait via un algorithme itératif définit par la suite : Le schéma numérique de la méthode de Newton est alors donné par : La méthode de Newton-Raphson est convergente d ordre 2 (convergence quadratique). -33-
V.4.2 Application lors de l implémentation Dans mon implémentation, j ai défini deux points de départ encadrant la valeur recherchée. Comme un coefficient d actualisation est toujours compris entre 0 et 1, j ai choisi = 0 et = 1. Je déroule le calcul en utilisant et comme solutions de l équation. Ensuite je définis ma dérivée comme : Je mets enfin à jour mes variables avec : Concernant la vitesse de convergence de mon implémentation, si l on prend le cas des swaps lorsqu aucune interpolation n est nécessaire, le nombre d itération de la méthode de résolution est 2 ou 3. Si la résolution nécessite une ou plusieurs interpolations, le nombre d itérations recule à 6 ou 7. V.5 Démonstration de la relation avec un taux zéro-coupon constant On se contentera de démontrer cette formule dans le cas d intérêts composés, les calculs étant sensiblement les mêmes dans le cas d intérêts simples ou exponentiels. On suppose vraie l égalité : la courbe. On a alors :, i.e. le taux zéro-coupon est constant au début de D où : et : en inversant : d où : finalement : -34-
LISTE DES FIGURES Figure 1 : Organigramme de l équipe d ingénierie financière au sein de Misys... 5 Figure 2 : Interface de construction d une courbe de taux dans Kondor+... 10 Figure 3 : Courbe de taux dans Kondor+... 14 Figure 4 : Exemples de jours fériés fixes, groupés par villes... 20 Figure 5 : Exemples de jours fériés variables, groupés par villes... 21 Figure 6 : Diagramme d activités de la fonction : Vérifier si un jour est férié... 22 Figure 7 : Diagramme d activités de la fonction : Ajouter des années à une date... 22 Figure 8 : Capture d écran de l interface implémentée... 23 Figure 9 : Feuille Excel de calcul d une courbe de taux zéro-coupon... 24 Figure 10 : Diagramme de Gantt... 25 Figure 11 : Répartition du temps de travail lors du stage... 25 Figure 12 : Interface de Putty Connection Manager... 31 Figure 13 : Deal Manager, Data Manager et fenêtre d insertion de «Loans & Deposit»... 32 Figure 14 : Feuille de route du projet Kondor+ Services via le logiciel JIRA... 33 BIBLIOGRAPHIE Sites internet http://www.wikipedia.org http://apps.nrbook.com/c/index.html (Numerical recipes in C) http://www.misys.com/products.aspx http://www.vistaequitypartners.com/company/misys http://www.scrum.org/portals/0/documents/scrum%20guides/scrum%20guide%20-%20fr.pdf Documentation interne Sonia Bahloul (1998), Yield Curve Methodology for Version 1.9 Sonia Bahloul (1999), Yield Curves Built out of Swap Points Kondor+ 3.0 Reference guide Kondor+ 3.3 Calculations guide Documentation externe John C. Hull (2003), Options, Futures and Other Derivatives, 5 th edition. Antonin Chaix, Produits dérivés de taux Méthodes d évaluation et de couverture. (Barchen) -35-
TABLE DES MATIÈRES Sommaire... 2 Remerciements... 3 I. Introduction... 4 I.1 Rôles de l ingénieur financier... 4 I.1.1 Spécification... 4 I.1.2 Validation... 4 I.2 Composition de l équipe d ingénierie financière... 5 II. Travaux proposés... 6 III. Travaux effectués... 7 III.1 Participation aux projets... 7 III.1.1 Kondor+ Services... 7 III.1.2 Genesis... 8 III.1.3 Bilan... 8 III.2 Corrections de bugs... 9 III.2.1 Options sur futures... 9 III.2.2 FX Points Digit... 9 III.3 Réplication d algorithme de génération de courbes de taux... 10 III.3.1 Méthodes de calcul... 11 III.3.1.1 Coefficient d actualisation... 11 III.3.1.2 Interpolation... 12 III.3.1.3 Application de l interpolation... 12 III.3.1.4 Ajustement de dates... 12 III.3.1.5 Base de zéro-coupon... 13 III.3.2 Calcul des coefficients d actualisation... 14 III.3.2.1 Money Market... 14 III.3.2.2 Futures... 17 III.3.2.3 Swaps... 17 III.3.2.4 FX Points... 18 III.3.1 Gestion des calendriers... 20 III.3.1.1 Gestion des jours fériés... 20 III.3.1.2 Génération de calendriers... 22 III.3.2 Interface graphique et connexion aux bases de données... 23 III.4 Organisation du travail... 25-36-
IV. Conclusion... 26 V. Annexes... 27 V.1 Présentation de l entreprise... 27 V.1.1 Thomson Reuters Financial Software... 27 V.1.2 Turaz... 27 V.1.3 Misys... 28 V.2 Méthode agile Scrum... 28 V.2.1 Personnes composant une équipe Scrum... 28 V.2.1.1 Product owner... 28 V.2.1.2 Scrum master... 29 V.2.1.3 Reste de l équipe... 29 V.2.2 Les éléments clefs de Scrum... 29 V.2.2.1 Le backlog... 29 V.2.2.2 Le sprint... 29 V.2.3 Moments clefs d un sprint lors d un projet Scrum... 29 V.2.3.1 Grooming... 29 V.2.3.2 Sprint Planning... 30 V.2.3.3 Sprint demo... 30 V.2.3.4 Sprint review... 30 V.2.3.5 Sprint rétrospective... 30 V.3 Environnement de travail... 30 V.3.1 Kondor+... 30 V.3.2 JIRA... 32 V.4 Méthode de Newton-Raphson... 33 V.4.1 Définition... 33 V.4.2 Application lors de l implémentation... 34 V.5 Démonstration de la relation avec un taux zéro-coupon constant... 34 Liste des figures... 35 Bibliographie... 35 Table des matières... 36 Résumé... 38 Abstract... 38-37-
RÉSUMÉ J ai effectué mon stage de fin d études d une durée de six mois au sein de l équipe d ingénierie financière de Misys. Mon sujet principal d étude portait sur la réplication de l algorithme de construction de courbes de taux Newton-Raphson. L implémentation de cet algorithme a été effectuée sous Excel, à l aide du langage VBA. J ai également implémenté une connexion aux bases de données afin de pouvoir récupérer les informations des courbes existantes dans le logiciel Kondor+. Outre cette étude, j ai participé à la vie quotidienne de deux projets de l entreprise en tant que membre de l équipe d ingénierie financière. J ai également travaillé ponctuellement sur le suivi de corrections de bugs sur le logiciel Kondor+ (spécifications et validations). ABSTRACT I did my 6 months end-of-studies internship within the financial engineering team of Misys. My main study dealt with the implementation of the Newton-Raphson yield curve building algorithm. This implementation was performed via Excel, using the VBA programming language. I also implemented a database connection in order to get information from existing yield curves in the Kondor+ software. Besides this, I also worked within two company projects as a member of the financial engineering team. I also intermittently worked on the follow-up of bug corrections on the Kondor+ software (specifications and validations). -38-