σμ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 2 · Curvas e integrales›Tema 2.3·~40 minIntermedio

Funciones especiales en la valoración de opciones

Posición en la rutaMódulo 2 de 3 · Tema 3 de 3
2.3 Funciones especiales en la valoración de opciones
—Puntuación del lab— / 100XP total—Racha—

Las funciones detrás de las fórmulas

scipy.special reúne las funciones con nombre que aparecen una y otra vez en las fórmulas. La más útil en finanzas es la función de distribución normal Φ(x)\Phi(x)Φ(x), disponible como special.ndtr. Está ligada a la función de error por Φ(x)=12(1+erf⁡(x/2))\Phi(x)=\tfrac12\big(1+\operatorname{erf}(x/\sqrt2)\big)Φ(x)=21​(1+erf(x/2​)). El precio de Black–Scholes de una opción de compra con spot SSS, ejercicio KKK, tipo rrr, volatilidad σ\sigmaσ y plazo TTT la usa dos veces: C=S Φ(d1)−Ke−rTΦ(d2)C=S\,\Phi(d_1)-K e^{-rT}\Phi(d_2)C=SΦ(d1​)−Ke−rTΦ(d2​), donde d1=ln⁡(S/K)+(r+σ2/2)TσTd_1=\dfrac{\ln(S/K)+(r+\sigma^2/2)T}{\sigma\sqrt T}d1​=σT​ln(S/K)+(r+σ2/2)T​ y d2=d1−σTd_2=d_1-\sigma\sqrt Td2​=d1​−σT​. La sensibilidad del precio a la volatilidad se llama vega y vale S φ(d1)TS\,\varphi(d_1)\sqrt TSφ(d1​)T​, donde φ\varphiφ es la densidad normal. La vega es lo que necesita un solucionador de Newton para hallar una volatilidad implícita.

El otro grupo de funciones especiales trata de números demasiado grandes o pequeños. Un factorial crece tan rápido que 171!171!171! ya desborda un número decimal normal en un ordenador, pero ln⁡n!\ln n!lnn! es fácil: special.gammaln(n+1). special.comb(n, k) cuenta los caminos con kkk subidas en un árbol de nnn pasos. special.logsumexp calcula ln⁡∑exi\ln\sum e^{x_i}ln∑exi​ con seguridad sacando el mayor xxx, de modo que ln⁡(e1000+e1000)=1000+ln⁡2\ln(e^{1000}+e^{1000})=1000+\ln2ln(e1000+e1000)=1000+ln2 no desborda. special.expit(x)=1/(1+e^{-x}) convierte cualquier puntuación en una probabilidad entre 0 y 1, como en un modelo logístico. La regla: trabajar en logaritmos cuando un número puede ser enorme o minúsculo y exponenciar solo al final.

Φ(x)=12(1+erf⁡(x2)),C=SΦ(d1)−Ke−rTΦ(d2),vega=S φ(d1)T,ln⁡∑exi=m+ln⁡∑exi−m\Phi(x)=\tfrac12\Big(1+\operatorname{erf}\Big(\frac{x}{\sqrt2}\Big)\Big),\qquad C=S\Phi(d_1)-Ke^{-rT}\Phi(d_2),\qquad \text{vega}=S\,\varphi(d_1)\sqrt T,\qquad \ln\sum e^{x_i}=m+\ln\sum e^{x_i-m}Φ(x)=21​(1+erf(2​x​)),C=SΦ(d1​)−Ke−rTΦ(d2​),vega=Sφ(d1​)T​,ln∑exi​=m+ln∑exi​−m(1)
Un precio de opción de compra y un paso de volatilidad implícitaTomemos S=K=100S=K=100S=K=100, r=0r=0r=0, σ=0,2\sigma=0{,}2σ=0,2 y T=1T=1T=1. Entonces d1=0,1d_1=0{,}1d1​=0,1 y d2=−0,1d_2=-0{,}1d2​=−0,1, y Φ(0,1)=0,5398\Phi(0{,}1)=0{,}5398Φ(0,1)=0,5398, Φ(−0,1)=0,4602\Phi(-0{,}1)=0{,}4602Φ(−0,1)=0,4602. Así C=100⋅(0,5398−0,4602)=7,97C=100\cdot(0{,}5398-0{,}4602)=7{,}97C=100⋅(0,5398−0,4602)=7,97. La densidad normal en 0,10{,}10,1 es 0,39700{,}39700,3970, así que la vega es 100⋅0,3970⋅1=39,70100\cdot0{,}3970\cdot1=39{,}70100⋅0,3970⋅1=39,70. Si el precio de mercado es 9,009{,}009,00, el precio queda bajo por 1,031{,}031,03, y un paso de Newton sube la volatilidad a 0,2+1,03/39,70=0,22610{,}2+1{,}03/39{,}70=0{,}22610,2+1,03/39,70=0,2261. Para Φ(1)\Phi(1)Φ(1) se puede usar erf⁡(0,7071)=0,6827\operatorname{erf}(0{,}7071)=0{,}6827erf(0,7071)=0,6827, así que Φ(1)=12(1+0,6827)=0,8413\Phi(1)=\tfrac12(1+0{,}6827)=0{,}8413Φ(1)=21​(1+0,6827)=0,8413. En las herramientas pequeñas, expit⁡(2)=0,8808\operatorname{expit}(2)=0{,}8808expit(2)=0,8808, ln⁡4!=3,178\ln 4!=3{,}178ln4!=3,178 y (103)=120\binom{10}{3}=120(310​)=120. Con datos reales, el rendimiento diario de SPY tiene una desviación típica de 1,196%1{,}196\%1,196%. Una caída del 5%5\%5% es z=−4,21z=-4{,}21z=−4,21 desviaciones, y Φ(−4,21)=1,26⋅10−5\Phi(-4{,}21)=1{,}26\cdot10^{-5}Φ(−4,21)=1,26⋅10−5, que un modelo normal dice que ocurre una vez cada unos 315315315 años. En los 5 4035\,4035403 días de datos, ocurrió en 202020 días.
  • Nombrar la función: ndtr, erf, expit, gammaln, comb y logsumexp sustituyen páginas de matemáticas escritas a mano.
  • Trabajar en logaritmos con extremos: use gammaln y logsumexp en lugar de un factorial o una suma de exponenciales enormes.
  • La vega guía al solucionador: un paso de Newton para la volatilidad implícita es la diferencia de precio dividida por la vega.

