<< Sommaire QC | Précédent : QC-Py-Cloud-01-FinBERT-Sentiment << | Suivant : QC-Py-Cloud-02-ML-Classification >>

QC-Py-Cloud-03b — Risk Parity Composite Multi-Asset

Module: Hands-On AI Trading, Ch.10 — Risk Parity & Portfolio Construction

Objectif: Implementer une allocation Risk Parity (ponderation inverse-volatilite) sur un univers multi-actifs, avec filtres de tendance pour eviter les actifs en phase baissiere.

Approche cloud-native: L’algorithme est execute sur QuantConnect Cloud. Les résultats sont syncs ci-dessous.

Note de conception : Ce notebook est un descriptif pedagogique. Le code executable se trouve dans le projet QuantConnect Cloud correspondant (voir le lien dans le notebook). L’absence d’outputs est intentionnelle.

1. Concept : Risk Parity

Le Risk Parity (“parite des risques”) est une approche d’allocation developpee par Bridgewater (Ray Dalio, 1996). Plutot que d’allouer un capital egal par position (equal-weight), on alloue un budget de risque egal.

Principe: - Chaque actif recoit un poids inversement proportionnel a sa volatilite - Les actifs peu volatils (obligations) recoivent plus de capital que les actifs volatils (actions) - Objectif : chaque actif contribue également au risque du portefeuille

Avantages: - Diversification naturelle entre les actifs - Meilleur ratio rendement/risque en théorie - Resilience en cas de crise equity

Limites: - Sous-performance quand les taux montent (TLT bear 2020-2024) - necessite un univers diversifie pour fonctionner - Leverage implicite sur les actifs low-vol

2. Univers : 6 ETFs Multi-Asset

Ticker Classe d’actif Rôle dans le portefeuille
SPY Actions US (S&P 500) Growth, equity risk premium
TLT Obligations US (20y+) Duration, safe haven
GLD Or Inflation hedge, crisis alpha
EFA Actions internationales Diversification geographique
EEM Marches emergents Growth, carry
DBC Matieres premières Inflation, commodity cycle

3. Methodologie

Quatre versions ont ete testees sur QC Cloud (projet 30820857):

v1 — Risk Parity pur

  • Ponderation inverse-volatilite stricte
  • Drawdown cap 12% + trailing stop 4%
  • Rebalance mensuel

v2 — Risk Parity + filtre momentum

  • Seuls les actifs avec momentum 12m positif sont eligibles
  • Inverse-volatilite parmi les candidats
  • Pas de drawdown cap / trailing stop

v3 — Rotation tactique + vol targeting

  • Allocation egale parmi les actifs momentum-positif
  • Scaling volatilite pour cibler 8% de vol annuelle
  • Rebalance toutes les 3 semaines

v4 — SMA200 + 6m Momentum (AQR Hybrid)

  • Double filtre : prix > SMA200 ET momentum 6m > 0
  • Allocation egale parmi les candidats qualifies
  • Rebalance mensuel
  • Approche inspiree de Hurst, Ooi, Pedersen (AQR, 2014)

4. Résultats QC Cloud

Projet QC Cloud: 30820857 (Cloud-RiskParity-Composite) Periode: 2014-01-01 au 2025-01-01 (11 ans) Capital initial: $100,000

Version Sharpe CAGR MaxDD Net Profit Ordres Win Rate
v1 (Risk Parity pur) -0.913 -0.41% 12.2% -4.4% 146 73%
v2 (+ filtre momentum) 0.178 4.77% 26.0% +67.0% 531 76%
v3 (+ vol targeting) -0.052 2.52% 15.7% +31.6% 741 76%
v4 (SMA200+Mom6m) 0.278 6.17% 20.4% +93.3% 474 76%

Benchmark : SPY Buy & Hold

Sur la même periode, SPY a un CAGR ~12.8% et un MaxDD ~24%.

5. Analyse : Pourquoi le Risk Parity ne atteint pas Sharpe 0.8

La cible de Sharpe > 0.8 n’est pas atteinte (meilleur résultat : 0.278). Voici pourquoi :

Cause 1 : TLT en bear market seculaire (2020-2024)

