Posted by
Dirk Eddelbuettel on
URL: http://quantlib.414.s1.nabble.com/Fatal-error-in-test-suite-QuantLib-test-suite-in-QuantLib-0-9-6-tp12244p12245.html
On 24 August 2008 at 10:14, Georgy Jikia wrote:
| I did not see this error being posted yet:
|
| ./optionletstripper.cpp(361): fatal error in
| "QuantLib::detail::quantlib_test_case(&OptionletStripperTest::testTermVolatilityStripping1)":
|
| option tenor: 20Y
| strike: 4.000000 %
| stripped vol price: 8.178939 %
| constant vol price: 8.180508 %
| error: 0.001569 %
| tolerance: 0.001500 %
|
| I think the error was not present in QuantLib 0.9.5.
What platform / compiler / settings / ... ?
For the Debian builds (which I do on x86 using gcc/g++, currently at upstream
version 4.3.1), the standard 0.9.6 release also showed this (and similar "is
past max curve time" messages in more places) :
[...]
Testing nested optimizations...
Testing forward/forward vol stripping from flat term vol surface using optionletstripper1...
Testing forward/forward vol stripping from non-flat term vol surface using optionletstripper1...
Testing forward/forward vol stripping from flat term vol surface using optionletstripper2...
unknown location(0): fatal error in "OptionletStripperTest::testFlatTermVolatilityStripping2": std::exception: time (10.0055) is past max curve time (10.0055)
nthtodefault.cpp(296): last checkpoint
Testing forward/forward vol stripping from non-flat term vol surface using optionletstripper2...
unknown location(0): fatal error in "OptionletStripperTest::testTermVolatilityStripping2": std::exception: time (30.0192) is past max curve time (30.0192)
nthtodefault.cpp(296): last checkpoint
[...]
whereas after applying a patch (see below) from Luigi
[...]
Testing nested optimizations...
Testing forward/forward vol stripping from flat term vol surface using optionletstripper1...
Testing forward/forward vol stripping from non-flat term vol surface using optionletstripper1...
Testing forward/forward vol stripping from flat term vol surface using optionletstripper2...
Testing forward/forward vol stripping from non-flat term vol surface using optionletstripper2...
Testing 1-D path generation against cached values...
[...]
things are more peachy. The simple patch is below, see if that helps. Thanks
as always to Luigi for a quick response when I reported that earlier in an
off-list email, and thanks to you for reporting this too -- looks like it may
be a more generally relevant issue.
Cheers, Dirk
--- quantlib-0.9.6.orig/ql/termstructure.cpp
+++ quantlib-0.9.6/ql/termstructure.cpp
@@ -18,6 +18,7 @@
*/
#include <ql/termstructure.hpp>
+#include <ql/math/comparison.hpp>
namespace QuantLib {
@@ -77,7 +78,7 @@
bool extrapolate) const {
QL_REQUIRE(t >= 0.0,
"negative time (" << t << ") given");
- QL_REQUIRE(extrapolate || allowsExtrapolation() || t <= maxTime(),
+ QL_REQUIRE(extrapolate || allowsExtrapolation() || t <= maxTime() || close_enough(t, maxTime()),
"time (" << t << ") is past max curve time ("
<< maxTime() << ")");
}
--
Three out of two people have difficulties with fractions.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev