σμ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 3 · Matrices, señales y estructura›Tema 3.3·~50 minIntermedio

Filtrado de señales y espectros

Posición en la rutaMódulo 3 de 3 · Tema 3 de 5
3.3 Filtrado de señales y espectros
—Puntuación del lab— / 100XP total—Racha—

Suavizar una serie ruidosa y hallar su ritmo

Un filtro convierte una serie en otra mezclando cada valor con sus vecinos. Una media móvil de NNN días es el filtro más simple: cada salida es el promedio de las últimas NNN entradas, así que el ruido disminuye pero la salida también se retrasa. Una media móvil exponencial (MME) da más peso a los días recientes: yt=αxt+(1−α)yt−1y_t=\alpha x_t+(1-\alpha)y_{t-1}yt​=αxt​+(1−α)yt−1​, donde α=2/(N+1)\alpha=2/(N+1)α=2/(N+1) es el peso de suavizado. signal.lfilter(b, a, x) ejecuta un filtro así sobre una serie, usando solo valores pasados y presentes. El retraso medio de una MME es (1−α)/α(1-\alpha)/\alpha(1−α)/α días, y el de una media móvil de NNN días es (N−1)/2(N-1)/2(N−1)/2 días, así que una media de 19 días y una MME con α=0,1\alpha=0{,}1α=0,1 se retrasan ambas unos 9 días.

La segunda tarea es hallar ciclos. signal.periodogram(x) reparte la varianza de una serie por frecuencias, medidas en ciclos por día. Un pico en la frecuencia fff indica un patrón repetido de periodo 1/f1/f1/f días. Con una observación por día solo se ven frecuencias hasta 0,50{,}50,5 ciclos por día, el límite de Nyquist, porque un ciclo más rápido no se distingue de uno más lento. Una advertencia importa muchísimo al operar. signal.filtfilt pasa el filtro hacia delante y luego hacia atrás, lo que elimina el retraso, pero entonces cada salida usa valores futuros. Una señal construida con filtfilt parece perfecta en un backtest y no se puede operar, porque los datos de mañana no están disponibles hoy. Use solo filtros causales como lfilter para todo lo que piense operar.

yt=αxt+(1−α)yt−1,α=2N+1,lag=1−αα  (moving average: N−12),period=1fy_t=\alpha x_t+(1-\alpha)y_{t-1},\quad \alpha=\frac{2}{N+1},\quad \text{lag}=\frac{1-\alpha}{\alpha}\ \ \Big(\text{moving average: }\frac{N-1}{2}\Big),\qquad \text{period}=\frac1fyt​=αxt​+(1−α)yt−1​,α=N+12​,lag=α1−α​  (moving average: 2N−1​),period=f1​(1)
Tres números y un cicloTomemos la serie 10;12;1110;12;1110;12;11 con α=0,5\alpha=0{,}5α=0,5 y empecemos la MME en el primer valor. Entonces y0=10y_0=10y0​=10, y1=0,5⋅12+0,5⋅10=11y_1=0{,}5\cdot12+0{,}5\cdot10=11y1​=0,5⋅12+0,5⋅10=11 e y2=0,5⋅11+0,5⋅11=11y_2=0{,}5\cdot11+0{,}5\cdot11=11y2​=0,5⋅11+0,5⋅11=11. Una media móvil de 3 días de 10;12;11;1310;12;11;1310;12;11;13 da 111111 y luego 121212. Una ventana de 19 días significa α=2/20=0,1\alpha=2/20=0{,}1α=2/20=0,1 y un retraso de (1−0,1)/0,1=9(1-0{,}1)/0{,}1=9(1−0,1)/0,1=9 días. Un ciclo puro que se repite 0,050{,}050,05 veces por día tiene un periodo de 1/0,05=201/0{,}05=201/0,05=20 días, y el periodograma alcanza su pico justo ahí. Con datos reales, los rendimientos diarios de SPY tienen una autocorrelación de orden 1 de solo −0,10-0{,}10−0,10, pero sus cuadrados tienen 0,270{,}270,27 en el retardo 1 y 0,300{,}300,30 en el 5: los días grandes siguen a los días grandes, que es el agrupamiento de volatilidad. Una MME de los rendimientos al cuadrado con peso α=0,06\alpha=0{,}06α=0,06 (RiskMetrics λ=0,94\lambda=0{,}94λ=0,94) llegó a 0,75%0{,}75\%0,75% diario el 21 de agosto de 2026 (11,9%11{,}9\%11,9% anual), muy por debajo del 1,20%1{,}20\%1,20% de toda la muestra. Eso es justo lo que una media lenta del pasado puede decir sin mirar al futuro.
  • Suavizar cuesta retraso: una ventana más larga o un α\alphaα menor quita más ruido y retrasa más la señal.
  • Periodos a partir de picos: un pico del periodograma en la frecuencia fff significa un ciclo de 1/f1/f1/f días, hasta un límite de 0,5 ciclos por día.
  • Solo filtros causales para operar: filtfilt usa el futuro, así que sirve para análisis, nunca para una señal real.

Lab: qué se califica

  • Un paso de MME10 pts
  • Una media móvil10 pts
  • El peso para una ventana10 pts
  • Un periodo a partir de una frecuencia10 pts
  • El retraso de una MME10 pts
  • Qué hace cada rutina15 pts
  • Por qué filtfilt no se puede operar35 pts
0/ 7 respondidos
Ejercicios
1Respuesta numérica10 ptsSin responder

Con α=0,5\alpha=0{,}5α=0,5, y0=10y_0=10y0​=10 y el valor siguiente x1=12x_1=12x1​=12, ¿cuánto vale y1=αx1+(1−α)y0y_1=\alpha x_1+(1-\alpha)y_0y1​=αx1​+(1−α)y0​?

y=y =y=aceptado: ± 0.01
2Respuesta numérica10 ptsSin responder

La serie es 10; 12; 11; 1310 ;\ 12 ;\ 11 ;\ 1310; 12; 11; 13. ¿Cuánto vale la media móvil de 3 días en el último día?

m=m =m=aceptado: ± 0.01
3Respuesta numérica10 ptsSin responder

Una MME debe parecerse a una media de N=19N=19N=19 días. ¿Cuánto vale α=2/(N+1)\alpha=2/(N+1)α=2/(N+1)?

a=a =a=aceptado: ± 0.002
4Respuesta numérica10 ptsSin responder

El periodograma de una serie diaria alcanza su pico en f=0,05f=0{,}05f=0,05 ciclos por día. ¿Cuántos días dura un ciclo?

p=p =p=aceptado: ± 0.1
5Respuesta numérica10 ptsSin responder

Una MME tiene α=0,1\alpha=0{,}1α=0,1. Su retraso medio es (1−α)/α(1-\alpha)/\alpha(1−α)/α días. ¿Cuántos días?

l=l =l=aceptado: ± 0.05
6Emparejar15 ptsSin responder

Empareje cada rutina de scipy.signal con lo que hace.

Elige la pareja de cada elemento de la izquierda.

lfilter
filtfilt
periodogram
detrend
7Explicar con palabras35 ptsSin responder

Una señal hecha con filtfilt no tiene retraso y da un backtest maravilloso. En una o dos frases, explique por qué no se puede operar.

Modo matemáticasEntrada por teclado o LaTeXEjercicio 1 de 7 · 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