I noticed this in the tests: Testing consistency between fair price and fair spread... assetswap.cpp(181): fatal error in "QuantLib::detail::quantlib_test_case(&AssetSwapTest::testConsistency)": par asset swap fair clean price doesn't zero the NPV: clean price: 95.0000 fair clean price: 107.0805 NPV: 24.1511 tolerance: 0.0000 This is the only test that fails. Matt ------------------------------------------------------------------------------ BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA http://p.sf.net/sfu/rim-devcon-copy2 _______________________________________________ QuantLib-dev mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
It doesn't look like anyone is addressing this failure in the tests.
The test failure was introduced in revision 18001. It alters the way the price values are computed and therefore doesn't pass the test that existed. If the test is wrong, then fix it so the tests pass, otherwise the asset swap code needs to be fixed. I don't know too much about this code, so I don't know what is right or wrong, just know when the test that existed started to fail. Index: ql/instruments/assetswap.cpp =================================================================== --- ql/instruments/assetswap.cpp (revision 18000) +++ ql/instruments/assetswap.cpp (revision 18001) @@ -243,12 +243,12 @@ // backpayment on the floating leg // (accounts for non-par redemption, if any) Real backPayment = notional; - shared_ptr<CashFlow> backPaymentCashFlow (new + shared_ptr<CashFlow> backPaymentCashFlow(new SimpleCashFlow(backPayment, finalDate)); legs_[1].push_back(backPaymentCashFlow); } else { // final notional exchange - shared_ptr<CashFlow> finalCashFlow (new + shared_ptr<CashFlow> finalCashFlow(new SimpleCashFlow(notional, finalDate)); legs_[1].push_back(finalCashFlow); } @@ -349,12 +349,12 @@ "fair clean price not available for seasoned deal"); Real notional = bond_->notional(upfrontDate_); if (parSwap_) { - fairCleanPrice_ = bondCleanPrice_ - + fairCleanPrice_ = bondCleanPrice_ - payer_[0] * NPV_*npvDateDiscount_/startDiscounts_[1]/(notional/100.0); } else { Real accruedAmount = bond_->accruedAmount(upfrontDate_); Real dirtyPrice = bondCleanPrice_ + accruedAmount; - Real fairDirtyPrice = - legNPV_[0]/legNPV_[1] * dirtyPrice; + Real fairDirtyPrice = - payer_[0] * legNPV_[0]/legNPV_[1] * dirtyPrice; fairCleanPrice_ = fairDirtyPrice - accruedAmount; } @@ -370,7 +370,7 @@ QL_REQUIRE(endDiscounts_[1]!=Null<DiscountFactor>(), "fair non par repayment not available for expired leg"); Real notional = bond_->notional(upfrontDate_); - fairNonParRepayment_ = nonParRepayment_ - + fairNonParRepayment_ = nonParRepayment_ + payer_[0] * NPV_*npvDateDiscount_/endDiscounts_[1]/(notional/100.0); return fairNonParRepayment_; } On Sat, Sep 17, 2011 at 3:49 PM, Matt Fair <[hidden email]> wrote: > I noticed this in the tests: > > Testing consistency between fair price and fair spread... > assetswap.cpp(181): fatal error in > "QuantLib::detail::quantlib_test_case(&AssetSwapTest::testConsistency)": > par asset swap fair clean price doesn't zero the NPV: > clean price: 95.0000 > fair clean price: 107.0805 > NPV: 24.1511 > tolerance: 0.0000 > > This is the only test that fails. > > Matt ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ QuantLib-dev mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
On Mon, 2011-10-03 at 09:36 -0600, Matt Fair wrote:
> It doesn't look like anyone is addressing this failure in the tests. True. Last week I reported it to the author, but he's busy with his real work at the moment so it will be a few days before the test is fixed. I'm afraid it happens in the best families... Later, Luigi > The test failure was introduced in revision 18001. It alters the way > the price values are computed and therefore doesn't pass the test that > existed. If the test is wrong, then fix it so the tests pass, > otherwise the asset swap code needs to be fixed. > I don't know too much about this code, so I don't know what is right > or wrong, just know when the test that existed started to fail. > > Index: ql/instruments/assetswap.cpp > =================================================================== > --- ql/instruments/assetswap.cpp (revision 18000) > +++ ql/instruments/assetswap.cpp (revision 18001) > @@ -243,12 +243,12 @@ > // backpayment on the floating leg > // (accounts for non-par redemption, if any) > Real backPayment = notional; > - shared_ptr<CashFlow> backPaymentCashFlow (new > + shared_ptr<CashFlow> backPaymentCashFlow(new > SimpleCashFlow(backPayment, finalDate)); > legs_[1].push_back(backPaymentCashFlow); > } else { > // final notional exchange > - shared_ptr<CashFlow> finalCashFlow (new > + shared_ptr<CashFlow> finalCashFlow(new > SimpleCashFlow(notional, finalDate)); > legs_[1].push_back(finalCashFlow); > } > @@ -349,12 +349,12 @@ > "fair clean price not available for seasoned deal"); > Real notional = bond_->notional(upfrontDate_); > if (parSwap_) { > - fairCleanPrice_ = bondCleanPrice_ - > + fairCleanPrice_ = bondCleanPrice_ - payer_[0] * > NPV_*npvDateDiscount_/startDiscounts_[1]/(notional/100.0); > } else { > Real accruedAmount = bond_->accruedAmount(upfrontDate_); > Real dirtyPrice = bondCleanPrice_ + accruedAmount; > - Real fairDirtyPrice = - legNPV_[0]/legNPV_[1] * dirtyPrice; > + Real fairDirtyPrice = - payer_[0] * > legNPV_[0]/legNPV_[1] * dirtyPrice; > fairCleanPrice_ = fairDirtyPrice - accruedAmount; > } > > @@ -370,7 +370,7 @@ > QL_REQUIRE(endDiscounts_[1]!=Null<DiscountFactor>(), > "fair non par repayment not available for expired leg"); > Real notional = bond_->notional(upfrontDate_); > - fairNonParRepayment_ = nonParRepayment_ - > + fairNonParRepayment_ = nonParRepayment_ + payer_[0] * > NPV_*npvDateDiscount_/endDiscounts_[1]/(notional/100.0); > return fairNonParRepayment_; > } > > > On Sat, Sep 17, 2011 at 3:49 PM, Matt Fair <[hidden email]> wrote: > > I noticed this in the tests: > > > > Testing consistency between fair price and fair spread... > > assetswap.cpp(181): fatal error in > > "QuantLib::detail::quantlib_test_case(&AssetSwapTest::testConsistency)": > > par asset swap fair clean price doesn't zero the NPV: > > clean price: 95.0000 > > fair clean price: 107.0805 > > NPV: 24.1511 > > tolerance: 0.0000 > > > > This is the only test that fails. > > > > Matt > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > QuantLib-dev mailing list > [hidden email] > https://lists.sourceforge.net/lists/listinfo/quantlib-dev -- Present to inform, not to impress; if you inform, you will impress. -- Fred Brooks ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ QuantLib-dev mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
Hi Matt
glad you cannot live with error in the test-suite. Me too! I fixed an existing bug and introduced a new one: use the latest release in the meantime please. Take it for granted I'll get back to this issue as I'm working on related subjects... or I might leave the fix as exercise to you ;-) On Mon, Oct 3, 2011 at 5:45 PM, Luigi Ballabio <[hidden email]> wrote: > On Mon, 2011-10-03 at 09:36 -0600, Matt Fair wrote: >> It doesn't look like anyone is addressing this failure in the tests. > > True. Last week I reported it to the author, but he's busy with his > real work at the moment so it will be a few days before the test is > fixed. I'm afraid it happens in the best families... > > Later, > Luigi > > >> The test failure was introduced in revision 18001. It alters the way >> the price values are computed and therefore doesn't pass the test that >> existed. If the test is wrong, then fix it so the tests pass, >> otherwise the asset swap code needs to be fixed. >> I don't know too much about this code, so I don't know what is right >> or wrong, just know when the test that existed started to fail. >> >> Index: ql/instruments/assetswap.cpp >> =================================================================== >> --- ql/instruments/assetswap.cpp (revision 18000) >> +++ ql/instruments/assetswap.cpp (revision 18001) >> @@ -243,12 +243,12 @@ >> // backpayment on the floating leg >> // (accounts for non-par redemption, if any) >> Real backPayment = notional; >> - shared_ptr<CashFlow> backPaymentCashFlow (new >> + shared_ptr<CashFlow> backPaymentCashFlow(new >> SimpleCashFlow(backPayment, finalDate)); >> legs_[1].push_back(backPaymentCashFlow); >> } else { >> // final notional exchange >> - shared_ptr<CashFlow> finalCashFlow (new >> + shared_ptr<CashFlow> finalCashFlow(new >> SimpleCashFlow(notional, finalDate)); >> legs_[1].push_back(finalCashFlow); >> } >> @@ -349,12 +349,12 @@ >> "fair clean price not available for seasoned deal"); >> Real notional = bond_->notional(upfrontDate_); >> if (parSwap_) { >> - fairCleanPrice_ = bondCleanPrice_ - >> + fairCleanPrice_ = bondCleanPrice_ - payer_[0] * >> NPV_*npvDateDiscount_/startDiscounts_[1]/(notional/100.0); >> } else { >> Real accruedAmount = bond_->accruedAmount(upfrontDate_); >> Real dirtyPrice = bondCleanPrice_ + accruedAmount; >> - Real fairDirtyPrice = - legNPV_[0]/legNPV_[1] * dirtyPrice; >> + Real fairDirtyPrice = - payer_[0] * >> legNPV_[0]/legNPV_[1] * dirtyPrice; >> fairCleanPrice_ = fairDirtyPrice - accruedAmount; >> } >> >> @@ -370,7 +370,7 @@ >> QL_REQUIRE(endDiscounts_[1]!=Null<DiscountFactor>(), >> "fair non par repayment not available for expired leg"); >> Real notional = bond_->notional(upfrontDate_); >> - fairNonParRepayment_ = nonParRepayment_ - >> + fairNonParRepayment_ = nonParRepayment_ + payer_[0] * >> NPV_*npvDateDiscount_/endDiscounts_[1]/(notional/100.0); >> return fairNonParRepayment_; >> } >> >> >> On Sat, Sep 17, 2011 at 3:49 PM, Matt Fair <[hidden email]> wrote: >> > I noticed this in the tests: >> > >> > Testing consistency between fair price and fair spread... >> > assetswap.cpp(181): fatal error in >> > "QuantLib::detail::quantlib_test_case(&AssetSwapTest::testConsistency)": >> > par asset swap fair clean price doesn't zero the NPV: >> > clean price: 95.0000 >> > fair clean price: 107.0805 >> > NPV: 24.1511 >> > tolerance: 0.0000 >> > >> > This is the only test that fails. >> > >> > Matt >> >> ------------------------------------------------------------------------------ >> All the data continuously generated in your IT infrastructure contains a >> definitive record of customers, application performance, security >> threats, fraudulent activity and more. Splunk takes this data and makes >> sense of it. Business sense. IT sense. Common sense. >> http://p.sf.net/sfu/splunk-d2dcopy1 >> _______________________________________________ >> QuantLib-dev mailing list >> [hidden email] >> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > -- > > Present to inform, not to impress; if you inform, you will impress. > -- Fred Brooks > > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > QuantLib-dev mailing list > [hidden email] > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ QuantLib-dev mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
> It doesn't look like anyone is addressing this failure in the tests.
fixed now on the trunk On Mon, Oct 3, 2011 at 9:43 PM, Ferdinando Ametrano <[hidden email]> wrote: > Hi Matt > > glad you cannot live with error in the test-suite. Me too! > > I fixed an existing bug and introduced a new one: use the latest > release in the meantime please. > Take it for granted I'll get back to this issue as I'm working on > related subjects... or I might leave the fix as exercise to you ;-) > > > On Mon, Oct 3, 2011 at 5:45 PM, Luigi Ballabio <[hidden email]> wrote: >> On Mon, 2011-10-03 at 09:36 -0600, Matt Fair wrote: >>> It doesn't look like anyone is addressing this failure in the tests. >> >> True. Last week I reported it to the author, but he's busy with his >> real work at the moment so it will be a few days before the test is >> fixed. I'm afraid it happens in the best families... >> >> Later, >> Luigi >> >> >>> The test failure was introduced in revision 18001. It alters the way >>> the price values are computed and therefore doesn't pass the test that >>> existed. If the test is wrong, then fix it so the tests pass, >>> otherwise the asset swap code needs to be fixed. >>> I don't know too much about this code, so I don't know what is right >>> or wrong, just know when the test that existed started to fail. >>> >>> Index: ql/instruments/assetswap.cpp >>> =================================================================== >>> --- ql/instruments/assetswap.cpp (revision 18000) >>> +++ ql/instruments/assetswap.cpp (revision 18001) >>> @@ -243,12 +243,12 @@ >>> // backpayment on the floating leg >>> // (accounts for non-par redemption, if any) >>> Real backPayment = notional; >>> - shared_ptr<CashFlow> backPaymentCashFlow (new >>> + shared_ptr<CashFlow> backPaymentCashFlow(new >>> SimpleCashFlow(backPayment, finalDate)); >>> legs_[1].push_back(backPaymentCashFlow); >>> } else { >>> // final notional exchange >>> - shared_ptr<CashFlow> finalCashFlow (new >>> + shared_ptr<CashFlow> finalCashFlow(new >>> SimpleCashFlow(notional, finalDate)); >>> legs_[1].push_back(finalCashFlow); >>> } >>> @@ -349,12 +349,12 @@ >>> "fair clean price not available for seasoned deal"); >>> Real notional = bond_->notional(upfrontDate_); >>> if (parSwap_) { >>> - fairCleanPrice_ = bondCleanPrice_ - >>> + fairCleanPrice_ = bondCleanPrice_ - payer_[0] * >>> NPV_*npvDateDiscount_/startDiscounts_[1]/(notional/100.0); >>> } else { >>> Real accruedAmount = bond_->accruedAmount(upfrontDate_); >>> Real dirtyPrice = bondCleanPrice_ + accruedAmount; >>> - Real fairDirtyPrice = - legNPV_[0]/legNPV_[1] * dirtyPrice; >>> + Real fairDirtyPrice = - payer_[0] * >>> legNPV_[0]/legNPV_[1] * dirtyPrice; >>> fairCleanPrice_ = fairDirtyPrice - accruedAmount; >>> } >>> >>> @@ -370,7 +370,7 @@ >>> QL_REQUIRE(endDiscounts_[1]!=Null<DiscountFactor>(), >>> "fair non par repayment not available for expired leg"); >>> Real notional = bond_->notional(upfrontDate_); >>> - fairNonParRepayment_ = nonParRepayment_ - >>> + fairNonParRepayment_ = nonParRepayment_ + payer_[0] * >>> NPV_*npvDateDiscount_/endDiscounts_[1]/(notional/100.0); >>> return fairNonParRepayment_; >>> } >>> >>> >>> On Sat, Sep 17, 2011 at 3:49 PM, Matt Fair <[hidden email]> wrote: >>> > I noticed this in the tests: >>> > >>> > Testing consistency between fair price and fair spread... >>> > assetswap.cpp(181): fatal error in >>> > "QuantLib::detail::quantlib_test_case(&AssetSwapTest::testConsistency)": >>> > par asset swap fair clean price doesn't zero the NPV: >>> > clean price: 95.0000 >>> > fair clean price: 107.0805 >>> > NPV: 24.1511 >>> > tolerance: 0.0000 >>> > >>> > This is the only test that fails. >>> > >>> > Matt >>> >>> ------------------------------------------------------------------------------ >>> All the data continuously generated in your IT infrastructure contains a >>> definitive record of customers, application performance, security >>> threats, fraudulent activity and more. Splunk takes this data and makes >>> sense of it. Business sense. IT sense. Common sense. >>> http://p.sf.net/sfu/splunk-d2dcopy1 >>> _______________________________________________ >>> QuantLib-dev mailing list >>> [hidden email] >>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >> >> -- >> >> Present to inform, not to impress; if you inform, you will impress. >> -- Fred Brooks >> >> >> >> ------------------------------------------------------------------------------ >> All the data continuously generated in your IT infrastructure contains a >> definitive record of customers, application performance, security >> threats, fraudulent activity and more. Splunk takes this data and makes >> sense of it. Business sense. IT sense. Common sense. >> http://p.sf.net/sfu/splunk-d2dcopy1 >> _______________________________________________ >> QuantLib-dev mailing list >> [hidden email] >> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >> > ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ QuantLib-dev mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
Free forum by Nabble | Edit this page |