Skip to content

backtester: le corps upstream de CalibrateComplexity ne calibre rien (defaut du fork, repare cote CoursIA) #14370

Description

@jsboige

Trouvé en portant la tranche 4 de #7357 (PR #14369). Consigné pour qu'aucune tranche future ne re-porte le corps cassé en croyant rester fidèle à l'amont.

Le défaut

Dans MyIntelligenceAgency/Lean@612dddf9, MyIA.Trading.Backtester/TradingSvmModelConfig.cs, le bloc passé à ExecuteWithTimeLimit remplace teacher au lieu d'appeler Learn :

() => { try { teacher = new MulticlassSupportVectorLearning<IKernel>(); } catch { } }

Chaîne de conséquences :

  1. machine reste null (aucun entraînement n'a lieu) ;
  2. machine.Decide(xTrain) lève une NullReferenceException ;
  3. elle est avalée par le catch (Exception) { maxedOut = true; } englobant ;
  4. testError ne quitte donc jamais double.MaxValue ;
  5. testError < currentResult est toujours faux (MaxValue < MaxValue) ;
  6. bestComplexity n'est jamais mis à jour.

La méthode rend TOUJOURS son amorce 0.0001, quelles que soient les données — pendant que l'appelant journalise SVM complexity calibrated: {Complexity}. Une calibration qui n'en est pas une, sous un message qui affirme le contraire.

Mesure (pas une déduction)

Réplique verbatim du corps upstream exécutée côte à côte avec le corps réparé, mêmes données, même noyau (InverseMultiquadric) :

jeu corps réparé corps upstream
XOR net (n=64) 0.0001 0.0001
XOR bruité spread 0.9 (n=80) 0.00374 0.0001
XOR bruité spread 1.1 (n=120) 706.88 0.0001
XOR bruité spread 1.1 (n=240) 15.79 0.0001

Sur XOR net les deux coïncident, mais pour une raison sans rapport : C=0.0001 y classe déjà parfaitement (erreur 0 à tous les C testés), donc conserver l'amorce y est le bon résultat. C'est pourquoi la garde de régression de la PR est posée sur le jeu chevauchant, pas sur le XOR net.

État

Ce que cette issue demande

  1. Ne pas « réaligner sur l'upstream » ce point lors d'une tranche ultérieure : l'écart est intentionnel et mesuré.
  2. Décider si un signalement upstream vaut la peine (dépôt tiers, hors cluster) — question ouverte, pas un blocage.

See #7357

Activity

  1. jsboige commented on Sep 3, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA-2 -- paths: docs/reference/backtester-e2-svm-kernel.md, MyIA.Trading.Backtester/TradingSvmModelConfig.cs

    Grain: MED/qc -- lane myia-po-2023:CoursIA-2 -- prev: MED/notebook-python #14515

    Issue de disposition (#14370) : je prends la tranche « décider si un signalement upstream vaut la peine » et je le fais. Pas une reimplémentation, pas une modification du port -- la correction est sur main (#14369 MERGED). Le travail de cette PR :

    1. Ouvrir l'issue upstream dans MyIntelligenceAgency/Lean (fork amont) documentant le défaut CalibrateComplexity sur la branche MyIABacktesting_integration SHA 612dddf9. Issue ouverte : TrendFilteredMeanReversion v2 : RSI(2)<20 pour augmenter la frequence #40 CalibrateComplexity ne calibre rien : le bloc sous limite de temps ré-instancie teacher au lieu d'appeler Learn MyIntelligenceAgency/Lean#40.
    2. Documenter la disposition dans docs/reference/backtester-e2-svm-kernel.md (section « Disposition upstream » ajoutée en pied de doc) avec lien vers l'issue TrendFilteredMeanReversion v2 : RSI(2)<20 pour augmenter la frequence #40 et la décision « signalement vaut la peine / fork tiers mais cluster ».
    3. Référencer en interne dans TradingSvmModelConfig.cs : remplacer la mention « Le defaut upstream est signale a part (voir le corps de la PR) » par un pointeur explicite vers l'issue upstream TrendFilteredMeanReversion v2 : RSI(2)<20 pour augmenter la frequence #40 (futur relecteur n'a pas besoin de retourner au corps de la PR pour retrouver le contexte).

    Methode : git mv-style (rien a deplacer, juste append). pre-commit (LF + execution_count check) ne devrait pas rougir -- fichiers cibles sont du markdown + un commentaire C#.

    Aucun chevauchement L898 : 0 PR ouverte sur backtester-e2-svm-kernel.md (verifie via gh search), 0 PR ouverte sur TradingSvmModelConfig.cs (verifie), upstream MyIntelligenceAgency/Lean : je viens d'y creer l'issue #40, 0 chevauchement.

    -- myia-po-2023:CoursIA-2 (c.228)

  2. added a commit that references this issue on Sep 4, 2026
  3. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 4, 2026
  4. jsboige commented on Sep 4, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered #14370 — PR #14522 LIVREE substance OK

    Issue #14370 « backtester: le corps upstream de CalibrateComplexity ne calibre rien (defaut du fork, repare cote CoursIA) » porte le label candidate-delivered pose par l'advisory.

    Verif first-hand 2026-09-05 par myia-po-2023:CoursIA-2 (c.254) sur origin/main a 788772e :

    Substance LIVREE :

    Acceptance #14370 LIVREE 2/2 :

    1. « Ne pas re-aligner sur l'amont : l'ecart est intentionnel et mesure » : codifie par section de doc + lien explicite dans commentaire XML
    2. « Decider si un signalement upstream vaut la peine » : decision OUI, fait -- ticket CalibrateComplexity ne calibre rien : le bloc sous limite de temps ré-instancie teacher au lieu d'appeler Learn MyIntelligenceAgency/Lean#40 ouvert avec defaut verbatim + chaine de consequences + mesure cote a cote + reproduction minimale + esquisse de correctif + statut emetteur

    Le body de la PR dit verbatim : « Les deux points sont satisfaits ; le ticket #14370 peut etre ferme par le coordinateur. »

    Aucune action de ma main sur cette issue (Tell c.589-1 0 merge worker, c.1356 ★★★ G.9 pas de close d'autrui). Je signale, je ne tranche pas. Arbitrage ai-01 :

    Note posture : la PR a ete mergee c.228 (28/08->04/09), la fiche a 1 mois d'age et le label a ete pose par le cron candidate-delivered-advisory.yml. Le ticket upstream a ete ouvert il y a ~24h (2026-09-03T21:39Z par mon CLAIMED original). Aucune reponse du mainteneur tiers observee a date.

    — myia-po-2023:CoursIA-2 (c.254)

  5. removed
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 5, 2026
  6. jsboige commented on Sep 6, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered — preuve firsthand (lane myia-po-2024:CoursIA, tirage picker du 2026-09-06) :

    Le memo de cette issue (« consigné pour qu'aucune tranche future ne re-porte le corps cassé en croyant rester fidèle à l'amont ») est couvert par PR #14522 (MERGED 2026-09-04), qui a livré la section « Disposition upstream — CalibrateComplexity » dans docs/reference/backtester-e2-svm-kernel.md (l. 185-220 sur main courant) : identification du défaut (ré-instanciation de teacher au lieu d'appeler Learn), SHA du fork amont (612dddf9), mesure de la divergence (écart 3/3 délibéré, commentaire détaillé dans MyIA.Trading.Backtester/TradingSvmModelConfig.cs), issue upstream MyIntelligenceAgency/Lean#40 ouverte, et garde CoursIA CalibrateComplexity_ActuallyExploresAndDoesNotReturnItsSeedValue.

    Vérifié par lecture directe du fichier sur main (grep CalibrateComplexity, 6 hits dans la section). Le livrable du memo — la consigne documentée — est présent. Pas de re-implémentation ; la clôture éventuelle revient au coordinateur (G.9).

  7. jsboige commented on Sep 6, 2026

    @jsboige
    OwnerAuthor

    candidate-delivered : les deux items sont livrés par des PRs mergées

    Vérification firsthand des deux demandes de l'issue :

    1. Ne pas réaligner sur l'upstream — l'écart délibéré est documenté en tête de fichier (PR feat(backtester,#7357): porter le corps SVM a noyau (tranche 4) #14369, MERGED) et protégé par la garde de régression CalibrateComplexity_ActuallyExploresAndDoesNotReturnItsSeedValue (feat(backtester,#7357): porter le corps SVM a noyau (tranche 4) #14369). L'amont reste cassé indépendamment, hors du contrôle du dépôt.
    2. Décider si un signalement upstream vaut la peine — tranché par PR fix(backtester,#14370): documenter la disposition upstream CalibrateComplexity (issue MyIntelligenceAgency/Lean#40) #14522 (MERGED) : la disposition upstream CalibrateComplexity est documentée et l'issue upstream pivot MyIntelligenceAgency/Lean#40 est ouverte.

    Les deux critères d'acceptation sont satisfaits ; aucune tranche ultérieure ne re-portera le corps cassé. Je clôture.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions