Skip to content

Sevenson87/Portfolio-Optimizer-Pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Portfolio Optimizer Pro v2.0

Système quantitatif institutionnel — Rotation sectorielle thématique
Institutional Quantitative System — Thematic Sector Rotation

Python Version Backtest Alpha


🇫🇷 En français

Présentation

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.

Résultats du backtest (2008–2026)

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.


🇬🇧 In English

Overview

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.

Backtest Results (2008–2026)

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.


Univers d'actifs / Asset Universe

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é.


Architecture

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)

Installation

# Cloner / copier le dossier v6/
cd v6/

# Installer les dépendances
pip install -r requirements.txt

# Lancer le backtest complet
python main.py

Dé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

Pipeline d'exécution / Execution Pipeline

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

Méthodologie / Methodology

Black-Litterman

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.

Signal Momentum 6 mois

momentum_126 = (price_today / price_126_days_ago) - 1

Ce 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.

Régime de marché (rapport HTML)

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

Dashboard Streamlit

cd v6/
streamlit run app.py

Le 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

Stress Tests

python stress_test.py

Simule 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)

Rapport HTML

Le rapport AlphaReport_[timestamp].html généré par main.py contient :

  1. En-tête institutionnel — stratégie, période, benchmark
  2. 8 cartes métriques — total return, CAGR, Sharpe, Sortino, Calmar, max DD, alpha, volatilité
  3. Bannière régime de marché — situation SPY actuelle
  4. Tableau d'allocation recommandée — poids, signal momentum, thème, rationale auto-généré
  5. Section méthodologie — 6 cartes explicatives (BL, momentum, Ledoit-Wolf, max Sharpe, coûts, univers)
  6. Rapport QuantStats complet — statistiques détaillées, histogrammes, rolling metrics

Gestion du risque / Risk Management

  • 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)

Résultats par régime (comportement attendu)

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)

Configuration rapide / Quick Config

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'hui

Avertissement / Disclaimer

Ce 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.


Contact

Email : [sevenson506@gmail.com]
LinkedIn : [Profil LinkedIn]


Portfolio Optimizer Pro v2.0 — Système quantitatif institutionnel
Copyright © 2026 — Tous droits réservés

About

Markowitz + Black-Litterman + Ledoit-Wolf

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages