Repository navigation
QC Crypto-MultiCanal research.ipynb : 2 cellules de visualisation ont leurs outputs vides (C.2) -- re-executer via QC Cloud #14741
Description
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)))
PYLe 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 :
code[10]etcode[22]portent des sorties reelles, produites par une execution QC Cloud rejouee — figure plotly pour l'une, sortieslogger+ figures matplotlib pour l'autre.- Aucune regression sur les 22 autres cellules : elles conservent leurs sorties. Le diff ne doit vider aucune cellule (verifier
git diffcellule par cellule, pas seulement le compte global). - Le body de PR porte le tag
Grain:en premiere ligne, plus la preuve d'execution (reference du run QC Cloud / log). - 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
myia-ai-01 commentedon Sep 5, 2026
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 decode[10]etcode[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.Historysur 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.
fix(qc,#14741): re-execute Crypto-MultiCanal research.ipynb viz outpu…