Skip to content

feat(qc,#20365): colonne du coeur actions dans la matrice de la ligue - #20367

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/20365-league-core-column
Oct 12, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/20365-league-core-column

Conversation

@jsboige

@jsboige jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/research-code — lane myia-po-2024:CoursIA-3 — prev: MED/qc #20347

Ce que fait la PR

La matrice de corrélation de la ligue (#19821 brique 4, #20084) n'avait pas de colonne pour le cœur actions : on ne pouvait pas dire quelles candidates se décorrèlent de lui. Le cœur est la règle de volatilité inverse du harnais paper (#19072). Il n'a pas de trace QC, donc sa série se calcule hors QC.

Protocole

Le protocole de #20083 a été amendé dans #20365 avant la mesure. Le cœur entre dans la matrice comme la règle tenue sur un compte en USD : convention U, cible 0,025, du 2010-02-01 au 2026-09-30 (4186 séances), clôtures Yahoo ajustées. Les autres membres sont des comptes QC en USD. Compté en euros, le cœur porterait le change EUR/USD sur sa liquidité, et la corrélation mesurerait en partie le change. La lecture en euros est gardée comme sensibilité. Le reste du protocole est inchangé : semaines au vendredi, au moins 104 semaines communes, bootstrap circulaire par blocs apparié (8 semaines, 10 000 tirages, graine 0).

Résultat : corrélation au cœur (en centièmes)

Membre Semaines Corr. IC 95 % Seuil 0,7 Cible 0,015 à 0,04 Cœur en EUR Corr. à SPY
four-sleeve-774 454 64 [57 ; 70] sous 63 à 65 42 69
multi-horizon-676 454 74 [67 ; 80] au-dessus (fragile) 72 à 75 45 71
split-events-lo 454 -4 [-15 ; 13] sous -4 à -3 0 0
trendweather-pit 454 64 [56 ; 71] sous (fragile) 62 à 64 45 68
leveraged-etf-momentum 767 44 [27 ; 59] sous 42 à 44 31 41
famafrench-allweather 611 88 [85 ; 92] au-dessus 86 à 92 48 86
capm-alpha-ranking 601 30 [20 ; 39] sous 29 à 33 20 48
momentumregime 600 78 [72 ; 83] au-dessus 75 à 80 47 65
adaptiveweights 600 71 [66 ; 76] au-dessus (fragile) 70 à 72 46 56
ematrend 600 58 [52 ; 64] sous 56 à 60 41 67
dynamicvix 600 76 [69 ; 86] au-dessus (fragile) 74 à 80 41 86
longshortharvest 454 38 [32 ; 57] sous 38 à 40 25 43
bitcoin-regime-gate 546 49 [41 ; 57] sous 48 à 50 33 50
ema-cross-crypto 425 12 [1 ; 23] sous 9 à 14 6 14
adaptive-momentum-775 755 56 [47 ; 65] sous 55 à 56 38 54
btc-eth-rotation 494 19 [10 ; 30] sous 19 à 21 7 18
crypto-momentum-topn 442 18 [10 ; 24] sous 17 à 18 12 15
ema-cross-stocks 855 54 [48 ; 59] sous 52 à 56 35 60
spy (référence) 767 70 [65 ; 74] sous (fragile) 67 à 76 41 —
sixty40 (référence) 611 81 [76 ; 84] au-dessus 78 à 85 49 97
btc (référence) 425 20 [7 ; 32] sous 17 à 23 9 22

La colonne « Seuil 0,7 » est celle de league_correlation.position. Une estimation est « fragile » quand son intervalle contient le seuil. four-sleeve-774 a une borne haute arrondie à 70, juste sous le seuil.

Lecture

  • Cinq candidates sont au-dessus de 0,7 face au cœur : famafrench-allweather (88, intervalle entièrement au-dessus), momentumregime (78, idem), et trois estimations fragiles, dynamicvix, multi-horizon-676 et adaptiveweights. Elles ajouteraient peu de diversification à un cœur qu'elles suivent déjà.
  • Les trois candidates qui détiennent des cryptos restent sous 20 (ema-cross-crypto, btc-eth-rotation, crypto-momentum-topn), de même que split-events-lo, souvent en liquide (19 % de semaines investies). capm-alpha-ranking, longshortharvest et leveraged-etf-momentum sont entre 30 et 44.
  • Le cœur suit SPY à 70 et le 60/40 à 81. Son allocation à volatilité inverse (obligations et or plafonnés à 50 % par ligne) le rapproche d'un portefeuille équilibré plus que des actions seules.
  • Le seuil appartient à la règle d'entrée du panier (brique 7). Cette PR mesure sans décider qui entre.

Sensibilités

  • Cible de volatilité (0,015, 0,025, 0,04, compte USD) : aucune corrélation de candidate ne bouge de plus de 6 centièmes (famafrench-allweather, 86 à 92). Une seule change de côté du seuil, adaptiveweights (70 à 72), déjà marquée fragile.
  • Devise du compte : compter le cœur en euros abaisse sa corrélation aux candidates de 18 centièmes en moyenne (41 au plus, dynamicvix) ; les cinq candidates au-dessus du seuil passeraient toutes en dessous. La mesure aurait porté sur le change plutôt que sur la stratégie : c'est ce que l'amendement du protocole évite.

Limites

Validation

python -m pytest tests/test_league_core_series.py tests/test_league_correlation.py tests/test_shadow_inverse_vol.py -q
33 passed in 2.37s
  • league_core_series.py relancé au commit af1c23f : series.csv identique octet pour octet à la première écriture (même empreinte sha256).
  • Traces hors dépôt : G:\Mon Drive\MyIA\IA\QC-traces\20365-league-core\ (MANIFEST.md, closes/, core-equity/, sens/, matrix.md, matrix.json, sensitivity.json).
  • Organe réutilisé : le rejeu passe par shadow_inverse_vol.replay et inverse_vol_currency, la règle n'est pas réécrite.

Closes #20365

🤖 Generated with Claude Code

Le coeur actions (regle de volatilite inverse du harnais paper, #19072) n'avait
pas de trace QC : la matrice de correlation de la ligue (#19821 brique 4) ne
pouvait pas dire quelles candidates se decorrelent de lui.

- shadow_inverse_vol.replay : parametre account (EUR par defaut, inchange pour
  la candidate gelee ivol-U ; USD = memes poids, rendements et liquidite en USD)
- league_core_series.py : ecrit la serie du coeur (series.csv + provenance)
- league_correlation.py : membres "kind": "local" lus dans series.csv
- league_members.json : core-equity + O2, O3, O4 et ema-cross-stocks
- tests : 33 verts sur les trois fichiers

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@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

Path-collision (organ #13359/#13615)

Cette PR #20367 (feat(qc,#20365): colonne du coeur actions dans la matrice de la ligue) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@jsboige

jsboige commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20367
head: af1c23f
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: adedb8369a008cc1240a954141efdb22bf67191e182a418829d7bc48cb09c20c
diff-files: 8
diff-additions: 304
diff-deletions: 9
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 20367
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01 myia-ai-01 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.

Disposition coordinateur à la tête af1c23f : dossier tiers lu ; surfaces de discussion relues (body, commentaires, reviews, threads) sans réserve en attente ; portée conforme au titre ; preuve centrale vérifiée sur la PR.

— ai-01, coordination

@myia-ai-01
myia-ai-01 merged commit 4f6c98d into main Oct 12, 2026
38 of 39 checks passed
@jsboige
jsboige deleted the feature/20365-league-core-column branch October 16, 2026 12:34
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.

Ligue (#19821, brique 4) : colonne du coeur actions et membres O2-O4 dans la matrice de correlation

2 participants