TÉMOIGNAGE : « Oubliez Python, vous devez apprendre à coder en Cython »
Python gagne du terrain pour résoudre des problèmes en finance pour de nombreuses raisons. Tout d’abord, c’est un langage relativement facile à apprendre. C’est aussi généralement plus rapide d’écrire des programmes en Python. Il existe également de nombreuses bibliothèques Python adaptées à l'analyse des marchés financiers, tels que les pandas, pour traiter des séries chronologiques.
Cependant, un inconvénient majeur de Python est qu’il s'exécutera beaucoup plus lentement que le code écrit dans des langages tels que C. Python possède le verrouillage global d’interprète (GIL), ce qui signifie qu’un seul élément peut être exécuté à la fois. La question que je me pose toujours est de savoir comment rendre Python plus rapide et quelles compétences dois-je acquérir pour y parvenir ?
Une solution est Cython. Sur le plan pratique, le code Cython est en réalité très similaire à Python, avec toutefois quelques nuances. De nombreuses bibliothèques Python bien connues utilisent actuellement Cython. Le gros avantage est que le code Cython peut être converti en code C plus rapide et que vous pouvez ‘libérer le GIL’, autrement dit exécuter le code en parallèle.
Cependant, vous devrez peut-être passer du temps à ajuster votre code et à l'annoter avec des déclarations de type C. Vous devrez également compiler votre code Cython. Cependant, si votre projet finit par utiliser intensivement Cython, vous devrez passer beaucoup de temps à effectuer ces modifications.
Si vous n’avez pas envie de jouer avec Cython, Numba est une autre solution, qui est une LLVM (low level virtual machine) consistant à annoter votre code avec des instructions spéciales, puis à les exécuter via l'habituel interprète Python. Cependant, comme avec Cython, vous devrez passer un peu de temps à réécrire votre code pour obtenir un gain de vitesse maximal, en particulier si vous essayez de l'exécuter sur un GPU puissant.
Si l’essentiel de ce que vous faites est une analyse de séries chronologiques et que vous utilisez abondamment la bibliothèque pandas, cela vaut la peine d’envisager Modin. Avec Modin, vous modifiez simplement une ligne de code (oui, une seule ligne) pour accélérer les pandas, et c’est tout. Cependant, à ce stade, la bibliothèque est relativement nouvelle et ne prend donc pas en charge toutes les fonctionnalités pandas. Dask est une autre bibliothèque similaire et vous permet également d’exécuter vos calculs de type pandas en parallèle.
Si votre code télécharge beaucoup de données à partir de sources externes, telles que le web ou des bases de données, vous avez le choix d’accélérer ce process entre le fil d’exécution Python et les librairies asyncio. Pour un calcul parallèle plus intensif, vous pouvez également essayer la bibliothèque multiprocessing. L'un de mes favoris personnels est la bibliothèque Celery, qui vous permet d'exécuter à peu près tous les calculs Python de votre choix de manière distribuée. La courbe d'apprentissage est un peu raide, mais à mon avis, bien comprendre Celery est définitivement un gain de temps. Je l’ai beaucoup utilisé ces dernières années pour accélérer les calculs d’analyse des coûts de transaction qui requièrent beaucoup de tick data.
Le dernier moyen d'accélérer votre code Python - et probablement la première chose à essayer – consiste à vectoriser votre code pour utiliser des bibliothèques telles que NumPy et pandas, plutôt que d’utiliser trop de boucles. Très souvent, cela pourra tout de même rendre votre code assez rapide.
Donc, oui, le langage Python n’est pas le plus rapide du marché. Cependant, il existe des solutions pour accélérer le code. La mauvaise nouvelle est que rien n’est donné tout cuit et que la plupart des compétences que j’ai mentionnées précédemment nécessiteront un certain temps d’apprentissage.
Saeed Amen est un trader de devises systématique, gérant depuis 2013 un prop’ trading book G10 FX. Il a développé des stratégies de trading systématique au sein de grandes banques d'investissement telles que Lehman Brothers et Nomura, et dirige Cuemacro, une société de conseil et de recherche spécialisée dans le trading systématique.
Vous avez un scoop, une anecdote, un conseil ou un commentaire que vous aimeriez partager ? Contact : tiochem@efinancialcareers.com