利率

SABR 校準:正常與對數正常市場數據

  • July 22, 2019

這個問題是關於如何理解正常和對數正常的市場報價以及某些模型假設的一些澄清。

所以讓我們定義

  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 $$

對於任何給定的組合 $ F_0,K,T,\sigma_0,\beta,\nu,\rho $ SABR 隱含卷 $ v_{SABR} $ 是使以下關係成立的數量

$$ C_{BS}(F_0,K,T,v_{SABR},1) = C_{SABR}(F_0,K,T,\sigma_0,\beta,\nu,\rho) $$ 請參閱第 89 頁的http://www.math.ku.dk/~rolf/SABR.pdf右側。

現在讓我們假設對於固定的到期/期限,我們得到一組波動性市場報價:

在此處輸入圖像描述

理想情況下,我想校準 SABR 模型。所以當我設置 $ \beta=1 $ 併校準 $ \sigma_0,\nu,\rho $ 對於對數正常的 vols,我非常適合:

在此處輸入圖像描述

但是,當我設置 $ \beta=0 $ 併校準 $ \sigma_0,\nu,\rho $ 對於正常的音量,我的身材很差:

在此處輸入圖像描述

所以我有兩個問題:

  1. 是我對 SABR vol 的定義嗎 $ v_{SABR} $ 正確的?例如,將 $$ C_{BS}(F_0,K,T,v_{SABR},\beta) = C_{SABR}(F_0,K,T,\sigma_0,\beta,\nu,\rho) $$ 也許更正確?請注意,這裡的區別是 $ \beta $ 在 $ C_{BS} $ 而不是在那裡有一個 1。
  2. 可能是我的非典型形狀的**正常 vol市場數據導致 SABR 只能找到不合適的嗎?還是我的 SABR 實施有問題?

我認為您在將輸入轉換為數字時做錯了。正如 dm63 所指出的,正常 vols 以基點為單位引用。

使用您連結的 Hagan 論文中的方程式 A.67a),我們看到(設置 $ \beta = 0 $ )

$$ \sigma_N(K) = \alpha\frac{\xi}{x(\xi)}\left[1+\frac{2-3\rho^2}{24}\nu^2\tau_{exp}\right] $$ 在哪裡 $ \tau_{exp} = 0.25 $ 在你的例子和

$$ \xi = \frac{\nu}{\alpha}(f-K) $$ $$ x(\xi) = \log{\left(\frac{\sqrt{1-2\rho\xi+\xi^2}-\rho+\xi}{1-\rho}\right)} $$ 作為範例,我實現了一個非常簡單(根本沒有優化)的程式碼:

                                       #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")

導致以下擬合:

在此處輸入圖像描述

引用自:https://quant.stackexchange.com/questions/25775