σμ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 3 · Evaluación honesta›Tema 3.4·~1 hAvanzado

Validación cruzada con purga y embargo

Posición en la rutaMódulo 3 de 4 · Tema 4 de 6
3.4 Validación cruzada con purga y embargo
—Puntuación del lab— / 100XP total—Racha—

Validación cruzada que respeta el reloj

La validación cruzada reutiliza los datos: los corta en pliegues, prueba con uno y entrena con el resto. Para filas independientes funciona, pero las etiquetas financieras se solapan en el tiempo. Si la etiqueta de la fila jjj es el rendimiento de jjj a j+Hj+Hj+H, su ventana es [j,j+H][j,j+H][j,j+H]. Un pliegue de prueba que cubre las filas aaa a b−1b-1b−1 tiene etiquetas que cubren [a,b−1+H][a,b-1+H][a,b−1+H]. Toda fila de entrenamiento cuya ventana toque ese rango, es decir a−H≤j≤b−1+Ha-H\le j\le b-1+Ha−H≤j≤b−1+H, comparte rendimientos con las etiquetas de prueba. Conservar esas filas deja que el modelo vea parte de la respuesta.

[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 purga elimina las filas de entrenamiento que se solapan. El embargo elimina un tramo más de eee filas tras el pliegue de prueba, porque los rendimientos están autocorrelacionados y la volatilidad se agrupa, así que las primeras filas tras un bloque de prueba aún llevan información sobre él. En un esquema walk-forward el entrenamiento solo va antes de la prueba y la misma idea se vuelve un hueco: entrenar con las filas hasta a−H−1a-H-1a−H−1, de modo que el hueco es HHH (más eee). TimeSeriesSplit de scikit-learn tiene un argumento gap para esto. En el panel mensual de acciones con H=3H=3H=3, el coeficiente de información walk-forward es 0,03260{,}03260,0326 sin embargo y 0,03270{,}03270,0327 con 333 meses de embargo: la limpieza cambia poco porque el solapamiento es corto, pero no se puede saber sin hacerlo.

Contar las filasTomemos n=100n=100n=100 filas, un horizonte de etiqueta H=5H=5H=5, un pliegue de prueba [40,60)[40,60)[40,60) y un embargo e=2e=2e=2. Antes del pliegue, las filas 353535 a 393939 solapan sus etiquetas: 555 filas. Después, se eliminan las filas 606060 a 666666 (hasta b−1+H+e=66b-1+H+e=66b−1+H+e=66): 777 filas. El pliegue conserva 100−20−12=68100-20-12=68100−20−12=68 filas de entrenamiento. En una versión walk-forward con el mismo pliegue de prueba, las filas de entrenamiento terminan en la 343434, así que hay 353535, que es lo que devuelve TimeSeriesSplit de scikit-learn con un hueco de 555.
  • Purgar y luego embargar: quitar las filas de entrenamiento cuyas etiquetas tocan las de prueba y unas pocas más después de la prueba.
  • Un hueco en walk-forward: entrenar solo con filas al menos HHH antes de la prueba.
  • Hágalo aunque cambie poco: una evaluación limpia cuesta unas filas, una fuga puede costar una estrategia.

Lab: qué se califica

  • Filas purgadas antes del pliegue10 pts
  • Filas purgadas después del pliegue15 pts
  • El tamaño de entrenamiento que queda15 pts
  • Un pliegue walk-forward con hueco10 pts
  • Qué filas se purgan10 pts
  • Una partición purgada10 pts
  • Emparejar el vocabulario15 pts
  • Por qué también un embargo15 pts
0/ 8 respondidos
Ejercicios
1Respuesta numérica10 ptsSin responder

La etiqueta de la fila jjj cubre [j,j+H][j,j+H][j,j+H] con H=5H=5H=5 y el pliegue de prueba son las filas 404040 a 595959. Las filas de entrenamiento j≥a−H=35j\ge a-H=35j≥a−H=35 antes del pliegue solapan sus etiquetas. ¿Cuántas filas de la 353535 a la 393939 se purgan?

k=k =k=aceptado: ± 0.01
2Respuesta numérica15 ptsSin responder

Tras el pliegue (b=60b=60b=60), se eliminan las filas hasta b−1+H+eb-1+H+eb−1+H+e con H=5H=5H=5 y un embargo e=2e=2e=2. ¿Cuántas filas de la 606060 a b−1+H+eb-1+H+eb−1+H+e se eliminan?

k=k =k=aceptado: ± 0.01
3Respuesta numérica15 ptsSin responder

Hay 100100100 filas, un pliegue de prueba de 202020 filas, 555 filas purgadas antes y 777 después. ¿Cuántas filas de entrenamiento quedan?

n=n =n=aceptado: ± 0.01
4Respuesta numérica10 ptsSin responder

Un pliegue walk-forward prueba las filas 404040 a 595959 y entrena solo con las filas hasta a−H−1a-H-1a−H−1, con H=5H=5H=5 (hueco de 555). ¿Cuántas filas de entrenamiento tiene, contando desde la fila 000?

n=n =n=aceptado: ± 0.01
5Elección10 ptsSin responder

En validación cruzada con purga, ¿qué filas de entrenamiento se descartan?

6Ordenar los pasos10 ptsSin responder

Ponga en orden los pasos para construir un pliegue purgado.

Arrastra para reordenar, o enfoca un elemento, pulsa Espacio para levantarlo, las flechas para moverlo y Espacio para soltarlo.

  1. 1Quitar las filas de entrenamiento cuyas ventanas tocan ese rango, más el embargo
  2. 2Elegir las filas de prueba a a b - 1
  3. 3Ajustar con las filas de entrenamiento restantes y puntuar las filas de prueba
  4. 4Calcular el rango de ventanas de etiqueta que cubren las filas de prueba
7Emparejar15 ptsSin responder

Empareje cada término con su significado.

Elige la pareja de cada elemento de la izquierda.

Horizonte de etiqueta H
Purga
Embargo
Hueco en TimeSeriesSplit
8Explicar con palabras15 ptsSin responder

La purga ya descarta las filas de entrenamiento cuyas etiquetas solapan las de prueba. En una o dos frases, explique por qué se añade además un embargo tras el pliegue de prueba.

Modo matemáticasEntrada por teclado o LaTeXEjercicio 1 de 8 · Ctrl ⏎ para comprobar

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