diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/ESGF_EXERCISES.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/ESGF_EXERCISES.md deleted file mode 100644 index c65e10bb1..000000000 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/ESGF_EXERCISES.md +++ /dev/null @@ -1,263 +0,0 @@ -# ESGF QC Trading - Exercices Progressifs - -**Cours** : Trading Algorithmique avec QuantConnect -**Mastere** : ESGF Big Data & Data Science en Finance -**Prerequis** : Compte QuantConnect gratuit, notebooks QC-Py-01 a QC-Py-04 completes -**Sponsoring** : Jared Broad (CEO QuantConnect) - organisation "Trading Firm ESGF" - ---- - -## Module 1 : Bases du Trading Algorithmique - -### Exercice 1.1 : Mon premier backtest EMA Crossover - -**Niveau** : Debutant | **Duree** : 45 min | **Ref** : QC-Py-02, EMA-Cross-Stocks - -**Objectif** : Creer un algorithme de trading base sur le croisement de deux moyennes mobiles exponentielles (EMA). - -**Enonce** : - -1. Creer un nouveau projet Python dans QuantConnect Lab -2. Implementer un algorithme avec : - - Actif : SPY (S&P 500 ETF) - - Resolution : Daily - - EMA rapide : 12 periodes - - EMA lente : 26 periodes - - Signal achat : EMA rapide croise au-dessus de l'EMA lente - - Signal vente : EMA rapide croise en-dessous de l'EMA lente -3. Backtester sur la periode 2018-01-01 a 2024-12-31 -4. Comparer avec un Buy & Hold sur SPY - -**Questions** : - -- Quel est le Sharpe ratio obtenu ? Est-il superieur a SPY Buy & Hold ? -- Combien de trades ont ete executes ? Quel est le win rate ? -- Modifier les periodes EMA (essayer 20/50 et 50/200). Quel impact sur les resultats ? - -**Indices** : -- Utiliser `self.ema(symbol, period, Resolution.DAILY)` pour creer les indicateurs -- Le crossover se detecte en comparant `ema_fast.current.value` et `ema_slow.current.value` -- Ne pas oublier `self.set_warm_up(period_lente, Resolution.DAILY)` - ---- - -### Exercice 1.2 : Portfolio All-Weather simplifie - -**Niveau** : Debutant | **Duree** : 60 min | **Ref** : QC-Py-08, AllWeather - -**Objectif** : Construire un portfolio multi-actifs inspire de Ray Dalio avec rebalancement periodique. - -**Enonce** : - -1. Creer un algorithme avec l'allocation "All-Weather" classique de Ray Dalio : - - SPY (actions) : 30% - - TLT (obligations long terme) : 40% - - IEF (obligations intermediaires) : 15% - - GLD (or) : 7.5% - - DBC (matieres premieres) : 7.5% - - *Note : cette allocation classique differe de la version optimisee v5.0 dans `projects/AllWeather/` qui utilise SPY/IEF/GLD/XLP. L'exercice utilise intentionnellement l'allocation originale Dalio pour sa valeur pedagogique.* -2. Implementer un rebalancement trimestriel (tous les 3 mois) -3. Backtester sur 2015-01-01 a 2024-12-31 -4. Calculer et afficher les metriques de performance - -**Questions** : - -- Quel est le MaxDD du portfolio ? Comment se compare-t-il a SPY seul pendant COVID (mars 2020) ? -- Le portfolio est-il plus stable que SPY en termes de volatilite annualisee ? -- Tester un rebalancement mensuel vs trimestriel. Quelle difference ? - -**Indices** : -- Utiliser `self.schedule.on()` avec `self.date_rules.month_start()` pour le rebalancement -- `self.set_holdings(symbol, weight)` gere automatiquement les ordres - ---- - -## Module 2 : Strategies Momentum - -### Exercice 2.1 : Rotation sectorielle par momentum - -**Niveau** : Intermediaire | **Duree** : 75 min | **Ref** : QC-Py-05, QC-Py-13, SectorMomentum - -**Objectif** : Implementer une strategie de rotation sectorielle basee sur le momentum (rendement passe). - -**Enonce** : - -1. Definir un univers de 11 ETFs sectoriels : - ``` - XLK, XLV, XLF, XLE, XLI, XLY, XLP, XLU, XLB, XLRE, XLC - ``` -2. A chaque rebalancement mensuel : - - Calculer le rendement sur 3 mois (momentum lookback) de chaque ETF - - Selectionner les 3 meilleurs (top-N) - - Allouer en equal-weight parmi les selectionnes - - Ajouter un filtre regime : SPY doit etre au-dessus de sa SMA200 pour investir -3. Si SPY < SMA200 : aller en cash (liquidation) -4. Backtester sur 2015-01-01 a 2024-12-31 - -**Questions** : - -- Quel impact a le filtre SMA200 sur le MaxDD en 2022 (bear market) ? -- Tester top-2, top-3, top-5. Quel est le meilleur compromis rendement/risque ? -- Tester des lookback de 1, 3, 6, 12 mois. Lequel donne le meilleur Sharpe ? - -**Indices** : -- `self.history(symbols, lookback_days, Resolution.DAILY)` pour les donnees historiques -- Calculer le rendement comme `(prix_actuel / prix_debut) - 1` -- Utiliser `sorted(zip(returns, symbols), reverse=True)[:top_n]` pour le classement - ---- - -### Exercice 2.2 : Trend-following multi-sectoriel - -**Niveau** : Intermediaire | **Duree** : 60 min | **Ref** : QC-Py-11, TrendStocksLite - -**Objectif** : Implementer une strategie trend-following avec filtre de tendance double (SMA + EMA crossover). - -**Enonce** : - -1. Univers : 15 large-caps diversifiees (voir `projects/TrendStocksLite/main.py`) -2. Signal bullish par action : - - Prix > SMA(200) - - EMA(20) > EMA(50) -3. Allocation equal-weight parmi les actions bullish uniquement -4. Rebalancement hebdomadaire (chaque lundi) -5. Comparer avec la version tech-only (5 actions AAPL, MSFT, GOOGL, AMZN, NVDA) - -**Questions** : - -- Combien d'actions sont en "uptrend" en moyenne ? Ce nombre varie-t-il entre bull et bear market ? -- La diversification (15 vs 5 stocks) reduit-elle le drawdown ? -- Quel serait l'impact d'un ATR trailing stop sur chaque position ? - ---- - -## Module 3 : Algorithm Framework QC - -### Exercice 3.1 : Alpha Model personnalise - -**Niveau** : Intermediaire-Avance | **Duree** : 90 min | **Ref** : QC-Py-13, QC-Py-14, EMA-Cross-Alpha - -**Objectif** : Refactorer la strategie EMA crossover en utilisant l'Algorithm Framework QC (Alpha + PCM + Execution + Risk models). - -**Enonce** : - -1. Creer une classe `EmaCrossAlphaModel(AlphaModel)` : - - `update(self, algorithm, data)` : generer des `Insight` Up/Down/Flat - - Signal Up quand EMA(20) croise au-dessus d'EMA(50) - - Signal Down quand EMA(20) croise en-dessous - - Duree d'insight : `timedelta(days=5)` (valide 5 jours) -2. Utiliser les modeles standard QC : - - `EqualWeightingPortfolioConstructionModel()` pour l'allocation - - `ImmediateExecutionModel()` pour l'execution - - `MaximumDrawdownPercentPerSecurity(0.10)` pour le risk -3. Univers : SPY, QQQ, IWM (3 ETFs indices) -4. Backtester sur 2020-01-01 a 2024-12-31 - -**Questions** : - -- Quel avantage offre l'Architecture Framework par rapport a une strategie monolithique ? -- Remplacer `EqualWeightingPCM` par `MeanVarianceOptimizationPCM`. Impact ? -- Ajouter un deuxieme Alpha Model (ex: RSI mean-reversion). Comment QC combine-t-il deux alphas ? - -**Indices** : -- Heriter de `AlphaModel` et implementer `update()` et `on_securities_changed()` -- Les Insights sont crees avec `Insight.price(symbol, timedelta, InsightDirection.Up)` -- Le Framework combine automatiquement les insights de multiples Alpha Models - ---- - -## Module 4 : Strategies Avancees - -### Exercice 4.1 : Strategie composite multi-alpha - -**Niveau** : Avance | **Duree** : 120 min | **Ref** : QC-Py-15, Framework_Composite_EMATrend - -**Objectif** : Construire une strategie composite combinant plusieurs Alpha Models avec un Portfolio Construction Model personnalise. - -**Enonce** : - -1. Creer 3 Alpha Models : - - `TrendAlpha` : EMA crossover (signal directionnel) - - `MomentumAlpha` : Rendement 3 mois > 0 (filtre momentum) - - `RegimeAlpha` : SPY > SMA200 (filtre macro) -2. Creer un `CompositeWeightingPCM(PortfolioConstructionModel)` : - - Assigner un poids a chaque alpha (ex: 40% trend, 40% momentum, 20% regime) - - Combiner les insights en un signal unique [-1, +1] par actif - - Normaliser les poids du portfolio pour que la somme = 1 -3. Univers : 5 ETFs sectoriels (XLK, XLV, XLF, XLE, XLI) -4. Backtester sur 2015-01-01 a 2024-12-31 et comparer avec chaque alpha seul - -**Questions** : - -- La combinaison multi-alpha surpasse-t-elle chaque alpha individuel ? -- Quel jeu de poids (40/40/20 vs 60/20/20 vs 33/33/33) donne le meilleur Sharpe ? -- Ajouter une optimisation walk-forward des poids (re-optimiser chaque annee) - -**Indices** : -- Heriter de `PortfolioConstructionModel` et implementer `create_targets()` -- `insight.direction` vaut `InsightDirection.Up`, `Down` ou `Flat` -- `PortfolioTarget(symbol, weight)` definit le poids cible - ---- - -### Exercice 4.2 : Detection de regime et adaptation - -**Niveau** : Avance | **Duree** : 90 min | **Ref** : RegimeSwitching, AdaptiveAssetAllocation - -**Objectif** : Implementer un detecteur de regime de marche qui adapte l'allocation dynamiquement. - -**Enonce** : - -1. Definir 3 regimes de marche bases sur la volatilite realisee de SPY : - - **Bull** : Vol 30j < 15% annualisee → allocation agressive (80% actions) - - **Normal** : Vol 30j entre 15-25% → allocation equilibree (50% actions, 50% bonds) - - **Bear** : Vol 30j > 25% → allocation defensive (20% actions, 80% bonds) -2. Actifs : SPY (actions), TLT (obligations) -3. Rebalancement : a chaque changement de regime (pas periodique) -4. Backtester sur 2015-01-01 a 2024-12-31 - -**Questions** : - -- Combien de changements de regime se produisent sur la periode ? -- Le regime "Bear" detecte-t-il correctement COVID-2020 et l'inflation-2022 ? -- Tester des seuils de volatilite differents (12/20, 15/25, 18/30). Impact ? -- Ajouter un delai (confirmation 3 jours) avant de changer de regime. Effet sur les faux signaux ? - -**Indices** : -- `self.history(spy, 30, Resolution.DAILY)['close'].pct_change().std() * np.sqrt(252)` pour la vol realisee -- Stocker le regime courant dans `self.current_regime` pour detecter les changements -- Ne rebalancer que quand `new_regime != self.current_regime` - ---- - -## Evaluation - -### Bareme suggere - -| Module | Exercice | Points | Competence evaluee | -|--------|----------|--------|--------------------| -| M1 | 1.1 EMA Crossover | 15 | Fondamentaux QC, backtesting | -| M1 | 1.2 All-Weather | 15 | Multi-actifs, rebalancement | -| M2 | 2.1 Rotation sectorielle | 20 | Universe selection, momentum | -| M2 | 2.2 Trend-following | 15 | Indicateurs, filtres | -| M3 | 3.1 Alpha Model | 20 | Algorithm Framework | -| M4 | 4.1 ou 4.2 (au choix) | 15 | Strategie avancee | -| **Total** | | **100** | | - -### Criteres de notation - -- **Code fonctionnel** (40%) : Le backtest s'execute sans erreur -- **Analyse des resultats** (30%) : Reponses aux questions, interpretation des metriques -- **Exploration** (20%) : Tests de variantes, optimisation des parametres -- **Qualite du code** (10%) : Lisibilite, commentaires, structure - ---- - -## Ressources - -- **Notebooks de reference** : QC-Py-01 a QC-Py-15 (phases 1-4 du cours) -- **Projets exemples** : `projects/` (56 projets avec research notebooks) -- **Templates** : `ESGF-2026/templates/` (starter, intermediate, advanced) -- **Documentation QC** : https://www.quantconnect.com/docs -- **Organisation QC** : "Trading Firm ESGF" (ajout par le professeur) diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/UPLOAD_CHECKLIST.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/UPLOAD_CHECKLIST.md deleted file mode 100644 index 76d35c702..000000000 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/UPLOAD_CHECKLIST.md +++ /dev/null @@ -1,72 +0,0 @@ -# Checklist Upload Soutenance ESGF 2026 - -**Deadline** : J-2 avant la soutenance (17 mai 2026, 23h59) - ---- - -## Checklist avant upload - -### Code - -- [ ] `main.py` compile sans erreur sur QuantConnect (BuildSuccess) -- [ ] Parametres de la strategie clairement definis en debut de `initialize()` -- [ ] Pas de hardcode de chemins locaux ou de credentials -- [ ] Noms de variables clairs et descriptifs -- [ ] `README.md` a la racine du projet avec : - - [ ] Description de la strategie (1 paragraphe) - - [ ] Liste des indicateurs utilises - - [ ] Parametres et leur justification - - [ ] Instructions pour lancer le backtest - -### Backtest - -- [ ] Backtest le plus recent avec periode >= 2 ans -- [ ] Resultats visibles dans le projet (screenshot ou export) -- [ ] Comparaison avec benchmark (SPY pour equities, BTC pour crypto) -- [ ] Metriques cles : Sharpe, CAGR, MaxDD, Win Rate, # Trades - -### Presentation - -- [ ] `slides.md` (Slidev) dans le repertoire du projet -- [ ] Graphiques d'equity curve inclus (PNG dans le meme dossier) -- [ ] Tableau de metriques complete -- [ ] Analyse des sous-periodes -- [ ] Slide de conclusion avec points d'amelioration - -### Documentation - -- [ ] `requirements.txt` ou liste des dependances -- [ ] Commentaires dans le code pour les decisions cle -- [ ] Si utilisation de fichiers annexes (alpha.py, portfolio.py) : les documenter -- [ ] Seed fixe pour la reproductibilite (si applicable) - ---- - -## Procedure d'upload - -1. Creer un repo dans l'org ESGF : `2026-ESGF-Soutenance-Equipe-XX` -2. Pousser le code complet (main.py + README + slides + assets) -3. Verifier que le repo est accessible par les evaluateurs -4. Confirmer l'upload par email/canal du cours - -## Format du repo - -``` -2026-ESGF-Soutenance-Equipe-XX/ -├── main.py # Strategie LEAN (obligatoire) -├── README.md # Documentation (obligatoire) -├── slides.md # Presentation Slidev (obligatoire) -├── equity_curve.png # Graphique P&L (obligatoire) -├── research.ipynb # Notebook de recherche (optionnel) -├── alpha.py # Module alpha separe (optionnel) -└── requirements.txt # Dependances (optionnel) -``` - ---- - -## Sanctions - -- **Retard** : -5 points par jour de retard -- **Code non compilable** : 0/20 sur la partie Code -- **Pas de backtest** : 0/30 sur la partie Backtest -- **Pas de presentation Slidev** : -10 points sur la partie Presentation diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/email_template_notes.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/email_template_notes.md deleted file mode 100644 index e3986701c..000000000 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/email_template_notes.md +++ /dev/null @@ -1,39 +0,0 @@ -# Template Email Notification Notes ESGF 2026 - -**Objet**: [ESGF] Notes finales — Projet QuantConnect 2025-2026 - ---- - -Bonjour, - -Les notes finales du projet QuantConnect (module ESGF) sont disponibles. - -Votre groupe a obtenu la note de **[NOTE]/20**. - -## Barème -- **50% Note enseignant** — Qualité technique du code, pertinence de la stratégie, backtest -- **50% Évaluation par les pairs** — Présentation, clarté, questions/réponses - -## Détail de la notation -| Critère | Note | Commentaire | -|---------|------|-------------| -| Code & stratégie | [X]/10 | [commentaire_enseignant] | -| Backtest & résultats | [X]/10 | [commentaire_enseignant] | -| Présentation | [X]/10 | [commentaire_pairs] | -| Questions/Réponses | [X]/10 | [commentaire_pairs] | - -## Consultation -Pour consulter le détail de votre note ou discuter de l'évaluation, vous pouvez prendre rendez-vous lors des permanances. - -Cordialement, -L'équipe pédagogique ESGF - ---- - -**NOTES POUR L'ENSEIGNANT** : -- Remplacer [NOTE] par la note du groupe -- Remplacer les [X] et [commentaire_*] par les valeurs réelles -- Ce template est une base — adapter le ton selon le contexte -- NE JAMAIS inclure de comparaison avec d'autres groupes -- NE JAMAIS inclure de détails sur la pondération peer-eval (sensible) -- Les notes sont sur G-drive : `Mon Drive\MyIA\Formation\ECE\ESGF\2025-2026\Notation\` diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/01-ML-RandomForest/main.py b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/01-ML-RandomForest/main.py index 36c15c013..f16aa1aa0 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/01-ML-RandomForest/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/01-ML-RandomForest/main.py @@ -3,9 +3,9 @@ # endregion -class ESGFMLRandomForest(QCAlgorithm): +class MlRandomForestAlgorithm(QCAlgorithm): """ - ESGF Kit - ML RandomForest Sector Rotation. + ML RandomForest Sector Rotation. Sector ETF rotation using Random Forest classification with walk-forward training. Each month the model predicts which sectors will outperform, diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/02-ML-XGBoost/main.py b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/02-ML-XGBoost/main.py index 2659a4877..45cb944aa 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/02-ML-XGBoost/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/02-ML-XGBoost/main.py @@ -3,9 +3,9 @@ # endregion -class ESGFMLXGBoost(QCAlgorithm): +class MlXgboostAlgorithm(QCAlgorithm): """ - ESGF Kit - ML XGBoost Sector Rotation. + ML XGBoost Sector Rotation. Sector ETF rotation using Gradient Boosting regression with walk-forward training. Predicts 20-day forward returns and allocates to sectors with diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/03-Framework-Composite/main.py b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/03-Framework-Composite/main.py index 6a17bd24e..8ffedb312 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/03-Framework-Composite/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/03-Framework-Composite/main.py @@ -182,9 +182,9 @@ def determine_target_percent(self, active_insights): return result -class ESGFFrameworkComposite(QCAlgorithm): +class FrameworkCompositeAlgorithm(QCAlgorithm): """ - ESGF Kit - Framework Composite Strategy. + Framework Composite Strategy. Combines three complementary alpha models via QC Algorithm Framework: 1. SectorMomentum: Long sector ETFs with positive momentum above SMA200 diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/README.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/README.md index 1685596e1..9b827ab44 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/README.md +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/README.md @@ -1,116 +1,104 @@ -# Kit Transitoire ESGF 2026 - Strategies ML & Framework +# Transition Kit - ML & Framework Strategies -Trois strategies QuantConnect pour la soutenance ESGF (19/05/2026), validees sur backtest cloud 2015-2024. +Three progressive QuantConnect strategies for sector rotation, validated on cloud backtests (2015-2024). -## Objectif +## Objective -Fournir 3 approaches progressives de rotation sectorielle : +Provide 3 progressive approaches to sector rotation: -1. **ML RandomForest** (classification) - Introduction au ML applique -2. **ML XGBoost** (regression) - Modele plus avance, plus de features -3. **Framework Composite** (alpha models) - Architecture QC Framework propre +1. **ML RandomForest** (classification) - Introduction to applied ML +2. **ML XGBoost** (regression) - Advanced model with more features +3. **Framework Composite** (alpha models) - Clean QC Framework architecture -Chaque strategie est accompagne d'un notebook de recherche (QuantBook) documentant les iterations et la calibration. +Each strategy includes a research notebook (QuantBook) documenting iterations and calibration. ## Strategies ### 01 - ML RandomForest Sector Rotation -| Parametre | Valeur | -|-----------|--------| +| Parameter | Value | +|-----------|-------| | Universe | 9 sector ETFs (XLK..XLRE) | -| Features | 14 indicateurs techniques | +| Features | 14 technical indicators | | Model | RandomForestClassifier | | Trees / Depth | 200 / 6 | -| Training | 4 ans rolling, monthly retrain | +| Training | 4-year rolling, monthly retrain | | Bear filter | SPY < SMA200 -> max 2 positions | -| Max positions | 4 (2 en bear) | +| Max positions | 4 (2 in bear market) | | Allocation | 95% | -**Resultat backtest v1** : Sharpe 0.544, CAGR 10.85%, MaxDD 16.3% -**Resultat backtest v2** : Sharpe 0.286, CAGR 6.73%, MaxDD 26.2% (threshold 0.65 trop eleve) -**Resultat backtest v3** : Sharpe 0.556, CAGR 11.43%, MaxDD 17.2% (alloc 95%) -- BEST +**Best backtest** : Sharpe 0.556, CAGR 11.43%, MaxDD 17.2% ### 02 - ML XGBoost Sector Rotation -| Parametre | Valeur | -|-----------|--------| +| Parameter | Value | +|-----------|-------| | Universe | 9 sector ETFs (XLK..XLRE) | -| Features | 20 indicateurs techniques | +| Features | 20 technical indicators | | Model | GradientBoostingRegressor | | Trees / Depth / LR | 100 / 4 / 0.05 | -| Training | 3 ans rolling, bi-weekly train | +| Training | 3-year rolling, bi-weekly train | | Bear filter | SPY < SMA200 -> max 2 positions | -| Max positions | 5 (2 en bear) | +| Max positions | 5 (2 in bear market) | | Allocation | 95% | -**Resultat backtest v1** : Sharpe 0.521, CAGR 12.81%, MaxDD 39.1% -- BEST -**Resultat backtest v2** : Sharpe 0.442, CAGR 11.70%, MaxDD 37.9% (max_pos 4, alloc 95%, threshold 0.01 - pire) +**Best backtest** : Sharpe 0.521, CAGR 12.81%, MaxDD 39.1% ### 03 - Framework Composite -| Parametre | Valeur | -|-----------|--------| -| Alpha 1 | SectorMomentum (SMA200 + 126j momentum) | -| Alpha 2 | Defensive (TLT, GLD, XLU quand SPY < SMA200) | +| Parameter | Value | +|-----------|-------| +| Alpha 1 | SectorMomentum (SMA200 + 126d momentum) | +| Alpha 2 | Defensive (TLT, GLD, XLU when SPY < SMA200) | | PCM | MultiStrategyPCM (70% momentum / 30% defensive) | | Risk | MaxDrawdownCircuitBreaker (15%) | | Execution | ImmediateExecutionModel | -**Resultat backtest v1** : Sharpe 0.376, CAGR 7.60%, MaxDD 20.6%, 2157 orders, Win Rate 80% +**Best backtest** : Sharpe 0.376, CAGR 7.60%, MaxDD 20.6%, Win Rate 80% ## Structure ``` kit-transitoire/ -├── README.md -├── 01-ML-RandomForest/ -│ ├── main.py # Strategie QC Cloud -│ └── research.ipynb # Notebook de recherche QuantBook -├── 02-ML-XGBoost/ -│ ├── main.py -│ └── research.ipynb -└── 03-Framework-Composite/ - ├── main.py - └── research.ipynb + README.md + 01-ML-RandomForest/ + main.py # QC Cloud strategy + research.ipynb # QuantBook research notebook + 02-ML-XGBoost/ + main.py + research.ipynb + 03-Framework-Composite/ + main.py + research.ipynb ``` ## Execution -### Backtests QC Cloud +### QC Cloud Backtests -Chaque `main.py` est executable directement sur QuantConnect Cloud : -1. Creer un projet QC -2. Uploader `main.py` -3. Compiler et lancer le backtest (2015-01-01 a 2024-12-31) +Each `main.py` runs directly on QuantConnect Cloud: +1. Create a QC project +2. Upload `main.py` +3. Compile and run backtest (2015-01-01 to 2024-12-31) -### Notebooks de recherche +### Research Notebooks -Les notebooks `research.ipynb` utilisent `QuantBook` et necessitent l'environnement QC Lab : -1. Ouvrir le projet dans QC Lab -2. Creer un notebook dans le projet -3. Copier le contenu du research.ipynb -4. Executer cellule par cellule +The `research.ipynb` notebooks use `QuantBook` and require the QC Lab environment: +1. Open the project in QC Lab +2. Create a notebook in the project +3. Copy the content from research.ipynb +4. Execute cell by cell -## Comparaison des approaches +## Comparison | Aspect | RandomForest | XGBoost | Framework | |--------|-------------|---------|-----------| | Type | Classification | Regression | Alpha Models | -| Features | 14 | 20 | Indicateurs simples | -| Complexite | Moyenne | Moyenne | Elevee (architecture) | -| Retrain | Monthly | Bi-weekly | N/A (sans ML) | -| Positions max | 4 (2 en bear) | 4 (2 en bear) | Dynamique | -| Apprentissage | Entrainement modele | Entrainement modele | Regles expertes | -| Sharpe | 0.556 (v3) | 0.521 (v1) | 0.376 (v1) | -| CAGR | 11.43% (v3) | 12.81% (v1) | 7.60% (v1) | -| MaxDD | 17.2% (v3) | 39.1% (v1) | 20.6% (v1) | - -## Calibration pour la soutenance - -Pour chaque strategie, le notebook de recherche documente : -- L'exploration des donnees sectorielles -- Le feature engineering et l'analyse d'importance -- 2 iterations de calibration avec metriques comparatives -- La correspondence research -> main.py -- Les pistes d'amelioration pour iteration N+1 +| Features | 14 | 20 | Simple indicators | +| Complexity | Medium | Medium | High (architecture) | +| Retrain | Monthly | Bi-weekly | N/A (no ML) | +| Max positions | 4 (2 in bear) | 4 (2 in bear) | Dynamic | +| Learning | Model training | Model training | Expert rules | +| Sharpe | 0.556 | 0.521 | 0.376 | +| CAGR | 11.43% | 12.81% | 7.60% | +| MaxDD | 17.2% | 39.1% | 20.6% | diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/starter/README.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/starter/README.md index 5a111f419..d17a564e0 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/starter/README.md +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/starter/README.md @@ -13,7 +13,7 @@ Le backtest couvre la periode du 1er janvier 2023 au 31 decembre 2024, avec un c ## Utilisation 1. Connectez-vous a [QuantConnect](https://www.quantconnect.com/) -2. Creez un nouveau projet Python dans l'organisation **Trading Firm ESGF** +2. Create a new Python project in your course organization 3. Copiez le contenu de `main.py` dans le fichier principal du projet 4. Lancez un backtest pour observer les resultats 5. Analysez les metriques : Sharpe Ratio, drawdown, nombre de trades diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/README.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/README.md index 4f2ddc27d..547e7ead1 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/README.md +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/README.md @@ -1,39 +1,39 @@ -# Template Presentation Soutenance ESGF +# Student Presentation Template -## Utilisation +## Usage -1. Copier `slides.md` dans votre repertoire de projet -2. Remplacer les sections `[entre crochets]` avec votre contenu -3. Ajouter vos graphiques (equity_curve.png, etc.) dans le meme repertoire -4. Lancer la presentation : +1. Copy `slides.md` into your project directory +2. Replace `[bracketed sections]` with your content +3. Add your charts (equity_curve.png, etc.) in the same directory +4. Launch the presentation: ```bash npx slidev slides.md ``` -## Sections obligatoires +## Required Sections -| Slide | Section | Contenu attendu | +| Slide | Section | Expected Content | |-------|---------|-----------------| -| 1 | Titre | Nom strategie, equipe | -| 2 | Plan | Sommaire | -| 3 | Introduction | Motivation, hypothese | -| 4 | Donnees | Actifs, periode, preprocessing | -| 5 | Modele alpha | Indicateurs, signaux, risk management | -| 6-7 | Resultats | Equity curve + metriques | -| 8 | Analyse | Points forts/faibles, vs benchmark | -| 9 | Robustesse | Sous-periodes, sensibilite | -| 10 | Conclusion | Bilan,改进 | +| 1 | Title | Strategy name, team | +| 2 | Outline | Table of contents | +| 3 | Introduction | Motivation, hypothesis | +| 4 | Data | Assets, period, preprocessing | +| 5 | Alpha model | Indicators, signals, risk management | +| 6-7 | Results | Equity curve + metrics | +| 8 | Analysis | Strengths/weaknesses, vs benchmark | +| 9 | Robustness | Sub-periods, sensitivity | +| 10 | Conclusion | Summary, improvements | ## Timing -- Objectif : 10 minutes +/- 1 minute -- ~1 minute par slide (10 slides de contenu) -- Ne pas lire les slides : utiliser des mots-cles et parler +- Target: 10 minutes +/- 1 minute +- ~1 minute per slide (10 content slides) +- Do not read slides: use keywords and speak naturally -## Conseils +## Tips -- Graphiques : toujours avec legende, axes labels, et titre -- Metriques : tableau comparatif avec benchmark -- Equity curve : avec drawdown en dessous -- Ne pas montrer de code dans les slides (sauf snippet court pour illustration) +- Charts: always with legend, axis labels, and title +- Metrics: comparative table with benchmark +- Equity curve: with drawdown below +- Do not show code in slides (except short snippet for illustration) diff --git a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/slides.md b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/slides.md index bfac448fe..ccab014c9 100644 --- a/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/slides.md +++ b/MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/templates/student-presentation/slides.md @@ -1,9 +1,9 @@ --- theme: default -title: Template Soutenance ESGF 2026 +title: Strategy Presentation Template info: | - Template de presentation pour la soutenance ESGF QuantConnect. - Remplacer les sections entre [crochets] avec votre contenu. + Presentation template for QuantConnect strategy defense. + Replace [bracketed sections] with your content. class: text-center drawings: persist: false @@ -13,7 +13,7 @@ mdc: true # [Nom de Votre Strategie] -Soutenance ESGF QuantConnect - 19 mai 2026 +QuantConnect Strategy Presentation **Equipe** : [Prenom Nom, Prenom Nom] **Projet** : [Nom du projet QC] diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-J-Kelly/main.py b/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-J-Kelly/main.py index de2c7c186..12090a3a8 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-J-Kelly/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-J-Kelly/main.py @@ -5,7 +5,7 @@ from collections import deque -class ESGFHARRVJKelly(QCAlgorithm): +class HarrvjKellyAlgorithm(QCAlgorithm): """HAR-RV-J / HAR Classic Kelly strategy on crypto assets. Extends HAR (Corsi 2009) with optional jump component from diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-Kelly/main.py b/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-Kelly/main.py index 8d703d03f..572156cf9 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-Kelly/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/projects/HAR-RV-Kelly/main.py @@ -5,7 +5,7 @@ from collections import deque -class ESGFHARRVKelly(QCAlgorithm): +class HarrvKellyAlgorithm(QCAlgorithm): """HAR-RV Kelly 1/4 strategy on a multi-asset portfolio. Uses the Heterogeneous Autoregressive (HAR) model of Corsi (2009) diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/RegimeSwitching/main.py b/MyIA.AI.Notebooks/QuantConnect/projects/RegimeSwitching/main.py index c24b00525..d6a759b87 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/RegimeSwitching/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/projects/RegimeSwitching/main.py @@ -23,7 +23,7 @@ class RegimeSwitching(QCAlgorithm): - Trailing stop-loss -10% on equity positions - Reduced equity in sideways (30% vs 40%) - Source: ECE student concepts (Maisonnave, Gr01 H.4b), adapted for ESGF pool. + Source: ECE student concepts (Maisonnave, Gr01 H.4b), adapted for partner course. Issue #238 - Integrate ECE student concepts into QC strategies. Universe: SPY, QQQ, IEF, GLD diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/Vol-Ensemble-Conservative/main.py b/MyIA.AI.Notebooks/QuantConnect/projects/Vol-Ensemble-Conservative/main.py index aeaebde36..945d5fcf7 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/Vol-Ensemble-Conservative/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/projects/Vol-Ensemble-Conservative/main.py @@ -5,7 +5,7 @@ from collections import deque -class ESGFVolEnsembleConservative(QCAlgorithm): +class VolEnsembleConservativeAlgorithm(QCAlgorithm): """Ensemble GARCH + HAR vol forecast with conservative position sizing. Combines GARCH(1,1) and HAR(1,5,22) volatility forecasts as an @@ -16,7 +16,7 @@ class ESGFVolEnsembleConservative(QCAlgorithm): - Bull regime (SPY > SMA200): full allocation - Bear regime (SPY < SMA200): reduce to 50% allocation - This is the most conservative of the 3 ESGF strategies. + This is the most conservative of the 3 volatility strategies. Assets: SPY, EFA, EEM, TLT, GLD, DBC. """ diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/Vol-GARCH-Target/main.py b/MyIA.AI.Notebooks/QuantConnect/projects/Vol-GARCH-Target/main.py index 77678a9de..6936417d7 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/Vol-GARCH-Target/main.py +++ b/MyIA.AI.Notebooks/QuantConnect/projects/Vol-GARCH-Target/main.py @@ -5,7 +5,7 @@ from collections import deque -class ESGFGARCHVolTarget(QCAlgorithm): +class GarchVolTargetAlgorithm(QCAlgorithm): """GARCH(1,1) volatility targeting on a multi-asset portfolio. Forecasts next-day variance using a rolling GARCH(1,1) model fitted