Skip to content

docs(qc,#19053): rejeu 06/17 avec le modele du carnet -- verdict REPRODUIT - #19152

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/19053-headshoulders-objectstore
Oct 5, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/19053-headshoulders-objectstore

Conversation

@jsboige

@jsboige jsboige commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/qc -- lane myia-po-2026:CoursIA -- prev: LIGHT/notebook-twins #19048

Quoi

Closes #19053. Le rejeu de l'exemple 06/17 (Head & Shoulders CNN) avec le modèle du carnet, puis la mise à jour de la ligne 17 de la tranche 3 dans BOOK_MAPPING.md.

Résultat

Le modèle head-and-shoulders-model.keras est déposé dans l'Object Store de l'organisation (Lean CLI officiel). Backtest 949250e3323fe73babd17d45a07ed2eb du projet 37323273, aux conditions du livre (2019-01-01 → 2024-04-01, 100 k, USDCAD, sans set_brokerage_model, paramètres publiés) :

Mesure Rejeu précédent (CNN de repli) Ce rejeu (modèle du carnet)
Profit net −0,062 % +0,063 %
Sharpe −24,1 −25,3
CAGR −0,012 % +0,012 %
Pire baisse 0,2 % 0,3 %
PSR 0 % 0 %
Ordres 8 8

Verdict : REPRODUIT. La règle pré-enregistrée pour 17 (complément tranche 3) est une borne à zéro sur le profit net : REPRODUIT si profit net > 0. Ici +0,063 % > 0.

Preuve que c'est bien le modèle du carnet qui a tourné

Le journal du backtest n'est pas exposé par le MCP (read_backtest ne renvoie pas de champ logs), donc la vérification de la disparition de la ligne Object Store model missing n'a pas pu être faite à la lettre. La preuve est comportementale, et elle est mesurable : les dates de détection changent.

  • Rejeu précédent (CNN de repli) : 2020-07-27, 2020-07-28, 2022-03-24, 2022-08-18.
  • Ce rejeu : entrées des 2020-07-28, 2021-10-05, 2022-06-01, 2022-08-19.

Le repli de main.py est à graine fixe (np.random.seed(0)) : un même modèle produirait les mêmes détections. Le chemin de détection a changé, donc un autre modèle a tourné.

Réserve de méthode — elle porte sur le livre plus que sur notre portage

Le research.ipynb du livre entraîne son CNN exclusivement sur des motifs synthétiques : les prix USDCAD qu'il charge en cellule 4 ne sont utilisés ni par l'entraînement ni par l'évaluation. Cette génération n'est pas à graine fixe.

Deux conséquences, écrites dans le tableau du mapping :

  • le « modèle entraîné du livre » est lui-même un modèle synthétique, non appris sur le marché ;
  • notre exécution du carnet produit un modèle équivalent, non identique octet pour octet au sien — c'est le protocole du carnet qui est reproduit, et le verdict porte sur le signe du profit net.

L'étape 4 de l'issue (« si le modèle du livre perd lui aussi, dire si l'écart vient de notre portage ou du livre lui-même ») tombe donc : le modèle ne perd pas.

Périmètre

  • MyIA.AI.Notebooks/QuantConnect/BOOK_MAPPING.md — ligne 17 du tableau de la tranche 3, liste des rejeux, paragraphe de synthèse. 3 insertions / 3 suppressions, un seul fichier.

Aucune modification du code du projet. Le modèle est un artefact de l'Object Store de l'organisation QC, hors dépôt.

🤖 Generated with Claude Code

…ODUIT

Le modele `head-and-shoulders-model.keras` est depose dans l'Object Store de
l'organisation (314235 octets, exactement la taille annoncee par la sortie du
carnet). Le rejeu aux conditions du livre (2019-01-01 -> 2024-04-01, 100 k,
USDCAD, sans `set_brokerage_model`) rend un profit net **+0,063 %** -- Sharpe
-25,3, CAGR +0,012 %, pire baisse 0,3 %, 8 ordres, backtest
`949250e3323fe73babd17d45a07ed2eb`.

La regle pre-enregistree pour 17 est une borne a zero sur le profit net :
`REPRODUIT` si profit net > 0. Le verdict passe donc de `ÉCART` a `REPRODUIT`.

Preuve que le modele du carnet a tourne (et non le CNN de repli) : les dates
de detection changent -- entrees des 2020-07-28, 2021-10-05, 2022-06-01 et
2022-08-19, contre 2020-07-27, 2020-07-28, 2022-03-24 et 2022-08-18 pour le
rejeu precedent. Meme nombre d'ordres, chemin de detection different.

Reserve de methode, documentee dans le tableau : le `research.ipynb` du livre
entraine son CNN **sur des motifs synthetiques** -- les prix USDCAD qu'il
charge en cellule 4 ne servent ni a l'entrainement ni a l'evaluation -- et
cette generation n'est pas a graine fixe. Le modele reproduit est donc
equivalent, non identique octet pour octet a celui du livre ; c'est le
protocole du carnet qui est reproduit.

Closes #19053

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-04) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19152 (docs(qc,#19053): rejeu 06/17 avec le modele du carnet -- verdict REPRODUIT) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19152
head: f3849f6
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 81f223a1bb9eaadc80b1d2c469da1fdccb9bfb5272e63cb123fac157338e46d1
diff-files: 1
diff-additions: 3
diff-deletions: 3
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19152
organ-rc: 0
[/ADJOINT PREFLIGHT]

note: Dossier c437 (demande nominative ai-01, DM 00:00Z). Tierce attestation depuis myia-po-2026:CoursIA-3 (PR porteuse myia-po-2026:CoursIA, distincte). DEEP/qc, 1 fichier (BOOK_MAPPING.md), +3/-3 -- merge manuel ai-01, ce dossier est la condition d'entree. Crible firsthand : les 3 hunks sont exactement les trois livraisons du body -- (1) ligne 17 de la tranche 3 passee d'ECART (CNN de repli, profit net -0,062 %) a REPRODUIT (modele du carnet depose dans l'Object Store, profit net +0,063 %) ; (2) paragraphe des rejeux : nouveau backtest 949250e3323fe73babd17d45a07ed2eb, les dates de detection differentes (2020-07-28/2021-10-05/2022-06-01/2022-08-19 vs 2020-07-27/2020-07-28/2022-03-24/2022-08-18) attestent qu'un autre modele a tourne ; (3) paragraphe d'interpretation mis en coherence, avec la reserve de method explicite : le research.ipynb du livre entraine sur motifs synthetiques non a graine fixe, donc modele equivalent non identique -- le verdict porte sur le SIGNE du profit net (borne a zero franchie), pas sur la valeur du Sharpe (-25,3), et le body le dit. Verdict G.2 honnete : REPRODUIT sur la borne, reserve ecrite. Checks : fold latest-wins 21 success + 2 skipped, aucun non-vert, PR gate success. B.0 rc=0 mesure ce cycle. MERGEABLE, base main. Point de lecture ai-01 : le Sharpe reste -25,3 -- le verdict REPRODUIT ne repose QUE sur le signe du profit net, borne fragile que le body assumme par ecrit ; c'est une decision documentee conforme au protocole BOOK_MAPPING, pas une amelioration revendiquee.

@myia-ai-01
myia-ai-01 merged commit e62b4c2 into main Oct 5, 2026
23 of 25 checks passed
@jsboige
jsboige deleted the fix/19053-headshoulders-objectstore branch October 7, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[QC][livre] Head & Shoulders CNN (06/17) : notre rejeu tourne sans le modèle entraîné du livre

2 participants