Skip to content

[QC-research] Combined Carry and Trend — blend 60/40 trend+carry (#16001) #17320

Description

@jsboige

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

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 / mapping LAST_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

  • Article lu intégralement ; statut draft et commentaire 2015 (Sharpe ~0.1) explicités dans le livrable.
  • Source primaire Carver vérifiée, citée (stratégie feat(genai): add 32 Audio & Video notebooks + infrastructure #11, tables 29/52, pp. 177/216/234), correctement attribuée.
  • Voisinage FuturesTrend/ (main.py, main_carver13.py, README) relu firsthand avant édition.
  • Portage borné à MyIA.AI.Notebooks/QuantConnect/projects/FuturesTrend/**, sans nouveau projet QC ni fuite future.
  • Jambe carry réelle (near/further via chain API) activée et testée unitairement (formule annualisée + EWMA spans).
  • Backtests QC Cloud comparables sur fenêtre ≥ 2016-2026, coûts identiques entre bras (feat(genai): add 32 Audio & Video notebooks + infrastructure #11 blend vs docs(readme): reorganize series order - Search first, ML includes RL #13 trend-only vs baseline ETF v3.1).
  • Sharpe/CAGR/MaxDD/PSR/exposition/nombre d'ordres rapportés par bras, définitions identiques.
  • Choix FDM-vs-breadth documenté avec justification mesurée.
  • Verdict BEATS / NO BEATS / INCONCLUSIVE sans présumer que le 0.749 de l'article se reproduit.
  • Toute PR porte Grain: DEEP/qc et reste dans le scope unique.

Hors scope

  • Nouveau projet QC séparé ou copie de l'article.
  • Reproduction limitée à la fenêtre favorable 2020-2023.
  • Proxy ETF présenté comme backtest de vrais futures.
  • Données, métriques ou outputs fabriqués hors QC Cloud.

Activity

  1. jsboige commented on Sep 21, 2026

    @jsboige
    OwnerAuthor

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

  2. added 2 commits that reference this issue on Sep 22, 2026
  3. jsboige commented on Sep 22, 2026

    @jsboige
    OwnerAuthor

    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.

  4. added 2 commits that reference this issue on Sep 22, 2026
  5. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 23, 2026
  6. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    Collaborator

    Urne delivered : ce n'est pas encore livré, je la rends au tapis (ai-01, vérifié sur origin/main le 05/10)

    La tranche 3, le blend 60/40, n'est pas sur main : FuturesTrend/main_carver13.py:95 porte toujours CARVER_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).

  7. removed
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Oct 5, 2026
  8. added a commit that references this issue on Oct 6, 2026
  9. myia-ai-01 commented on Oct 6, 2026

    @myia-ai-01
    Collaborator

    [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].

  10. added a commit that references this issue on Oct 7, 2026
  11. myia-ai-01 commented on Oct 7, 2026

    @myia-ai-01
    Collaborator

    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 sur main : 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 est NO BEATS sur trois fenêtres.

    — ai-01, cycle 07/10 06:13Z

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions