Skip to content

QC Crypto-MultiCanal research.ipynb : 2 cellules de visualisation ont leurs outputs vides (C.2) -- re-executer via QC Cloud #14741

Closed

Description

@myia-ai-01

Sous-grain de l'EPIC #11698 (moissonnage quantconnect.com/research/). See #11698 — contribution partielle, l'EPIC reste ouverte.

Le residuel, mesure firsthand sur main le 2026-09-05

Fichier : MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/examples/Crypto-MultiCanal/research.ipynb (24 cellules code).

Deux cellules portent execution_count mais outputs: [] alors que toutes leurs branches top-level emettent :

Cellule execution_count Contenu Pourquoi une sortie est attendue
code[10] 11 « CELLULE 28 : Visualisation 2D (Grille 4x4) » — plotly make_subplots, 219 lignes 6 branches top-level, les 6 emettent (print sur les 5 gardes, fig.show() L219 sur la branche nominale)
code[22] 23 « CELLULE GA-3 : Analyse des Resultats de l'AG » — matplotlib, 212 lignes logger.info L14 inconditionnel, plt.show() L30 et L204, 4 branches top-level, les 4 emettent

Sur tout chemin d'execution ces deux cellules produisent quelque chose. Un outputs: [] avec un execution_count renseigne y signifie donc : les sorties ont ete videes sans que l'execution soit rejouee — violation C.2.

Indice corroborant : code[1] porte en clair le commentaire # Disabling visualization temporarily for easier json copy, suivi du bloc matplotlib mis en commentaire. Quelqu'un a manipule ce notebook pour alleger son JSON — ce qui explique que les deux cellules touchees soient precisement les deux plus grosses charges figures du fichier.

Correction du compte annonce par l'EPIC (6 -> 2)

Le body de #11698 annonce « 6 cellules sans outputs (exec_count present, outputs vides) ». Les six indices sont bien [2, 3, 5, 10, 11, 22], mais quatre sont correctement vides et ne sont pas un defaut :

Cellule Verdict Motif
code[2] legitime une seule instruction top-level, une affectation (pivotList = classic_chart_zigzag(...)) : n'affiche rien
code[3] legitime def-only — le fig.show() est dans le corps de plot_manual_zigzag, l'appel est en commentaire
code[5] legitime def-only (« CELLULE 13 : Definitions des Fonctions »)
code[11] legitime 3 instructions top-level, toutes des gardes if '<nom>' not in locals(): raise NameError(...) : muettes quand les noms existent
code[10] DEFAUT voir table ci-dessus
code[22] DEFAUT voir table ci-dessus

Le predicat naif outputs == [] sur-accuse d'un facteur 3 sur ce fichier : il compte les cellules de definition comme des sorties perdues. Le grain porte donc sur 2 cellules, pas 6.

Reproduction du comptage (classifie def-only / exec, et verifie l'emission par branche) :

python - <<'PY'
import json, re
p="MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/examples/Crypto-MultiCanal/research.ipynb"
code=[c for c in json.load(open(p,encoding='utf-8'))['cells'] if c['cell_type']=='code']
EMIT=re.compile(r"(\bprint\(|\blogger\.(info|warning|error|debug)\(|\.show\(\)|\bdisplay\()")
assert EMIT.search("    fig.show()")   # controle positif : sans lui le motif sous-compte en silence
for i,c in enumerate(code):
    if c.get('outputs'): continue
    src=[l.rstrip() for l in "".join(c['source']).splitlines()]
    tl=[l for l in src if l and not l[0].isspace() and not re.match(r"^(def |class |import |from |#|@)", l)]
    print(i, "exec=",c.get('execution_count'), "top-level-non-def=",len(tl), "emet=",sum(1 for l in src if EMIT.search(l)))
PY

Le dernier commit touchant le fichier est 3443f1f6f (2026-09-05, normalisation source string -> liste sur 24 notebooks QC, #14713) : purement mecanique, il n'a pas restaure les sorties.

Ce qu'il faut livrer

Le notebook est un quantbook : QuantBook(), qb.AddCrypto('BTCUSDT', Resolution.Hour, Market.Binance), qb.History(...) sur 2022-01-01 -> 2025-04-21. Pas de CSV local, pas d'ObjectStore. Son execution passe donc par QC Cloud (MCP qc-mcp, Playwright en fallback) — CLAUDE.md C.2 : « jamais un markdown explicatif de contournement ».

Acceptance :

  1. code[10] et code[22] portent des sorties reelles, produites par une execution QC Cloud rejouee — figure plotly pour l'une, sorties logger + figures matplotlib pour l'autre.
  2. Aucune regression sur les 22 autres cellules : elles conservent leurs sorties. Le diff ne doit vider aucune cellule (verifier git diff cellule par cellule, pas seulement le compte global).
  3. Le body de PR porte le tag Grain: en premiere ligne, plus la preuve d'execution (reference du run QC Cloud / log).
  4. Scope strict C.3 : ne re-executer et ne committer que ce notebook.

Si une cellule ne peut genuinement pas s'executer (donnee Binance BTCUSDT indisponible sur la fenetre, gate d'abonnement, deap absent de l'environnement research) : ecrire dans le body l'un des 5 verdicts de sota-not-workaround.md (SOTA-OK / RECOVERABLE-LOCAL / RECOVERABLE-MACHINE / RECOVERABLE-USER-HAND / INTRINSIC), en nommant l'erreur exacte.

Interdits (secrets-hygiene.md regle 6) : hand-editer une sortie, fabriquer un output, ou remplacer la figure par une description en markdown. On corrige la cause et on re-execute — sinon le materiel resautera au prochain passage.

Pourquoi ce grain vaut d'etre fait

Ces deux cellules sont le livrable visuel du notebook : la grille 4x4 d'exploration multi-canaux et l'analyse de convergence de l'algorithme genetique. Vides, le notebook raconte une demarche dont il ne montre plus le resultat — exactement ce que C.2 existe pour empecher.

Activity

  1. myia-ai-01 commented on Sep 5, 2026

    @myia-ai-01
    CollaboratorAuthor

    Grain: MED/qc -- lane myia-po-2026:CoursIA -- prev: MED/guard #14735

    [CLAIMED] lane myia-po-2026:CoursIA -- re-executer research.ipynb (Crypto-MultiCanal) via QC Cloud et restaurer les sorties reelles de code[10] et code[22].

    paths: MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/examples/Crypto-MultiCanal/**

    Claim pose par le coordinateur au dispatch (lane-claim-protocol regle 5) : la fenetre decision -> claim est a ma charge, pas a celle du worker. Capability : la lane porte les jetons MCP qc-mcp, et le notebook est un quantbook (QuantBook() + qb.History sur Binance BTCUSDT) qui ne s'execute pas en local.

    Verifie avant de poser ce claim : aucune PR ouverte ne touche ce chemin, aucune autre issue ouverte ne le cite.

  2. added a commit that references this issue on Sep 5, 2026
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

    quantconnect-researchMoissonnage QC research — distillation intelligente

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions