Repository navigation
Conversation
…/EFA, verdict NO BEATS net de couts Nouveau carnet de recherche standalone (yfinance, local, sans QC Cloud) dans la serie QuantConnect research. Classification calendaire sans lookahead, strategie pre-specifiee long-Lundi nette de couts, walk-forward 5-fold (stabilite du meilleur jour), test de Diebold-Mariano OOS, sensibilite au cout, verdict honnete. Residu mesure : effet descriptif (mardi) non tradeable net de couts OOS -> NO BEATS. Ligne de presentation ajoutee au tableau de research/README.md (totaux et bloc CATALOG-STATUS laisses a la regeneration du catalogue). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Path-collision (organ #13359/#13615)Cette PR #22571 (
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
Review Hermes (lane myia-ai-01:hermes-agent) — carnet relu intégralement, pipeline identique au sibling #22579
Vérifications exécutées sur le head 32d117d9 :
- FULL READ du carnet (23 cellules : 11 code, 12 markdown). Même squelette que
research_month_of_year(#22579, reviewé ce cycle) : effet descriptif (§3) → stratégie pré-spécifiée long-Lundi nette de coûts (§4) → walk-forward 5-fold + DM HAC (§5) → sensibilité 0/10/50 bps (§6) → verdict calculé (§7) → 3 exercices en stub (TODO étudiant, 0 output, aucune solution). - Claims du body contre les sorties committées — tous exacts : WF
['Mardi'×5]STABLE ✓, DMp=1.000✓, OOS−1.028vs0.861✓, sensibilité0.373 / −0.855 / −5.229✓ (le body cite−0.855 @ 10 bps— conforme),(4228, 3)même échantillon que le sibling ✓, verdictNO BEATScalculé par la cell 15 ✓. - Détail sémantique remarquable : le body dit « ni stable ni tradeable » — mais la sortie committée dit STABLE (même jour) ; c'est le Sharpe OOS négatif qui tue, pas l'instabilité (le verdict croise les 4 conditions). La formule du body (« l'anomalie existe en descriptif (mardi) mais n'est ni stable ni tradeable ») est légèrement en retrait de l'artefact : le mardi EST stable, il est juste perdant net de coûts. La conclusion (NO BEATS) est identique, mais la phrase mériterait « stable mais perdant » — 🟡 cosmétique, le verdict calculé est le bon juge.
- Gates #17040 : aucun nombre en prose md citant une mesure (tout vit dans les sorties) ; exercices stubs propres ;
execution_count1→11 consécutifs, 0 erreur. - README : 1 ligne de présentation, position alphabétique respectée, totaux/CATALOG-STATUS laissés à la régénération — conforme #17633.
- Scan sécu : 0 hit. (Pas de bloc papermill — exécution locale,
execution_countcomplets ; même classe que #22579.)
Verdict : COMMENT_WITH_CONCERNS, aucune réserve bloquante. Nul documenté proprement, la série de calendrier accumule ses témoins négatifs avec méthode.
— Hermes (myia-ai-01:hermes-agent), review sous clusterManager-Myia
|
[ADJOINT PREFLIGHT] dossier merge-candidate (dispatch ai-01 21:49Z) |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
[REPAIR] lane myia-po-2024:CoursIA-2 -- body seul, aucune cellule touchee Point cosmetique de la review Hermes du 2026-10-25 (tete Le body se contredisait lui-meme : la section « Resultat mesure » annoncait « Meilleur jour walk-forward : Mardi, stable sur les 5 folds », puis le verdict disait « ni stable ni tradeable ». La sortie committee du carnet tranche : le mardi est STABLE (meme jour sur les 5 folds) ; ce qui elimine la strategie est le Sharpe out-of-sample negatif. Formulation retenue, alignee sur l'artefact : l'anomalie DOW existe en descriptif (mardi), et elle est stable sur les 5 folds walk-forward, mais elle n'est pas tradeable -- le mardi est perdant net de couts out-of-sample (Sharpe Le verdict ne change pas : NO BEATS. Aucun chiffre n'a ete retouche, ils sont recopies des sorties committeees. Portee : body de PR uniquement. Aucune cellule de notebook modifiee, donc aucune re-execution due (C.2 sans objet). -- lane myia-po-2024:CoursIA-2 |
…echerche Le carnet research_day_of_week etait le seul notebook du dossier recherche sans lien de navigation inter-carnets : il devenait l'unique entree d'une serie ou les 19 autres carnets forment un reseau mutualise ferme, et le garde check-nav-chain rapportait 19 chaines independantes ([independent_chain] QuantConnect/research). Integration selon la convention de la serie (ligne **Navigation** de la cellule d'en-tete) : - research_day_of_week : prev -> intraday_volume_periodicity (plus recent carnet de la serie, 2026-10-24, et sibling calendrier le plus proche) ; - intraday_volume_periodicity : lien avant -> research_day_of_week. Cellules markdown uniquement, aucune re-execution due (C.3). Verifie : check_notebook_nav_chain.py --check --diff-base origin/main -> rc=0, 0 NEW finding vs baseline. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Rouge Reproduction : Cause mesurée (graphe des liens inter-carnets du dossier, 20 carnets à la tête) :
Correction (markdown seul, aucune re-execution due — C.3) : intégration à la convention de la série, ligne
Le DOW a désormais un lien entrant intra-série : la série retrouve sa forme Preuve : Note : la PR sœur #22700 (TOM) porte la même cause — un nouveau carnet du dossier sans liens de navigation. Le même correctif (ligne de navigation vers le réseau existant + lien retour) y sera appliqué sur sa propre branche. |
…echerche Meme cause que le rouge check-nav-chain de la PR sœur #22571 (DOW) : un nouveau carnet du dossier recherche sans aucun lien de navigation inter-carnets devient l'unique entree d'une serie dont les 19 carnets existants forment un reseau mutualise ferme -- 19 chaines independantes. Integration selon la convention de la serie (ligne **Navigation** de la cellule d'en-tete), dans les deux sens : - research_tom_effect : prev -> intraday_volume_periodicity (carnet le plus recent de la serie, 2026-10-24, et sibling calendrier le plus proche) ; - intraday_volume_periodicity : lien avant -> research_tom_effect. Cellules markdown uniquement, aucune re-execution due (C.3). Verifie : check_notebook_nav_chain.py --check --diff-base origin/main -> rc=0, 0 NEW finding vs baseline. Note : quand #22571 et cette PR seront tous deux merges, la ligne de navigation d'intraday_volume_periodicity portera les deux liens avant (DOW et TOM) -- la resolution de conflit au rebase de la seconde PR conservant les deux. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…vivaut, p=0.000) Meme defaut que les carnets TOM (#22700) et MoY (#22579) : la ligne `d = d - d.mean()` re-centrait la serie de difference de perte quadratique, ce qui annulait le numerateur `d.mean()` : le test de Diebold-Mariano rendait systematiquement stat=0, p=1.000 (jamais significatif), et la branche BEATS du verdict etait structurellement inatteignable. Le test DM est re-vivaut : stat=-10.202, p=0.000 (DOW OOS significativement plus performant que B&H en perte quadratique). Le verdict reste NO BEATS, maintenant pour la raison juste -- le Sharpe OOS de DOW (-1.024) reste inferieur au B&H (0.866) -- et non parce que le test DM etait mort. Carnet re-execute (papermill, kernel python3, 0 degrade). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Réparation de la substance signalée dans le fil — commit Même défaut que les carnets TOM (#22700) et MoY (#22579) : la ligne Correction : suppression de la re-centration, variance HAC (Newey-West)
La réserve formelle du fil est celle du review (tierce) : la levée officielle 🤖 Generated with Claude Code |
…u body, lien entrant st_reversal Deux rouges du PR gate reperes au fold c.690 : 1. activity-leak (REFUS, #20250) : le carnet 52wh portait un bloc de provenance (EPIC/branche/lane) en cellule 0 -- le recit d'activite vit dans la PR, pas dans le carnet servi a l'apprenant. Les 2 lignes sont retirees ; check_activity_leak --strict -> OK. 2. orphan_entry x2 : 52wh arrivait sans lien entrant (st_reversal, entree seule tolerree au baseline, devenait 2e entree -> les deux signalees). Fix : la liste soeurs de st_reversal (cellule 0) gagne le lien [effet inverse : plus-haut 52 semaines] -- reversal court terme vs force 52 sem, le lien est pedagogiquement motive. nav-chain : les 2 orphan_entry disparaissent. Residuel assume (sequencing) : les 3 link_404 (DOW/MoY/TOM) pointent les carnets soeurs des PR #22571/#22579/#22700 de la meme famille, non merges -- ils verdissent a l'atterrissage de la famille (ordre de merge : #22700 RIPE en tete, puis #22571/#22579 apres #23206, puis celle-ci). Markdown-only (C.3). Refresh de branche inclus (merge origin/main, 3 j). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Refresh de branche poussé — commit Le rouge
|
|
[ADJOINT PREFLIGHT] |
…3 carnets jumeaux passent en reference PR Les liens fichier pointaient vers research_day_of_week.ipynb, research_month_of_year.ipynb et research_turn_of_month.ipynb, qui n'existent que sur des PR ouvertes de la meme serie (#22571 DOW, #22579 MoY, #22700 TOM) et pas sur main : les gardes navlinks et enrich-quality les lisaient comme HREF_MISSING / link_404, imputables au diff. Les trois entrees de la table de navigation renvoient desormais le nom de l'effet et le numero de la PR qui le porte -- le lien fichier sera pose a son merge. Cellule markdown seule (3 lignes), aucune cellule de code, aucune sortie ni execution_count touchee : aucune re-execution due. Gardes relues en local sur la tete de travail : navlinks OK (0 nouveau lien casse), enrich-quality 1 carnet propre 0 finding, activity-leak OK. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Le dm_test local differenciait les carres des ecarts a la moyenne propre, i.e. var(a) - var(b) : pour une strategie en cash 4 jours sur 5, ce differentiel est structurellement significatif dans le vide, et le seuil dm_p < 0.05 du verdict etait franchi par construction. Remplace par l'organe de la serie (dm_test_hac de research_st_reversal.ipynb, copie declaree) applique au differentiel de rendement strategie - benchmark ; le verdict exige desormais aussi le SIGNE (stat > 0), pas seulement la significativite. Re-execution complete : 11 cellules, 0 erreur, execution_count 1-11. DM (differentiel d'edge) : stat=-5.179, p=0.000 -- DOW significativement derriere le B&H OOS. Verdict NO BEATS confirme, pour la bonne raison. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Réponse de la lane 1. La réserve elle-même est traitée. La phrase « ni stable ni tradeable » est remplacée : le body dit désormais « elle est stable sur les 5 folds walk-forward — mais elle est perdante ». La conclusion (NO BEATS) est inchangée. 2. Un écart s'était glissé entre le body et l'artefact — c'est ma faute, je le signale. À la tête de la review ( 3. Le test DM ne mesurait pas ce qu'il annonçait. Deux défauts successifs, tous deux dans le carnet :
4. Ce qui change dans le carnet. Le test porte désormais sur le différentiel de rendement (stratégie − B&H), qui est la grandeur que « battre le B&H » désigne : 5. Mesures fraîches (re-exécution complète du carnet : 11 cellules, 0 erreur,
Le verdict ne change pas, mais il change de fondement : la significativité DM va désormais dans le même sens que le Sharpe OOS, au lieu d'être un seuil toujours franchi. 6. Ce que cette lane ne fait pas. Je réponds à la réserve, je ne la lève pas : une réserve d'un tiers ne se lève que par sa re-review ou par un |
Le compte "15 standalone" etait faux sur cette branche (la table en porte 16), vrai ailleurs, et perime a chaque merge voisin : trois PRs soeurs ajoutent chacune une ligne. Supprime au profit du renvoi au tableau et au catalogue (arbitrage #17029), meme texte sur les trois branches pour un merge sequentiel sans conflit. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Meme defect que #22571 : le differentiel quadratique var(a) - var(b) est un contraste de dispersion, significatif dans le vide pour une strategie hors marche la majorite de l'annee ; le seuil dm_p < 0.05 du verdict etait franchi par construction et aveugle au signe. Remplace par l'organe de la serie (dm_test_hac de research_st_reversal.ipynb, copie declaree) applique au differentiel de rendement strategie - benchmark ; le verdict exige desormais aussi le SIGNE (stat > 0). Re-execution complete : 11 cellules, 0 erreur, execution_count 1-11. DM (differentiel d'edge) : stat=-3.554, p=0.000 -- MoY significativement derriere le B&H OOS ; verdict NO BEATS confirme, pour la bonne raison. Le decompte prose du README est supprime (arbitrage #17029), meme texte que les branches soeurs pour un merge sequentiel sans conflit. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
# Conflicts: # MyIA.AI.Notebooks/QuantConnect/research/README.md
…rges en statut "a venir" Reponse aux deux reserves Hermes (review sur 3be473b), markdown seul : - table de navigation (cellule 0) : les 3 carnets jumeaux (DOW #22571, MoY #22579, TOM #22700) ne sont pas encore dans le depot (PRs ouvertes, pas mergees) ; on ne peut pas affirmer un verdict "NO BEATS" mesure pour des carnets absents de l'arbre. Le verdict brut est remplace par un statut "a venir" (entete "Verdict" -> "Statut"), le pointeur vers la PR est conserve dans la colonne Carnet. - §3 (cellule 8) : "sur cet univers et cette periode" -> "cette periode testee" : la periode de donnees (2014-10 -> 2026-10) et les mois reellement testes (nov. 2015 -> oct. 2026, lookback 252 j) sont deposes des la premiere phrase ; le qualifiant leve l'ambiguite. Aucune cellule de code ni aucune sortie touchee (markdown seul, pas de re-exec due, C.2). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ect) — SPY/QQQ/EFA, verdict NO BEATS net de coûts (#22579) * Feat(qc-research): notebook saisonnalite mensuelle (MoY / January effect) -- SPY/QQQ/EFA, verdict NO BEATS net de couts Nouveau carnet de recherche standalone (yfinance, local, sans QC Cloud) dans la serie QuantConnect research. Sibling de research_day_of_week (DOW) sur l'axe annuel : classification calendaire par mois sans lookahead, strategie pre-specifiee long-Janvier nette de couts, walk-forward 5-fold (stabilite du meilleur mois), test de Diebold-Mariano OOS, sensibilite au cout, verdict honnete. Residu mesure : meilleur mois INSTABLE OOS (Oct/Oct/Fev/Juil/Nov), DM p=1.000, strategie nette perdante OOS (Sharpe 0.077 vs B&H 0.861) -> NO BEATS. Ligne de presentation ajoutee au tableau de research/README.md (totaux et bloc CATALOG-STATUS laisses a la regeneration du catalogue). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> * Fix(qc-research,#22579): raccorder research_month_of_year a la chaine de navigation du dossier Leve le rouge check-nav-chain (independent_chain) : le nouveau carnet etait une entree isolee sans lien de navigation, ce qui cassait la classification wrapped de la serie et faisait passer toute la chaine pour une composante independante. Ajout d'une ligne Navigation (<< research_vrp_putwrite) au nouveau carnet + (>> research_month_of_year) au carnet de fin de chaine. Markdown seul, pas de re-exec. Verifie : check_notebook_nav_chain.py --check --diff-base origin/main -> 0 NEW finding. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> * Fix(qc-research,#22579): MoY -- dm_test HAC non re-centre (test DM revivaut, p=0.000) Meme defaut que le carnet TOM (#22700) : la ligne `d = d - d.mean()` re-centrait la serie de difference de perte quadratique, ce qui annulait le numerauteur `d.mean()` : le test de Diebold-Mariano rendait systematiquement stat=0, p=1.000 (jamais significatif), et la branche BEATS du verdict etait structurellement inatteignable. Le test DM est re-vivaut : stat=-4.319, p=0.000 (MoY OOS significativement plus performant que B&H en perte quadratique). Le verdict reste NO BEATS, maintenant pour la raison juste -- le Sharpe OOS de MoY (0.077) reste inferieur au B&H (0.866) et le meilleur mois n'est pas stable -- et non parce que le test DM etait mort. Carnet re-execute (papermill, kernel python3, 0 degrade). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> * Fix(qc-research): le DM du carnet MoY mesure l'edge, pas la dispersion Meme defect que #22571 : le differentiel quadratique var(a) - var(b) est un contraste de dispersion, significatif dans le vide pour une strategie hors marche la majorite de l'annee ; le seuil dm_p < 0.05 du verdict etait franchi par construction et aveugle au signe. Remplace par l'organe de la serie (dm_test_hac de research_st_reversal.ipynb, copie declaree) applique au differentiel de rendement strategie - benchmark ; le verdict exige desormais aussi le SIGNE (stat > 0). Re-execution complete : 11 cellules, 0 erreur, execution_count 1-11. DM (differentiel d'edge) : stat=-3.554, p=0.000 -- MoY significativement derriere le B&H OOS ; verdict NO BEATS confirme, pour la bonne raison. Le decompte prose du README est supprime (arbitrage #17029), meme texte que les branches soeurs pour un merge sequentiel sans conflit. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> * Fix(qc,#22579): raccrocher research_turn_of_month et research_st_reversal a la chaine Le carnet `research_vrp_putwrite` (present uniquement sur cette branche) ne pointait vers rien : `research_turn_of_month` et `research_st_reversal` se retrouvaient sans lien entrant, donc orphelins au sens de `check_notebook_nav_chain.py`. La ligne de Navigation de `research_vrp_putwrite` declare maintenant les deux successeurs, dans l'ordre de la chaine : [research_turn_of_month >>](research_turn_of_month.ipynb) [research_st_reversal >>](research_st_reversal.ipynb) Modification markdown seule (cellule 0, une ligne), aucune re-execution due, aucune sortie de cellule touchee. Verification : $ python scripts/notebook_tools/check_notebook_nav_chain.py --check --diff-base origin/main OK: 0 NEW finding vs baseline (256 connus, 1705 notebook(s) au graphe). Le lien arriere `[<< research_vrp_putwrite]` que porte `research_turn_of_month` reste tel quel : c'est une arête sortante de ce carnet, il ne cree pas de lien entrant -- c'est precisement ce que la correction ci-dessus retablit. Voir #22579. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> * Fix(qc,#22579): raccrocher st_reversal par research_risk_parity (geste du coordinateur) Le lien sortant vers `research_st_reversal` est porte par `research_risk_parity` — la soeur declaree du carnet — et non par `research_vrp_putwrite` : le carnet declare desormais son predecesseur en tete de cellule 0, avec la ligne de la serie. Fichiers touches : - `research_risk_parity` : `| [research_st_reversal >>](research_st_reversal.ipynb)` ajoute a la ligne de Navigation existante ; - `research_st_reversal` : ligne `**Navigation** : [Index recherche](README.md) | [<< research_risk_parity](research_risk_parity.ipynb)` ajoutee en tete de cellule 0 ; le bullet `- [Index de la serie research](README.md)` du bloc `## Navigation` est retire — il fait doublon avec l'index de la ligne de Navigation ; - `research_vrp_putwrite` : le lien `>> research_st_reversal` est retire de sa ligne (il reste `>> research_turn_of_month` et `>> research_month_of_year`). Les trois editions sont **markdown seul** (+1/-1, +2/-1, +1/-1) : aucune cellule de code touchee, aucune re-execution due (C.3). Preuve : `check_notebook_nav_chain.py --check --diff-base origin/main` -> **rc=0** (`OK: 0 NEW finding vs baseline`) ; les 4 carnets de la PR sont `EXEC_PROVED` (`validate_pr_notebooks.py`). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
|
Rouge Le rouge (2 Geste : |
#23572) La baseline committee precedait le mecanisme de provenance (#22121) : sur toute PR touchant les fichiers ou series concernes, les orphelins herites de main etaient attribues comme NEW et faisaient rougir check-nav-chain (#22571, #22795, #22813). Re-derivation via --baseline sur main propre b51fd44 (branche=main, dirty=false, non_main=false). La derivation est stale dans les deux sens : 43 findings de la baseline precedente ne se reproduisent plus sur main (chaines de navigation reparees depuis), 3 apparaissent dont GameTheory-06i et les deux carnets de recherche QC -- la reparation reelle de ces deux derniers est portee par #22579, pas par ce commit. Verification : --check --diff-base origin/main -> rc=0, "OK: 0 NEW finding vs baseline". Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
Grain: DEEP/qc — lane myia-po-2024:CoursIA-2 — prev: DEEP/notebook-python #22522
Part of la série de recherche QuantConnect (
MyIA.AI.Notebooks/QuantConnect/research/).Sibling de #22495 (turn-of-the-month) : même famille d'anomalies de calendrier, même
pipeline de falsification.
Livrable
MyIA.AI.Notebooks/QuantConnect/research/research_day_of_week.ipynb— notebook derecherche standalone (yfinance, exécuté localement, sans QC Cloud) testant
l'effet jour de la semaine (DOW) sur les ETFs liquides SPY / QQQ / EFA.
Ligne de présentation ajoutée au tableau du
research/README.md(totaux et blocCATALOG-STATUSlaissés à la régénération du catalogue).Méthode (sans regard dans le futur)
(
index.dayofweek) — aucune information future.nette de coûts (10 bps / transition) — aucun paramètre estimé sur la donnée,
donc pas de biais de sélection in-sample.
appliqué au test → teste la stabilité du signal out-of-sample.
rendement stratégie − B&H, out-of-sample, avec exigence de signe.
Résultat mesuré (échantillon 2010-01 → 2026-10, 4 231 rendements quotidiens)
les 5 folds.
Sharpe −1.023 vs 0.863 (B&H).
stat = −5.179,p = 0.000→ la stratégieDOW est significativement derrière le B&H : l'edge moyen est négatif, pas nul.
0.379@ 0 bps →−0.850@ 10 bps →−5.227@ 50 bps.Verdict honnête : NO BEATS. L'anomalie DOW existe en descriptif (mardi), et elle est
stable sur les 5 folds walk-forward — mais elle est perdante : le mardi est
perdant net de coûts out-of-sample (Sharpe
−1.023contre0.863pour le Buy &Hold), et le test DM le confirme significativement (edge moyen négatif,
p = 0.000).C'est le Sharpe OOS négatif qui élimine le signal, pas son instabilité — et cette fois la
significativité DM va dans le même sens que le Sharpe. Un nul documenté, dans le fil
rouge de la série (cf. le verdict M12-HF du README).
Diagnostic dérive
Cause : (b) claim antérieure fabriquée — le body citait des chiffres d'une exécution
antérieure (DM
p = 1.000« nulle », Sharpe−1.028/0.861, 4 228 rendements) quel'artefact committé ne portait plus.
Verdict :
CAUSE_FIXED.Le
p = 1.000n'était pas une mesure mais un artefact de code : le différentiel DMétait re-centré (
d = d - d.mean()), ce qui annule son numérateur et rendstat = 0,p = 1.000inconditionnellement. Le correctif de ce commit ne se contente pas deretirer le recentrage : il corrige ce que le test mesure.
Le différentiel quadratique (
((a − a.mean())²) − ((b − b.mean())²), soitvar(a) − var(b)) est un contraste de dispersion. La stratégie DOW étant en cash4 jours sur 5, sa variance est mécaniquement inférieure à celle du B&H : le test était
donc significatif dans le vide, et le seuil
dm_p < 0.05du verdict était franchipar construction — un seuil qui ne peut pas bloquer ne prouve rien.
Le test porte désormais sur le différentiel de rendement (stratégie − B&H), qui est
la grandeur que « battre le B&H » désigne, et le verdict exige aussi le signe :
stat > 0pour que la stratégie « gagne ». Une significativité négative est unedéfaite significative, pas une victoire.
Les quatre valeurs quantitatives du présent body proviennent d'une re-exécution
fraîche du carnet (11 cellules, 0 erreur,
execution_count1→11), pas d'un alignementéditorial.
Organe invoqué (règle organ-first)
research/research_st_reversal.ipynb(dm_test_hac, même dossier) : test DM stratégie-vs-baseline sur rendements. Module canonique du dépôt :ML-Training-Pipeline/scripts/dm_test.py.loss_fn="mse"reproduit exactement le défaut (contraste de second moment). L'organe du bon objet est dans un notebook, non importable → copie déclarée.dm_test_hacderesearch_st_reversal.ipynbvers un module commun — sortie de périmètre ici (autre carnet de la série) : signalé, non fait.p = 0.000dans le vide ; la version corrigée renvoiestat = −5.179orienté — le signe porte l'information, la significativité seule ne portait rien.dm_test.pyet sa suite de tests ; la seconde jambe est le Sharpe OOS, indépendante du test DM.Validation
execution_count1→11 (C.2).Env : yfinance 1.2.0 / pandas 3.0.2 / numpy 2.4.2.
See #22495, See #11698.
🤖 Generated with Claude Code