You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[ML-Pipeline][#18907 5c] Suivi en ombre : geler les candidats à une date D et les rejouer chaque mois, historique hors temps sans biais de sélection #18923
Part of #18907 — expérience 5c, protocole arbitré par le coordinateur (commentaire 5962832068 sur #18907).
Question
Comment accumuler un historique hors temps des stratégies candidates sans biais de sélection ? Un backtest relancé après coup voit des données que la mise au point a peut-être déjà vues ; une stratégie qu'on cesse de suivre parce qu'elle perd disparaît du bilan.
Principe
Geler : à une date D, chaque candidate est inscrite dans un registre avec le SHA du commit, ses paramètres et la date D. Son code ne change plus.
Rejouer : chaque mois, chaque candidate gelée est rejouée de D à la date du jour, avec son code gelé, et une ligne est ajoutée à un CSV.
Ne rien retirer : une candidate qui perd reste suivie et figure au bilan. Modifier une candidate crée une nouvelle candidate, avec un nouveau D ; l'ancienne continue d'être rejouée.
Le bloc D → aujourd'hui grandit d'un mois à chaque passage : c'est un hors temps que personne n'a pu regarder pendant la mise au point.
Étapes
Gabarit (fourni par la lane myia-po-2024:CoursIA-3, qui posera son [CLAIMED] au démarrage) : script de rejeu, format du registre, colonnes du CSV (candidate, SHA, D, date du passage, fin de période, Sharpe net, CAGR, pire baisse, rotation, frais), documentation de la cadence. Générique : il couvre un projet QuantConnect (backtest via le MCP) comme une stratégie locale.
Premières inscriptions : au moins deux candidates gelées et un premier passage.
Cadence : un passage mensuel, réparti pour rester sous la limite d'appels.
Lecture des résultats
Le suivi en ombre fournit l'historique ; il ne remplace pas le protocole de #18907. Une candidate ne se déclare BEATS qu'avec un pré-enregistrement, un Sharpe net de frais et un test de différence de Sharpe par bootstrap par blocs sur les rendements nets journaliers, sur une fenêtre fixée d'avance.
Capacité
Les backtests passent par le MCP QuantConnect, disponible seulement sur po-2024 et po-2026, à 10 appels par minute au plus pour toute la flotte ; un backtest à la fois, annoncé sur le dashboard. Un entraînement qui dépasse 8 Go réserve d'abord le GPU 2 d'ai-01 dans le ledger gpu-reservation.
Issue du pool : le picker sert les étapes 2 et 3 comme les autres, sans attribution par sujet. [CLAIMED] avant d'éditer.
[CLAIMED] lane myia-po-2024:CoursIA-3 — étape 1 (gabarit) : registre des candidates gelées, rejeu QC par le MCP et rejeu local, CSV en ajout seul, documentation de la cadence -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/**
[CLAIMED] lane myia-po-2024:CoursIA-3 — étape 2 : point d'entrée local de suivi en ombre pour la règle à inverse de la volatilité de #19072 (conventions U et F, cible 0,025), qui réutilise inverse_vol_currency.py ; le gel des deux candidates suit le merge de cette PR, premier passage à la première séance de novembre -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_inverse_vol.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_inverse_vol.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/inverse_vol_currency.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/README.md
[CLAIMED-AMEND] lane myia-po-2024:CoursIA-3 -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/registry.json -- etape 2 portee par #19250
La lane resserre sa reservation aux fichiers de l'etape 2 (#19250, ouverte). L'etape 3 (rythme automatique des rejeux) est libre pour toute autre lane, sous reserve de ne pas toucher ces trois fichiers avant le merge de #19250.
[CLAIMED] lane myia-po-2024:CoursIA — étape 3 (dispatch ai-01) : rythme automatique des rejeux en ombre (premier passage à la première séance de novembre), sans toucher shadow_replay.py ni shadow/registry.json tenus par la lane de trading paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_schedule.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_schedule.py
Marche : replay-local (0 appel QC) → plan-qc (0 appel) → par candidate QC une qc-passage MCP (≈5 appels, espacée de 10 min par défaut → 0,5 appel/min vs budget flotte 10/min, garde de refus) → ingest-qc. Première séance du mois = premier jour ouvré, déterministe.
Validation : test_shadow_schedule 10 passed ; test_shadow_replay 33/33 sans régression ; plan réel du 2026-11-02 sur le registre courant (mhm676, 5 appels, 0,5/min) rendu en lecture seule, shadow/ inchangé.
Pas de câblage d'horloge : workflow .github/ ou tâche planifiée = arbitrage coordinateur (le passage reste une PR par lane, README §Cadence).
Activity
jsboige commentedon Oct 3, 2026
[CLAIMED] lane myia-po-2024:CoursIA-3 — étape 1 (gabarit) : registre des candidates gelées, rejeu QC par le MCP et rejeu local, CSV en ajout seul, documentation de la cadence -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/**
jsboige commentedon Oct 3, 2026
[CLAIMED-AMEND] lane myia-po-2024:CoursIA-3 -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/**, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/README.md
Ajout du README du pipeline : une entrée pour
shadow_replay.pydans l'arbre des scripts et dans la table du harness d'évaluation.feat(ml-pipeline,#18923): shadow replay template -- frozen registry, …
feat(qc-pipeline,#18923): rejeu QC des candidates en ombre (plan-qc /…
refactor(qc-pipeline,#18923): métriques de stratégie partagées (strat…
feat(qc-pipeline,#18923): rejeu QC des candidates en ombre (plan-qc /…
jsboige commentedon Oct 4, 2026
[CLAIMED] lane myia-po-2024:CoursIA-3 — étape 2 : point d'entrée local de suivi en ombre pour la règle à inverse de la volatilité de #19072 (conventions U et F, cible 0,025), qui réutilise
inverse_vol_currency.py; le gel des deux candidates suit le merge de cette PR, premier passage à la première séance de novembre -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_inverse_vol.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_inverse_vol.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/inverse_vol_currency.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/README.mdfeat(qc,#19242): Split Events long-only evaluation -- NO BEATS, regis…
feat(shadow,#18923): freeze the 676 as first QC candidate; plan-qc re…
jsboige commentedon Oct 5, 2026
[CLAIMED-AMEND] lane myia-po-2024:CoursIA-3 -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_replay.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/shadow/registry.json -- etape 2 portee par #19250
La lane resserre sa reservation aux fichiers de l'etape 2 (#19250, ouverte). L'etape 3 (rythme automatique des rejeux) est libre pour toute autre lane, sous reserve de ne pas toucher ces trois fichiers avant le merge de #19250.
myia-ai-01 commentedon Oct 5, 2026
[CLAIMED] lane myia-po-2024:CoursIA — étape 3 (dispatch ai-01) : rythme automatique des rejeux en ombre (premier passage à la première séance de novembre), sans toucher shadow_replay.py ni shadow/registry.json tenus par la lane de trading paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_schedule.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_schedule.py
feat(ml-pipeline,#18923): etape 3 -- shadow_schedule.py, cadence mens…
feat(ml-pipeline,#18923): etape 3 -- shadow_schedule.py, cadence mens…
jsboige commentedon Oct 5, 2026
[DELIVERED] lane myia-po-2024:CoursIA -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/shadow_schedule.py, MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/scripts/tests/test_shadow_schedule.py
Étape 3 livrée — PR #19330 (tête 3eb48a5) :
shadow_schedule.py, planificateur de la cadence mensuelle répartie.due/validate/qc_entrypointdeshadow_replay.py(étape 1) sans rien redéfinir ;shadow_replay.pyetshadow/registry.json(lane étape 2, feat(shadow,#18923): gel de la 676, premiere candidate QC ; plan-qc lit le chemin depuis la racine #19250) non touchés.replay-local(0 appel QC) →plan-qc(0 appel) → par candidate QC uneqc-passageMCP (≈5 appels, espacée de 10 min par défaut → 0,5 appel/min vs budget flotte 10/min, garde de refus) →ingest-qc. Première séance du mois = premier jour ouvré, déterministe.shadow/inchangé..github/ou tâche planifiée = arbitrage coordinateur (le passage reste une PR par lane, README §Cadence).feat(ml-pipeline,#18923): etape 3 -- shadow_schedule.py, cadence mens…
docs(#14529): inscrire myia-po-2024:CoursIA-3 -- 9 PRs mesurees, refu…
docs(#14529): photo de famille -- galerie ouverte, roster rafraichi, …
feat(qc-pipeline,#18923): point d'entree de suivi en ombre pour la re…
feat(shadow,#18923): freeze the 774, Split Events long-only and the t…
feat(qc,#19450): measure the LongShortHarvest code on QC Cloud, verdi…
feat(qc,#19621): FamaFrench+AllWeather measured NO BEATS, factor slee…
feat(qc,#19759): EMATrend -- tranches additionnees (intent), NO BEATS…
feat(shadow,#18923): freeze LongShortHarvest lag and TrendWeather pit (…