
Vue synthétique du pipeline ML et des courbes de stratégies comparées.
Finance quantitative · Data science · Machine Learning
Ce projet est lié aux projets « Backtest et optimisation de portefeuille » et « Application de suivi de patrimoine »: il constitue la brique machine learning utilisée pour tester des signaux et comparer leur impact sur la performance portefeuille. Le repo structure un pipeline complet, de la préparation des données marché à la production de métriques test, avec une logique reproductible (scripts dédiés + orchestration run_all). L’approche combine des baselines classiques (Equal Weight, Markowitz Minimum Variance) et des modèles supervisés (Random Forest, Logistic Regression) pour prédire la direction des rendements journaliers et transformer ces probabilités en poids de portefeuille.
Ce que ce projet démontre
Capacité à transformer un sujet quantitatif en pipeline ML exploitable: ingénierie de features, sélection de variables, entraînement multi-modèles, comparaison à des baselines financières et restitution claire des résultats.

Mon rôle
Participation à la structuration du projet, à l’intégration des modules de comparaison de stratégies et à la formalisation d’un flux complet: préparation des données, entraînement, backtest et reporting.
Contexte
L’objectif était de dépasser un simple notebook exploratoire pour produire une base de travail rigoureuse et collaborative: code modulaire, scripts dédiés, métriques exportées et graphes de comparaison directement utilisables.
Objectif
Évaluer de manière structurée l’apport de modèles supervisés sur l’allocation de portefeuille, en conservant un point de référence financier robuste grâce aux baselines Equal Weight et Markowitz.
Deep dive
Le projet suit une logique quant/ML complète: ingestion des prix, construction de features techniques, entraînement de modèles directionnels par actif, backtest de portefeuille, puis comparaison systématique aux baselines.
Captures

Vue synthétique du pipeline ML et des courbes de stratégies comparées.

Comparaison visuelle du modèle Random Forest face aux baselines financières.
Architecture
Modules `src/data/load_data.py` et `src/data/preprocess.py` pour charger les prix, calculer les rendements et séparer train/test de façon temporelle.
Construction d’indicateurs techniques (`src/features/technical_indicators.py`) et sélection ANOVA (`src/features/feature_selection.py`) sur les variables pertinentes.
Implémentation de baselines financières (`src/baselines`) et modèles ML (`src/models/random_forest.py`, `src/models/logistic_regression.py`) avec logique de backtest.
Scripts `scripts/run_*.py` + `run_all.py` pour exécuter le pipeline complet, générer les tables de métriques et les graphes d’equity curve.
Pipeline
Choix techniques
Chaque stratégie ML est évaluée face à Equal Weight et Markowitz pour garder un référentiel financier stable, pas uniquement un score de classification.
Le split train/test suit la chronologie marché afin de limiter les biais de fuite d’information sur séries temporelles.
Random Forest combine une réduction de dimension des features et un réglage d’hyperparamètres pour éviter une approche purement arbitraire.
Les prédictions sont faites par ticker puis agrégées via une logique de pondération, ce qui rapproche le modèle du besoin allocation réel.
Fiabilité
Limites
Évolutions
Difficultés rencontrées
Construire un pipeline temporel propre (train/test) pour limiter les biais de fuite d’information dans un contexte série temporelle.
Comparer des approches de nature différente (allocations statiques vs modèles supervisés) avec des métriques homogènes.
Maintenir une architecture lisible malgré la multiplication des briques (features, modèles, baselines, scripts d’orchestration).
Résultats et apprentissages
Mise en place d’un enchaînement reproductible via scripts (`run_prepare.py`, `run_baselines.py`, `run_random_forest.py`, `run_logistic_regression.py`, `run_all.py`).
Production systématique de rapports de test (`metrics_test_*`) et de figures comparatives (`equity_*_vs_baselines_test.png`).
Intégration de Random Forest avec sélection ANOVA des variables et recherche d’hyperparamètres (`GridSearchCV`).
Ajout d’un benchmark supervisé Logistic Regression comparé aux stratégies financières classiques.
Autres projets

Finance personnelle · Python · PyQt6
Application desktop PyQt6 + SQLite pour centraliser des comptes multi-actifs, reconstruire l’historique hebdomadaire et analyser la performance d’un portefeuille.
Voir ce projet
Finance quantitative · Analyse · Python
Environnement Python pour backtester des stratégies, comparer des métriques risque/rendement et analyser un portefeuille.
Voir ce projetÉchanger
Si ce projet vous intéresse, je peux revenir plus précisément sur le besoin initial, la structure des données, les hypothèses, les difficultés rencontrées et les limites de l'analyse.