Skip to content

[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

Open

Description

@jsboige

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

  1. 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.
  2. 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.
  3. 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

  1. 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.
  2. Premières inscriptions : au moins deux candidates gelées et un premier passage.
  3. 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.

Activity

  1. jsboige commented on Oct 3, 2026

    @jsboige
    OwnerAuthor

    [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/**

  2. jsboige commented on Oct 3, 2026

    @jsboige
    OwnerAuthor

    [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.py dans l'arbre des scripts et dans la table du harness d'évaluation.

  3. added a commit that references this issue on Oct 3, 2026
  4. added 2 commits that reference this issue on Oct 3, 2026
  5. added a commit that references this issue on Oct 4, 2026
  6. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [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

  7. added 2 commits that reference this issue on Oct 5, 2026
  8. jsboige commented on Oct 5, 2026

    @jsboige
    OwnerAuthor

    [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.

  9. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    Collaborator

    [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

  10. added 2 commits that reference this issue on Oct 5, 2026
  11. jsboige commented on Oct 5, 2026

    @jsboige
    OwnerAuthor

    [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.

    • Décision pure, zéro écriture : lit registre + CSV (jamais modifiés), rend un plan horodaté. Consomme due/validate/qc_entrypoint de shadow_replay.py (étape 1) sans rien redéfinir ; shadow_replay.py et shadow/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.
    • 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).
  12. added a commit that references this issue on Oct 5, 2026
  13. added a commit that references this issue on Oct 5, 2026
  14. added 7 commits that reference this issue on Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions