July 21st, 2010, 2:13 pm
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.