Introduction à Python
  • Back to Main Website
  • Home
  • Comprendre Et Installer Python
    • Comprendre Et Installer Python
    • Histoire du Langage
    • Exécution d’un Programme Python
    • Versions et Compilation de Python
    • Le PATH
    • Path.. et environnements virtuels!
    • Les IDEs
    • Les Notebooks

    • Quelques IDEs en Python
    • VsCode - L’IDE Flexible et Polyvalent
    • Spyder - Un IDE Orienté Science des Données
    • PyCharm - L’IDE orienté Python

    • Travaux Pratiques
    • TP Guidé - Installer plusieurs versions de python avec pyenv
    • TP - Construire son python depuis la source
  • Syntaxes et Concepts de Base
    • Syntaxes et Concepts de Base
    • Syntaxe et objets de Base Python
    • Fonctions et Modules
    • Introduction à la POO en Python

    • Travaux Pratiques
    • Exercices d’applications
    • Base de la POO: Exercice
  • Les Librairies Python
    • Les Librairies Python
    • Installer et importer des librairies en Python
    • Les DataFrames
    • Exemple sur pandas
    • Calcul Scientifique et Optimization
    • Machine Learning
    • Recupérer des données du net
    • Python - Aussi un language pour servir des données
    • Visualiser et présenter ces données avec Python

    • Travaux Pratiques
    • TP-3 Libraries
    • TP - Utiliser pandas
  • Bonne pratiques, Dangers, et Astuces
    • Bonne pratiques, Dangers, et Astuces
    • Mutabilité et Scope
    • Typage en Python
    • Asynchronie et Multiprocessing

    • Travaux Pratiques
    • Modern Portfolio Theory - Practical Work
    • Modern Portfolio Theory - Practical Work - Corrected version
    • TP Python for Finance: Introduction to Option Pricing
    • TP Python for Finance: Introduction to Option Pricing - Corrected Version
    • TP - Creer un outil de récupération de donnée
  • Concepts avancés
    • Concepts avancés
    • L’arbre Syntaxique Abstrait ou AST
    • Python Orienté Objet - Les Dunders
    • Python Orienté Objet - les Design Patterns

    • Travaux Pratiques
    • TP-5
  • Sujets de Projets possibles
    • Projets
    • Projets Introduction à Python - Millésime 2024
    • Projets Introduction à Python - Millésime 2025
  • Code source
  1. Projets Introduction à Python - Millésime 2025
  • Projets
  • Projets Introduction à Python - Millésime 2024
  • Projets Introduction à Python - Millésime 2025

On this page

  • Projet: Analyse et Optimisation de Portefeuille par Secteur avec yfinance
    • Contexte et Objectif
    • Période et Sources de Données
    • Plan du Projet
      • 1. Collecte et Préparation des Données
      • 2. Analyse de Performance par Secteur (Analyse Intrasectorielle)
      • 3. Optimisation de Portefeuille Intrasectorielle
      • 4. Optimisation et Comparaison Intersectorielle
      • 5. Clustering et Optimisation par Groupes
      • 6. Visualisation et Analyse des Résultats
    • Format de Rendu
    • Conseils et Astuces
    • Ressources Utiles

Projets Introduction à Python - Millésime 2025

Projet
Finance
Analyse de Données
Projet d’analyse et d’optimisation de portefeuille en finance à l’aide de yfinance, pandas, SciPy, matplotlib/seaborn et scikit-learn
Author

Remi Genet

Published

2025-02-12

Projet: Analyse et Optimisation de Portefeuille par Secteur avec yfinance

Contexte et Objectif

