σμ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.4·~50 minIntermedio

Minimización y búsqueda de raíces

Posición en la rutaMódulo 1 de 3 · Tema 4 de 6
1.4 Minimización y búsqueda de raíces
—Puntuación del lab— / 100XP total—Racha—

Dos tareas: hallar el punto más bajo, hallar dónde una curva cruza el cero

scipy.optimize resuelve dos tipos de problemas. El primero es minimizar una función f(x)f(x)f(x), es decir, hallar la entrada con la salida más pequeña. Se llama minimize(f, x0), donde x0 es su estimación inicial. El método BFGS sigue la pendiente de fff hacia abajo. Nelder-Mead no necesita pendiente y solo compara valores. SLSQP también acepta límites y restricciones, como pesos que deben sumar 1. La respuesta es solo un mínimo local, el fondo del valle donde empezó, y otro x0 puede dar otra respuesta. Compruebe siempre res.success.

El segundo problema es hallar raíces: resolver g(x)=0g(x)=0g(x)=0. brentq(g, a, b) necesita un intervalo con signos opuestos de ggg en sus extremos, y entonces seguro encuentra una raíz dividiendo el intervalo a la mitad una y otra vez. Tras nnn divisiones el intervalo mide (b−a)/2n(b-a)/2^n(b−a)/2n. newton(g, x0, fprime) usa la pendiente de ggg y es mucho más rápido, pero necesita un buen inicio y puede saltar lejos cuando la pendiente es casi plana. En finanzas, el rendimiento al vencimiento de un bono es una raíz: es la tasa yyy que iguala la fórmula de precio del bono a su precio de mercado. Un paso de Newton es ynuevo=y−g(y)/g′(y)y_{\text{nuevo}}=y-g(y)/g'(y)ynuevo​=y−g(y)/g′(y).

ynew=y−g(y)g′(y),g(y)=51+y+105(1+y)2−98,width after n halvings=b−a2ny_{\text{new}}=y-\frac{g(y)}{g'(y)},\qquad g(y)=\frac{5}{1+y}+\frac{105}{(1+y)^{2}}-98,\qquad \text{width after }n\text{ halvings}=\frac{b-a}{2^{n}}ynew​=y−g′(y)g(y)​,g(y)=1+y5​+(1+y)2105​−98,width after n halvings=2nb−a​(1)
El rendimiento de un bono a dos añosUn bono paga 555 al año y 105105105 a los dos años, y cuesta 989898. Partamos de y=6%y=6\%y=6%. La fórmula de precio da 98,1798{,}1798,17, así que g=0,17g=0{,}17g=0,17. La pendiente es g′=−5/1,062−210/1,063=−180,8g'=-5/1{,}06^{2}-210/1{,}06^{3}=-180{,}8g′=−5/1,062−210/1,063=−180,8. Un paso de Newton da y=0,06−0,17/(−180,8)=6,092%y=0{,}06-0{,}17/(-180{,}8)=6{,}092\%y=0,06−0,17/(−180,8)=6,092%, y brentq en el intervalo [0;0,5][0;0{,}5][0;0,5] confirma la raíz 6,0923%6{,}0923\%6,0923%. Para que la bisección en [0;1][0;1][0;1] quede a menos de 0,0010{,}0010,001 hace falta 2n≥10002^{n}\ge10002n≥1000, o sea n=10n=10n=10 divisiones. Para un mínimo, dos activos con volatilidades 202020 y 101010 y correlación 0,20{,}20,2 tienen covarianza 404040, así que el peso de mínima varianza del primero es (100−40)/(400+100−80)=0,143(100-40)/(400+100-80)=0{,}143(100−40)/(400+100−80)=0,143. Con datos reales, SPY y TLT en 5 4045\,4045404 días desde febrero de 2005 tienen volatilidades de 19,0%19{,}0\%19,0% y 14,6%14{,}6\%14,6% anuales y correlación −0,30-0{,}30−0,30. El peso de mínima varianza en SPY es del 40%40\%40%, con volatilidad de 9,7%9{,}7\%9,7%. Para una función con dos valles, como x4−3x2+xx^{4}-3x^{2}+xx4−3x2+x, minimize desde x0=2x_0=2x0​=2 se detiene en 1,131{,}131,13 y desde x0=−2x_0=-2x0​=−2 en −1,30-1{,}30−1,30, que es el más bajo.
  • Minimizar o resolver: minimize halla un punto bajo, brentq y newton hallan dónde una función vale cero.
  • Un intervalo es una garantía: brentq siempre converge si los signos difieren, mientras que newton es más rápido pero exige un buen inicio.
  • Un mínimo puede ser local: pruebe varios puntos de partida y lea res.success antes de fiarse de res.x.

Lab: qué se califica

  • Un paso de Newton15 pts
  • Divisiones de la bisección10 pts
  • Un peso de mínima varianza15 pts
  • La herramienta adecuada para cada trabajo15 pts
  • Un flujo de volatilidad implícita10 pts
  • Un mínimo posiblemente local10 pts
  • Por qué un intervalo y por qué Newton puede fallar25 pts
0/ 7 respondidos
Ejercicios
1Respuesta numérica15 ptsSin responder

Para el bono anterior, en y=0,06y=0{,}06y=0,06 se tiene g=0,1666g=0{,}1666g=0,1666 y g′=−180,77g'=-180{,}77g′=−180,77. ¿Cuál es la nueva estimación y−g/g′y-g/g'y−g/g′, en porcentaje? Dé tres decimales.

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

Encierra una raíz en [0;1][0;1][0;1]. ¿Cuántas divisiones nnn hacen falta para que el intervalo mida a lo sumo 0,0010{,}0010,001, es decir, 2n≥10002^{n}\ge10002n≥1000?

n=n =n=aceptado: ± 0.01
3Respuesta numérica15 ptsSin responder

Dos activos tienen volatilidades 202020 y 101010 y covarianza 404040. El peso del primero que minimiza la varianza es w=(σb2−c)/(σa2+σb2−2c)w=(\sigma_b^{2}-c)/(\sigma_a^{2}+\sigma_b^{2}-2c)w=(σb2​−c)/(σa2​+σb2​−2c). ¿Cuánto vale www? Dé tres decimales.

w=w =w=aceptado: ± 0.002
4Emparejar15 ptsSin responder

Empareje cada herramienta con la situación en que mejor encaja.

Elige la pareja de cada elemento de la izquierda.

brentq
newton
minimize (SLSQP)
minimize (Nelder-Mead)
5Ordenar los pasos10 ptsSin responder

Ordene los pasos para obtener una volatilidad implícita a partir del precio de una opción.

Arrastra para reordenar, o enfoca un elemento, pulsa Espacio para levantarlo, las flechas para moverlo y Espacio para soltarlo.

  1. 1Revalorar la opción con la respuesta para comprobarla
  2. 2Llamar a brentq en el intervalo
  3. 3Elegir una volatilidad baja y una alta cuyos errores tengan signos opuestos
  4. 4Escribir el error de precio como función de la volatilidad
6Elección10 ptsSin responder

minimize iniciado en x0=2x_0=2x0​=2 sobre una curva con dos valles devolvió x=1,13x=1{,}13x=1,13 con success=True. Sospecha que hay un valle más profundo. ¿Cuál es el mejor paso siguiente?

7Explicar con palabras25 ptsSin responder

En una o dos frases, explique por qué brentq pide dos puntos de signos opuestos y por qué el método de Newton puede fallar aunque sea más rápido.

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