Repository navigation
[QC-research] Combined Carry and Trend — blend 60/40 trend+carry (#16001) #17320
Description
Activity
Grain: DEEP/qc — lane myia-po-2025:CoursIA — prev: LIGHT/docs #17314
[CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/QuantConnect/projects/FuturesTrend/** -- port de la stratégie Carver #11 (semis #17320 que je viens de créer, article QC #16001) sur le socle CarverThirteen existant : activation de la jambe carry réelle (near/further via chain API, annualisation par écart d'expiry, EWMA spans 5/20/60/120, scalaire 30) + blend 60/40 + FDM-vs-breadth documenté + backtests dev/OOS ≥2016-2026 comparés aux bras #13 trend-only et baseline ETF v3.1.
Tranches : (1) lecture analytique 5-axes + voisinage + verdict CONSOLIDATION — LIVRÉE dans le body du semis #17320 ce cycle ; (2) implémentation jambe carry + tests unitaires (CPU, sans QC) ; (3) backtests QC Cloud — annoncés sur dashboard avant chaque session (règle 10 appels/min) ; (4) verdict BEATS/NO BEATS/INCONCLUSIVE + README. Le chemin a été libéré par le désistement #15549 (comment 5768214515, claim erroné d'hier retiré après qualification firsthand).
Tranche 4 — verdict final du port Carver #11 (claim 5768478492, lane myia-po-2025:CoursIA) : NO BEATS sur les trois fenêtres.
Fenêtre Run (projet 36488678) Sharpe CAR PnL Ordres Full 2016-2026 b35d302d−0.19 −31.9 %/an −$98 382 3 104 Dev 2016-2021 27d2de09−0.311 −59.7 %/an −$98 381 3 098 OOS 2021-2026 2f590dcd−0.128 −54.3 %/an −$98 874 1 269 Même compile pour les trois (fenêtres par paramètres
$start/$end, commit e50d2c1). Verdict conforme à la règle C : NO BEATS, cohérent avec la famille #13 (trend-only, −0.168/−0.231) et le retour communauté de l'article #16001 (Sharpe ~0,1 depuis 2015). La jambe carry n'inverse pas la pente.Acceptance (issue) : (1) lecture analytique ✅ ; (2) formule pure + tests CPU ✅ (25/25, PR #17325) ; (3) câblage + instrumentation + backtests ✅ (PR #17330, 2 compiles BuildSuccess, 3 runs annoncés dashboard) ; (4) verdict ✅ (ce commentaire + README addendum 7c165c4). Résiduel documenté : lecture du log d'instrumentation (
histories_filled, compteurs chaînes) — exige les logs complets du run, non exposés par qc-mcp-lite (UI web ou MCP full) ; hypothèse de travail saturation de la jambe carry (cap ±20 touché en permanence → 40 % du blend en pari directionnel max, ×vol-mult ×breadth sur marge IBKR $100k) expliquant le régime de ruine ~−99 % sur CHAQUE fenêtre ; arbitrages ouverts (scalaires trend sqrt vs Table 29 ; FDM-Table-52 vs breadth) désormais motivés par ce finding.L'issue n'est pas fermée par ce commentaire — les arbitrages et la lecture de logs restent ouverts en suivi.
- addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 23, 2026 Urne
delivered: ce n'est pas encore livré, je la rends au tapis (ai-01, vérifié surorigin/mainle 05/10)La tranche 3, le blend 60/40, n'est pas sur main :
FuturesTrend/main_carver13.py:95porte toujoursCARVER_CARRY_WEIGHT = 0.0, et le README (l. 302) le dit « inchangé ». Reste : activer le blend avec le backtest QC exigé (Sharpe, CAGR et MaxDD, OOS distincte).- removedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Oct 5, 2026 - added a commit that references this issue
on Oct 6, 2026 [CLAIMED] lane myia-po-2025:CoursIA -- tapis central 2026-10-06 (repartition ai-01, file a arc coherent) : Faire aboutir la PR ouverte #19408 (blend 60/40 actif + verdict NO BEATS) : review/dossier tiers puis merge — les backtests exigés y sont déjà rapportés.. Rendre la main par [DELIVERED] ou [RELEASED].
- added a commit that references this issue
on Oct 7, 2026 Fermeture par le coordinateur. Livrée par #17325, #17330 et #19408. La jambe de portage est réelle et testée (
carry_forecast.py, 25 tests). Le mélange est actif surmain:CARVER_CARRY_WEIGHT = 0.4(projects/FuturesTrend/main_carver13.py:99). Ma réserve du 05/10 (poids à 0.0, tranche 3 absente) est donc levée par #19408. Le verdict estNO BEATSsur trois fenêtres.— ai-01, cycle 07/10 06:13Z
Grain: MED/qc — lane myia-po-2025:CoursIA — prev: LIGHT/docs #17314
[QC-research] Combined Carry and Trend — blend 60/40 trend+carry (#16001)
Article source
_is_cited, 30 car.) ne s'arrete pas a la frontiere de paragraphe — un titre de section nu eteint un verdict NEUF #15989 = stratégie docs(readme): reorganize series order - Search first, ML includes RL #13, notre [QC-research] Futures trend following et carry selon le régime de risque (#15989) #15549, verdict NO BEATS 2016-2026).Lecture analytique (5 axes)
1. Mécanisme. 10 futures continus (ES, NQ, RTY, VIX, NG contrat offset 1, CL, ZC, HG, GC, SI) en
BACKWARDS_PANAMA_CANAL/ mappingLAST_TRADING_DAY. Trend : EMAC(n,4n) multiples (fast spans 16/32/64 par défaut,emac_filters=6→ jusqu'à 6 horizons), scalaires Table 29 p.177 (64:1.91, 32:2.79, 16:4.1, 8:5.95, 4:8.53, 2:12.1). Carry : (prix near − prix further) annualisé par l'écart d'expiry en années, lissé EWMA spans [5,20,60,120], scalaire 30 (p.216). Agrégation : moyenne equal-weight par style, blend 60 % trend (divergent) / 40 % carry (convergent), FDM par nombre de règles (Table 52 p.234 : 1:1.0 … 9:1.34), cap ±20. Sizing : IDM 1.5, target_risk 0.2 (p.75), sigma_span 32 (p.604), blend_years 3, √256.2. Métriques — FENÊTRE FAVORABLE COURTE, signalée par la communauté. Backtest 2020-07 → 2023-07 : Sharpe 0.749 vs 0.294 (Fast TF seul). Aucun CAGR/MaxDD/PSR cité, frais non discutés. Le commentaire communautaire (Pavel Fedorov, 4.9k pts) : « if you backtest from 2015 you get Sharpe ratio of 0.1 » — même pathologie que #15989 dont le 0.944/0.749 n'a pas survécu à 2016-2026 (verdict NO BEATS posé, commit 565e54d). Le claim de diversification carry+trend doit être re-testé sur fenêtre longue, pas hérité de l'article.
3. Voisinage repo (vérifié firsthand ce 2026-09-22, origin/main b9975f5). Le port stratégie #13 existe (
FuturesTrend/main_carver13.py, 760 lignes, PR #15554) et le README documente précisément : le carry y est désactivé (le proxy front-only dupliquait EWMAC(8,32)), stub_carry_forecast(front_close, deferred_close)prêt, « follow-up de l'acceptance #15549 ». Le socle EWMAC multi-horizons, les scalaires Table 29, le cap ±20, le vol-régime et le sizing sont déjà sur main. Un port #11 = activer la jambe carry réelle (chain API front/deferred, disponible QC Cloud) sur ce socle — il solde la dette carry nommée du #13.4. Risques. (a) fenêtre article courte + effondrement 2015+ signalé ; (b) 4 carry spans × 19 instruments = coût de rotation à chiffrer ; (c) divergence de conception : le port #13 a requalifié le FDM Carver en breadth multiplier (sign-invariant) — un port #11 doit trancher FDM Table 52 Carver-true vs cohérence breadth et le documenter ; (d) l'univers article (10) ≠ univers #13 (19) — la comparaison des bras exige un choix documenté.
5. Valeur pédagogique. Contraste divergent/convergent dans un même algorithme ; carry comme prime d'assurance (arbitrage coût-of-carry par classe d'actif) ; architecture Carver multi-niveaux (forecast → instrument → portfolio) ; et le matériau comparatif des trois générations Melchin (0.294 → 0.749 → 0.944 sur 2020-2023, tous fragiles hors fenêtre) pour enseigner la robustesse de fenêtre.
Verdict de catégorie #11698 : CONSOLIDATION
Le socle est livré sur main ; ce port étend le projet existant
FuturesTrend/et solde le follow-up carry documenté. Pas de nouveau projet.Acceptance
FuturesTrend/(main.py, main_carver13.py, README) relu firsthand avant édition.MyIA.AI.Notebooks/QuantConnect/projects/FuturesTrend/**, sans nouveau projet QC ni fuite future.BEATS/NO BEATS/INCONCLUSIVEsans présumer que le 0.749 de l'article se reproduit.Grain: DEEP/qcet reste dans le scope unique.Hors scope