Skip to content

feat(m5,#19725): M5 couche de dimensionnement ETH -- verdict strategie VOIDE_FUITE (pre-enregistre) - #19728

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/19725-m5-strategy-voltargeting
Oct 8, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/19725-m5-strategy-voltargeting

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/training — lane myia-po-2023:CoursIA — prev: DEEP/genai #19699

See #19725 — Part of #18907. Pré-enregistré : hypothèse/baseline/métrique/seuil/grille/bloc/placebo posés sur #19725 (c.6040355929) avant le premier calcul, conformément au protocole #18907.

Question

L'edge de prédiction M5 sur la RV ETH h=1 (BEATS après dé-biais, revalidé #18190) se convertit-il en valeur de stratégie une fois passé par une couche de vol-targeting ? C'est la lecture « temps hors échantillon » demandée par #18907 : non plus la précision (DM sur perte de précision), mais le Sharpe net de coûts d'un portefeuille dimensionné par la prévision.

Verdict : VOIDE_FUITE (machine seule : INCONCLUSIVE)

  • Machine de verdict seule : INCONCLUSIVE franc — diffs de Sharpe net M5−HAR de −0,037 à +0,070 selon la graine (signes mixtes 2-/2+), aucune p unilatérale sous 0,23.
  • Placebo M5 péréimé de 5 jours : bat HAR sur la graine 42 (+0,272, p = 0,034). Le pré-enregistrement pose cette configuration comme fuite/bruit — un signal stale qui gagne démontre que la performance du bloc est dominée par le bruit d'échantillonnage, pas par l'information du jour. Verdict vidé conformément à la registration.
Graine M5 HAR diff p(diff≤0) Placebo-5j RV63 Hold biais M5/HAR (log-RV, bloc)
0 +0,563 +0,587 −0,024 0,582 +0,728 +0,727 +0,685 +0,0054 / +0,0065
7 +0,550 +0,587 −0,037 0,682 +0,652 +0,727 +0,685 −0,0353 / +0,0065
42 +0,629 +0,587 +0,043 0,310 +0,859 +0,727 +0,685 −0,0150 / +0,0065
99 +0,656 +0,587 +0,070 0,230 +0,767 +0,727 +0,685 −0,0398 / +0,0065

Finding contextuel (mesuré, hors gate)

Les deux jambes prévision sont sous RV63 (+0,727) et sous buy & hold (+0,685), 4/4 graines. Sur le bloc gelé 2022-07→2023-12 (fin de krash puis récupération), un levier moyen ~1,8 (plafond 3,0, cible 60 %) a dilué les rendements sans améliorer le ratio. L'edge de précision ETH h=1 ne se transfère pas en edge de stratégie par cette voie — convergence avec les rungs négatifs du Curriculum (L5 vol-targeted composite NO BEATS, L6 finding 3 sizing régime < naive).

Design (pré-enregistré, zéro paramètre libre)

  • Prévisions : dump du runner publié (hmm_regime_vol.py --dump-series, ETH-USD h=1, graines 0/7/42/99, 2020-06-28→2023-12-12) — le script ne re-fit rien, la couche stratégie s'ajoute au chemin exact qui a produit les verdicts de précision.
  • lev_t = min(3,0 ; 0,60/vol_ann_t), plancher 0 (jamais short) ; ret_net_t = lev_{t-1}·ret_t − 0,001·|lev_t − lev_{t-1}| (10 bps crypto sur turnover, pr-review-discipline §C).
  • Bloc gelé 2022-07-01→2023-12-15 (~533 j) ; bootstrap stationnaire apparié (blocs moyenne 22 j, 2000 tirages, graine fixe 20261007, p unilatéral) — analogue Sharpe du DM de l'arbitrage [ML-Pipeline] Des BEATS qui veulent dire quelque chose : Sharpe net hors temps, pré-enregistrement, puissance #18907 point 4.
  • Machine : BEATS = diff>0 4/4 ET p<0,05 4/4 ; NO BEATS = miroir ; sinon INCONCLUSIVE ; placebo qui bat → VOIDE_FUITE.
  • Rapport de biais par modèle (C.7) : biais log-RV moyen par graine au manifeste — M5 −0,040 à +0,005 (dépend du régime décodé), HAR +0,0065 constant.

Livrables

Fichier Contenu
scripts/m5_strategy_vol_targeting.py Couche stratégie + bootstrap + machine de verdict (script seul, ~270 l)
scripts/tests/test_m5_strategy_vol_targeting.py 16 contrats : formule de levier, timing du coût 10 bps (jour du changement), lag d'un jour, péréemption placebo 5 j, déterminisme bootstrap, couverture/wrap des indices, machine BEATS/NO BEATS/INCONCLUSIVE — 16/16 passés (C:/Python313/python.exe -m pytest)
scripts/results/m5_strategy_vol_targeting.json Manifeste falsifiable (3 Ko) : config complète, verdict, per-seed, sha256 du dump
docs/M5_STRATEGY_VOLTARGET.md Doc du résultat, verdict en tête, section « ce que le résultat interdit de faire »
REGISTRY.md Ligne Updated 2026-10-07 + sous-section détail dans la section M5

Séries complètes hors dépôt (empreintes ci-dessous) : G:\Mon Drive\MyIA\Dev\Trading\ML-Training-Pipeline\

  • m5_strategy_full_series.csv (rendements nets + leviers par graine/jour) — sha256 643539cadbb5b393bc35884165b1d2641a77a6d7de86cc5fe2247de793b0ef1d
  • m5_eth_h1_series.csv (dump prévisions, celui que le manifeste hashe) — sha256 e32e5db295fd12c36aaa597c70ae0cae878df8be53dc8a92abb0169d0566c1ef

Ce que le résultat interdit

Aucun re-jeu avec un autre bloc/cible/plafond/lag ne peut être rapporté comme suite de CE résultat : une variante = une nouvelle expérience avec un nouveau commentaire de pré-enregistrement avant tout calcul (#18907 point 2). Le résiduel honnête : « M5 vs HAR comme sizing » reste ouvert mais non démontré (±0,07 devant le bruit du bloc) ; « M5 sizing vs naïf » est tranché négativement sur ce bloc.

Validation

  • Tests : 16 passed (relié APRÈS le dernier commit d'état — le commit ne touche pas les tests).
  • Run : exit 0, ~2 min CPU, manifeste écrit avant commit ; sha256 du dump dans le manifeste = empreinte GDrive (vérifié).
  • Re-run du runner de prévisions : log complet dans le scratchpad, verdict de précision reproduit (BEATS +9,6 %/brut +8,7 % dé-biaisé) — cohérent fix(training): pair M17 cluster forecasts by origin #18190.
  • Pas de notebook dans la PR (script + tests + doc + manifeste) — H.3/papermill non applicables.

🤖 Generated with Claude Code

… verdict VOIDE_FUITE

Pre-registration c.6040355929 posted before first calculation (protocol
#18907). Vol-targeting layer (lev = min(3, 0.60/vol), 10 bps turnover
cost) on the published runner's ETH h=1 forecasts, frozen block
2022-07-01..2023-12-15, paired stationary block bootstrap (22d, 2000
draws, fixed seed). Machine verdict INCONCLUSIVE (diffs -0.037..+0.070,
no p<0.23); placebo M5 stale 5d beats HAR on seed 42 (+0.272, p=0.034)
-> verdict voided per registration. Context finding: both forecast legs
under RV63 (+0.727) and buy & hold (+0.685), 4/4 seeds. 16 contract
tests. Manifest with dump sha256; full series on GDrive.

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

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

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

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 added the markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. label Oct 7, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19728
head: 60d9840
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 58b8943dae8d4d29e6d0ba11ba583da39b3774a653a815aca5a4d57568a5536a
diff-files: 5
diff-additions: 680
diff-deletions: 0
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 19728
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19728
head: 60d9840
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e2df5d0ae412666a8f40749d46ce63e6c817922a1134a05971a8658b879b68ad
diff-files: 5
diff-additions: 680
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19728
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 0403286 into main Oct 8, 2026
29 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants