σμ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.5·~1 h 30 minAvanzado

Proyecto final: calibrar una curva de tipos de Nelson–Siegel y una sonrisa de volatilidad

Posición en la rutaMódulo 3 de 3 · Tema 5 de 5
3.5 Proyecto final: calibrar una curva de tipos de Nelson–Siegel y una sonrisa de volatilidad
—Puntuación del lab— / 100XP total—Racha—

Cuatro números para toda una curva

El mercado cotiza los rendimientos del Tesoro de EE. UU. en diez plazos, de 3 meses a 30 años, pero un banco necesita un tipo para cada fecha. En este proyecto final describe toda la curva con los cuatro números del modelo de Nelson–Siegel: un nivel de largo plazo β₀, una pendiente β₁, una joroba β₂ y una longitud de decaimiento λ en años. Los calibra con las cotizaciones mediante scipy.optimize.least_squares, partiendo de varios valores de λ porque la curva no es lineal en λ, y se queda con el ajuste de menor coste. Con la curva ajustada lee un tipo a plazo, e integra la curva de tipos a plazo instantáneos con integrate.quad para obtener un factor de descuento D(T)=e^(-A/100), donde A es el área bajo la curva a plazo en porcentaje.

La misma curva valora un bono. Cada flujo se descuenta con el rendimiento de su propio plazo, P=Σcᵢ e^(-y(tᵢ)tᵢ/100), y el rendimiento al vencimiento es el tipo único que devuelve el precio, hallado con optimize.brentq. Las opciones funcionan igual: la volatilidad implícita es la raíz de bs_call(σ)-precio, otra vez con brentq. Las cotizaciones reales de opciones no forman parte de los datos compartidos, así que prueba la sonrisa con precios que genera con la función dada bs_call, y ajusta la sonrisa σ(m)=a+b m+c m² en log-moneyness m=ln(K/S) por mínimos cuadrados. Cada función se califica con entradas aleatorias frente a una referencia independiente, y la última prueba ejecuta todo su estudio sobre el archivo real del Tesoro.

y(τ)=β₀+β₁g+β₂ (g-e^(-x)), x=τ/λ, g=(1-e^(-x))/x, D(T)=e^(-A/100)
Qué dice la curva realEl 9 de octubre de 2026, los diez rendimientos cotizados se reproducen con una curva con β₀=5,75%, β₁=-1,52, β₂≈0 y λ=2,7 años, con un error medio de 7,3 puntos básicos. El tipo a plazo entre 5 y 10 años es 5,64%, el factor de descuento a 10 años 0,586 y un bono al 5 % anual a 10 años cuesta 96,70, un rendimiento de 5,29%. El 31 de marzo de 2020, en pleno pánico del mercado, el nivel era 1,87%, el error de ajuste solo 1,7 puntos básicos, el tipo a plazo de 5 a 10 años 1,02%, el factor de descuento a 10 años 0,931 y el mismo bono rendía 0,67%.
  • Calibrar desde varios inicios: la longitud de decaimiento hace el ajuste no lineal, así que un solo inicio puede detenerse en una mala curva.
  • Comprobar por otro camino: el factor de descuento de la curva a plazo integrada debe igualar el obtenido del rendimiento.
  • Las raíces valoran el mercado: un rendimiento al vencimiento y una volatilidad implícita son raíces halladas con brentq sobre un error de precio.

Lab: qué se califica

  • La curva cotizada de un día5 pts
  • El rendimiento de Nelson–Siegel10 pts
  • Calibrar la curva15 pts
  • Un tipo a plazo10 pts
  • Un factor de descuento a partir de tipos a plazo10 pts
  • Un precio de bono desde la curva10 pts
  • Un rendimiento al vencimiento10 pts
  • Una volatilidad implícita10 pts
  • Una sonrisa cuadrática10 pts
  • La calibración completa10 pts
Explorador · lab-sp-11
▾ lab-sp-11
▾ data
…
bash · en el navegador
learner@quantcraft:~/lab-sp-11$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

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