Page 1 of 1
Is there any good way to calibration SVI or SABR models?
Posted: July 12th, 2010, 8:26 am
by OPTION88
Hi bro,I have tried Levenberg-Marquardt algo to calibration these models.I want to find other numerical metods to fit the market data and let the squre-error of the fitting result less than LM algo result.
Is there any good way to calibration SVI or SABR models?
Posted: July 12th, 2010, 1:13 pm
by Antonio
Hello,As far as I am concerned the best way to perform such a calibration is to ensure that you have good initial starting points.For instance, concerning SVI,(i) use the atm as well as the slopes of the wings to infer initial parameters given your observed smile(ii) then use these initial points to calibrate your data.You can do the same for SABR using the closed-form approximation.Axel Vogt had some very good and clear Maple sheets doing this for SVI, this should be helpful.Best,Jack
Is there any good way to calibration SVI or SABR models?
Posted: July 13th, 2010, 3:17 am
by FinancialAlex
Take a look at this oneArticle linkAlso, one other way is to use a hybrid optimizer:a) 10-20 iterations of a good global optimizer (such as Differential Evolution)b) then use that output as initial guess for good local optimizer (such as L-BFGS)
Is there any good way to calibration SVI or SABR models?
Posted: July 13th, 2010, 7:50 am
by OPTION88
Thanks...Do you have reference for L-BFGS
Is there any good way to calibration SVI or SABR models?
Posted: July 21st, 2010, 2:13 pm
by SeniorMember
Hi,Personally, I implemented SVI fitting with Matlab, using its fmincon function. It works real fine.First, create a function taking all the SVI parameters in (just 5 for a single smile, or 5N for a surface built on N distinct smiles) as well as the raw volatility points and outputting the mean-square error (or every other error stat you prefer). Then create a constraints function taking the parameters in and outputting a vector of all the inequalities you want to check. Basically, there's an "on smile" one involving 2-3 parameters and time to expiry and there's a "smiles against one another" one if, again, you're fitting many smiles. The later asks for the smiles, expressed in total variance, to be strictly increasing in their whole. In my case, I choose a specific collection of log-moneyness values (say -2 to 1 step 0.1 for example) and I add the spread between two consecutive smiles on each of these points to the inequalities vector.For the starting point, my solution is to use the parameters of the previous day's fitting. On the not too long run (few days), it settles pretty nicely. The first fit uses a generic parameters set. We have technicians here who look at the surfaces daily and can decide to re-run the fit by forcing the use of the generic set if there seems to be some "overfitting" ongoing. They can also delete outlying points and re-run the fit if they see wierd looking vol surfaces.I implemented SVI for the equities market, the FX markets and the interest rate swaptions volatilities with great results. For FX, you obviously have to translate the vol quotes from "by-delta" to "by-moneyness" and there are some other issues as well. For swaptions, the time-arbitrage constraint does not exists. There's another arbitrage condition though (let S(t1,t2) be a swaption with maturity at t1 on a swap running from t1 to t2, then you must have S(t1,t2)+S(t2,t3)>S(t1,t3) with t1<t2<t3) but it's real slow to check for it. I don't check for it. I fit each smile independently in that specific case.It's a model-independent approach in some ways because it simply uses a V-shaped curve that can be tweaked in every way a smile can look and it checks for simple arbitrage constraints. So one could expect the SVI method to work for a long time. The obvious downside, and the reason why it isn't useful for everybody, is that it doesn't infer any information on the underlying instrument process. In my case, I just want to price simple derivatives so that's fine.So that's pretty much it for my experience with SVI. Hope it helps.