σμ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 SciPy›Módulo 1 · Ajustar y encontrar›Tema 1.3·~45 minIntermedio

Pruebas de hipótesis y bootstrap

Posición en la rutaMódulo 1 de 3 · Tema 3 de 8
1.3 Pruebas de hipótesis y bootstrap
—Puntuación del lab— / 100XP total—Racha—

Una barra de error para cada afirmación

Un backtest dice que una estrategia ganó un 0,05 % al día. ¿Habilidad o suerte? Una prueba de hipótesis responde con un valor p: si la media verdadera fuera cero, ¿con qué frecuencia una muestra se vería tan buena? stats.ttest_1samp(r, 0.0) prueba una media, y stats.ttest_ind(a, b, equal_var=False) compara dos activos sin suponer que son igual de volátiles (prueba de Welch, la opción segura). stats.jarque_bera(r) comprueba si los rendimientos son normales mirando asimetría y curtosis. Un valor p pequeño es evidencia contra la idea probada, no prueba de la idea que nos gusta. Y una prueba vale lo que valen sus supuestos: la prueba t supone colas finas, que los rendimientos diarios no tienen.

Cuando las fórmulas son dudosas, remuestree. El bootstrap extrae muchas muestras con reemplazo de sus datos, recalcula un estadístico cada vez (la media, un ratio de Sharpe, un cuantil) y lee un intervalo de la dispersión de los resultados: stats.bootstrap((r,), stat, method='percentile', random_state=np.random.default_rng(seed)). El estadístico debe aceptar un argumento axis, porque SciPy pasa un lote entero de remuestras de una vez, y la semilla hace repetible la respuesta. Una prueba de permutación baraja las etiquetas de dos grupos para ver con qué frecuencia el azar solo da una diferencia tan grande como la observada. Por último, pruebe 62 activos al 5 % y unos tres parecerán significativos solo por suerte. stats.false_discovery_control(p) aplica la corrección de Benjamini–Hochberg e indica qué descubrimientos sobreviven.

Qué dicen los datos realesEn los últimos 2.500 días de negociación SPY ganó de media un 0,046 % diario, con t=2,80 y p=0,005. Su ratio de Sharpe anualizado es 0,89, y un intervalo bootstrap del 95 % va de 0,26 a 1,53: los datos no lo precisan mejor. De los 62 activos, 22 pasan la prueba al 5 % de media distinta de cero, pero solo 12 sobreviven a la corrección de Benjamini–Hochberg. La prueba de Jarque–Bera rechaza la normalidad de SPY con un valor p de 0.
  • Welch por defecto: no suponga que dos activos comparten volatilidad.
  • Remuestrear ante la duda: un bootstrap necesita un estadístico con argumento axis y una semilla.
  • Cuente sus pruebas: 62 pruebas al 5 % dan unos tres falsos descubrimientos; corríjalos.

Lab: qué se califica

  • ¿La media es cero?8 pts
  • Dos activos, dos volatilidades8 pts
  • Una prueba de normalidad6 pts
  • Un intervalo bootstrap18 pts
  • Un ratio de Sharpe anualizado8 pts
  • Un ratio de Sharpe con barra de error10 pts
  • Una prueba de permutación14 pts
  • Contar falsos descubrimientos12 pts
  • El estudio completo16 pts
Explorador · lab-sp-13
▾ lab-sp-13
▾ data
…
bash · en el navegador
learner@quantcraft:~/lab-sp-13$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

Todo lo que hay en lab-sp-13 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