Ce projet a pour but de vous familiariser avec la collecte, l’analyse et l’optimisation de données financières en utilisant Python. Vous allez :

  • Collecter et manipuler des données financières à l’aide de yfinance et pandas.
  • Analyser la performance des instruments (ETFs, compagnies et fonds mutuels) pour l’ensemble des secteurs.
  • Réaliser une optimisation intrasectorielle (c’est-à-dire, au sein de chaque secteur, optimiser la composition du portefeuille parmi les actions/instruments du secteur) ainsi que une optimisation intersectorielle :
    • Entre les secteurs : Optimiser la répartition globale entre secteurs.
    • Sur les actions indépendamment : Optimiser un portefeuille constitué de l’ensemble des instruments, sans tenir compte des secteurs.
  • Simuler un rééquilibrage trimestriel des portefeuilles en utilisant des données historiques (allant de 3 mois à 5 années précédant chaque rééquilibrage).
  • Comparer différentes stratégies de portefeuilles et benchmarks, incluant notamment :
    • L’indice S&P500.
    • Un portefeuille équi-pondéré par secteur.

Période et Sources de Données

  • Période d’étude : de 2010 à 2024 (2025 exclu)
  • Sources de données :
    Pour chaque secteur, utilisez les fonctions de yfinance afin de récupérer les listes d’instruments suivants :
    • yf.Sector('technology').top_etfs, yf.Sector('technology').top_mutual_funds, yf.Sector('technology').top_companies
    • Et ainsi de suite pour tous les secteurs disponibles.

Plan du Projet

1. Collecte et Préparation des Données

  • Récupération des instruments :
    Récupérez, pour tous les secteurs, les top ETFs, compagnies et fonds mutuels.

  • Téléchargement des données historiques :
    Pour chaque instrument, téléchargez les données quotidiennes (prix, volumes, etc.) pour la période 2010-2024.

  • Nettoyage et structuration :
    Utilisez pandas pour organiser et préparer les données, en assurant leur cohérence sur la période d’étude.

2. Analyse de Performance par Secteur (Analyse Intrasectorielle)

  • Calcul des rendements :
    Pour chaque instrument, calculez les rendements historiques.
    Au sein de chaque secteur, comparez la performance des ETFs, compagnies et fonds mutuels.
    Utilisez par exemple le rendement moyen des ETFs comme estimation indicative du rendement du secteur.

  • Visualisations :
    Créez des graphiques (avec matplotlib ou seaborn) pour illustrer l’évolution et la comparaison des performances au sein de chaque secteur.

3. Optimisation de Portefeuille Intrasectorielle

Cette étape concerne l’optimisation au sein de chaque secteur indépendamment :

  • Objectif :
    Pour chaque secteur, optimisez la composition du portefeuille parmi les instruments du secteur en appliquant trois fonctions d’optimisation via SciPy :

    • Minimisation de la Variance :
      Identifiez la combinaison d’instruments qui minimise la volatilité globale.

    • Maximisation du Ratio de Sharpe :
      Optimisez pour obtenir le meilleur compromis rendement/risque.

    • Maximisation du Ratio de Diversification :
      Cherchez à maximiser la diversification du portefeuille.

  • Méthodologie :

    • Les optimisations doivent être réalisées sur des données historiques précédant chaque rééquilibrage.
      Par exemple, utilisez les données couvrant une période allant de 3 mois à 5 années avant chaque rééquilibrage trimestriel.
    • Rééquilibrez le portefeuille intrasectoriel tous les 3 mois pour recalculer les pondérations optimales selon chaque stratégie.
    • Comparez la performance de ces portefeuilles optimisés (intra-secteur) sur la période complète d’étude (2010-2024).

4. Optimisation et Comparaison Intersectorielle

Cette partie se concentre sur l’optimisation entre les secteurs et sur une optimisation globale sur l’ensemble des actions :

  • Optimisation entre les secteurs :
    • Agrégation des performances sectorielles :
      Pour chaque secteur, agrégez les performances (par exemple, à l’aide du rendement moyen des ETFs ou d’autres indicateurs pertinents).
    • Optimisation de la répartition globale entre secteurs :
      Appliquez les mêmes fonctions d’optimisation (minimisation de la variance, maximisation du ratio de Sharpe, et maximisation du ratio de diversification) pour déterminer la répartition optimale entre les secteurs.
  • Optimisation sur les actions indépendamment :
    • Réalisez une optimisation globale sur l’ensemble des instruments disponibles, sans tenir compte de leur appartenance sectorielle.
  • Comparaisons et Benchmarks :
    Comparez la performance sur la période complète (2010-2024) des portefeuilles suivants :
    • L’indice S&P500.
    • Un portefeuille équi-pondéré par secteur.
    • Le portefeuille optimisé entre secteurs.
    • Le portefeuille optimisé sur l’ensemble des actions indépendamment.

