7
$\begingroup$

This question is about getting some clarification as to how to understand market quotes for normal & log-normal vols together with certain model assumptions.

So let us define

  1. $C_{BS}(F_0,K,T,\sigma,\beta)=\mathbb{E}[(F_T-K)^+]\quad \text{with}\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{with}\quad dF_t=\sigma_t F_t^\beta dW_t,\quad \sigma_t=\nu \sigma_t dZ_t,\quad dW_tdZ_t = \rho dt$$

And for any given combination of $F_0,K,T,\sigma_0,\beta,\nu,\rho$ the SABR-implied vol $v_{SABR}$ is the quantity such that the following relationship holds

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

See http://www.math.ku.dk/~rolf/SABR.pdf right-hand side of page 89.

Now let us assume that for a fixed expiry/tenor we are given a set of volatility market quotes:

enter image description here

Ideally, I want to calibrate the SABR model to it. So when I set $\beta=1$ and calibrate $\sigma_0,\nu,\rho$ to the log-normal vols, I get a very nice fit:

enter image description here

However, when I set $\beta=0$ and calibrate $\sigma_0,\nu,\rho$ to the normal vols, I get a very poor fit:

enter image description here


So I have two questions:

  1. Is my definition of the SABR vol $v_{SABR}$ correct? For example, would $$C_{BS}(F_0,K,T,v_{SABR},\beta) = C_{SABR}(F_0,K,T,\sigma_0,\beta,\nu,\rho)$$ perhaps be more correct? Note that the difference here is the $\beta$ in $C_{BS}$ as opposed to having a 1 there.
  2. Is maybe my normal vol market data of an atypical shape causing SABR to only find a poor fit? Or is my SABR implementation faulty?
$\endgroup$

2 Answers 2

7
$\begingroup$

I think you did something wrong in translating the input to numerics. As pointed out by dm63 normal vols are quoted in basis points.

Using equation A.67a) from the Hagan paper you linked we see (setting $\beta = 0$)

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

where $\tau_{exp} = 0.25$ in your example and

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

I've implemented a very simple (not at all optimized) code just as an example:

                                        #maket data
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
                                        #object function

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

# approximatino using formula A.67a) in Hagan paper

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)
    }

                                        # fit the model

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 = "implied Vol", main = "Sabr Normal model")
points(100*strike,iVol*10000,col="blue")

leading to the following fit:

enter image description here

$\endgroup$
2
  • $\begingroup$ Agree that the formula for $\sigma_N(K)$ is way more accurate than the $\sigma_{BS}(K)$ with $\beta=0$. $\endgroup$
    – jChoi
    Oct 13, 2018 at 17:34
  • 1
    $\begingroup$ @JaehyukChoi the main issue here is not about which formula is more accurate. This is about what the formula output is: normal (Bachelier) vols or Black-Scholes vols. If you try to fit normal vols with the formula that gives you Black vols, you will of course run into problems, unless you convert those Black vols back to normal vols. $\endgroup$
    – jherek
    Mar 20, 2019 at 21:34
0
$\begingroup$

I think (1) is the issue. You need to compare market normal vols to normal vols implied by the sabr model. (2) is not the issue - these vols look reasonable.

By the way we express normal vols in bp per annum, not percent!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.