Re: G2 update
Posted by mike.parkerql on
URL: http://quantlib.414.s1.nabble.com/Re-G2-update-tp3003.html
Hi Nando,
Just a quick(?) update on calibrating the G2 model. Despite appearances, I
have not been idle. Far from it.
I don't seem to be able to calibrate to an arbitrary vol. set with 5 points,
whether they are caps or swaptions. Caps should be easier since with swaptions
we need to deal more with inter-forward-rate correlations (it seems).
If I set arbitrary (within the setting of the model) parameters, and then
perturb those parameters (even dramatically), then I am able to get back to
the original parameters, whether I'm using 5 caps or 5 swaptions. That's the
good news.
The bad news is that it seems as if the downhill simplex method is too simple
to manage this. As Luigi intimated, it finds local mins too attractive and can
get stuck. I had to implement a simulated annealing method to ensure
convergence to the original parameters (I was amazed at how different
calibrated parameters could be with similar exact vols.). Convergence can be S
L O W. Still need to investigate and will send code soon. You guys can
then work your c++ magic on it - I am still a beginner :( .
Also, could you check the code in simplex.cpp. I get better results if one
amends the part of the code in simplex::extrapolate that deals with
constraints. I think I understand the code - I want to go in the direction
opposite the worst point and will adjust factor until I can do so without the
constraints biting. However, I get better results if one simply returns the
highest value when the constraint bites. This will enforce a 1-d contraction
since the point will have a higher value than the next highest value. This
seems to be what the code in extrapolate is attemping, but I suspect that it
actually messes up the determination of the centroid value.
Furthermore, the constraints in G2 need to be specified more correctly to
avoid infinities in the parameters. For example, rho-squared cannot be exactly
1.0., a or b cannot be 0.0, a+b cannot be zero, etc. Invalid constraints cause
bracketing problems.
You need to be aware that different model parameters can lead to the same
implied vols., depending, of course, on your required accuracy measure. And
the parameters can be very different!
To me, this implies that you need to greet any stated set of parameters with
utmost caution - i.e. do not believe any calibration you read !
Returning to the issue of calibration of a model with 5 parameters to 5 data
points. Should it be possible to exactly calibrate to those points?
I originally thought: of course, 5 points, 5 vars, no prob. But now I doubt
it. Can't explain precisely why. For example, should it be possible for G2 to
calibrate to a sinusoidal vol. set ? Nope, I don't think so. Anyway, hope to
have a more complete answer soon.
Mike
--