SABR model

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

SABR model

Eduardo Alonso
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
spz
Reply | Threaded
Open this post in threaded view
|

Re: SABR model

spz
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

Eduardo Alonso wrote
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
QuantLib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: SABR model

Luigi Ballabio
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
Reply | Threaded
Open this post in threaded view
|

Re: SABR model

Eduardo Alonso
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:
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


------------------------------------------------------------------------------
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
Reply | Threaded
Open this post in threaded view
|

Re: SABR model

Luigi Ballabio
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