Aller au contenu

Prédiction de cours d'actions

·4 mins·
DataScience Économie

Pour boucler mon diplôme en data science avec panache, j’ai choisi de me lancer dans un projet de prédiction des cours boursiers. Rien de prétentieux ici : l’objectif n’était pas de battre les marchés mais plutôt de relever un vrai défi full-stack — depuis la constitution de la base de données jusqu’à la visualisation des résultats sur un tableau de bord interactif.

Commençons par la fin : voici un aperçu du dashboard (⚠️ en cours de finalisation…).

1. Sélection des variables
#

1.1. Les actions sélectionnées
#

J’ai travaillé sur cinq grandes entreprises françaises aux profils très différents :

  • Airbus : industrie aéronautique et défense. 67 % de son chiffre d’affaires provient des ventes d’avions, 20 % des systèmes de défense et aérospatiaux, et 12 % des hélicoptères civils et militaires.
  • Orange : télécoms et services bancaires. 79 % de son activité concerne les particuliers, 18 % les entreprises, et 3 % les opérateurs internationaux.
  • L’Oréal : cosmétique. Répartition équilibrée : 42 % grand public, 36 % luxe, 11 % produits professionnels, 11 % cosmétique active.
  • Renault : secteur automobile. 92 % des revenus viennent des ventes de véhicules, le reste des services comme la location ou l’entretien.
  • TotalEnergies : énergie, pétrole et gaz. 40 % du chiffre d’affaires est lié au raffinage et à la chimie.

1.2. Matières premières
#

Les matières premières peuvent avoir un impact direct sur les entreprises, notamment dans l’aéronautique ou l’automobile. J’ai donc intégré les cours de l’or, de l’argent, du cuivre, du pétrole et du gaz naturel comme variables potentielles.

1.3. Météo et cycle lunaire
#

Un peu plus original : j’ai aussi intégré des données météo pour la région parisienne sur l’année 2020. Ces données proviennent d’une étude sur la Covid-19 et comprennent température, précipitations, humidité et vent.

Et pour pousser l’expérimentation plus loin, j’ai récupéré les phases de la lune, avec le pourcentage de visibilité chaque jour. Je n’en attends rien de concret, mais certains analystes aiment établir des liens entre les marchés et les astres…

1.4. Réseaux sociaux
#

Les réseaux sociaux regorgent d’informations en temps réel sur les tendances et l’image des entreprises. Twitter était la plateforme la plus accessible pour ce genre d’analyse, notamment via des librairies Python dédiées.

Mais les limitations de l’API gratuite (compte vérifié, accès limité aux 30 derniers jours…) m’ont rapidement bloqué. Comme j’avais besoin de données historiques pour 2020, j’ai abandonné cette piste. Pour une analyse mise à jour en continu, ce serait clairement à explorer.

1.5. Actualités financières
#

L’actualité joue un rôle clé dans les décisions d’achat ou de vente. Le site boursier.com propose un fil de news intéressant, avec des articles liés à chaque entreprise.

J’ai donc choisi de scraper les titres d’articles et leurs dates pour lancer une première analyse de sentiment. Le scraping n’est pas simple (le site bloque les requêtes classiques avec BeautifulSoup), mais j’ai contourné ça en téléchargeant les pages HTML et en les analysant avec lxml.

Amélioration future : analyser le sentiment de chaque article en entier, plutôt que de se contenter des titres.

2. Préparation des données
#

2.1. Granularité temporelle
#

La base de données est structurée à la journée. Lorsque les sources fournissent des données plus fines (intra-journalières), elles sont agrégées par moyenne, si c’est pertinent. En 2020, on compte environ 250 jours de bourse : donc 250 lignes.

2.2. Variable \(y\) à prédire
#

Les variables à prédire sont les prix de clôture ajustés des actions citées plus haut. Ce sont nos variables endogènes.

2.3. Variables explicatives \(X\)
#

Les variables explicatives sont de plusieurs types :

  • D’abord, une partie provient directement des séries de prix elles-mêmes, en mode fenêtre glissante, ce qui permet aux modèles comme les LSTM de s’en servir pour prévoir la suite.
  • Ensuite, j’ai intégré des données sur des entreprises similaires à l’international (USA, Chine, Europe) pour voir s’il y avait un effet de corrélation sur les actions françaises.

2.4. Nettoyage des données
#

Quand des données étaient manquantes (jours fériés par exemple), je les ai imputées par interpolation : moyenne entre la valeur précédente et la suivante.

La suite arrive bientôt …
Thibault Clément - Intechnia
Auteur
Thibault Clément - Intechnia
Data scientist