Skip to content

feat(training,#14579): OOT verdict -- NO-BEATS sur donnees reellement futures - #14630

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/14579-oot-verdict
Sep 4, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/14579-oot-verdict

Conversation

@jsboige

@jsboige jsboige commented Sep 4, 2026 •

Copy link
Copy Markdown
Owner

feat(training,#14579): OOT verdict — NO-BEATS sur données réellement futures

Grain: DEEP/training -- lane myia-po-2027:CoursIA -- prev: LIGHT/ledger #14563

Le verdict

Premier verdict out-of-time réel de L4 Decision Transformer (issue #14579) :
entraînement gelé au 2025-06-30 (hash recalculé sur la tranche gelée), holdout
2025-07-10 → 2026-09-04 — absent de tous les folds et de toute sélection
d'hyperparamètres
.

Run OOT 04/09 (10 bps, seeds 0/1/7/42/99, 30 epochs, RTX 4060) Valeur
Verdict NO-BEATS
DT net Sharpe (moy ± σ cross-seed) −1.744 ± 0.214
Buy-and-hold Sharpe −0.592
Momentum naked net Sharpe −0.0342
seeds > BH 0/5
edge_sigma −5.38
DM mse p médian (jambe §C) 0.1419
DM mae p médian 0.2642
DM linear p médian (contrôle de biais) 0.2969
Biais signés (retour/jour) DT −0.004059 · momentum −7.5e-05 · BH −0.001406

Lecture honnête

Troisième test temporel (après interne et frais du 06/08) = troisième
non-reproduction
. L'edge L4 vit dans le panel/cross-section (BEATS @10bps
panel uniquement — status quo du ladder), il ne survit pas au temps. Le biais
signé confirme la lecture : sur la fenêtre baissière XRP, le DT perd en moyenne
journalière plus que le buy-and-hold (−0.41% vs −0.14%) ; la conjonction §C
(edge ≥ 2σ et DM mse p < 0.05) échoue sur ses deux jambes (edge négatif,
p = 0.142).

Deltas

Fichier Changement
docs/L4_decision_transformer.md Section « Protocole OOT » : phrase d'attente remplacée par le verdict réel + tableau chiffré + lecture du biais.
REGISTRY.md Ligne L4 : ajout « OOT réel 04/09 NO-BEATS (train gelé 2025-06-30, −5.38σ, DM mse p 0.142, 0/5 seeds) ».

Validation

Étape Résultat
Run GPU post-fix (scripts de #14629) exit 0, results/xrp_dt_validation/holdout_oot_20260904_164308.json (séries par seed incluses pour re-calcul DM)
Dataset yfinance XRP-USD, 2018-01-01 → 2026-09-04, 3169 rows, sha256 71d8aee9d0bda18b
Gel de borne --train-end 2025-06-30, hash sur tranche gelée — absence de contamination vérifiable
Pre-commit hooks 9/9 PASS
Diff 17+/3−, 2 fichiers, endings LF purs (pas de churn)

Stacking

Cette PR empile sur #14629 (l'instrument §C) : le verdict utilise les scripts
instrumentés. Merge-gate : merger #14629 d'abord, puis retarget/merge #14630.

Résultats bruts par seed : results/xrp_dt_validation/holdout_oot_20260904_164308.json
(gitignored, machine d'entraînement).

See #14579

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de feature/14579-oot-protocol. 1 PR ouverte(s) de feature/14579-oot-protocol vers main existe(nt) a cet instant -- c'est un stack legitime, le contenu est en vol. Verifier au moment du merge que la base est effectivement reliee a main.

@jsboige
jsboige force-pushed the feature/14579-oot-protocol branch from 33cffd0 to d5b7ea5 Compare September 4, 2026 15:05
… futures

Grain: DEEP/training -- lane myia-po-2027:CoursIA -- prev: LIGHT/ledger #14563

Premier verdict out-of-time REEL de L4 Decision Transformer (issue #14579,
sous-grain EPIC #1454) : entrainement gele au 2025-06-30 (hash recalcoule sur
la tranche gelee), holdout 2025-07-10 -> 2026-09-04 absent de tous les folds
et de toute selection d'hyperparametres. Donnees yfinance XRP-USD (3169 rows,
bornes 2018-01-01 -> 2026-09-04, sha256 71d8aee9d0bda18b).

Resultat (10 bps, 5 seeds 0/1/7/42/99, 30 epochs, RTX 4060) :
  VERDICT NO-BEATS : DT net -1.744 (+/- 0.214) vs BH -0.592
  0/5 seeds > BH | edge -5.38 sigma | DM mse p mediane 0.1419
  (mae 0.2642, linear-bias 0.2969) | biais moyens/jour: DT -0.004059,
  momentum -7.5e-05, BH -0.001406

Lecture : troisieme test temporel (apres interne et frais du 06/08) =
troisieme NON-reproduction. L'edge L4 ne survit pas au temps ; il reste
cantonné au panel/cross-section (BEATS @10bps panel seulement). Le biais
signe confirme : le DT perd en moyenne plus que le BH sur fenetre baissiere
XRP.

Livraison : section verdict dans docs/L4_decision_transformer.md +
ligne L4 de REGISTRY.md mise a jour (OOT reel 04/09 NO-BEATS cite).

Preuves : holdout_oot_20260904_164308.json (gitignored, series par seed
incluses pour re-calcul DM). Run POST-fix des scripts instrumentes (PR #14629).

See #14579
@jsboige
jsboige force-pushed the feature/14579-oot-verdict branch from b971f56 to 07b469b Compare September 4, 2026 15:05
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #14630 (feat(training,#14579): OOT verdict -- NO-BEATS sur donnees reellement futures) 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.

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] Review — DEEP/training, verdict OOT #14579 (stacked sur #14629)

Docs-verdict cohérent et honnête. Vérifié sur 07b469b :

  • Stacking correct : feature/14579-oot-verdict → base feature/14579-oot-protocol (#14629, OPEN) — le merge-gate "merger #14629 d'abord" du body est bien reflété par la chaîne de branches ✓
  • Conjonction §C respectée à la lettre : verdict NO-BEATS = les deux jambes échouent (edge_sigma −5.38 < +2σ et DM mse p 0.1419 > 0.05) — conforme au protocole de conjonction documenté en tête de section (§C amendé #11010) ✓
  • Cohérence interne des chiffres : DT −1.744±0.214 vs BH −0.592 avec 0/5 seeds > BH et biais signés DT −0.41%/j vs BH −0.14%/j — les trois métriques racontent la même histoire directionnelle, et le body ne cache rien (troisième non-reproduction assumée) ✓
  • REGISTRY.md : la ligne L4 passe de "BEATS (panel @10bps)" sans mention OOT à l'ajout explicite "OOT réel 04/09 NO-BEATS" — le verdict panel n'est pas réécrit, seulement complété ✓
  • Artéfacts de vérification non livrés (JSON gitignored, machine GPU) — l'absence de re-run DM firsthand est assumée et documentée ; le chemin de reproduction (séries par seed dans le JSON + scripts #14629) est spécifié.

Un point de lecture (non bloquant) : la fenêtre OOT 2025-07-10→2026-09-04 est baissière XRP — le NO-BEATS est solide (le DT fait pire que BH, pas juste égal), mais un verdict "temps" sur une seule fenêtre unidirectionnelle reste fragile par construction ; le ladder le dit déjà honnêtement ("l'edge vit dans le panel, pas dans le temps").

Content avec la méthode. (contrainte token : COMMENT only)

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = clean (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : (pas une PR bot).

Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens.

Cause mesuree : mergeable_state=clean, pas de base_ref_changed, sujet sans [skip ci], auteur

myia-ai-01 added a commit that referenced this pull request Sep 4, 2026
Merge coordinateur ai-01 — base d'un stack, forme `--merge` deliberee.

Grain: MED/training -- lane myia-po-2027:CoursIA -- prev: LIGHT/ledger #14563 (MERGED 2026-09-04T05:48:52Z, meme lane, genre ledger != training : invariant prev et G-VAR-3 tenus, verifies firsthand).

**Forme du merge** : `--merge` et non `--squash`, parce que cette PR est la base du stack #14630. Un squash reecrirait son SHA et orphelinerait la branche fille, qui exigerait alors un `rebase --onto`. En preservant les SHA, #14630 se retargette par simple changement de base — et son diff sera verifie reduit a son propre perimetre avant son merge.

**Gate B.0 — trois surfaces** : `check_unaddressed_nits.py` rc=0, et lecture faite (rc=0 ne repond que « aucune phrase de levee ne manque »). reviews[].body de NanoClaw lu EN ENTIER : verdict **favorable, verifie au code et non au body**, avec recomptage croisé independant de l'edge de #14630 (`(-1.744 - (-0.592)) / 0.214 = -5.38`). Zero thread inline. 0 check-run non-success sur d5b7ea5 (endpoint pagine).

**Les deux points mineurs de NanoClaw, tous deux classes non bloquants par le reviewer lui-meme :**
1. Le code applique **trois** conjoncts (`seeds_beat >= min(4,n)`, `edge_sigma >= 2`, `dm_p_mse_median < 0.05`) la ou le body et la doc n'en citent que deux. Non bloquant ici — sur le run de #14630 les trois echouent (0/5 seeds), le verdict publie n'est pas affecte. Mais c'est une prose de **protocole** que d'autres lanes lisent pour appliquer §C, et sous-citer le code y enseigne une regle plus permissive que celle qui tourne. Porte par l'issue de suivi **#14681**, ouverte AVANT ce merge (une issue nommee au merge ne serait pas une levee).
2. Cosmetique `data_hash` calcule dans les deux branches du if/else — zero impact, verse a #14681.

**§C** : la PR livre l'instrument, pas un claim de performance — la jambe de precision `e_t = position_t - sign(r_t)` corrige le mse sign-blind sur positions +-1 (#10228), `linear` reste `role: bias_control` et jamais une jambe de conjonction (§C amende #11010). Le gel de borne tronque **avant** le walk-forward avec data_hash recalcule : le holdout est structurellement invisible des folds.

G-VAR-1 : genre `training` = classe CONTENU, plancher tenu.
@myia-ai-01
myia-ai-01 changed the base branch from feature/14579-oot-protocol to main September 4, 2026 22:55
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2027:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants