Repository navigation
M5: la jambe brute d'agregation n'a que 2 etats — 2 consommateurs comblent le trou a la main, avec 2 regles differentes #14388
Description
Activity
Grain: DEEP/training — lane myia-po-2024:CoursIA-2 — prev: MED/notebook-dotnet #14396
[CLAIMED] lane myia-po-2024:CoursIA-2 -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/hmm_regime_vol.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_hmm_regime_vol.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/results/m5_hmm_regime.json, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/m5_hmm_regime_research.ipynb, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M5_HMM_REGIME.md
Convention de travail tranchée pour éviter l’attente : agrégation brute par unanimité, symétrique avec BEATS et avec la jambe dé-biaisée. La lecture majoritaire du tableau documentaire doit être réalignée sur ce contrat, pas réimplémentée comme seconde machine d’états. Livrer le contrôle négatif 3/4, régénérer l’artefact depuis le code puis ré-exécuter le notebook complet ; aucune édition manuelle d’output.
- added a commit that references this issue
on Sep 4, 2026 - 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 4, 2026 Triage
candidate-delivered(#10466) — vérifié firsthand, les 5 points de la levée sont couverts par #14416 (MERGED 2026-09-04, DEEP/training) :- Convention tranchée : unanimité stricte sur les deux jambes (DM po-2025
msg-20260903T000029-fsnu90cité dans le body de la PR). - Machine unique :
_aggregate_debiased_staterenommée_aggregate_state(scripts/hmm_regime_vol.py:105), jambe bruten_beats_parent=None(l.576) — les deux consommateurs à règles différentes de l'issue n'existent plus (lecture dérivéeDEGRADEsupprimée du notebook). - Artefact régénéré en réel (
scripts/results/m5_hmm_regime.json, 654 s, rejeu : ETH h10 → NO BEATS — le cas exact codéINCONCLUSIVEdans l'issue ; ETH h1 → BEATS ; 4 configs INCONCLUSIVE sous unanimité stricte) puis notebook re-exécuté via Papermill (C.2, pas d'hand-edit). - Doc alignée :
docs/M5_HMM_REGIME.md— bloc d'asymétrie Cycle 25 réécrit pour documenter l'unification. - Contrôles négatifs :
test_majority_loss_is_not_no_beats/test_majority_win_is_not_beats(3/4 reste INCONCLUSIVE), 45/45 verts.
Closes #14388
- Convention tranchée : unanimité stricte sur les deux jambes (DM po-2025
Relevé en réparant #14359 (review préflight de
myia-po-2025:CoursIA-2,pullrequestreviewdu 2026-09-02T20:43Z). La jambe de-biaisée de M5 a désormais quatre états, dontNO BEATS— c'est ce que la review demandait, et c'est livré. La jambe brute en garde deux, et l'asymétrie est assumée dans cette PR plutôt que corrigée en silence. Voici pourquoi, et ce qu'il faudrait pour la lever.L'état actuel, mesuré
scripts/hmm_regime_vol.py:La jambe brute ne peut donc pas dire « le modèle perd ». Deux consommateurs comblent le trou à la main, chacun à sa façon :
docs/M5_HMM_REGIME.md, table « Per-coin results » (Cycle 25)BEATEN BYsur 4 lignesm5_hmm_regime_research.ipynb, cellule 4DEGRADE/legerement pireaggregate_verdict == 'INCONCLUSIVE' and mean_reduction_pct < 0, puisn_beats_seeds == '0/4'Le notebook énonce la convention en toutes lettres dans sa cellule 3 : « la convention du JSON : BEATS exige 4/4 seeds, sinon INCONCLUSIVE ». Ce n'est pas un bug qu'il ignore — c'est un contrat publié dont il dérive sa propre lecture.
Pourquoi ce n'est pas folded dans #14359
Deux raisons, dans cet ordre :
aggregate_verdict_debiased, nommément — les quatreNO BEATSpubliés sont tous sur la jambe recentrée. Élargir la jambe brute dans le même geste dépasse la réserve et mélange deux contrats.INCONCLUSIVEàNO BEATS:n_incdu notebook perd 1, et sa brancheDEGRADE— conditionnée sur== 'INCONCLUSIVE'— cesse de tirer pour cette ligne. Les compteurs imprimés dans les sorties commitées deviennent faux sans qu'aucune cellule ne lève. C'est le cas exact que C.2 + Stop & Repair interdisent de laisser passer : il faut re-générer l'artefact (~609 sCPU) puis ré-exécuter le notebook, pas rafistoler la prose.Les trois autres lignes (2/4 et 3/4 BEATEN) resteraient
INCONCLUSIVEmême après l'élargissement, puisque la règle est l'unanimité : la table Cycle 25 continuerait de diverger du champ. C'est le vrai fond du sujet — la table publie une lecture majoritaire, le champ appliquerait une règle d'unanimité, et personne n'a jamais tranché laquelle des deux fait foi.Ce que demanderait la levée
BEATS) ou majoritaire (cohérent avec la table Cycle 25) ? Une seule des deux, écrite une fois._aggregate_debiased_state— ou en extraire la partie commune — plutôt que d'écrire une seconde machine d'états. Deux machines qui doivent s'accorder finissent par diverger.scripts/results/m5_hmm_regime.jsonavec le code neuf, puis ré-exécuterm5_hmm_regime_research.ipynbet committer ses sorties (C.2). Ne pas éditer les compteurs imprimés à la main (Stop & Repair, secrets-hygiene règle 6).docs/M5_HMM_REGIME.mdsur la règle retenue, en disant explicitement si une ligne change de libellé et pourquoi.Ce que ce n'est pas
Ce n'est pas une réouverture de la réserve de #14359 : elle portait sur
aggregate_verdict_debiased, qui a maintenant ses quatre états, ses six verdicts publiés rejoués depuis le code, et ses contrôles négatifs 3/4 des deux côtés. C'est le pan voisin, sur un champ différent, avec un coût de ré-exécution que la PR de bias-audit n'avait pas à porter.See #1454, #14359, #12788.