5. Clustering et Optimisation par Groupes

  • Clustering :
    À chaque rééquilibrage trimestriel, appliquez le K-means (de scikit-learn) directement sur les rendements passés des instruments (ou d’autres caractéristiques pertinentes) pour regrouper les actions en groupes homogènes.

  • Optimisation par groupes :

    • Traitez chaque groupe comme une entité équi-pondérée.
    • Optimisez la répartition globale du portefeuille en imposant des contraintes sur le poids maximum attribué à chaque groupe.

6. Visualisation et Analyse des Résultats

  • Graphiques et Tableaux :
    • Visualisez l’évolution des portefeuilles optimisés (intrasectoriels et intersectoriels) et comparez-les aux benchmarks.
    • Affichez l’évolution des pondérations lors des rééquilibrages.
    • Illustrez les clusters obtenus via K-means et l’impact de ces regroupements sur l’optimisation.
  • Commentaires et Interprétations :
    • Documentez et justifiez vos choix méthodologiques.
    • Analysez les résultats obtenus à chaque étape et discutez des avantages et limites des différentes approches d’optimisation.

Format de Rendu

  • Livrable : Un Notebook Jupyter (.ipynb) par groupe (groupes de 4).
  • Structure recommandée du Notebook :
    1. Première cellule : Installation des packages avec leurs versions (assurez-vous que le Notebook s’exécute de bout en bout sans erreur).
      Exemple :

      # Installation des packages (versions indiquées)
      !pip install yfinance==0.2.18 pandas==1.5.3 scipy==1.9.3 matplotlib==3.6.2 seaborn==0.12.2 scikit-learn==1.2.2
      
      # Importations
      import yfinance as yf
      import pandas as pd
      import numpy as np
      from scipy.optimize import minimize
      import matplotlib.pyplot as plt
      import seaborn as sns
      from sklearn.cluster import KMeans
    2. Première cellule : importation des packages. Exemple :

      # Importations
      import yfinance as yf
      import pandas as pd
      import numpy as np
      from scipy.optimize import minimize
      import matplotlib.pyplot as plt
      import seaborn as sns
      from sklearn.cluster import KMeans
    3. Cellules suivantes : Code commenté, analyses étape par étape, visualisations et explications détaillées des choix méthodologiques.

    4. Conclusion : Synthèse des résultats et discussion des performances des différentes stratégies de portefeuille.

Conseils et Astuces

  • Documentation : Utilisez abondamment les commentaires et les cellules Markdown pour expliquer votre démarche.
  • Validation : Assurez-vous que le Notebook fonctionne intégralement du début à la fin en un lancement.
  • Visualisations : La clarté et la qualité des graphiques sont essentielles pour illustrer vos analyses.
  • Extensions : Toute analyse ou visualisation supplémentaire sera appréciée et valorisée.

Ressources Utiles

  • Documentation yfinance
  • Documentation Pandas
  • Documentation SciPy (optimisation)
  • Documentation Matplotlib
  • Documentation Seaborn
  • Documentation scikit-learn (K-means)

Bonne chance à tous !
N’oubliez pas de bien commenter votre code et d’expliquer vos choix méthodologiques. La clarté et la qualité de votre présentation seront des éléments essentiels de votre évaluation.

Back to top
Projets Introduction à Python - Millésime 2024

Introduction à Python, Rémi Genet.
Licence
Code source disponible sur Github

 

Site construit avec et Quarto
Inspiration pour la mise en forme du site ici
Code source disponible sur GitHub