How Price Scaling Changes SABR Volatility Parameters
Summary
The document examines a SABR calibration on Ethereum option data where the fitted alpha parameter changes substantially when strikes and the forward are expressed at a different scale, even though the implied volatilities are unchanged. The questioner interprets the larger alpha from the higher price scale as implausible and asks whether prices should be rescaled before calibration.
The answer illustrates the issue by comparing SABR dynamics under beta equal to one: a diffusion coefficient proportional to the square root of the forward can be rewritten as one proportional to the forward, with a scale-dependent relationship between their coefficients. This helps explain why alpha’s magnitude is not directly comparable across price units or parameterizations. The response is a short interpretation, not a full calibration guide; it assumes beta can be set to one and does not address broader model specification, alternative parameter constraints, or validation of the fitted smile.
Key ideas
- The fitted SABR alpha can depend on the numerical scale used for forward and strike prices.
- A coefficient in a square-root diffusion and one in a proportional diffusion have different scale relationships.
- Parameter magnitude alone should not be interpreted as the asset’s implied volatility.
- The explanation relies on a beta-equals-one assumption and does not provide a complete calibration procedure.
Tags
Full text
# Volatility Mismatch in SABR Calibration
# Volatility Mismatch in SABR Calibration
- 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.
- Example (https://github.com/0xJchen/SABR_Sample/blob/master/test.ipynb)
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
```
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
```
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!
## Answer by Frido (score 1)
https://quant.stackexchange.com/a/76847
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?Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.