Calibration of SABR using Levenberg-Marquardt method
Posted: November 14th, 2017, 10:56 pm
Hi all,
I am currently building a SABR calibrator for swaption normal vols, and based on what I have read in the literature it seems like the Levenberg-Marquardt non-linear optimization method is the most popular approach amongst practitioners.
The LM method involves computing the Jacobian coming from the original vector function to be minimised in a least-square sense, e.g. [normal_implied_vol_i(alpha,beta,rho, eta,strike_i) - vol_i ], where the parameters to calibrate in my case would be alpha, rho and eta (beta is fixed).
Given that I need to compute the Jacobian, am I right in saying that I need to manually code up all the partial derivatives of the implied vol SABR formula with respect to alpha, rho and eta? To me this seems the only logical thing to do if I want to stick to using LM even if it is extremely tedious, but maybe I am over-complicating the problem and there is an alternative way of solving it?
Many thanks to the readers in advance.
Bonus question: the method above involves calibrating directly on vol, but what would be the best approach in case I decide to calibrate directly on swaption prices for different strikes?
I am currently building a SABR calibrator for swaption normal vols, and based on what I have read in the literature it seems like the Levenberg-Marquardt non-linear optimization method is the most popular approach amongst practitioners.
The LM method involves computing the Jacobian coming from the original vector function to be minimised in a least-square sense, e.g. [normal_implied_vol_i(alpha,beta,rho, eta,strike_i) - vol_i ], where the parameters to calibrate in my case would be alpha, rho and eta (beta is fixed).
Given that I need to compute the Jacobian, am I right in saying that I need to manually code up all the partial derivatives of the implied vol SABR formula with respect to alpha, rho and eta? To me this seems the only logical thing to do if I want to stick to using LM even if it is extremely tedious, but maybe I am over-complicating the problem and there is an alternative way of solving it?
Many thanks to the readers in advance.
Bonus question: the method above involves calibrating directly on vol, but what would be the best approach in case I decide to calibrate directly on swaption prices for different strikes?