σμ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 1 · La façon de travailler avec les estimateurs›Sujet 1.5·~50 minIntermédiaire

Des pipelines sans fuite

Position dans le parcoursModule 1 sur 4 · Sujet 5 sur 5
1.5 Des pipelines sans fuite
—Score du lab— / 100XP total—Série—

La fuite silencieuse

La fuite signifie que l'information des lignes de test atteint le modèle avant d'être notée. Les formes bruyantes sont faciles à éviter (une variable bâtie sur le cours de demain). La forme silencieuse se cache dans le prétraitement : on choisit les meilleures colonnes, ou on met à l'échelle, ou on comble les trous avec toutes les lignes, et seulement ensuite on découpe pour la validation croisée. Chaque pli de test a déjà influencé le choix, et le score est flatteur. La sélection de variables est le pire coupable, car cent colonnes bruitées en contiennent toujours quelques-unes qui semblent prédictives dans n'importe quel échantillon ; si on les choisit sur toutes les données, les plis de test sont en partie « prédits » par des colonnes choisies parce qu'elles collaient à ces plis mêmes. Le remède structurel est un Pipeline : quand on donne à cross_val_score le pipeline entier, il réajuste l'échelle, la sélection et le modèle sur chaque fenêtre d'entraînement et ne note qu'ensuite la fenêtre de test.

Le lab utilise une question volontairement difficile : les rendements d'hier de 60 autres actifs peuvent-ils prédire si SPY monte aujourd'hui ? Il n'y a presque rien à trouver. L'évaluation avec fuite (SelectKBest(f_classif, k=5) sur toutes les lignes, puis validation croisée TimeSeriesSplit) donne une AUC de 0,534. L'évaluation honnête (normalisation, sélection et régression logistique dans un seul pipeline, réajustés sur chaque fenêtre) donne 0,512. Les 0,022 d'écart sont de la pure fuite. On peut aussi regarder à l'intérieur : cross_validate(modèle, X, y, cv=..., return_estimator=True) renvoie les pipelines ajustés, et estimator.named_steps['select'].get_support(indices=True) liste les colonnes choisies par chacun. Sur les cinq plis, une seule colonne est choisie à chaque fois, ce à quoi ressemble une sélection sur du bruit. Un score calculé avec un pipeline se défend ; un score calculé après « un peu de prétraitement sur tout » non.

  • Découper d'abord, apprendre ensuite : mise à l'échelle, sélection et imputation appartiennent toutes à l'intérieur de la boucle de validation croisée.
  • Un Pipeline est un garde-fou : donnez à cross_val_score le pipeline entier et chaque étape est réajustée sur chaque fenêtre d'entraînement.
  • Regardez ce que chaque pli a choisi : des colonnes qui changent d'un pli à l'autre sont du bruit, pas du signal.

Lab : ce qui est noté

  • L'évaluation avec fuite15 pts
  • Le pipeline10 pts
  • L'évaluation honnête15 pts
  • Ce que chaque pli a choisi20 pts
  • La taille de la fuite10 pts
  • La comparaison sur données réelles30 pts
Explorateur · lab-sl-15
▾ lab-sl-15
▾ data
…
bash · dans le navigateur
learner@quantcraft:~/lab-sl-15$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-sl-15 revient aux fichiers de départ et le terminal est vidé. Votre solution actuelle sera perdue : cette action est irréversible.

Sera réinitialisé
  • main.py → code de départ
  • Historique du terminal et sortie des tests
  • Modifications non soumises
Sera conservé
  • Meilleur score du lab
  • Votre XP et votre série
  • Progression du cours et notes

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