Login  Register

termstructure daycounter and put/call parity

classic Classic list List threaded Threaded
4 messages Options Options
Embed post
Permalink
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

termstructure daycounter and put/call parity

Roland Lichters
7 posts

Hello all,

the QuantLib test-suite (capfloor.cpp) checks that the put/call parity (capNPV - floorNPV = swapNPV) holds. It seems to me that this test is passed successfully only as long as one chooses  term structure daycount Actual360(), see function setup() in capfloor.cpp.

After setting this to e.g. ActualActual(ActualActual::ISDA) and keeping anything else unchanged, the test suite fails with the following messages ..

Running 236 test cases...
capfloor.cpp(283): fatal error in "CapFloorTest::testParity": put/call parity violated:
    length:      1 years
    volatility:  1.000000 %
    strike:      3.000000 %
    cap v alue:   2.01507
    floor value: 0
    swap value:  1.94683

.. because the  cap price is overstated.

I assume that the term structure daycounter should not have this effect on pricing results. Shouldn't it be arbitrary?

Would you please have a quick look and correct me if I am wrong.

I noticed this while building a small caplet volatility bootstrap tool that I'd like to contribute (eventually) if there is any interest.  

Many thanks for your efforts,

Roland

 


 



Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!   
<A HREF="http://smartsurfer.web.de/?mc=100071&distributionid=000 000000071">http://smartsurfer.web.de/?mc=100071&distributionid=000000000071  
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: termstructure daycounter and put/call parity

Luigi Ballabio
3579 posts

On 07/18/2006 01:55:44 PM, Roland Lichters wrote:
> the QuantLib test-suite (capfloor.cpp) checks that the put/call  
> parity (capNPV - floorNPV = swapNPV) holds. It seems to me that this  
> test is passed successfully only as long as one chooses term  
> structure daycount Actual360(), see function setup() in capfloor.cpp.
>
> I assume that the term structure daycounter should not have this
> effect on pricing results. Shouldn't it be arbitrary?

Yes and no. For instance, the swap price changes---the coupons will  
have the same fixings, but the discount factors will change due to the  
different day-count convention. The change has a smaller effect on the  
cap and floor (where fixing and discounting are not so neatly  
separated) hence the failure. I've put a warning in the documentation  
for the Black engine until we figure out what to fix.

Later,
        Luigi

P.S. Yes, the caplet-bootstrapping tool would be interesting.


----------------------------------------

Anyone who says he can see through women is missing a lot.
-- Groucho Marx


Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: termstructure daycounter and put/call parity

Ferdinando M. Ametrano-3
622 posts
In reply to this post by Roland Lichters
Hi Roland
 
the bug it's been fixed on the CVS trunk. Please let me know if you still have problem
 
ciao -- Nando

 
On 7/18/06, Roland Lichters <[hidden email]> wrote:

Hello all,

the QuantLib test-suite (capfloor.cpp) checks that the put/call parity (capNPV - floorNPV = swapNPV) holds. It seems to me that this test is passed successfully only as long as one chooses  term structure daycount Actual360(), see function setup() in capfloor.cpp.

After setting this to e.g. ActualActual(ActualActual::ISDA) and keeping anything else unchanged, the test suite fails with the following messages ..

Running 236 test cases...
capfloor.cpp(283): fatal error in "CapFloorTest::testParity": put/call parity violated:
    length:      1 years
    volatility:  1.000000 %
    strike:      3.000000 %
    cap v alue:   2.01507
    floor value: 0
    swap value:  1.94683

.. because the  cap price is overstated.

I assume that the term structure daycounter should not have this effect on pricing results. Shouldn't it be arbitrary?

Would you please have a quick look and correct me if I am wrong.

I noticed this while building a small caplet volatility bootstrap tool that I'd like to contribute (eventually) if there is any interest.  

Many thanks for your efforts,

Roland

 


 



Der <a title="http://WEB.DE" onclick="return top.js.OpenExtLink(window,event,this)" href="http://web.de/" target="_blank">WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!   
<a title="http://smartsurfer.web.de/?mc=100071&amp;distributionid=000 000000071" onclick="return top.js.OpenExtLink(window,event,this)" href="http://smartsurfer.web.de/?mc=100071&amp;distributionid=000%0A+000000071" target="_blank">http://smartsurfer.web.de/?mc=100071&distributionid=000000000071   

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV" target="_blank"> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV

_______________________________________________
QuantLib-users mailing list
[hidden email]
<a onclick="return top.js.OpenExtLink(window,event,this)" href="https://lists.sourceforge.net/lists/listinfo/quantlib-users" target="_blank">https://lists.sourceforge.net/lists/listinfo/quantlib-users



Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: termstructure daycounter and put/call parity

Roland Lichters
7 posts
In reply to this post by Roland Lichters


Hi Nando,

I tried the prerelease tarball and yes, I can confirm that the bug is fixed.

Many thanks for your efforts!

Roland


Von: "Ferdinando Ametrano"
Gesendet: 27.07.06 18:58:15
An: "Roland Lichters"
CC: [hidden email], [hidden email]
Betreff: Re: [Quantlib-users] termstructure daycounter and put/call parity

Hi Roland
 
the bug it's been fixed on the CVS trunk. Please let me know if you still have problem
 
cia o -- Nando

 
On 7/18/06, Roland Lichters <[hidden email]> wrote:

Hello all,

the QuantLib test-suite (capfloor.cpp) checks that the put/call parity (capNPV - floorNPV = swapNPV) holds. It seems to me that this test is passed successfully only as long as one chooses  term structure daycount Actual360(), see function setup() in capfloor.cpp.

After setting this to e.g. ActualActual(ActualActual::ISDA) and keeping anything else unchanged, the test suite fails with the following messages ..

Running 236 test cases...
capfloor.cpp(283): fatal error in "CapFloorTest::testParity": put/call parity violated:
    leng th:      1 years
    volatility:  1.000000 %
    strike:      3.000000 %
    cap v alue:   2.01507
    floor value: 0
    swap value:  1.94683

.. because the  cap price is overstated.

I assume that the term structure daycounter should not have this effect on pricing results. Shouldn't it be arbitrary?

Would you please have a quick look and correct me if I am wrong.

I noticed this while building a small caplet volatility bootstrap tool that I'd like to contribute (eventually) if there is any interest.  

Many thanks for your efforts,

Roland




Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!   
http://smartsurfer.web.de/?mc=100071&distributionid=000000000071