Repository navigation
QC InverseVolatility-Rank : les chiffres publiés décrivent le code du projet QC Cloud, pas le main.py du dépôt #19018
Description
Activity
[CLAIMED] #19018 — myia-po-2026:CoursIA 2026-10-03T21:52Z — voie (a) : backtest QC Cloud de la version dépôt (2015-01-01 + brokerage model), publication des chiffres mesurés README + qc-strategies-status, sweep du point 2 en sondage
Sweep point 2 — cloud vs dépôt, fenêtres et versions (2026-10-03, lane myia-po-2026)
Méthode : pour chaque README citant un « Cloud project ID » réel (10 projets, les 34 autres = « None (local only) »), lecture du
main.pycôté QC Cloud (MCPquantconnect) et comparaison avec lemain.pydu dépôt (dates extraites grep insensible à la casse — snake_case ET CamelCase).Verdict par projet
Projet ID Cloud Fenêtre dépôt Fenêtre Cloud Verdict InverseVolatility-Rank 29463533 2015-01-01 → 2024-04-01 (IBKR margin, cash 100 M$) 2018-12-31 → 2024-04-01, sans brokerage (cash 100 M$) DIVERGENT — mêmes paramètres (multiplier 2.0, cap 15 %, hebdo, label 6 j) mais start +3,9 ans et brokerage IBKR absents côté Cloud ; chiffres publiés décrivent le code Cloud ; backtest de la version dépôt livré (projet 37313767, voir PR) Chronos-Foundation-Forecasting 29443479 2015 → 2026-01-01 (v2 : n_est 50, lr 0.05) 2015 → 2026-03-01 (v2b : n_est 80, lr 0.03, min_samples_leaf 8) DIVERGENT — le Cloud porte v2b, le dépôt v2 ; le README cite « Sharpe (v2) 0.253 » = version dépôt, l'ID Cloud ne reproduit plus ce chiffre ML-RandomForest 29434751 2015 → 2024-12-31 (v3) 2015 → sans end date (v3) DIVERGENT — fenêtre Cloud ouverte (= aujourd'hui au run) vs dépôt borné 2024-12-31 ; Sharpe 0.68 / CAGR 20.1 % / MaxDD 36.4 % non reproductibles sur le fichier dépôt tel quel ML-SVM 29434752 2015 → 2024-12-31 (v3) 2015 → sans end date (v3) DIVERGENT — même pattern ; Sharpe 0.147 ML-XGBoost 29434753 2015 → 2024-12-31 (v2) 2015 → 2024-12-31 (v2) OK — fenêtres identiques ; README déjà conforme (backtest frais 2026-08-06 : 0.787 / 19.49 % / 35.90 %, 2516 j., le docstring périmé « (2015-2026) 0.566 » y est explicitement retiré) Multi-Layer-EMA 28433748 2018-01-01 → 2024-12-31 2018-01-01 → 2024-12-31 OK Stoploss-Volatility-ML 29463529 2015 → 2026-03-01 2015 → 2026-03-01 OK Trend-Following 28797562 2015 → 2024-12-31 (v7) 2015 → 2024-12-31 (v7) OK TrendStocks-Alpha 28885507 2015 → 2024-12-31 2015 → 2025-01-01 quasi-identique (écart 1 jour) DualMomentumNoTLT 31244186 2015 → 2024-12-31 2015 → 2024-12-31 OK PCA-StatArbitrage 29461658 2015 → 2024-01-01 (dates auteur) 2015 → 2026-03-01 Ligne statut corrigée par la PR (l.409 datait « 2015–2026 » = fenêtre du code Cloud 29461658, pas du dépôt) — le README du projet étiquette déjà chaque métrique par fenêtre (0.205 @ 2018-2025 IBKR aligné #1630 vs 0.399 précédent @ 2015-2024 auteur) : c'est le modèle à suivre Lecture d'ensemble
- 4 divergences réelles (InverseVolatility, Chronos, ML-RF, ML-SVM) + 1 principale traitée par PR dédiée (InverseVolatility). Les 3 autres suivent deux patterns :
- Version drift (Chronos) : le projet Cloud a évolué (v2→v2b) après publication des chiffres ;
- Fenêtre ouverte (ML-RF, ML-SVM) : pas de
SetEndDatecôté Cloud → un run « aujourd'hui » couvre 21 mois de données de plus que le fichier dépôt.
- Les 6 autres projets cloud-vs-dépôt concordent (fenêtres et versions identiques au marker près).
- Pattern de correction recommandé (déjà appliqué par PCA-StatArbitrage) : chaque métrique du README porte sa fenêtre datée + la version + l'ID du run qui l'a produite ; quand le code Cloud diverge, l'annoter explicitement plutôt que laisser l'ID implicite.
- Détail observé au passage : le dépôt mélange
set_end_date(snake) etset_end_date/SetEndDate(Camel) dans un même fichier (ML-RandomForest lignes 22-23) — fonctionnel chez QC mais piégeux pour tout grep d'audit (mon premier passage a raté les dates CamelCase).
Suivi
- InverseVolatility-Rank : mesures de la version dépôt livrées par PR docs(qc,#19018): InverseVolatility-Rank — mesurer la version dépôt (0.529 @ 2015-2024 IBKR) + fenêtres datées #19024 (backtest QC Cloud projet 37313767, fenêtre 2015-01-01 → 2024-04-01, IBKR MARGIN : Sharpe 0.529, CAGR 14.86 %, MaxDD 40.5 %, PSR 3.34 %, 2865 j.) ; README + page de statut datés.
- PCA-StatArbitrage : ligne statut l.409 annotée par la même PR (« fenêtre du code Cloud 29461658, 2015-01-01 → 2026-03-01 »).
- Chronos / ML-RF / ML-SVM : divergences documentées ci-dessus ; correction (re-mesure ou annotation) = travail séparé si souhaité.
- 4 divergences réelles (InverseVolatility, Chronos, ML-RF, ML-SVM) + 1 principale traitée par PR dédiée (InverseVolatility). Les 3 autres suivent deux patterns :
[DELIVERED] lane myia-po-2026:CoursIA -- PR #19024 (commit eeae013) : mesure version depot (projet Cloud 37313767, backtest 8747c1815d5e752249c743477bbcfd67, Completed) + README fenetres datees + lignes statut InverseVolatility/PCA annotees + sweep point 2 complet en commentaire precedent (10 IDs Cloud compares firsthand). Closes via PR body.
Correction du sweep (2026-10-04) — lignes ML-RandomForest et ML-SVM. Relecture sur main frais (7c0c46d) : mes lignes du tableau initial citaient les chiffres docstring (0.68 / 20.1 % / 36.4 %) relevés sur la base 089ef57, mais les README actuels portent des backtests frais datés du 2026-08-06 avec fenêtre explicite « Période backtestée : 2015-01-01 → 2024-12-31 » : ML-RandomForest Sharpe 0.819 / CAGR 24.25 % / MaxDD 40.50 % / PSR 14.52 %, ML-SVM Sharpe 0.166 / PSR 0.028 % — chiffres reproductibles sur la fenêtre du dépôt (la fenêtre est posée au lancement du backtest). La divergence résiduelle pour ces deux projets est purement code-level : le main.py Cloud (29434751/52) n'a pas de SetEndDate alors que le dépôt borne au 2024-12-31 — un run lancé sans paramètre de période sur le Cloud couvrirait plus de données, mais les chiffres publiés sont correctement datés. Verdict révisé : divergence doc-résolue / code-mineure, la contrainte « le chiffre publié correspond au code publié » est satisfaite par la ligne de fenêtre explicite. Chronos reste la divergence réelle non annotée → annotation livrée (voir PR liée).
[COORD] Clôture : les deux points du body sont livrés et vérifiés sur
main.- Le chiffre publié correspond au code publié (InverseVolatility-Rank). docs(qc,#19018): InverseVolatility-Rank — mesurer la version dépôt (0.529 @ 2015-2024 IBKR) + fenêtres datées #19024 (fusionnée 2026-10-04T14:12Z) mesure la version du dépôt sur QC Cloud (projet 37313767 ; Sharpe 0.529 sur 2015-01-01 → 2024-04-01, IBKR margin) et date chaque métrique dans le README et la page de statut.
- Les autres projets dans le même cas. Le sondage a couvert les 10 READMEs qui citent un ID Cloud (commentaire du 2026-10-03), et sa correction du 2026-10-04 a révisé les lignes ML-RF et ML-SVM. Divergences :
- InverseVolatility : traitée par docs(qc,#19018): InverseVolatility-Rank — mesurer la version dépôt (0.529 @ 2015-2024 IBKR) + fenêtres datées #19024 ;
- PCA-StatArbitrage : ligne de statut annotée par docs(qc,#19018): InverseVolatility-Rank — mesurer la version dépôt (0.529 @ 2015-2024 IBKR) + fenêtres datées #19024 ;
- Chronos (v2 dépôt / v2b Cloud) : annoté par docs(qc,#19018): Chronos README — annoter la divergence v2 (dépôt) vs v2b (Cloud 29443479) #19028, fusionnée, vérifié sur
main(README l.18) ; - ML-RandomForest et ML-SVM : chiffres datés sur la fenêtre du dépôt, l'écart restant ne porte que sur le code (pas de
SetEndDatecôté Cloud) ; - les 6 autres projets concordent.
Le seul résidu est cet écart de code sur ML-RF et ML-SVM. Il ne fausse aucun chiffre publié, et je ne le reporte donc pas dans une nouvelle issue.
- added a commit that references this issue
on Oct 5, 2026
Constat fait pendant la tranche 2 de #18900 (chapitre 06, exemple 11).
Ce qui est mesuré
La page qc-strategies-status.md donne pour
InverseVolatility-Rank: « pleine période (1629 j.) ; Sharpe 0.124 ; CAGR 4.13 % ; MaxDD 41.0 % ; PSR 1.9 % ». Le README du projet reprend le Sharpe et le CAGR et cite le projet QC Cloud 29463533.Le
main.pyde ce projet QC (sha256a151a0ef01ae50d2f0d102468d8004aad4ed71c9122d0378c3c47c9424fabb95) diffère deprojects/InverseVolatility-Rank/main.pydu dépôt par deux lignes :Le rejeu de #18900 a exécuté ce code-là, à l'octet près (projet 37309271, backtest
a30271d032a6f4e54c2f2ed3bbb90381). Il redonne exactement Sharpe 0,124, CAGR 4,128 % et pire baisse 41,0 %, sur 1629 jours de cotation. Seul le PSR change : 0,8 % au lieu de 1,9 %.Conclusion : les chiffres de la page de statut et du README décrivent le code du projet QC, pas celui du dépôt. Aucune mesure de la version du dépôt (début au 2015-01-01, modèle de courtage explicite) n'est citée.
Ce qui reste à faire
PCA-StatArbitrage, la page de statut date sa mesure de 2015-2026, alors que le code du dépôt s'arrête au 2024-01-01. La vérification consiste à comparer, pour chaque projet dont le README cite un projet QC Cloud, lemain.pyde ce projet aumain.pydu dépôt.La comparaison livre/reproductions n'est pas bloquée par ce constat : elle porte sur les rejeux, dont le code est publié avec son sha256.
See #18900