Skip to content

feat(qc,#16239): module macro/régimes — diagnostic borné, indicateurs→budget de risque (QC-Py-28b) - #16332

Merged
jsboige merged 2 commits into
mainfrom
feat/16239-macro-regimes-28b
Sep 15, 2026
Merged

jsboige merged 2 commits into
mainfrom
feat/16239-macro-regimes-28b

Conversation

@jsboige

@jsboige jsboige commented Sep 15, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/qc -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-lean #16326

Le livrable

#16239 livrable 1/4 — module macro/régimes : nouveau notebook QC-Py-28b-Macro-Cycle-Regimes (25 cellules, 18 markdown / 7 code), le chaînon macro manquant après QC-Py-28 (détection prix) : taxonomie NBER avanceurs/concomitants/retardés, diagnostic composite borné (médiane des signaux, règle tabulée falsifiable, override STRESS), traduction explicite régime → budget de risque, 3 exercices C.1 avec attendus/anti-pièges.

Partie Contenu Exécution
1-2 problème + taxonomie NBER (10 indicateurs réels, lags codés) markdown
3 moteur compute_diagnostic + test synthétique 8 ans (récession injectée) + figure régimes locale, outputs réels
4 twin QC Cloud sans lookahead → allocation mensuelle SPY/SHY REFERENCE QC + run réel
5 table régime → RiskBudget + coût d'opportunité mesuré locale, outputs réels
6 3 exercices (stubs C.1) + attendus/anti-pièges locale

Run QC Cloud réel (backtestId 218da14bec7cf45b629d8ebca61a6554, v2 instrumentée)

Projet 16239-macro-regimes-28b, fenêtre 2016-01-02 → 2026-09-12, 2 688 séances, 195 ordres, 129 rebalancements mensuels :

  • Diagnostic AS OF 2026-09 (runtime statistics, lisible via API) : EXPANSION, médiane +0.50 (limitrophe) — z tendance +0.01 / pente −2.10 / crédit +2.29 / or inversé +0.53 : avanceur dégradé contre concomitants expansifs, exactement la configuration « régime fragile » que la zone grise du notebook formalise.
  • Sharpe 0.512 · CAGR 9.864 % · MaxDD 15.400 % (à comparer à l'ordre de 34 % subi par SPY seul sur le choc COVID, chiffre public) · Return +173.694 % (equity finale $273 694).
  • Régimes sur la fenêtre : EXPANSION 39 · NEUTRE 39 · RALENTISSEMENT 26 · STRESS 3 · WARMUP 22 — l'override STRESS est sélectif (3 déclenchements en 10,7 ans, dont COVID ; journal complet sur la page backtest QC).
  • Sans lookahead : chaque rebalancement mensuel ne voit que l'historique déjà publié ; WARMUP 60/40 les ~18 premiers mois (documenté dans le notebook).
  • v1 (260357cf) = même logique sans instrumentation ; v2 = statistiques identiques, seule l'instrumentation set_runtime_statistic (canal éprouvé fix(qc,#15992): slice bulk history on the symbol level (continuous futures index expiry/symbol/time) #16003) a été ajoutée.

Validation

  • Cellules code locales : execution_count 1-6, outputs réels, 0 erreur (kernel python3 via nbclient ; cellule REFERENCE QC préservée en exec=None, convention QC-Py-28).
  • C.1 : 0 raise NotImplementedError / assert False / 1/0 (grep = 0).
  • pedagogy_density : plancher 1200 respecté dès la création (0 below).
  • detect_markdown_rendering --check : OK (0 nouvelle violation ERROR).
  • 3 exercices (convention ≥ 3).
  • Verdict SOTA partie 4 : RECOVERABLE-MACHINE assumé et documenté (séries ISM/PMI absentes de QC → proxies ETF 6 tickers ; run réel exécuté via QC Cloud MCP).
  • README série : +2 lignes (table statut + table nav) ; audit fichier entier fait (56 .ipynb sur disque, le nouveau notebook apparaît désormais dans chacune des deux tables, CATALOG-STATUS non touché — nouvelle entrée catalogue laissée au cron/CI).
  • Catalogue byte-identique à main.

Coordination

See #16239 (livrable 1 sur 4 ; livrable 3 déjà livré par #16324, livrables 2 et 4 restent ouverts).

🤖 Generated with Claude Code

…→budget de risque (QC-Py-28b)

Nouveau notebook QC-Py-28b : taxonomie NBER, diagnostic composite borné
(médiane, règle tabulée, override STRESS), traduction régime→budget de
risque, 3 exercices C.1 ; twin QC Cloud sans lookahead (backtest
260357cf, Sharpe 0.512, MaxDD 15.4% vs ~34% SPY COVID), résultats réels
datés dans le notebook.

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

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

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-09-15) :

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.

…s du backtest v2

Run v2 (218da14b) : instrumentation set_runtime_statistic -> Regime as of
2026-09 = EXPANSION (median +0.50, limitrophe : slope -2.10 vs credit
+2.29), comptage regimes 2016-2026 (39/39/26/3 STRESS/22 WARMUP).
Corrige l'equity finale ($273 694 runtime, la derivation $231 457 etait
fausse). Cellule REFERENCE alignee sur main.py v2. Statistiques v1=v2
(logique inchangee). Guards re-passes verts.

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

github-actions Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 7.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 7.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 11.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 7.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 4.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 54.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 6.0s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 7
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16332 (feat(qc,#16239): module macro/régimes — diagnostic borné, indicateurs→budget de risque (QC-Py-28b)) 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.

@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 — vérifié first-hand, figure et outputs réels (relayé à un siège qualifiant pour APPROVE)

[Hermes] Review #16332 — head 6d671b61, 2 fichiers (+857), 0 review préexistante.

Vérifié first-hand (extraction JSON du notebook du head) :

  • Comptages body exacts : 25 cellules, 18 markdown / 7 code ✓. Secrets scan CLEAN (0 match).
  • Figure présente dans les outputs : cellule [6] porte un display_data image/png réel (répertoire des régimes) — le défaut du notebook 02 zêta (#16342) n'est pas reproduit ici.
  • Cellule [9] non exécutée est assumée : bloc [REFERENCE QC] explicitement non exécutable, avec outputs: [] conforme H.4.
  • Cohérence outputs : registre 10 indicateurs (4 avanceurs/3 concomitants/3 retardés = 10 ✓), 93 mois de régimes (31+28+24+10 ✓), budgets par régime cohérents avec la règle tabulée (EXPANSION 1.0/0.12 → NEUTRE 0.6/0.08), capital 0.824 vs 1.256 mesuré.
  • CI advisory : H.4 PASS, prose/output clean, validation 7/7 cellules — périmètre = le notebook changé ✓ (preuve-vive : le garde regarde bien le fichier du PR).

Données synthétiques clairement étiquetées, exercices C.1 avec attendus chiffrés dans les outputs. Rien à signaler.

[Hermes hermes-pr-review, cycle :23 15/09, host c92df397a786]

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.

2 participants