STAGE 3A - DEV FONCTIONNEL C++ - Refonte du module 'coarse grain automatic differenciation'

Job ID:  42416
Location:  PARIS (FRA)

Murex est un leader mondial reconnu dans le développement de progiciels financiers. Chaque jour, à travers le monde, de prestigieuses institutions financières, hedge funds, asset managers et trésoreries de grands groupes, s’appuient sur les collaborateurs et la plateforme Murex pour soutenir leurs activités de marchés. Notre devise « pioneering again » résume notre histoire : depuis sa création, Murex s’adapte en continu aux évolutions des marchés de capitaux en offrant des solutions innovantes et adaptées aux besoins de ses Clients. 

 

Murex compte aujourd’hui plus de 2200 experts répartis dans 17 bureaux : Beyrouth, Dubaï, Dublin, Hong Kong, Londres, Luxembourg, Moscou, New York, Paris, Pékin, Santiago, Sao Paulo, Séoul, Singapour, Sydney, Tokyo et Toronto. 

 

La plateforme de Murex est un système de gestion front to back qui gère un ensemble de produits financiers. La plateforme offre un système intégré qui permet de gérer tout ce qui a trait au cycle de vie des contrats financiers. Cela inclut par exemple la création de nouveaux contrats, le contrôle et la vérification de ces contrats, le règlement des engagements associés, la comptabilité...  

Description de l’équipe : 

 

L’équipe Commodities développe la solution Front Office proposée aux clients de la plateforme MX traitant des produits financiers liés aux matières premières.  

Le périmètre fonctionnel de cette solution couvre la définition des différents produits traités sur les marchés, leur évaluation par différents modèles quantitatifs, la gestion en temps réel des risques associés à ces produits ainsi que leur couverture. 

L’activité de l’équipe comporte le développement de nouveaux produits financiers et nouvelles fonctionnalités intégrés à la plateforme, le maintien de la qualité du code ainsi que la correction des problèmes remontés par les clients. L’équipe est associée à une équipe de consultants avec laquelle elle collabore pour mener à bien ces activités. 

 

Missions : 

 

L’évaluation des contrats optionnels permet de produire la prime du contrat mais aussi toutes les dérivées (les lettres grecques). Lorsque le payoff devient complexe, le calcul de ces dérivées peut s’avérer très compliqué et les formules qui permettent d’arriver au résultat très laborieuses à maintenir. 

Le module déjà existant CGAD (Coarse Grain Automatic Différenciation) est un moteur de calcul de dérivées automatique basé sur la « Chain rule », le théorème de composition des dérivées partielles.  

Malgré son utilisation grandissante dans notre solution MX3, le module CGAD montre des lacunes au niveau des performances mémoire et CPU quand le graphe de calcul commence à être trop grand.  

 

Les objectifs du stage seront de : 

  • Faire un état des lieux du module CGAD dans son état actuel 

  • Mesure des performances suivant plusieurs critères d’entrée 

  • Analyse des méthodes de calcul des dérivées (mode forward, dual, back-propagation) 

  • Analyse de l’architecture et des techniques de programmation mises en œuvre 

  • Proposer des axes d’amélioration 

  • Amélioration de l’architecture 

  • Utilisation des outils C++20 pour résoudre certains calculs à la compilation 

  • Gestion améliorée de la mémoire 

  • Mettre en œuvre les propositions décrites précédemment 

  • Travailler de façon incrémentale 

  • Mesurer à chaque étape les gains en performance, en clarté du code 

  • S’appuyer sur la couverture de test 

  • Faire un état des lieux final du module CGAD 

  • Lister les gains obtenus 

  • Faire une présentation du travail auprès des équipes impactées 

 

Le stage se déroulera en trois phases : 

 

Apprentissage 

À votre arrivée, vous serez formé·e par les membres de l’équipe afin d’acquérir les principes généraux du marché des matières premières, spécifiquement les différents types de payoff. Mais surtout, vous vous approprierez la connaissance du module CGAD et de son fonctionnement. Cela vous permettra de pouvoir travailler sur la première partie du stage.  

 

Design 

Votre formation d’ingénieur et les échanges que vous aurez avec les membres de l’équipe de développement vous permettront de proposer des axes d’amélioration pour le module CGAD. Ces possibles améliorations seront à prioriser suivant les gains attendus. 

 

Implémentation 

À la suite de cette phase de design, vous implémenterez les différentes solutions spécifiées. Cela se déroulera en TDD : écriture/complétion en amont des tests unitaires permettant de valider la nouvelle implémentation.  

Vous participerez à l’activité quotidienne de l’équipe, l’organisation du développement sera intégrée dans la planification Scrum de l’équipe. 

 

Profil : 

 

En troisième année de formation ingénieur ou équivalente, vous avez une bonne expérience en développement C++. Vous êtes capable d’évoluer dans du code tiers, de bien communiquer sur votre travail et d’aller chercher l’information, par une analyse minutieuse du code, mais aussi en collaborant avec les autres développeurs. 

 

  • Étudiant·e en troisième année d’École d'Ingénieurs/Informatique ou en Master universitaire 

  • Bonnes connaissances en programmation C++ 

  • Intérêt pour les aspects fonctionnels du monde de la finance de marché 

  • Intérêt pour les problématiques de génie logiciel (« clean code », résilience, opérabilité, intégration continue…) 

  • Des connaissances en mathématiques financières seront appréciées 

  • Rigueur, autonomie, curiosité et capacité d’innovation 

  • Anglais courant 

  • Capacité de travailler dans un contexte agile et fortement collaboratif 

 

Durée : 6 mois

En troisième année de formation ingénieur ou équivalente, vous avez une bonne expérience en développement C++. Vous êtes capable d’évoluer dans du code tiers, de bien communiquer sur votre travail et d’aller chercher l’information, par une analyse minutieuse du code, mais aussi en collaborant avec les autres développeurs. 

 

  • Étudiant·e en troisième année d’École d'Ingénieurs/Informatique ou en Master universitaire 

  • Bonnes connaissances en programmation C++ 

  • Intérêt pour les aspects fonctionnels du monde de la finance de marché 

  • Intérêt pour les problématiques de génie logiciel (« clean code », résilience, opérabilité, intégration continue…) 

  • Des connaissances en mathématiques financières seront appréciées 

  • Rigueur, autonomie, curiosité et capacité d’innovation 

  • Anglais courant 

  • Capacité de travailler dans un contexte agile et fortement collaboratif 

 

Durée : 6 mois