termstructure daycounter and put/call parity

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

termstructure daycounter and put/call parity

Roland Lichters

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
|

Re: termstructure daycounter and put/call parity

Luigi Ballabio

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
|

Re: termstructure daycounter and put/call parity

Ferdinando M. Ametrano-3
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
|

Re: termstructure daycounter and put/call parity

Roland Lichters
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