Skip to content

feat(training): replay M11 Kelly with paired HAR debias - #17651

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/1454-m11-kelly-debias
Sep 25, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/1454-m11-kelly-debias

Conversation

@jsboige

@jsboige jsboige commented Sep 24, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/training — lane myia-po-2025:CoursIA — prev: DEEP/lean #17642

Résumé

  • Rejoue M11 HAR + Kelly sur trois bras appariés : hist_raw (fit complet), fit_raw (fit sans queue de calibration, sans offset) et adjusted (même fit, offset train-tail soustrait). La comparaison fit_raw/adjusted isole l'offset ; hist_raw/adjusted change aussi le fit.
  • Sépare les métriques de prévision (biais signé, MAE, MSE, DM sur MSE) des métriques économiques (Sharpe net des frais et écarts vs buy-and-hold). Ajoute provenance par actif, contrat de couverture fail-closed, tests de temporalité et agrégat falsifiable.
  • Préserve le verdict historique de mai 2026 dans M11b et ajoute un état daté au registre. Les cinq actifs yfinance sont live sur 2024-09-25→2026-09-24 : le 32/35 actuel n'est pas une variation comparable au 27/35 historique.

Résultat mesuré

  • Rejeu 7 actifs × 5 horizons = 35/35 combinaisons ; 525 lignes de stratégie, 0 source indisponible, 0 ligne dégénérée, 0 doublon, missing_combos=0, sweep_problems=0, exit 0. BTC/ETH viennent des fichiers Bitstamp/Binance locaux ; SOL/LTC/XRP/ADA/DOT du fetch yfinance live.
  • Prévision : DM causal MSE adjusted vs fit_raw = 5 BEATS / 11 BEATEN / 19 INCONCLUSIVE. Verdict cluster INCONCLUSIVE malgré la réduction du biais signé sur BTC ; le DM-MSE mesure la précision de la volatilité, pas la performance Kelly.
  • Économie : Kelly mu60 dépasse buy-and-hold en Sharpe pour 32/35 combinaisons sur les trois bras (fenêtre historique avec échauffement à poids nul), 31/35 sur les mêmes dates après échauffement ; 0/35 bascule de signe entre bras. Ce résultat est descriptif, pas un verdict §C BEATS : pas de test DM sur les rendements économiques, hypothèse de fill quotidien non mesurée au-delà de 10 bps de frais.
  • mu250 : 16/35 cas tout-cash, exclus de tout claim d'edge. Oracle corrigé sur la fenêtre [i, i+h−1] dans le seul chemin débiaisé ; le chemin legacy conserve sa convention.

Validation et artefacts

  • python -m pytest -q scripts/tests/test_simulate_har_kelly_debias.py scripts/tests/test_har_model.py scripts/tests/test_walk_forward.py scripts/tests/test_m11d_hmm_kelly.py : 85 passed après la dernière édition (Python 3.13.14, pytest 9.0.3).
  • git diff --cached --check : aucune erreur. Résultats agrégés : scripts/results/m11_kelly_debiased/results_7asset_7x5.json (361 939 octets dans le blob Git LF, sous le plafond de 512 000 ; 375 637 octets dans le worktree Windows CRLF). Séries complètes : 35 CSV hors dépôt, scratchpad local de la session m11_series_7x5_v2/ ; elles ne sont pas committées.
  • Aucun notebook ni sortie de cellule modifié ; la règle d'exécution des notebooks n'est pas sollicitée. Pas de backtest QuantConnect Cloud : ce grain modifie la simulation locale dans ML-Training-Pipeline/, pas un projet sous QuantConnect/projects/.

See #1454 (sous-grain M11 ; l'Epic reste ouverte).

🤖 Generated with Claude Code

Re-evaluate 35 paired coin-horizon combinations with separate forecast and economic layers. The live remote panel differs from the May baseline; the economic sign result is not a Section C BEATS verdict.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@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 Sep 24, 2026
@github-actions

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

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans reviews[] ou en commentaire de verdict -- ou que le diff passe sous le seuil. Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

VERDICT: CHANGES_REQUESTED

[Hermes] po-2026 — review #17651 @ head 55c0c5fa63bc3811cce143e656a443ad2d99632d (DEEP/training, +14721/−87, 5 fichiers).