Lab: qué se califica

  • La función normal a partir de erf10 pts
  • Una opción de compra de Black–Scholes20 pts
  • La vega10 pts
  • Un paso de volatilidad implícita15 pts
  • Para qué sirve cada función15 pts
  • La forma segura de sumar10 pts
  • Por qué calcular factoriales con logaritmos20 pts
0/ 7 respondidos
Ejercicios
1Respuesta numérica10 ptsSin responder

Sabiendo que erf⁡(0,7071)=0,6827\operatorname{erf}(0{,}7071)=0{,}6827erf(0,7071)=0,6827, calcule Φ(1)=12(1+erf⁡(1/2))\Phi(1)=\tfrac12\big(1+\operatorname{erf}(1/\sqrt2)\big)Φ(1)=21​(1+erf(1/2​)). Dé cuatro decimales.

p=p =p=aceptado: ± 0.0005
2Respuesta numérica20 ptsSin responder

Con S=K=100S=K=100S=K=100, r=0r=0r=0, σ=0,2\sigma=0{,}2σ=0,2, T=1T=1T=1 se obtiene d1=0,1d_1=0{,}1d1​=0,1, d2=−0,1d_2=-0{,}1d2​=−0,1, Φ(0,1)=0,5398\Phi(0{,}1)=0{,}5398Φ(0,1)=0,5398 y Φ(−0,1)=0,4602\Phi(-0{,}1)=0{,}4602Φ(−0,1)=0,4602. ¿Cuánto vale C=SΦ(d1)−KΦ(d2)C=S\Phi(d_1)-K\Phi(d_2)C=SΦ(d1​)−KΦ(d2​)? Dé dos decimales.

c=c =c=aceptado: ± 0.03
3Respuesta numérica10 ptsSin responder

La densidad normal en d1=0,1d_1=0{,}1d1​=0,1 es φ(0,1)=0,3970\varphi(0{,}1)=0{,}3970φ(0,1)=0,3970. Con S=100S=100S=100 y T=1T=1T=1, ¿cuánto vale la vega =S φ(d1)T=S\,\varphi(d_1)\sqrt T=Sφ(d1​)T​? Dé dos decimales.

v=v =v=aceptado: ± 0.1
4Respuesta numérica15 ptsSin responder

El precio de mercado es 9,009{,}009,00 y el precio del modelo con σ=0,2\sigma=0{,}2σ=0,2 es 7,96567{,}96567,9656, con vega 39,7039{,}7039,70. ¿Cuál es la nueva volatilidad σ+(mercado−modelo)/vega\sigma+(\text{mercado}-\text{modelo})/\text{vega}σ+(mercado−modelo)/vega? Dé cuatro decimales.

s=s =s=aceptado: ± 0.0005
5Emparejar15 ptsSin responder

Empareje cada función de scipy.special con su tarea.

Elige la pareja de cada elemento de la izquierda.

ndtr
expit
gammaln
logsumexp
comb
6Elección10 ptsSin responder

Necesita ln⁡(e1000+e1002)\ln(e^{1000}+e^{1002})ln(e1000+e1002) en un ordenador. ¿Qué forma es segura?

7Explicar con palabras20 ptsSin responder

Una probabilidad binomial para un árbol de 200 pasos contiene 200!200!200!. En una o dos frases, explique por qué conviene calcularla con gammaln y logaritmos.

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