Repository navigation
docs(qc,#18900): tranche 3 du livre face à nos reproductions (chapitre 06, ex. 14-19) - #19056
Conversation
Base != main (advisory, #10918)Cette PR ne livre pas sur Couverture CI perdue sur cette base (mesure, #16194)6 workflow(s) se declencheraient si cette PR visait
Un check absent n'est pas un check vert. |
Path-collision (organ #13359/#13615)Cette PR #19056 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
3542a3f to
fc8f6c6
Compare
49d5ebd to
505c262
Compare
…e 06, ex. 14-19) Trois rejeux QC Cloud dans les conditions du livre, sous la règle pré-enregistrée (complément tranche 3, c.5975932871) : 15 et 14 REPRODUIT (échelle de couleur du balayage), 17 ÉCART (borne à zéro ; le CNN de repli synthétique a tourné, modèle absent de l'Object Store, #19053). 18/01 et 19/01 NON COMPARABLE ; ligne 16 de l'inventaire passée de COVERED à PARTIAL. Part of #18900 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
505c262 to
d029eb8
Compare
|
Rebasée sur |
PR gate absent du rollup (advisory, #10928)
Cause mesuree : base_ref_changed=2026-10-04T14:52:57Z, dernier run PR gate=aucun |
|
[ADJOINT PREFLIGHT] note: Dossier c428 sur PR #19056 (docs(qc,#18900): tranche 3 du livre face a nos reproductions, chapitre 06 ex 14-19). Tierce attestation depuis myia-po-2026:CoursIA-3 (PR porteuse myia-po-2024:CoursIA-3, distincte). MED/qc, 1 fichier (BOOK_MAPPING.md), +30/-2. Nouvelle tete d029eb8 apres rebase post-merge #19019 (14:41Z) puis retarget base main -- patch identique (range-diff 505c262 = d029eb8, rapport de la lane c.14:53Z). Checks latest-wins-green mesure ce cycle : 13 check-runs foldes par (started_at,id) tous success/skipped ; PR gate SUCCESS @17:59:37Z agrege par le sweep que j'ai declenche (workflow_dispatch run 37222399770 -- le dernier service datait de 14:44Z, avant la creation de cette tete). B.0 rc=0 mesure ce cycle (4 commentaires, 0 nit non leve -- le 4e est le commentaire collant PR gate du sweep). mss BLOCKED = exigence de review sur la nouvelle tete (l'approbation ai-01 est l'autre moitie du merge), PAS un defaut de contenu. scope: PASS (1 fichier sous MyIA.AI.Notebooks/QuantConnect/, PAS sous .claude/, .github/, ni CLAUDE.md). domain: PASS (substance MED/qc verifiee : regle de verdict pre-enregistree c.5975932871 a 02:51Z AVANT le premier rejeu ; verdicts honnetes 15 REPRODUIT (Sharpe 0,582) / 14 REPRODUIT (0,202) / 17 ECART documente par issue fille #19053 (modele Object Store absent, CNN synthetique a tourne) / 16 PARTIAL / 18-19 NON COMPARABLE ; rejeux QC reellement executes un a la fois dans projets separes 37323229/37323273/37323339). verdict READY. |
Grain: MED/qc — lane myia-po-2024:CoursIA-3 — prev: DEEP/research-code #19035
Part of #18900 (tranche 3 : chapitre 06, exemples 14 à 19)
Empilée sur #19019 (base
docs/qc-book-vs-reproductions-ch06b), elle-même empilée sur #18985 : elle ajoute la tranche 3 à la section que #18985 crée dansBOOK_MAPPING.md. Après le merge des deux, retarget surmain.Résumé
Troisième tranche de la comparaison entre les chiffres du livre Hands-On AI Trading et nos reproductions. Le livrable est un nouveau tableau dans la section « Résultats du livre face à nos reproductions » de
MyIA.AI.Notebooks/QuantConnect/BOOK_MAPPING.md, avec les mêmes colonnes que les tranches 1 et 2.REPRODUITREPRODUITCOVEREDàPARTIALÉCART(borne à zéro)NON COMPARABLEGAP, #18962)Règle de verdict, publiée avant les rejeux
Les règles des tranches 1 et 2 s'appliquent (base, complément chapitre 06, complément « borne à zéro »). Le complément de la tranche 3 a été posté à 02:51:41Z. Le premier backtest a été créé à 02:52:47Z.
Ce complément traite une source nouvelle. Pour 14 et 15, le texte ne donne pas de Sharpe, mais le balayage de paramètres de
tearsheet2.pngporte une échelle de couleur. Elle est lue comme l'intervalle des Sharpe du balayage : avec la normalisation par défaut de matplotlib, ses bornes sont le minimum et le maximum observés. La lecture est précise à 0,03 près, et un rejeu à moins de 0,05 d'une borne de tolérance serait dit fragile. Les tolérances qui en découlent :REPRODUITsi le Sharpe est dans [−0,80 ; 0,45] ;REPRODUITsi le Sharpe est dans [0,17 ; 1,27] et positif ;Le complément fixe aussi l'ordre des rejeux (15, puis 17, puis 14) et exclut l'exemple 16 avant tout calcul (voir plus bas).
Rejeux (QC Cloud, projets séparés, un backtest à la fois)
Chaque rejeu est une copie de notre
main.py. Y changent seulement la fenêtre et le capital (repris deset_start_date,set_end_dateetset_cashdans le code du livre) et le retrait de la ligneset_brokerage_model. Les paramètres publiés par le livre sont déjà nos valeurs par défaut.8df461e5fffd0f0df859d0bd4129613087648032844af2f195239271140bcb1f672faa80ccb73bdaa629b4137f388590Deux projets du dépôt se rattachent à 14, et deux à 15. Le rejeu porte sur celui dont le code suit celui du livre, mesuré à l'arbre syntaxique (docstrings retirés) :
ML-Temporal-CNNTemporal-CNN-Prediction(unMLPClassifier, sans convolution)ML-Gaussian-ClassifierGaussian-Direction-ClassifierDiff du rejeu 15 par rapport à
projects/ML-Gaussian-Classifier/main.py(sha256 du fichier rejoué0836d6897129deeacd97b026287d971e58b6f9b2393df79b66b13998a26e9a56) :Diff du rejeu 17 par rapport à
projects/ML-HeadShoulders-CNN/main.py(sha25683c956a4ca3c57842aed5e2737c8e969d8a3d206068c4aa4e003a28c17503bf2) ; le capital était déjà celui du livre :Diff du rejeu 14 par rapport à
projects/ML-Temporal-CNN/main.py(sha2563ad8305adaa3a25778aac3ec866630f0caf354159a5b65d8ee9c1d6f936c7093) ; le capital était déjà celui du livre, ettemporalcnn.pyest envoyé tel quel (sha25634390ca45d939df6a1469d73995dba251cc5fad4b4334339d4d61491fdcd0d36, identique au fichier du dépôt) :Les différences de notre code avec celui du livre sont gardées au rejeu, qui juge notre reproduction et non le code du livre. Pour 15 : des gardes, et une différence de comportement (quand aucune action n'est prédite en hausse, notre code liquide tout, celui du livre garde ses positions). Pour 17 : une garde (
symbol not in data) et des conversions de type ; et le chemin de repli quand le modèle manque à l'Object Store, qui est celui qui a tourné au rejeu (voir les verdicts). Pour 14 : dansmain.py, seules la fenêtre et la ligne de courtage diffèrent ; danstemporalcnn.py, des renommages,verbose=0et des conversions de type, pour le même modèle.Exemple 16 : pas de rejeu, et une ligne d'inventaire corrigée
Notre projet
ML-LLM-Summarizationne joue pas la stratégie du livre par défaut :Le notebook
QC-Py-26-LLM-Trading-Signals, l'autre ressource de la ligne, enseigne l'analyse de sentiment par LLM : ses sorties committées portentSource: simulated, et il ne résume pas d'articles. La ligne 16 du tableau d'inventaire passe donc deCOVEREDàPARTIAL, comme la ligne 10 dans la tranche 2.Ce que ces verdicts disent, et ce qu'ils ne disent pas
L'échelle de couleur d'un balayage est une source plus faible qu'un chiffre du texte : elle borne la stratégie sur tout le balayage, pas le paramètre publié.
ÉCARTporte sur le modèle. La première ligne du journal du backtest estObject Store model missing, training synthetic CNN: le rejeu a joué le CNN de repli, et non le modèle entraîné du livre, absent de notre Object Store. Il dit que le projet, tel qu'il tourne aujourd'hui sur QC Cloud, ne retrouve pas le signe annoncé ; il ne dit encore rien de la stratégie du livre. Le Sharpe (−24,1) tombe dans l'échelle du balayage du livre (de −135 à −20 environ), ce qui ne change pas le verdict, la règle portant sur le profit net. Suite : [QC][livre] Head & Shoulders CNN (06/17) : notre rejeu tourne sans le modèle entraîné du livre #19053 (exécuter leresearch.ipynbdu projet sur QC Cloud pour déposer le modèle, puis rejouer).Écarts internes au livre (texte contre code et figures de son dépôt)
footnotes.txtdisent « toutes les combinaisons sont profitables », mais l'échelle du balayage va d'environ −135 à −20 en Sharpe. Le Sharpe de QuantConnect retranche le taux sans risque, et une stratégie presque toujours hors du marché a une volatilité proche de zéro : son Sharpe peut être très négatif avec de petits gains. D'où une borne sur le profit net.Hors de cette PR
Tier et genre
MED/qc, comme les tranches 1 et 2 : la PR étend l'inventaire avec des rejeux QuantConnect vérifiés sous une règle pré-enregistrée, et corrige une ligne de l'inventaire (16,COVERED→PARTIAL). Si la revue juge quedocsdécrit mieux la PR, la re-qualification est bienvenue.Vérifications (après le dernier commit)
Tête
49d5ebda1a, un seul fichier modifié.python scripts/notebook_tools/check_prose_quantitative_claims.py --diff github/docs/qc-book-vs-reproductions-ch06b...HEAD:[OK] aucun compteur quantitatif en prose.python scripts/check_docs_links.py --check --base github/main:OK: No new broken links. (0 pre-existing, 8129 total)git diff --stat github/docs/qc-book-vs-reproductions-ch06b...HEAD:BOOK_MAPPING.md, 30 insertions, 2 suppressions.completed: true. Le chemin de modèle de 17 est lu dans le journal du backtest.🤖 Generated with Claude Code