Repository navigation
feat(qc,#14091): AssetClassMomentum-QC v2.0 — hedge court gated par corrélation (consolidation article research 21050) - #14095
Conversation
…relation Consolidation article QC research #21050 (Melchin 2026-07) dans AssetClassMomentum-QC : univers 13 ETFs, momentum multi-horizon 3/6/9/12 m, top-4, hedge court -30% du pire ETF active seulement si corr moyenne 20 j > 250 j (78 paires). Source primaire Pauchlyova & Vojtko 2025 SSRN 5095447. Backtests QC Cloud (projet 33209767, IB Margin) : Dev 2016-2021 Sharpe 0.712 / MaxDD 21.8% ; OOS 2022-2026 Sharpe 0.035 / PSR 0.65% (edge non confirm OOS) ; Full 2016-2026 Sharpe 0.423 / MaxDD 21.8%. vs v1 (Sharpe 0.22 / MaxDD 28.1%) : risque ameliore, aucune claim BEATS (PSR < 50% partout). Closes #14091 Co-Authored-By: Claude-Code <noreply@anthropic.com>
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — COMMENT, verdict positif avec 2 observations non bloquantes (contrainte token : COMMENT only, opener jsboige). Code v2.0 lu intégralement au head SHA (main.py 3 fichiers) :
Vérifié conforme :
- Logique hedge gated :
corr_20j > corr_250j→PortfolioTarget(scored[0], -0.30)sur l'ETF au momentum le plus faible, top-4 longs 0.25 chacun → 130 % brut / 70 % net tel que documenté.np.triu_indices(k=1)= bien C(13,2)=78 paires, pas la diagonale. - Fix naming
self.tickersvsself.universeréservé QCAlgorithm — correct et commenté. - Multi-horizon 63/126/189/252 via
self.rocp(built-in QC) + warm-up automatique activé. - Cohérence interne des durées : 1511+1127=2638 jours de bourse (1512≈6 ans Dev, 1127≈4.47 ans OOS) — les labels calendaires réconcilient.
- NP% ↔ CAGR réconcilient arithmétiquement (1.13596^6.0≈114.8 %, 1.06212^4.47≈30.9 %, 1.10535^10.48≈185.8 % vs 115.0/31.2/186.4 %).
- Framing « NO EDGE OOS » (Sharpe 0.035, PSR 0.65 %) conservé dans le tracker
qc-strategies-status.mdsans claim BEATS — exemplaire.
Observation 1 (à clarifier, non bloquant) : la ligne Net Profit % et la colonne $ ne réconcilient sur aucune base unique : Dev
Observation 2 (mineur) : _avg_pairwise_correlation(250) sur les premiers rebalances de 2016 (~21 jours d'historique au 1ᵉʳ février) calcule silencieusement la corr 250 j sur une fenêtre partielle — le gate peut se déclencher sur une corrélation non représentative la première année. Un garde if len(rets) < seuil: skip hedge durcirait la reproductibilité.
Security scan : 0 match (HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN\s*=).
Grain: MED/qc — lane myia-po-2024:CoursIA — prev: MED/lean #14056
Summary
Consolidation de l'article QuantConnect research #21050 « Cross-Asset ETF Momentum with a Correlation-Based Short Hedge » (Derek Melchin, 2026-07) dans le projet existant
projects/AssetClassMomentum-QC/(sous-issue de l'EPIC #11698, issue #14091, verdict CONSOLIDATION). Le projet v1 (clone QC Strategy Library, 5 ETFs, momentum 12 m, top-3, sans gestion du risque) était Needs-improvement (Sharpe 0.22 / CAGR 6.64 % / MaxDD 28.1 % / PSR 3.8 %, 2018-2025, tranche 3 #1621) — l'article apporte précisément la couverture du risque absente : univers 13 ETFs, momentum multi-horizon 3/6/9/12 m, top-4, et un hedge court -30 % gated par corrélation.v2.0 — moteur :
RateOfChangePercent).Source primaire : Pauchlyová & Vojtko (2025), Refining ETF Asset Momentum Strategy, Quantpedia / SSRN 5095447 — chaîne d'attribution complète article → papier, convention #11168.
Backtests (§G — QC Cloud MCP, projet 33209767, IB Margin 100 k$)
Runs QC Cloud (projet 33209767, compile
99bd5b8c…) : Devb930a240…(1511 j., 342 ordres) · OOSf1cc7e4a…(1127 j., 265 ordres) · Full04cdf09d…(2638 j., 620 ordres).Référence article (#21050, 2007-07 → 2026-06) : Sharpe 0.498 avec hedge vs 0.451 long-only vs 0.407 SPY. Sensibilité paramètres (grille 5×5) : 24/25 combinaisons battent le SPY, Sharpe 0.40-0.57.
Verdict honnête
Files
projects/AssetClassMomentum-QC/main.py— v2.0 (fix naming :self.universeréservé QCAlgorithm.Universe →self.tickers)projects/AssetClassMomentum-QC/README.md— v2 + métriques + référencesdocs/qc/qc-strategies-status.md— entrée AssetClassMomentum-QC mise à jourCloses #14091