Using Log Moneyness as the SVI Smile Input
Summary
The document demonstrates a common SVI implementation mistake: feeding strike prices directly into the smile formula when the plotted horizontal axis uses log moneyness. In the example, the strike grid is converted to log strike over forward, and that transformed variable is then used both in the SVI expression and in the plot. The resulting implied volatility is obtained by taking the square root of total variance divided by maturity.
The correction is shown in a short MATLAB example, but the document provides no plotted output, calibration procedure, or discussion of parameter constraints. It is therefore a narrow implementation note rather than a full treatment of SVI fitting. The key lesson is to ensure the model input and displayed x-axis use the same coordinate: SVI parameters describe a function of log-forward moneyness, not raw strike levels. Parameter choices and arbitrage checks still require separate validation.
Key ideas
- The SVI smile is evaluated using log-forward moneyness rather than raw strike.
- Compute log strike over forward and pass that same coordinate into the parametrization.
- The plotted implied volatility is the square root of total variance divided by maturity.
- The example corrects an input-variable mismatch but does not explain calibration or arbitrage constraints.
Tags
Full text
# SVI Parametrization: simple example does not work # SVI Parametrization: simple example does not work I'm trying to experiment with the SVI model. I use the following scripts: ``` a = 0.05; b = 0.3; rho = -0.35; m = 0; sigma = 0.15; S0 = 100; r = 0.033; q = 0.0022; T = 0.26; F0 = S0*exp((r-q)*T); k = (50:0.5:120); iv = a+b*(rho*(k-m)+((k-m).^2+sigma^2).^(1/2)); plot(log(k/F0),(iv/T).^(1/2)); ``` Matlab returns me the following: What is the problem here? It doesn't work while it is simply fitting the parametrization. ## Answer by user16651 (score 3, accepted) https://quant.stackexchange.com/a/29674 ``` a = 0.05; b = 0.3; rho = -0.35; m = 0; sigma = 0.15; S0 = 100; r = 0.033; q = 0.0022; T = 0.26; F0 = S0*exp((r-q)*T); k = (50:0.5:120); x=log(k/F0); iv = a+b*(rho*(x-m)+((x-m).^2+sigma^2).^(1/2)); plot(x,(iv/T).^(1/2)); ```
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.