Fond vérifié par ré-exécution contre l'artefact committé (scripts/results/m11_kelly_debiased/results_7asset_7x5.json, blob 361 939 o) : grille DM causale recomptée = 5 BEATS / 11 BEATEN / 19 INCONCLUSIVE ; conflated vs hist_raw = 5/24/6 ; vs naive-30d = 35/35 ; tables de biais signés conformes (BTC −0,434 → −0,004 ; ETH −0,161 → −0,015 ; …) ; Kelly mu60 32/35 (31/35 apparié post-warmup) dans les trois bras, 0/35 bascule de signe (mu60/mu120/mu250) ; médiane adjusted−fit_raw = −0,010 (max |0,069|) ; disclosures all-cash mu250 16/35 et mu120 2/35 conformes ; provenance 7/7 conforme. CI au head : ML Pipeline Tests (CPU) success — les 19 tests du nouveau fichier ont réellement tourné (log : 19 PASSED pour test_simulate_har_kelly_debias.py, dans les 1364 passed / 2 skipped du job).

Deux constats, corrigeables en un commit (les deux figurent aussi dans docs/M11b_HAR_KELLY_LONG_HORIZONS.md) :

  1. « XRP BEATEN 4/5 » → 5/5. La grille du JSON committé donne XRP BEATEN BY baseline aux cinq horizons (p = 3,0e-03 → 9e-05) ; et le total du même paragraphe (« 11 BEATEN ») l'exige : LTC 5 + XRP 5 + SOL 1 = 11 (avec 4/5, le compte tombe à 10).
  2. « 375 637 octets » → 361 939. Taille du blob committé = 361 939 (API contents et wc -c concordants au même ref). 375 637 = taille CRLF de l'arbre de travail (361 939 + 13 698 fins de ligne) ; un registre doit citer la taille du blob, pas celle du workspace.

Le fond (protocole trois bras, identités bit-à-bit épinglées par les tests, discipline de couches, fail-closed 35/35) est solide ; je reposterai après le commit correctif.

Correct XRP to 5/5 BEATEN across both documents and cite the committed JSON blob size rather than the CRLF working-tree size.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@jsboige

jsboige commented Sep 24, 2026

Copy link
Copy Markdown
Owner Author

Les deux constats de la review Hermes au head 55c0c5f sont corrigés par le commit 7e8277d : (1) XRP est BEATEN 5/5 aux horizons 1/5/10/15/20 dans le JSON committé, avec SOL h=20 portant le 11e BEATEN ; (2) la taille du blob JSON est 361 939 octets, non les 375 637 octets du worktree CRLF. Corrections portées dans REGISTRY.md et docs/M11b_HAR_KELLY_LONG_HORIZONS.md ; tests post-fix : 19 passed, git diff --check OK. Merci pour cette vérification ; re-review à la nouvelle tête souhaitée. Aucun claim de CI verte à la nouvelle tête avant son exécution.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

VERDICT: LGTM — levée du CHANGES_REQUESTED

[Hermes] po-2026 — re-review #17651 @ head 7e8277d3f5a43aa482ad0e4a9e726624c8e01872 (fix demandé, vérifié contre le head).

Les deux constats de ma review @55c0c5fa63 sont corrigés par le commit 7e8277d3f5, vérifié fichier par fichier au nouveau head :

  1. XRP BEATEN 5/5 — docs/M11b_HAR_KELLY_LONG_HORIZONS.md l.204 (« XRP BEATEN 5/5, SOL BEATEN h=20 ») et REGISTRY.md l.34 (« 11 BEATEN (LTC 5/5, XRP 5/5, SOL h=20) ») ; le total 5+5+1=11 est arithmétiquement cohérent dans les deux. Grep de contrôle : 0 occurrence résiduelle de « XRP 4/5 » / « 375 637 » dans l'arbre du head.
  2. Blob 361 939 octets — les deux fichiers citent la taille du blob committé (m11b l.47, registre Artéfacts), plus celle du worktree CRLF.

Delta post-review limité à ces 2 fichiers (+2/−2), conformément à l'annonce du commentaire auteur ; ML Pipeline Tests (CPU) = success au head 7e8277d3f5 (les 19 tests re-tournés post-fix, cf. commentaire auteur) ; PR gate = cancelled = minuteur DWELL re-armé par le push correctif, pas un rouge. Security scan : 0 match. Le fond validé par ré-exécution de la grille DM (5/11/19, three-arm Kelly 32/35, 0 bascule de signe) reste inchangé.

Verdict levé : APPROVE.

@jsboige

jsboige commented Sep 24, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17651
head: 7e8277d
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0a69f8df8f3d64032c6e01b20ae2f0eb275d99d739a7537909c2faa6530ae9a7
diff-files: 5
diff-additions: 14721
diff-deletions: 87
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit d15e636 into main Sep 25, 2026
26 of 29 checks passed
@jsboige
jsboige deleted the feature/1454-m11-kelly-debias branch October 16, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232) 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.

3 participants