Algorithmes de trading

Le projet consiste à construire un algorithme qui proposent des décisions d’achats et de vente sur des actions, futures… Voici quelques types de stratégies :

  • Optimisation de portefeuille

  • Trend Following

  • Pair-trading

La première étapes pour les sujets financiers est la récupération des données. Il existe de nombreux sites. Pour les besoins de ce projet, les deux sources suivantes suffiront :

quandl est un aggrégateur de source données. Il est possible de récupérer facilement de nombreuses séries financières, des séries économiques comme le PIB des pays. Vous trouvez plein de références sur de sources de données ou de modules sur awesome-quant. Un exemple de graphique avec matplotlib : candlestick_ohlc.

Le module pyensae permet de récupérer facilement des données depuis différentes sources

from pyensae import StockPrices
prices = StockPrices(tick="NASDAQ:MSFT")
print(prices.dataframe.head())

Pour ces deux sites, les données récupérées sont daily et pas intraday. Les algorithmes fonctionnent tous à peu près de la même manière : chaque soir, l’algorithme donne les décisions à prendre le lendemain. Les stratégies dépendent de paramètres qu’on optimise en utilisant des données passées, 2004-2010 par example. On teste ensuite la stratégie sur la période suivante 2010-2014. Il faut toujours faire attention à utiliser les données jusqu’à la date t pour prédire les actions pour la date t+1.

Notebook conseillés :

D’autres idées avec d’autres lectures :

Les compétitions sont aussi une bonne source d’inspiration comme Two Sigma Financial Modeling Challenge. Des participants décrivent leurs idées dans les articles suivants : Two Sigma Financial Modeling Code Competition, 5th Place Winners” Interview: Team Best Fitting | Bestfitting, Zero, & CircleCircle, Two Sigma Financial Modeling Challenge, Winner’s Interview: 2nd Place, Nima Shahbazi, Chahhou Mohamed.

Trend following

Le trend following est un algorithme qui fonctionne bien sur les futures. Il existe de nombreuses variantes. En voici une :

On compare la moyenne mobile à 10 jours avec la moyenne mobile à 100 jours. Deux cas sont à considérer :

  • si la moyenne à court terme est plus élevée que la moyenne à long terme, nous sommes sur une tendance haussière \rightarrow on achète

  • si la moyenne à court terme est inférieure à la moyenne à long terme, la tendance est baissière \rightarrow on vend

Vous trouverez plus à cette page : Stratégie automatique de trading en finance.

Optimisation de portefeuille

Optimiser un portefeuille d’action consiste à construire une moyenne pondéré d’action qui soit optimise le rendement à risque bornée soit minimise le risque à rendement borné également. La page Stratégie automatique de trading en finance (ancienne version pdf) explique cela de façon sommaire. Le premier à avoir formalisé ce domaine est Harry Markowitz (voir également ici). L’optimisation est quadratique ; lorsque le portefeuille est constitué de deux ou trois actions, il se résout en utilisant la méthode des multiplicateurs de Lagrange. Lorsqu’il inclut plus d’actions, il faut utiliser d’autres méthodes d’optimisation telles que le Lagrangien augmenté. L’objectif est ici de choisir une façon de construire un portefeuille, de l’optimiser sur la période d’apprentissage et de la tester sur la période de test. Il est fortement recommandé de relire le TD qui concerne l’optimisation sous contraine. Quelques liens :

Pair trading

Le pair trading n’est pas vraiment une stratégie. La différence vient ici du fait qu’on considère une paire d’action comme produit financier plutôt qu’une action seule. Le trader achète un action pendant qu’il vend l’autre.

Machine learning et trading

Ce projet demande un peu de travail. La première étape consiste à choisir des actions puis à déterminer manuellement ou à l’aide d’une règle les dates à laquelle il aurait fallu acheter ou vendre cette action pour obtenir un bon rendement. Lors de cett étape, on utilise le futur de l’action pour déterminer l’action idéale. On appelle cette série Y_t. Ensuite, on constitue une base de features (X_t) : à chaque temps t, on construit des indicateurs comme la volatilité, la distance à différentes moyennes mobiles, la corrélation avec un indice ou une autre action, le RSI… Ces indicateurs ne dépendent que du passé de la série. L’objectif est de construire une fonction qui prédit la bonne décision Y_t = f(X_t) + \epsilon_t. On utilise des techniques issues du machine learning et des modules tels que scikit-learn.

ETF: réplication d’un indice

Un tracker ou ETF (Exchange Traded Funds) est un fonds de placement en valeurs mobilières dont les parts peuvent être transigées en bourse, comme des actions. (source: Fonds négocié en bourse). La plupart des fonds négociés en bourse sont des fonds indiciels, véhicules de placement qui reproduisent le comportement d’un indice boursier et caractérisés par des frais d’administration minimes ; on parle alors de fonds indiciels cotés (trackers en anglais). L’idée de ce projet est de répliquer une indice de votre choix d’une manière différente. On peut par exemple reproduire un indice américain avec des actions européennes. Un autre exemple sous forme de notebook : etf-replicate.ipynb.

Travail attendu

Le rapport doit résumer ce que votre projet vous a appris, vous devez désigner une meilleure stratégie avec les meilleurs paramètres et la façon de les obtenir. Et comme c’est un projet de finance, on s’attend sans doute à ce que vous pariez sur votre propre stratégie à moins que…

Erreurs à éviter

Aucun résultats d’optimisation

L’optimisation d’un portefeuille mène parfois à un protefeuille où tous les coefficients sont nuls sauf un. Il important certains résultats d’optimisation soient insérés dans le rapport.

Nombre de paramètres et nombre de contraintes

Lorsqu’on optimise un portefeuille, le problème qu’on résoud est un problème d’optimisation sous contraintes. Chaque contrainte d’égalité enlève un degré de liberté au problème. Chaque contrainte d’inégalité également si celle-ci est saturée. Le nombre d’actions dans le portefeuille doit donc être plus grand que le nombre de contraintes afin que cela reste un problème d’optimisation.

Conclusions hâtives

Une stratégie doit être validée sur plusieurs actions ou produits, plusieurs périodes différentes. On ne peut pas conclure parce qu’on a obtenu un résultat positif pour une action et une période précises.