Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -561,7 +561,7 @@
"2. **Multi-horizon** : les fenêtres 5 et 20 jours coexistent. Le régime Bear de la simulation change la vol à court terme **avant** que la moyenne 20 jours ne s'en aperçoive — sans le multi-horizon, le détecteur verrait l'anomalie trop tard.\n",
"3. **Normalisation par construction** : les ordres de grandeur des features sont ramenés vers [0, 1]-ish par les divisions et z-scores, ce qui stabilise l'entraînement du VAE bien mieux qu'une normalisation a posteriori figée (et invalide) en production.\n",
"\n",
"Le résumé de la cellule affiche la forme finale `X: (961, 20, 12)` : 961 fenêtres de 20 jours × 12 features. La découpe en fenêtres glissantes — présentée dans la cellule suivante — transforme la série journalière en tenseurs que le LSTM de l'encoder sait lire directement."
"Le résumé de la cellule affiche la forme finale `X: (961, 20, 12)` : 961 fenêtres de 20 jours × 12 features. La découpe en fenêtres glissantes — présentée quelques cellules plus loin, après l'instanciation du modèle en tenseurs que le LSTM de l'encoder sait lire directement."
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3342,7 +3342,7 @@
" \\-- Generation d'insights (signaux de trading)\n",
"```\n",
"\n",
"Le code suivant est une reference a copier dans `main.py` d'un projet QC Lab."
"L'interpretation qui suit reference les quatre composants du `main.py` d'un projet QC Lab (PositionalEncoding, TransformerPredictor, TransformerAlphaModel, TransformerMultiAssetStrategy) ; le squelette complet de `main.py` reste a copier depuis la documentation QC Lab."
]
},
{
Expand Down Expand Up @@ -3663,7 +3663,7 @@
"environment_variables": {},
"exception": null,
"input_path": "QC-Py-31-Transformer-Training.ipynb",
"output_path": "C:/Users/jsboi/AppData/Local/Temp/claude/d--Dev-CoursIA-2/06a3155b-fc4b-4bad-b929-a30b14f83449/scratchpad/QC-Py-31-rerun.ipynb",
"output_path": "QC-Py-31-Transformer-Training.ipynb",
"parameters": {},
"start_time": "2026-09-26T13:45:00.488037+00:00",
"version": "2.7.0"
Expand Down
85 changes: 35 additions & 50 deletions MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-32-RL-DQN-Trading.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1836,56 +1836,6 @@
"Pour une mesure out-of-sample reelle : 3 splits (train / val / test), selection du checkpoint sur val, evaluation finale sur test uniquement."
]
},
{
"cell_type": "markdown",
"id": "fb7b5f5a",
"metadata": {
"papermill": {
"duration": 0.00643,
"end_time": "2026-09-19T11:31:00.204312",
"exception": false,
"start_time": "2026-09-19T11:31:00.197882",
"status": "completed"
},
"tags": []
},
"source": [
"### Interpretation\n",
"\n",
"Les metriques ci-dessous decrivent le comportement du checkpoint retenu (episode 60,\n",
"val_sharpe = 1,528) **sur la periode 2022-2024** — celle-la meme qui a servi a le\n",
"selectionner. Ce ne sont donc pas des mesures out-of-sample : la section precedente\n",
"quantifie le biais ascendant (**+2,258** entre le maximum retenu et la moyenne des dix\n",
"evaluations, qui vaut **-0,730**). Ce que ces chiffres decrivent fidelement, en\n",
"revanche, c'est **quelle strategie l'agent a apprise** — et cette lecture-la ne depend\n",
"pas de la question du biais de selection.\n",
"\n",
"- **Rendement total +5 406,52 %** (+283,16 % annualise) sur 2022-2024, pour\n",
" **7 762 trades** et un **win rate de 53,32 %** — a peine au-dessus du pile-ou-face.\n",
" Un rendement a quatre chiffres avec un edge de 3 points sur le hasard ne vient pas\n",
" de la qualite des paris : il vient de leur **nombre** et de leur **taille**, c'est-a-dire\n",
" d'un effet de levier compose sur 752 pas.\n",
"- **Sharpe 1,528 > 0,7** : la barre que le notebook s'etait fixee plus haut est atteinte\n",
" **sur la periode de selection**, et par **une seule** des dix evaluations. Pour savoir\n",
" si elle le serait hors echantillon, il faudrait un troisieme decoupage (train /\n",
" validation / test) — c'est l'exercice propose a la fin du notebook.\n",
"- **MaxDD -78,02 %** : plus des trois quarts du capital perdus au pire moment. C'est le\n",
" chiffre qui disqualifie la strategie, et il doit se lire **avec** le rendement, pas\n",
" a cote : les deux sont les deux faces d'une meme exposition non bornee.\n",
"- **La distribution des actions revele la strategie apprise** : Hold 1 972 (17,5 %),\n",
" **Buy 5 411 (48,0 %)**, **Sell 3 884 (34,4 %)**, Close **13 (0,1 %)**. L'agent\n",
" achete et vend sans relache — 7 762 trades pour 752 pas de validation, une dizaine\n",
" d'ordres par jour de bourse — et n'utilise **quasiment jamais** l'action Close.\n",
" Autrement dit il n'a pas appris a *sortir* d'une position : il la retourne. C'est\n",
" une lecture directe du -78 % de drawdown.\n",
"\n",
"Corollaire pedagogique : un profil aussi actif pose une question que le Sharpe seul ne\n",
"tranche pas — combien de ce +5 406 % survivrait a des frais realistes appliques a\n",
"7 762 allers-retours, et combien vient simplement du marche ? La comparaison a un\n",
"buy-and-hold equipondere sur les memes 15 titres est le controle qui repond, et elle\n",
"est proposee en exercice.\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
Expand Down Expand Up @@ -1971,6 +1921,41 @@
"tags": []
},
"source": [
"### Interpretation\n",
"\n",
"Les metriques ci-dessous decrivent le comportement du checkpoint retenu (episode 60,\n",
"val_sharpe = 1,528) **sur la periode 2022-2024** — celle-la meme qui a servi a le\n",
"selectionner. Ce ne sont donc pas des mesures out-of-sample : la section precedente\n",
"quantifie le biais ascendant (**+2,258** entre le maximum retenu et la moyenne des dix\n",
"evaluations, qui vaut **-0,730**). Ce que ces chiffres decrivent fidelement, en\n",
"revanche, c'est **quelle strategie l'agent a apprise** — et cette lecture-la ne depend\n",
"pas de la question du biais de selection.\n",
"\n",
"- **Rendement total +5 406,52 %** (+283,16 % annualise) sur 2022-2024, pour\n",
" **7 762 trades** et un **win rate de 53,32 %** — a peine au-dessus du pile-ou-face.\n",
" Un rendement a quatre chiffres avec un edge de 3 points sur le hasard ne vient pas\n",
" de la qualite des paris : il vient de leur **nombre** et de leur **taille**, c'est-a-dire\n",
" d'un effet de levier compose sur 752 pas.\n",
"- **Sharpe 1,528 > 0,7** : la barre que le notebook s'etait fixee plus haut est atteinte\n",
" **sur la periode de selection**, et par **une seule** des dix evaluations. Pour savoir\n",
" si elle le serait hors echantillon, il faudrait un troisieme decoupage (train /\n",
" validation / test) — c'est l'exercice propose a la fin du notebook.\n",
"- **MaxDD -78,02 %** : plus des trois quarts du capital perdus au pire moment. C'est le\n",
" chiffre qui disqualifie la strategie, et il doit se lire **avec** le rendement, pas\n",
" a cote : les deux sont les deux faces d'une meme exposition non bornee.\n",
"- **La distribution des actions revele la strategie apprise** : Hold 1 972 (17,5 %),\n",
" **Buy 5 411 (48,0 %)**, **Sell 3 884 (34,4 %)**, Close **13 (0,1 %)**. L'agent\n",
" achete et vend sans relache — 7 762 trades pour 752 pas de validation, une dizaine\n",
" d'ordres par jour de bourse — et n'utilise **quasiment jamais** l'action Close.\n",
" Autrement dit il n'a pas appris a *sortir* d'une position : il la retourne. C'est\n",
" une lecture directe du -78 % de drawdown.\n",
"\n",
"Corollaire pedagogique : un profil aussi actif pose une question que le Sharpe seul ne\n",
"tranche pas — combien de ce +5 406 % survivrait a des frais realistes appliques a\n",
"7 762 allers-retours, et combien vient simplement du marche ? La comparaison a un\n",
"buy-and-hold equipondere sur les memes 15 titres est le controle qui repond, et elle\n",
"est proposee en exercice.\n",
"\n",
"### Interpretation\n",
"\n",
"La courbe de portefeuille, les rendements quotidiens et le drawdown montrent la\n",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -911,8 +911,16 @@
"critique (qui estime la valeur de l'état) lisent l'état **à travers la même représentation interne**.\n",
"C'est la différence avec le DQN de QC-Py-32, qui entraînait deux réseaux séparés (main + target) pour\n",
"la même fonction valeur. Ici, ce que le critique apprend à valoriser guide directement ce que l'acteur\n",
"voit — au prix d'un couplage : un gradient bruité sur l'une des têtes perturbe l'autre à travers la base,\n",
"ce que le terme `value_coef` de la cellule suivante vient équilibrer."
"voit — au prix d'un couplage : un gradient bruité sur l'une des têtes perturbe l'autre à travers la base."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Couplage base partagee et equilibre actor/critic\n",
"\n",
"Le couplage entre la tete acteur et la tete critic par la base partagee se regle en pratique par un hyperparametre : `value_coef`, qui pondere la perte du critique dans la perte totale. Une valeur trop haute gele l'apprentissage de la politique au profit du critique ; trop basse, le critique devient bruyant et destabilise la politique. Sa definition complete apparait dans la section \"Agent PPO avec GAE\", quelques cellules plus loin.\n"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,10 +234,13 @@
"*Note de fidélité* : la docstring historique de l'algorithme annonçait un vecteur\n",
"de 20 éléments alors que le code en construit 18 — la « moyenne mobile » listée\n",
"dans la prose d'origine n'existe pas dans le code. La prose de ce notebook est\n",
"ré-ancrée sur le réel : 18 dimensions, six familles.\n",
"\n",
"***\n",
"\n",
"ré-ancrée sur le réel : 18 dimensions, six familles.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Partie 2 : Algorithme QuantConnect - MLP Forecasting v2.1\n",
"\n",
"L'algorithme implemente :\n",
Expand All @@ -257,7 +260,7 @@
" structure de rendement ; le coût — 7 entraînements mensuels — reste négligeable\n",
" sur Cloud.\n",
"\n",
"Le code source complet est prêt au déploiement — c'est l'objet de la cellule suivante.\n"
"Le code source complet est presente dans la section \"Algorithme QuantConnect\", plus loin dans le notebook, apres l'exercice sur le seuil de probabilite.\n"
]
},
{
Expand Down
Loading