Les obligations long terme (TLT) ont perdu ~50% de leur valeur pendant le cycle de hausse des taux Fed (2020-2024). Le risk parity surpondere naturellement TLT (faible volatilite historique), ce qui a detruit la performance.

Cause 2 : Matieres premières et emergents faibles

DBC (commodites) et EEM (marches emergents) ont eu une “decennie perdue” (2014-2024). Ces actifs contribuent peu de rendement mais beaucoup de volatilite, diluant le Sharpe.

Cause 3 : Diversification excessive

Avec 6 actifs dont seulement 2 performants (SPY, GLD), la diversification dilue l’alpha. Les stratégies qui atteignent Sharpe > 0.8 (comme l’EMA-Cross-Alpha a 0.996) sont concentrees sur un univers equity.

Cause 4 : Drawdown cap et trailing stop contre-productifs

La v1 (avec stops) a un Sharpe de -0.913. Les mécanismes de protection empechent la recuperation après les drawdowns, transformant les pertes temporaires en pertes permanentes.

Lecon : Le Risk Parity est un outil d’allocation, pas d’alpha

Le risk parity excelle pour construire un portefeuille diversifie avec un bon ratio rendement/risque ajuste pour la diversification. Mais il ne genere pas d’alpha pur. Pour ameliorer le Sharpe, il faut combiner avec des signaux d’alpha (momentum, carry, value).

6. Code source (v4 — meilleur résultat)

Le code est disponible sur QC Cloud (projet 30820857). Le notebook local ne contient que les résultats et l’analyse, conformement au workflow cloud-native.

# Lien QC Cloud : https://www.quantconnect.com/project/30820857
# Approche : SMA200 + 6m momentum dual filter
# Rebalance mensuel, allocation egale parmi actifs eligibles

7. Pour aller plus loin

  1. Risk Parity + Alpha Overlay: Ajouter des signaux d’alpha (momentum score) pour ponderer au lieu de l’egalite
  2. Dynamic Vol Targeting: Ajuster l’exposition globale selon le regime de vol (VIX > 25 = reduce)
  3. Carry Signal: Integrer le carry (dividend yield, bond yield) comme signal complementaire
  4. Universe etendu: Ajouter des ETFs sectoriels (XLU, XLK), crypto (BTC), ou real estate (VNQ)

Reference: Hurst, Ooi, Pedersen (2014) — “A Century of Evidence on Trend-Following Investing”, AQR.

Exercice 1 : Calcul des poids Risk Parity pour 3 actifs

Calculer les poids optimaux dun portefeuille Risk Parity avec 3 actifs.

Indice : La contribution au risque de chaque actif doit etre egale.

# Exercice : Calcul des poids Risk Parity pour 3 actifs
# TODO etudiant : Calculer les poids optimaux dun portefeuille Risk Parity avec 3 actifs
# Indice : La contribution au risque de chaque actif doit etre egale
result = None  # TODO etudiant : remplacer par votre implementation
print("Exercice a completer : Calcul des poids Risk Parity pour 3 actifs")

Exercice 2 : Backtest dun portefeuille Risk Parity

Implementer un backtest simple dune stratégie Risk Parity.

Indice : Utilisez les rendements quotidiens et un lookback de 252 jours.

# Exercice : Backtest dun portefeuille Risk Parity
# TODO etudiant : Implementer un backtest simple dune strategie Risk Parity
# Indice : Utilisez les rendements quotidiens et un lookback de 252 jours
result = None  # TODO etudiant : remplacer par votre implementation
print("Exercice a completer : Backtest dun portefeuille Risk Parity")

Exercice 3 : Comparaison Risk Parity vs Equal Weight

Comparer le ratio de Sharpe et le max drawdown entre Risk Parity et Equal Weight.

Indice : Calculez les rendements annuels et la volatilite.

# Exercice : Comparaison Risk Parity vs Equal Weight
# TODO etudiant : Comparer le ratio de Sharpe et le max drawdown entre Risk Parity et Equal Weight
# Indice : Calculez les rendements annuels et la volatilite
result = None  # TODO etudiant : remplacer par votre implementation
print("Exercice a completer : Comparaison Risk Parity vs Equal Weight")
Retour au sommet