🇬🇧 This README is also available in English.
Ce projet présente le module d'optimisation de portefeuille développé pour la plateforme SiraEdge, une solution innovante visant à démocratiser l'accès aux outils professionnels de gestion d'actifs.
SiraEdge est né d'une vision simple mais ambitieuse : démocratiser l'accès aux outils professionnels de gestion de portefeuille. Notre mission est de rendre la finance accessible à tous, en combinant rigueur mathématique et expérience utilisateur intuitive.
- Accessibilité : Démocratisation de la finance et pédagogie
- Innovation : Intégration des dernières avancées en finance quantitative
- Excellence : Code robuste, performance optimale et fiabilité
Ce module implémente et analyse 7 modèles d'optimisation de portefeuille :
- Fondement de l'optimisation moderne
- Maximisation du ratio de Sharpe
- Gestion du compromis risque-rendement
- Égalisation des contributions au risque
- Robustesse face aux incertitudes de rendement
- Diversification naturelle
- Exploration aléatoire de l'espace des solutions
- Visualisation de la frontière efficiente
- Validation des solutions candidates
- Fusion des vues du marché et convictions personnelles
- Portefeuille d'équilibre ajusté
- Approche professionnelle institutionnelle
- Prédiction des rendements via IA
- Analyse de patterns techniques (RSI, momentum, volatilité)
- Signaux quantitatifs objectifs
- Combinaison Risk Parity + scores ML
- Stabilité de base + opportunisme intelligent
- Approche core-satellite
- Objectifs sur mesure (Sharpe + Stabilité + MDD + Turnover)
- Adaptation aux préférences de l'investisseur
- Optimisation multi-critères
SiraEdge_Optimisation/
├── src/ # Code source Python
│ ├── data_utils.py # Utilitaires de données et indicateurs
│ ├── markowitz.py # Optimisation Markowitz
│ ├── risk_parity.py # Parité de risque
│ ├── monte_carlo.py # Simulation Monte Carlo
│ ├── black_litterman.py # Modèle Black-Litterman
│ ├── ml_predictor.py # Prédicteur ML
│ ├── hybrid_model.py # Modèle hybride
│ ├── custom_metrics_opt.py # Métriques personnalisées
│ ├── metrics_utils.py # Calculs de métriques financières
│ ├── walkforward_backtest.py # Backtest walk-forward
│ └── hyperparams.py # Hyperparamètres centralisés
├── figures/ # Graphiques et visualisations
│ ├── markowitz_frontier.png
│ ├── risk_parity_weights.png
│ ├── monte_carlo_cloud.png
│ ├── black_litterman_weights.png
│ ├── ml_coefficients.png
│ ├── hybrid_weights.png
│ └── custom_opt_weights.png
├── rapport/ # Sources LaTeX du rapport
│ ├── sources/ # Fichiers sources LaTeX
│ │ ├── rapport_siraedge_fr.tex
│ │ ├── rapport_siraedge_en.tex
│ │ ├── portfolio_summary_included.tex
│ │ └── walkforward_results_simulated.tex
│ ├── pdf/ # Rapports PDF compilés
│ │ ├── rapport_siraedge_fr.pdf
│ │ └── rapport_siraedge_en.pdf
│ ├── tables/ # Données tabulaires
│ ├── compile_reports.sh # Script de compilation automatisée
│ └── README.md # Guide d'organisation du rapport
├── README.md # Ce fichier
├── requirements.txt # Dépendances Python
└── make_report.sh # Script de génération automatique- Python 3.8+
- pip ou conda
- Cloner le repository
git clone https://github.com/IsmailMoudden/Portfolio-Optimization-Module-SiraEdge.git
cd Portfolio-Optimization-Module-SiraEdge- Installer les dépendances
pip install -r requirements.txt- Vérifier l'installation
python -c "import pandas, numpy, matplotlib, yfinance; print('Installation réussie!')"# Générer toutes les figures
python src/data_utils.py
python src/markowitz.py
python src/risk_parity.py
python src/monte_carlo.py
python src/black_litterman.py
python src/ml_predictor.py
python src/hybrid_model.py
python src/custom_metrics_opt.py
python src/walkforward_backtest.py# Utiliser le script automatique
chmod +x make_report.sh
./make_report.sh
# Ou compiler manuellement
cd rapport/sources
tectonic rapport_siraedge_fr.tex
tectonic rapport_siraedge_en.tex
# Ou utiliser le script de compilation automatisé
cd rapport
./compile_reports.sh# Exemple d'utilisation du module Risk Parity
import numpy as np
from src.risk_parity import risk_parity_weights
from src.data_utils import download_prices
# Récupérer les prix (mode auto: télécharge ou bascule en données synthétiques)
prices = download_prices(["SPY", "QQQ", "GLD", "DBA"], "2020-01-01", "2023-12-31", mode="auto")
rets = np.log(prices / prices.shift(1)).dropna()
cov = (rets.cov().values) * 252
# Calculer les poids Risk Parity
weights = risk_parity_weights(cov)
print("Poids optimaux:", weights)- ETFs : SPY, QQQ, IWM, EFA
- Commodities : GLD, SLV, USO, DBA
- Fenêtre : 2020-2023
- Fréquence : Données quotidiennes
- Rebalancing : Mensuel (walk-forward)
- RSI (Relative Strength Index)
- Momentum (retour sur 20 jours)
- Volatilité rolling (fenêtre 20 jours)
- Corrélations dynamiques
Le module inclut une analyse walk-forward robuste :
- Rolling window : 252 jours (1 année de trading)
- Rebalancing : Mensuel
- Coûts de transaction : 5 bps
- Métriques : Sharpe, Calmar, Sortino, Stabilité, Turnover
- Ratio de Sharpe : Rendement ajusté au risque
- Ratio de Sortino : Rendement ajusté au risque baissier
- Ratio de Calmar : Rendement vs Maximum Drawdown
- Volatilité : Risque annualisé
- Stabilité des poids : Constance de l'allocation
- Turnover : Activité de trading
- Diversification effective : Nombre d'actifs équivalents
- Corrélation moyenne : Cohésion du portefeuille
Ce projet est conçu pour être éducatif et accessible :
- Explications détaillées de chaque concept
- Exemples concrets avec chiffres
- Analogies simples pour concepts complexes
- Code commenté et documenté
- Workflow complet de A à Z
- Fenêtres d'estimation (126, 252, 504 jours)
- Intensité des signaux ML (alpha)
- Confiance des vues Black-Litterman (tau)
- Poids des métriques personnalisées
- Limites de poids par actif
- Contraintes de secteur/classe d'actifs
- Pénalités de turnover
- Contraintes de levier
Les rapports complets sont disponibles en français et en anglais :
- Rapport Français :
rapport/pdf/rapport_siraedge_fr.pdf - Rapport Anglais :
rapport/pdf/rapport_siraedge_en.pdf
Les deux rapports contiennent :
- Explications théoriques détaillées
- Formulations mathématiques
- Analyses comparatives
- Résultats et interprétations
- Limites et considérations pratiques
- Implémentations complètes des modèles listés dans le rapport
- Commentaires et docstrings légers pour l'essentiel des fonctions
- Fallback de données: bascule automatique vers des séries synthétiques si le téléchargement échoue
Ce module s'intègre directement dans la plateforme SiraEdge pour permettre aux utilisateurs de :
- Tester différents modèles d'optimisation
- Comparer leurs performances en temps réel
- Comprendre les trade-offs risque-rendement
- Apprendre par la pratique avec feedback immédiat (cadre pédagogique)
Portée: ce module a une vocation éducative et comparative; il ne constitue pas une recommandation d'investissement ni une promesse de performance.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- Équipe SiraEdge : siraedge.service@gmail.com
- Repository GitHub : https://github.com/IsmailMoudden/Portfolio-Optimization-Module-SiraEdge
- Plateforme SiraEdge : https://siraedge.com
SiraEdge - Rendre la finance accessible, transparente et innovante pour tous. 🚀