2
$\begingroup$
  • Problem Statement

Hi, I am trying to calibrate SABR on a new asset, which is not 'forward swap rate'. While using the vanillaSABR calibration, I find the parameter 'sigma' (one of model parameters, sigma, alpha, rho, beta) hugely depends on the absolute value of strike/forward-price. That is, if I feed the model with scaled strike/forward-price, with IV fixed, the model output will be completely different.

I follow up the implementation from vanillaSABR (which works well on swap rate data).

Firstly, I am trying to fit the model to ETH option data.

forawrd_price=1600
strikes = [i*100 for i in range(11,22)]
time_to_expiration=0.2558724912480974 # here I am using ETH-29DEC23 options
iv=np.array([0.543,0.496,0.4613000000000001, 0.41789999999999994, 0.3821, 0.3626, 0.3608, 0.3738, 0.395,0.407,0.433])
model = SABR_swaption(F = forawrd_price, # forward rate, scalar
                      K = strikes, # strikes, vector (N X 1)
                      time = time_to_expiration, # expiry (in yrs), scalar
                      vols = iv, # observed market volatilities, vector (N X 1)
                      calibration="SLS_SciPy",
                      beta = 0.5)
model.plot_smile()

print(model.alpha, model.beta, model.rho, model.nu)

===>
13.706637968052135 0.5 -0.04495875656782091 1.8499748021823488

original_price_smile

It looks good. But notice the volatility parameter (alpha=sigma_0) is extremely large. As it represents the asset volatility, it should be around its IV: 0.4 (40%).

Secondly, if we scale the strike and forward-price simultaneously,

forawrd_price=1.6
strikes = [i/10 for i in range(11,22)]
...
print(model.alpha, model.beta, model.rho, model.nu)
===>
0.4331475152825642 0.5 -0.04276820194468185 1.850789849704347

scaled price

This time the volatility parameter alpha is reasonable, which matches IV.

  • Question

Thus I am curious why there's so much discrepancy when fitting assets when we scale the price. If I am about to fit assets whose price has a large absolute value, should I first scale it and re-scale it back? What's the right approach here?

Thank you!

$\endgroup$
0

1 Answer 1

1
$\begingroup$

Let's assume you can calibrate just as well using $\beta = 1$. Then you'd have $$ dF = \alpha \sqrt F dW $$ and $$ dF = \tilde\alpha F dW = (\tilde\alpha \sqrt F) \sqrt F dW $$ So you can make the identification $$ \alpha \sim (\tilde\alpha \sqrt F) $$ In your example $\alpha = 13.71$ and $\tilde \alpha = 0.43$. So I'm guessing the spot price $F_t$ is in the order of magnitude $1016$. Is that close?

$\endgroup$
8
  • $\begingroup$ Thank you Frido. May I ask why when beta=1, in the first equation, we have sqrt(F) instead of F (this term should be F^beta). Also, when beta=1, I find that the calibrated result for both (either scaling price or not) gives the same result (alpha is the same). I updated this example here (github.com/0xJchen/SABR_Sample/blob/master/test_same_beta.ipynb) $\endgroup$
    – anmo
    Commented Sep 29, 2023 at 19:10
  • $\begingroup$ The first is beta is half the second is beta is one. Assuming the choice of beta doesnt affect the calibration too much then the two alphas should be different. I find it a bit strange in your second trial you get the same value for the alphas. $\endgroup$
    – Frido
    Commented Sep 29, 2023 at 19:36
  • $\begingroup$ ok, I understood the meaning of sqrt here. $\endgroup$
    – anmo
    Commented Sep 29, 2023 at 21:47
  • $\begingroup$ Following you answer, what's the real-world meaning of the "order of magnitude" here? Because most of the time we assume beta level is certain. Then assuming beta!=1 (like 0.5), if the underlying price's absolute value (scaling or not) matters so much, how should we calibrate SABR? $\endgroup$
    – anmo
    Commented Sep 29, 2023 at 21:53
  • 1
    $\begingroup$ @anmo The way you calibrate is fine, but for $\beta \neq 1$ you may want to rescale $\alpha$ as I explained to make it into a number that is comparable to implied volatility. $\endgroup$
    – Frido
    Commented Sep 30, 2023 at 8:14

Your Answer

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

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