σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours scikit-learn›Module 3 · Une évaluation honnête›Sujet 3.4·~1 hAvancé

Validation croisée avec purge et embargo

Position dans le parcoursModule 3 sur 4 · Sujet 4 sur 6
3.4 Validation croisée avec purge et embargo
—Score du lab— / 100XP total—Série—

Une validation croisée qui respecte l'horloge

La validation croisée réutilise les données : elle les coupe en plis, teste sur un pli et entraîne sur le reste. Pour des lignes indépendantes cela marche, mais les étiquettes financières se chevauchent dans le temps. Si l'étiquette de la ligne jjj est le rendement de jjj à j+Hj+Hj+H, sa fenêtre est [j,j+H][j,j+H][j,j+H]. Un pli de test qui couvre les lignes aaa à b−1b-1b−1 a des étiquettes qui couvrent [a,b−1+H][a,b-1+H][a,b−1+H]. Toute ligne d'entraînement dont la fenêtre touche cet intervalle, c'est-à-dire a−H≤j≤b−1+Ha-H\le j\le b-1+Ha−H≤j≤b−1+H, partage des rendements avec les étiquettes de test. Garder de telles lignes laisse le modèle voir une partie de la réponse.

[j, j+H]∩[a, b−1+H]≠∅  ⟺  a−H≤j≤b−1+H⟹a−H≤j≤b−1+H+e[j,\,j+H]\cap[a,\,b-1+H]\neq\varnothing\iff a-H\le j\le b-1+H\qquad\Longrightarrow\qquad a-H\le j\le b-1+H+e[j,j+H]∩[a,b−1+H]=∅⟺a−H≤j≤b−1+H⟹a−H≤j≤b−1+H+e(1)

La purge retire les lignes d'entraînement qui se chevauchent. L'embargo retire encore eee lignes après le pli de test, car les rendements sont autocorrélés et la volatilité se regroupe : les premières lignes après un bloc de test portent encore de l'information sur lui. Dans un schéma walk-forward, l'entraînement vient seulement avant le test, et la même idée devient une marge : entraîner sur les lignes jusqu'à a−H−1a-H-1a−H−1, donc une marge de HHH (plus eee). TimeSeriesSplit de scikit-learn a un argument gap pour cela. Sur le panel mensuel d'actions avec H=3H=3H=3, le coefficient d'information walk-forward vaut 0,03260{,}03260,0326 sans embargo et 0,03270{,}03270,0327 avec 333 mois d'embargo : le nettoyage change peu car le chevauchement est court, mais on ne peut pas le savoir sans le faire.

Compter les lignesPrenons n=100n=100n=100 lignes, un horizon d'étiquette H=5H=5H=5, un pli de test [40,60)[40,60)[40,60) et un embargo e=2e=2e=2. Avant le pli, les lignes 353535 à 393939 chevauchent ses étiquettes : 555 lignes. Après lui, les lignes 606060 à 666666 (jusqu'à b−1+H+e=66b-1+H+e=66b−1+H+e=66) sont retirées : 777 lignes. Le pli garde 100−20−12=68100-20-12=68100−20−12=68 lignes d'entraînement. Dans une version walk-forward avec le même pli de test, les lignes d'entraînement s'arrêtent à 343434 : il y en a 353535, ce que renvoie TimeSeriesSplit de scikit-learn avec une marge de 555.
  • Purger, puis mettre un embargo : retirer les lignes d'entraînement dont les étiquettes touchent celles du test, puis quelques-unes de plus après le test.
  • Une marge en walk-forward : entraîner seulement sur des lignes situées au moins HHH avant le test.
  • Faites-le même si cela change peu : une évaluation propre coûte quelques lignes, une fuite peut coûter une stratégie.

Lab : ce qui est noté

  • Lignes purgées avant le pli10 pts
  • Lignes purgées après le pli15 pts
  • La taille d'entraînement qui reste15 pts
  • Un pli walk-forward avec marge10 pts
  • Quelles lignes sont purgées10 pts
  • Un découpage purgé10 pts
  • Associer le vocabulaire15 pts
  • Pourquoi aussi un embargo15 pts
0/ 8 traités
Exercices
1Réponse numérique10 ptsSans réponse

L'étiquette de la ligne jjj couvre [j,j+H][j,j+H][j,j+H] avec H=5H=5H=5 et le pli de test est formé des lignes 404040 à 595959. Les lignes d'entraînement j≥a−H=35j\ge a-H=35j≥a−H=35 avant le pli chevauchent ses étiquettes. Combien de lignes de 353535 à 393939 sont purgées ?

k=k =k=accepté : ± 0.01
2Réponse numérique15 ptsSans réponse

Après le pli (b=60b=60b=60), les lignes jusqu'à b−1+H+eb-1+H+eb−1+H+e sont retirées avec H=5H=5H=5 et un embargo e=2e=2e=2. Combien de lignes de 606060 à b−1+H+eb-1+H+eb−1+H+e sont retirées ?

k=k =k=accepté : ± 0.01
3Réponse numérique15 ptsSans réponse

Il y a 100100100 lignes, un pli de test de 202020 lignes, 555 lignes purgées avant et 777 après. Combien de lignes d'entraînement restent ?

n=n =n=accepté : ± 0.01
4Réponse numérique10 ptsSans réponse

Un pli walk-forward teste les lignes 404040 à 595959 et n'entraîne que sur les lignes jusqu'à a−H−1a-H-1a−H−1, avec H=5H=5H=5 (marge de 555). Combien a-t-il de lignes d'entraînement, en comptant depuis la ligne 000 ?

n=n =n=accepté : ± 0.01
5Choix10 ptsSans réponse

Dans une validation croisée avec purge, quelles lignes d'entraînement sont retirées ?

6Remettre les étapes dans l'ordre10 ptsSans réponse

Mettez dans l'ordre les étapes de construction d'un pli purgé.

Faites glisser pour réordonner, ou placez le focus sur un élément, Espace pour le soulever, les flèches pour le déplacer et Espace pour le déposer.

  1. 1Retirer les lignes d'entraînement dont la fenêtre touche cet intervalle, plus l'embargo
  2. 2Choisir les lignes de test a à b - 1
  3. 3Ajuster sur les lignes d'entraînement restantes et noter les lignes de test
  4. 4Calculer l'intervalle des fenêtres d'étiquette que couvrent les lignes de test
7Associer15 ptsSans réponse

Associez chaque terme à son sens.

Choisissez le partenaire de chaque élément de gauche.

Horizon d'étiquette H
Purge
Embargo
Marge dans TimeSeriesSplit
8Expliquer avec des mots15 ptsSans réponse

La purge retire déjà les lignes d'entraînement dont les étiquettes chevauchent celles du test. En une ou deux phrases, expliquez pourquoi on ajoute en plus un embargo après le pli de test.

Mode mathsSaisie au clavier ou en LaTeXExercice 1 sur 8 · Ctrl ⏎ pour vérifier

Connectez-vous pour exécuter votre code.

Tous les cours sont gratuits à lire. Créez un compte ou connectez-vous pour exécuter du code, lancer les tests et soumettre ce lab.

  • IDE dans le navigateur avec terminal bash — rien à installer
  • Correction instantanée, XP et votre place dans le parcours
Créer un compteSe connecter
OU
Continuer avec GitHub