Dear all, I have a problem with the sabr model ( implementation in ql/termstructures/volatility/sabr.cpp). There is an approximation for close to at the money that I still don't know where it comes from. The multiplier is z/xx, but close to ATM there is what looks like a Taylor expansion but I couldn't figure out what is being expanded and about what point. Can someone tell me what's going on there? I am using Hagan's paper on SABR and I see nothing similar. If you can give me another reference where that approximation is to be found, or if you can tell me how to deduce it, I would appreciate.
Thanks a lot in advance and regards to everyone. Eduardo ------------------------------------------------------------------------------ Centralized Desktop Delivery: Dell and VMware Reference Architecture Simplifying enterprise desktop deployment and management using Dell EqualLogic storage and VMware View: A highly scalable, end-to-end client virtualization framework. Read more! http://p.sf.net/sfu/dell-eql-dev2dev _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Hi Eduardo,
I think it was a tiny bug in the implementation. It should be a Taylor expansion about z = 0 (when close to ATM, z is close to 0 ). I did the expansion, and found the following formula z/xx ~ 1 - 0.5*rho*z + (3*rho*rho + 6*rho + 2)/12*z*z The difference of this one and the one in the implementation is 0.5*rho*rho/(1-rho)*z in leading order. Actually, when z is small ( z*z < QL_EPSILON*10 ), this difference doesn't matter (maybe a relative error of 1e-6 at most). This is why I call it a tiny bug. I did check the formulas visually using Matlab, both expansion gives extremely close result. The new formula I showed is better than the original QL implementation only when z is greater than 1e-5, but that's not the job of the Taylor expansion formula as z is big enough. Peizhe
|
On Thu, 2010-11-25 at 20:09 -0800, spz wrote:
> I think it was a tiny bug in the implementation. It should be a Taylor > expansion about z = 0 (when close to ATM, z is close to 0 ). I did the > expansion, and found the following formula > > z/xx ~ 1 - 0.5*rho*z + (3*rho*rho + 6*rho + 2)/12*z*z > > The difference of this one and the one in the implementation is > 0.5*rho*rho/(1-rho)*z in leading order. Actually, when z is small ( z*z < > QL_EPSILON*10 ), this difference doesn't matter True, but I'd prefer to have a correct expansion rather than a wrong one which is close enough. May you double-check the expansion and provide a patch for the file? Thanks, Luigi -- Weiler's Law: Nothing is impossible for the man who doesn't have to do it himself. ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Hello. The result of my calculation is (I used Maxima for the Taylor expansion -- I hope it is less error prone than myself)
z/xx ~ 1 - 0.5 * rho * z - (3* rho * rho -2)*z*z/12 Regards Eduardo On Tue, Nov 30, 2010 at 5:30 PM, Luigi Ballabio <[hidden email]> wrote:
------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
On Tue, 2010-11-30 at 19:34 +0100, Eduardo Alonso wrote:
> Hello. The result of my calculation is (I used Maxima for the Taylor > expansion -- I hope it is less error prone than myself) > > z/xx ~ 1 - 0.5 * rho * z - (3* rho * rho -2)*z*z/12 Ok, I've just committed the change to the Subversion repository. Thanks, Luigi -- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Free forum by Nabble | Edit this page |