σμ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 Hidden Markov Models›Módulo 3 · Regímenes de mercado›Tema 3.4·~1 h 40 minAvanzado

Proyecto final: un detector de regímenes alcista bajista y de crisis con datos de índice

Posición en la rutaMódulo 3 de 3 · Tema 4 de 4
3.4 Proyecto final: un detector de regímenes alcista bajista y de crisis con datos de índice
—Puntuación del lab— / 100XP total—Racha—

Un detector de regímenes que construye usted mismo

En este proyecto final construye un modelo oculto de Markov solo con NumPy y lo ejecuta sobre veinte años de SPY. El modelo dice que cada día el mercado está en uno de tres regímenes ocultos, tranquilo, normal o tormentoso, que nunca se ven. Cada régimen tiene su rendimiento y su volatilidad típicos, y el régimen de mañana depende solo del de hoy mediante una matriz de transición A. El paso hacia adelante convierte los rendimientos en una probabilidad para cada régimen cada día. Un paso hacia atrás añade lo que dicen los días posteriores. Viterbi halla el único camino más probable. Baum-Welch repite estos pasos para aprender los números de los regímenes a partir de los datos.

αₜ=((αₜ₋₁A)·Bₜ)/cₜ, βₜ=(A (Bₜ₊₁·βₜ₊₁))/(cₜ₊₁), γₜ=(αₜ·βₜ)/(Σ(αₜ·βₜ)), log L=Σₜlog cₜ

Todo está escalado. Dividir los números hacia adelante de cada día por su suma cₜ evita que se encojan hasta cero tras miles de días, y la suma de los log cₜ es exactamente la log-verosimilitud. Viterbi trabaja con logaritmos por la misma razón. En el paso de Baum-Welch las probabilidades suavizadas γ hacen de pesos: la media y la volatilidad de cada régimen son la media ponderada y la dispersión ponderada de los rendimientos, y los recuentos de transición vienen de la probabilidad de pasar de i a j cada día. Cada ronda solo puede subir la log-verosimilitud, lo que es una buena prueba de su código. En la última función usa los regímenes ajustados para operar: una señal predice la probabilidad de crisis desde el día anterior (honesta) y la otra la lee de las probabilidades suavizadas (con mirada adelante).

Qué dicen los datos realesCon los 5 404 rendimientos de SPY desde 2005, cuarenta rondas desde un comienzo tosco hallan tres regímenes con volatilidades anuales de alrededor del 8%, 19% y 51%. Sus medias anuales son de unos +30%, -1% y -73%, y cada régimen es muy pegajoso: se queda en su sitio cerca del 96% al 97% de los días. La log-verosimilitud sube de unos 17 544 a 17 803. A lo largo del camino de Viterbi el mercado pasa cerca del 52% de los días en el régimen tranquilo, el 41% en el normal y el 6% en el de crisis. Permanecer invertido solo mientras la probabilidad de crisis está por debajo de un medio da un ratio de Sharpe anual de 0,52 para comprar y mantener, 0,66 para la señal filtrada honesta y 1,12 para la suavizada. Esa última diferencia es la trampa de mirar adelante en acción.
  • Escale cada paso: divida por la suma del día y sume los logaritmos, o miles de días se hunden hasta cero.
  • Compruebe por fuerza bruta: en pocos días puede listar todos los caminos de estados y comparar. La log-verosimilitud nunca debe bajar de una ronda a otra.
  • Solo señales honestas: prediga mañana con las probabilidades filtradas de hoy. Las suavizadas halagan el backtest.
Simplificaciones que recordarLos rendimientos dentro de un régimen se tratan como normales e independientes, lo que ignora las colas gruesas. El número de regímenes se fija en tres. El modelo se ajusta una vez con toda la muestra, así que incluso la señal filtrada honesta usa números aprendidos del futuro. Una prueba estricta reajusta solo con el pasado y añade costes de operación. El umbral de un medio no está optimizado.

Lab: qué se califica

  • Probabilidades de emisión10 pts
  • El algoritmo hacia adelante20 pts
  • El algoritmo hacia atrás10 pts
  • El suavizado5 pts
  • La decodificación de Viterbi15 pts
  • El ajuste de Baum-Welch25 pts
  • El estudio de regímenes15 pts
Explorador · lab-hm-10
▾ lab-hm-10
▾ data
…
bash · en el navegador
learner@quantcraft:~/lab-hm-10$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

Todo lo que hay en lab-hm-10 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