Système quantitatif institutionnel — Rotation sectorielle thématique
Institutional Quantitative System — Thematic Sector Rotation
Portfolio Optimizer Pro est un système d'allocation tactique d'actifs combinant le modèle Black-Litterman, des signaux momentum 6 mois, et une optimisation max Sharpe avec shrinkage Ledoit-Wolf. Il tourne un backtest mensuel sur 8 ETFs sectoriels thématiques (2008–2026) et génère un rapport HTML institutionnel avec allocation recommandée + rationale automatique.
| Métrique | Stratégie | Benchmark (SPY) |
|---|---|---|
| Rendement total | +1 033 % | +519 % |
| Rendement annualisé | +17.1 % | +14.5 % |
| Volatilité | ~18 % | ~16 % |
| Sharpe Ratio | ~0.95 | ~0.88 |
| Max Drawdown | ~−47 % | ~−55 % |
| Alpha vs SPY | +2.64 %/an | — |
Coûts de transaction 0.10% par trade inclus. Résultats en dehors de l'échantillon sur la période post-2022 particulièrement solides.
Portfolio Optimizer Pro is an institutional-grade tactical asset allocation system built on Black-Litterman expected return blending, 6-month momentum signals, and max-Sharpe optimization with Ledoit-Wolf covariance shrinkage. It runs a monthly backtest across 8 thematic sector ETFs (2008–2026) and produces a professional HTML report with recommended allocation and auto-generated rationale.
| Metric | Strategy | Benchmark (SPY) |
|---|---|---|
| Total Return | +1,033% | +519% |
| Annualized Return | +17.1% | +14.5% |
| Volatility | ~18% | ~16% |
| Sharpe Ratio | ~0.95 | ~0.88 |
| Max Drawdown | ~−47% | ~−55% |
| Jensen's Alpha | +2.64%/yr | — |
0.10% transaction costs per trade included. Post-2022 out-of-sample performance is particularly robust.
| Ticker | Nom | Thème macro | Secteur |
|---|---|---|---|
| QQQ | Nasdaq 100 ETF | Tech & Croissance séculaire | Technology |
| SMH | VanEck Semiconductor ETF | Infrastructure IA | Semiconducteurs |
| URA | Global X Uranium ETF | Renaissance Nucléaire | Énergie Propre |
| XLE | Energy Select Sector SPDR | Cycle Énergie & Géopolitique | Énergie traditionnelle |
| GLD | SPDR Gold Shares | Valeur Refuge & Inflation | Métaux Précieux |
| XLP | Consumer Staples Select SPDR | Défensif & Faible Beta | Consommation de Base |
| BIL | SPDR Bloomberg 1-3M T-Bill ETF | Cash Tactique / Risk-Off | Obligations CT |
| ITA | iShares Aerospace & Defense ETF | Dépenses OTAN & Géopolitique | Industriels / Défense |
Logique de l'univers : faibles corrélations inter-thèmes, couverture macro complète (croissance / inflation / défense / cash), permettant une rotation tactique réelle selon le régime de marché.
v6/
├── main.py ← Point d'entrée principal (pipeline complet)
├── config.py ← Univers d'actifs, dates, benchmark (modifiable)
├── model.py ← Moteur Black-Litterman + Ledoit-Wolf + max Sharpe
├── data.py ← Téléchargement et prétraitement via yfinance
├── performance.py ← Rapport HTML institutionnel (métriques + allocation)
├── stress_test.py ← Tests de stress : 2008, COVID-2020, Drawdown 2022
├── app.py ← Dashboard Streamlit interactif
├── videomaker.py ← Génération de vidéo animée du backtest
├── requirements.txt ← Dépendances Python
├── LANCEMENT.md ← Guide de démarrage rapide
├── assets/ ← CSS, logo
└── docs/ ← Documentation technique (API, méthodologie)
# Cloner / copier le dossier v6/
cd v6/
# Installer les dépendances
pip install -r requirements.txt
# Lancer le backtest complet
python main.pyDépendances principales :
pandas>=1.5.0 numpy>=1.23.0
yfinance>=0.2.0 quantstats>=0.0.40
pypfopt>=1.5.0 matplotlib>=3.6.0
streamlit>=1.28.0 scipy>=1.10.0
1. DONNÉES yfinance → prix ajustés dividendes (2008–aujourd'hui)
↓
2. MOMENTUM Rendement 126 jours (6 mois) → views absolues BL
↓
3. OPTIMISATION Black-Litterman blending → max Sharpe (Ledoit-Wolf Σ)
↓ (mensuel, fenêtre glissante 6 mois)
4. BACKTEST Simulation cumulative avec coûts de transaction 0.10%
↓
5. RAPPORT HTML institutionnel : métriques + régime + allocation + rationale
Combine les rendements d'équilibre CAPM avec des views absolues dérivées du momentum :
E[R] = [(τΣ)⁻¹ + P'Ω⁻¹P]⁻¹ × [(τΣ)⁻¹Π + P'Ω⁻¹Q]
- τ = 0.01 — scalaire de confiance (faible → prior CAPM dominant)
- Σ = matrice de covariance Ledoit-Wolf (bien conditionnée, stable)
- Π = rendements d'équilibre CAPM
- Q = rendements momentum 6 mois (views absolues)
Pourquoi Ledoit-Wolf et non S_bl ?
La covariance postérieure BL (bl.bl_cov()) est fréquemment mal conditionnée avec 8 actifs, causant des erreurs de factorisation LDL dans le solveur OSQP. La matrice Ledoit-Wolf est stable par construction et est le standard institutionnel pour les portefeuilles <50 actifs.
momentum_126 = (price_today / price_126_days_ago) - 1Ce signal identifie les thèmes macro en cours d'accélération et les penalise si négatifs — permettant au modèle de "sortir" via BIL (T-Bills) plutôt que de rester en actifs en chute.
Le momentum 6 mois du SPY détecte le régime :
| SPY 6M | Régime | Couleur |
|---|---|---|
| > +5% | Risk-On / Haussier | Vert |
| 0% à +5% | Mixte | Bleu |
| −5% à 0% | Neutre | Gris |
| < −5% | Risk-Off / Baissier | Rouge |
cd v6/
streamlit run app.pyLe dashboard interactif affiche :
- Courbe de valeur de portefeuille vs SPY
- Métriques clés en temps réel
- Évolution des allocations mensuelles
- Analyse du drawdown
- Poids actuels recommandés
python stress_test.pySimule les périodes de crise historiques :
- 2008–2009 : Crise financière mondiale (−55% SPY)
- Fév–Mars 2020 : Crash COVID (−34% SPY en 33 jours)
- 2022 : Marché baissier taux/tech (−28% SPY)
Le rapport AlphaReport_[timestamp].html généré par main.py contient :
- En-tête institutionnel — stratégie, période, benchmark
- 8 cartes métriques — total return, CAGR, Sharpe, Sortino, Calmar, max DD, alpha, volatilité
- Bannière régime de marché — situation SPY actuelle
- Tableau d'allocation recommandée — poids, signal momentum, thème, rationale auto-généré
- Section méthodologie — 6 cartes explicatives (BL, momentum, Ledoit-Wolf, max Sharpe, coûts, univers)
- Rapport QuantStats complet — statistiques détaillées, histogrammes, rolling metrics
- Poids max par actif : 80% (contrainte OSQP)
- Poids min : 0% (pas de positions courtes)
- Cash tactique : BIL absorbe l'allocation quand tous les signaux sont négatifs
- Coûts de transaction : 0.10%/trade déduit du premier jour de chaque période
- Fallbacks : min volatility → equal weight si max Sharpe échoue (solveur numérique)
| Période | Régime | Comportement stratégie |
|---|---|---|
| 2008–2009 | Risk-Off | Rotation vers GLD + XLE + BIL |
| 2013–2021 | Risk-On | Surpondération QQQ + SMH |
| 2022 | Risk-Off Tech | XLE + ITA + GLD — underperformance QQQ/SMH évitée |
| 2023–2026 | Risk-On IA | QQQ + SMH dominants (momentum IA fort) |
Modifier config.py pour personnaliser :
ASSETS = ["QQQ", "SMH", "URA", "XLE", "GLD", "XLP", "BIL", "ITA"]
BENCHMARK = "SPY"
START_DATE = "2008-01-01" # URA disponible depuis 2007
END_DATE = None # Jusqu'à aujourd'huiCe logiciel est fourni à des fins éducatives et de démonstration. Les performances passées ne garantissent pas les résultats futurs. Les décisions d'investissement doivent être prises avec l'avis de professionnels qualifiés.
This software is provided for educational and demonstration purposes only. Past performance does not guarantee future results.
Email : [sevenson506@gmail.com]
LinkedIn : [Profil LinkedIn]
Portfolio Optimizer Pro v2.0 — Système quantitatif institutionnel
Copyright © 2026 — Tous droits réservés