σμ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 AcademyHojas de rutaRutas
Ctrl K
AO
+1,2 k estudiantes
Iniciar sesiónUnirse ↗
Hojas de rutaRutas
AO
+1,2 k estudiantes
Iniciar sesión
  • 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 AcademyHojas de rutaRutas
Ctrl K
AO
+1,2 k estudiantes
Iniciar sesiónUnirse ↗
Hojas de rutaRutas
AO
+1,2 k estudiantes
Iniciar sesión
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Ruta de scikit-learn›Módulo 1 · La forma de trabajar con estimadores›Tema 1.5·~50 minIntermedio

Pipelines a prueba de fugas

Posición en la rutaMódulo 1 de 4 · Tema 5 de 5
1.5 Pipelines a prueba de fugas
—Puntuación del lab— / 100XP total—Racha—

La fuga silenciosa

La fuga significa que la información de las filas de prueba llega al modelo antes de ser puntuada. Las formas ruidosas son fáciles de evitar (una variable construida con el precio de mañana). La forma silenciosa se esconde en el preprocesamiento: se eligen las mejores columnas, o se escala, o se rellenan huecos con todas las filas, y solo después se divide para la validación cruzada. Cada pliegue de prueba ya influyó en la elección y la puntuación resulta halagüeña. La selección de variables es el peor infractor, porque cien columnas ruidosas siempre contienen algunas que parecen predictivas en cualquier muestra; si se eligen con todos los datos, los pliegues de prueba son en parte «predichos» por columnas elegidas porque encajaban con esos mismos pliegues. La solución estructural es un Pipeline: cuando se da a cross_val_score el pipeline completo, reajusta escalado, selección y modelo en cada ventana de entrenamiento y solo luego puntúa la ventana de prueba.

El laboratorio usa una pregunta deliberadamente difícil: ¿pueden los rendimientos de ayer de 60 activos más predecir si SPY sube hoy? Casi no hay nada que encontrar. La evaluación con fuga (SelectKBest(f_classif, k=5) sobre todas las filas y luego validación cruzada TimeSeriesSplit) da un AUC de 0,534. La honesta (escalador, selector y regresión logística en un pipeline, reajustados en cada ventana) da 0,512. Los 0,022 de diferencia son pura fuga. También se puede mirar dentro: cross_validate(modelo, X, y, cv=..., return_estimator=True) devuelve los pipelines ajustados, y estimator.named_steps['select'].get_support(indices=True) enumera las columnas que eligió cada uno. En los cinco pliegues solo una columna se elige siempre, que es lo que parece una selección sobre ruido. Una puntuación calculada con un pipeline se puede defender; una calculada tras «un poco de preprocesamiento sobre todo» no.

  • Primero dividir, luego aprender: el escalado, la selección y la imputación pertenecen al interior del bucle de validación cruzada.
  • Un Pipeline es una protección contra fugas: dé a cross_val_score el pipeline completo y cada paso se reajusta en cada ventana de entrenamiento.
  • Mire lo que eligió cada pliegue: las columnas que cambian de un pliegue a otro son ruido, no señal.

Lab: qué se califica

  • La evaluación con fuga15 pts
  • El pipeline10 pts
  • La evaluación honesta15 pts
  • Lo que eligió cada pliegue20 pts
  • El tamaño de la fuga10 pts
  • La comparación con datos reales30 pts
Explorador · lab-sl-15
▾ lab-sl-15
▾ data
…
bash · en el navegador
learner@quantcraft:~/lab-sl-15$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

Todo lo que hay en lab-sl-15 vuelve a los archivos iniciales y se limpia el terminal. Tu solución actual se perderá: no se puede deshacer.

Se restablecerá
  • main.py → código inicial
  • Historial del terminal y salida de pruebas
  • Cambios sin enviar
Se conservará
  • Mejor puntuación del lab
  • Tu XP y tu racha
  • Progreso de la lección y notas

Inicia sesión para ejecutar tu código.

Todas las clases se pueden leer gratis. Crea una cuenta o inicia sesión para ejecutar código, lanzar las pruebas y enviar este lab.

  • IDE en el navegador con terminal bash — sin instalar nada
  • Corrección instantánea, XP y tu lugar en la ruta
Crear una cuentaIniciar sesión
O
Continuar con GitHub