7 votos

Calibración de SABR: Datos de mercado normal vs log-normal

Esta pregunta es sobre cómo entender las comillas del mercado para las volatilidades normales y log-normales junto con ciertas suposiciones de modelo.

Entonces definamos

  1. $C_{BS}(F_0,K,T,\sigma,\beta)=\mathbb{E}[(F_T-K)^+]\quad \text{con}\quad dF_t=\sigma F_t^\beta dW_t$$

  2. $C_{SABR}(F_0,K,T,\sigma_0,\beta,\nu,\rho)=\mathbb{E}[(F_T-K)^+]$ $$\text{con}\quad dF_t=\sigma_t F_t^\beta dW_t,\quad \sigma_t=\nu \sigma_t dZ_t,\quad dW_tdZ_t = \rho dt$$

Y para cualquier combinación dada de $F_0,K,T,\sigma_0,\beta,\nu,\rho$, la volatilidad implícita de SABR $v_{SABR}$ es la cantidad tal que se cumple la siguiente relación

$$C_{BS}(F_0,K,T,v_{SABR},1) = C_{SABR}(F_0,K,T,\sigma_0,\beta,\nu,\rho)$$

Ver http://www.math.ku.dk/~rolf/SABR.pdf lado derecho de la página 89.

Ahora asumamos que para un vencimiento/plazo fijo se nos dan un conjunto de comillas de volatilidad del mercado:

ingrese la descripción de la imagen aquí

Lo ideal sería calibrar el modelo SABR a esto. Entonces, cuando establezco $\beta=1$ y calibro $\sigma_0,\nu,\rho$ a las vols log-normales, obtengo un ajuste muy bueno:

ingrese la descripción de la imagen aquí

Sin embargo, cuando establezco $\beta=0$ y calibro $\sigma_0,\nu,\rho$ a las vols normales, obtengo un ajuste muy pobre:

ingrese la descripción de la imagen aquí

Entonces tengo dos preguntas:

  1. ¿Es correcta mi definición de la volatilidad SABR $v_{SABR}$? Por ejemplo, ¿sería más correcto quizás $$C_{BS}(F_0,K,T,v_{SABR},\beta) = C_{SABR}(F_0,K,T,\sigma_0,\beta,\nu,\rho)$$ Nota que la diferencia aquí es el $\beta$ en $C_{BS$ en lugar de tener un 1 allí.
  2. ¿Quizás mis datos de mercado de volatilidad normal tienen una forma atípica que hace que SABR solo encuentre un ajuste pobre? ¿O es que mi implementación de SABR está defectuosa?

7voto

Mike Smith Puntos 31

Creo que cometiste un error al traducir la entrada a numérico. Como lo señaló dm63, las vols normales se cotizan en puntos básicos.

Usando la ecuación A.67a) del papel de Hagan que vinculaste, vemos (estableciendo $\beta = 0$)

$$\sigma_N(K) = \alpha\frac{\xi}{x(\xi)}\left[1+\frac{2-3\rho^2}{24}\nu^2\tau_{exp}\right]$$

donde $\tau_{exp} = 0.25$ en tu ejemplo y

$$\xi = \frac{\nu}{\alpha}(f-K)$$ $$x(\xi) = \log{\left(\frac{\sqrt{1-2\rho\xi+\xi^2}-\rho+\xi}{1-\rho}\right)}$$

He implementado un código muy simple (no optimizado en absoluto) solo como ejemplo:

                                        #creación de datos
iVol <- c(46.6,49.8,52.3,55.2,58.8,62.8,72,92.2)/10000
strike <- c(0.298,0.798,1.048,1.298,1.548,1.798,2.298,3.298)/100
exp <- 0.25
atmF <- 1.298/100
                                        #función del objeto

f.obj <- function(x,strike,iVol,exp,atmF)
    {
        return(1/length(strike)*sum((iVol-sigma.hat(x,strike,atmF,exp))^2))
    }

# aproximación usando la fórmula A.67a) en el papel de Hagan

sigma.hat <- function(x,strike,atmF,exp)
    {
                                        #x[1] = alpha
                                        #x[2] = nu
                                        #x[3] = rho

        xi <- x[2]/x[1]*(atmF-strike)
        x.xi <- log(((sqrt(1-2*x[3]*xi+xi^2)-x[3]+xi)/(1-x[3])))
        ret <- ifelse(abs(strike-atmF)<10^(-4), x[1]*(1+((2-3*x[3]^2)/(24))*x[2]^2*exp),x[1]*((xi)/(x.xi))*(1+((2-3*x[3]^2)/(24))*x[2]^2*exp))
        return(ret)
    }

                                        # ajustar el modelo

sol1 <- nlm(f.obj, c(atmF, 0.1, 0.5), strike = strike, iVol = iVol, exp= exp, atmF = atmF)$estimate
sol2 <- nlm(f.obj, c(atmF,sol1[2],sol1[3]),strike = strike, iVol = iVol, exp = exp, atmF = atmF)$estimate
sol1
sol2

x.seq <- seq(0.9*min(strike),1.1*max(strike),0.001)
y.seq <- sigma.hat(sol2,x.seq,atmF,exp)*10000

plot(100*x.seq,y.seq,type="l",col="red",xlab = "Strike", ylab = "volatilidad implícita", main = "Modelo Sabr Normal")
points(100*strike,iVol*10000,col="blue")

llevando al siguiente ajuste:

introducir descripción de la imagen aquí

0 votos

Estoy de acuerdo en que la fórmula para $\sigma_N(K)$ es mucho más precisa que la $\sigma_{BS}(K)$ con $\beta=0$.

1 votos

@JaehyukChoi el problema principal aquí no es qué fórmula es más precisa. Se trata de cuál es la salida de la fórmula: volatilidades normales (Bachelier) o volatilidades de Black-Scholes. Si intentas ajustar las volatilidades normales con la fórmula que te da las volatilidades de Black, por supuesto tendrás problemas, a menos que conviertas esas volatilidades de Black de vuelta a volatilidades normales.

0voto

Cody Brimhall Puntos 762

Creo que (1) es el problema. Necesitas comparar las vols normales de mercado con las vols normales implícitas por el modelo sabr. (2) no es el problema - estas vols parecen razonables.

¡Por cierto, expresamos las vols normales en puntos básicos por año, no en porcentaje!

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X