You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(17) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(23) |
| 2002 |
Jan
(18) |
Feb
(20) |
Mar
(22) |
Apr
(41) |
May
(28) |
Jun
(25) |
Jul
(10) |
Aug
(7) |
Sep
(5) |
Oct
(20) |
Nov
(13) |
Dec
(11) |
| 2003 |
Jan
(28) |
Feb
(5) |
Mar
(6) |
Apr
(5) |
May
(17) |
Jun
(6) |
Jul
(45) |
Aug
(35) |
Sep
(24) |
Oct
(50) |
Nov
(53) |
Dec
(6) |
| 2004 |
Jan
(4) |
Feb
(10) |
Mar
(52) |
Apr
(46) |
May
(8) |
Jun
(25) |
Jul
(12) |
Aug
(6) |
Sep
(8) |
Oct
(8) |
Nov
(9) |
Dec
(7) |
| 2005 |
Jan
(18) |
Feb
(60) |
Mar
(19) |
Apr
(26) |
May
(14) |
Jun
(27) |
Jul
(8) |
Aug
(15) |
Sep
(19) |
Oct
(53) |
Nov
(20) |
Dec
(23) |
| 2006 |
Jan
(16) |
Feb
(27) |
Mar
(33) |
Apr
(51) |
May
(36) |
Jun
(25) |
Jul
(54) |
Aug
(30) |
Sep
(25) |
Oct
(67) |
Nov
(43) |
Dec
(13) |
| 2007 |
Jan
(23) |
Feb
(27) |
Mar
(55) |
Apr
(79) |
May
(60) |
Jun
(66) |
Jul
(46) |
Aug
(30) |
Sep
(90) |
Oct
(49) |
Nov
(85) |
Dec
(74) |
| 2008 |
Jan
(68) |
Feb
(59) |
Mar
(64) |
Apr
(28) |
May
(66) |
Jun
(35) |
Jul
(73) |
Aug
(76) |
Sep
(65) |
Oct
(46) |
Nov
(41) |
Dec
(19) |
| 2009 |
Jan
(46) |
Feb
(90) |
Mar
(51) |
Apr
(104) |
May
(13) |
Jun
(24) |
Jul
(20) |
Aug
(39) |
Sep
(109) |
Oct
(101) |
Nov
(117) |
Dec
(57) |
| 2010 |
Jan
(55) |
Feb
(42) |
Mar
(39) |
Apr
(22) |
May
(33) |
Jun
(41) |
Jul
(25) |
Aug
(52) |
Sep
(75) |
Oct
(60) |
Nov
(62) |
Dec
(52) |
| 2011 |
Jan
(70) |
Feb
(31) |
Mar
(26) |
Apr
(28) |
May
(17) |
Jun
(38) |
Jul
(51) |
Aug
(35) |
Sep
(27) |
Oct
(35) |
Nov
(10) |
Dec
(20) |
| 2012 |
Jan
(21) |
Feb
(29) |
Mar
(13) |
Apr
(37) |
May
(33) |
Jun
(12) |
Jul
(34) |
Aug
(27) |
Sep
(29) |
Oct
(35) |
Nov
(58) |
Dec
(27) |
| 2013 |
Jan
(27) |
Feb
(16) |
Mar
(40) |
Apr
(16) |
May
(34) |
Jun
(37) |
Jul
(6) |
Aug
(3) |
Sep
(4) |
Oct
(49) |
Nov
(13) |
Dec
(12) |
| 2014 |
Jan
(15) |
Feb
(21) |
Mar
(11) |
Apr
(13) |
May
(27) |
Jun
(60) |
Jul
(19) |
Aug
(29) |
Sep
(20) |
Oct
(28) |
Nov
(41) |
Dec
(15) |
| 2015 |
Jan
(33) |
Feb
(29) |
Mar
(26) |
Apr
(17) |
May
(2) |
Jun
(13) |
Jul
(21) |
Aug
(30) |
Sep
(22) |
Oct
(15) |
Nov
(46) |
Dec
(20) |
| 2016 |
Jan
(6) |
Feb
(5) |
Mar
(9) |
Apr
(15) |
May
(9) |
Jun
(4) |
Jul
(3) |
Aug
(4) |
Sep
(39) |
Oct
(8) |
Nov
(5) |
Dec
(8) |
| 2017 |
Jan
(4) |
Feb
(14) |
Mar
(4) |
Apr
(16) |
May
(5) |
Jun
(10) |
Jul
(25) |
Aug
(2) |
Sep
(5) |
Oct
(11) |
Nov
(8) |
Dec
(11) |
| 2018 |
Jan
(7) |
Feb
(4) |
Mar
|
Apr
(1) |
May
(4) |
Jun
(21) |
Jul
(8) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(1) |
Dec
|
| 2019 |
Jan
(1) |
Feb
(5) |
Mar
(18) |
Apr
(9) |
May
(5) |
Jun
(21) |
Jul
(25) |
Aug
(25) |
Sep
(4) |
Oct
(2) |
Nov
(2) |
Dec
(5) |
| 2020 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
(2) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(2) |
Nov
(6) |
Dec
|
| 2021 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(5) |
| 2022 |
Jan
(7) |
Feb
(3) |
Mar
|
Apr
(2) |
May
(5) |
Jun
(3) |
Jul
(3) |
Aug
(3) |
Sep
(3) |
Oct
(14) |
Nov
|
Dec
(1) |
| 2023 |
Jan
(10) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
(2) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(5) |
Nov
|
Dec
|
| 2024 |
Jan
(8) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(4) |
Aug
(5) |
Sep
|
Oct
(4) |
Nov
(1) |
Dec
(1) |
| 2025 |
Jan
(3) |
Feb
(2) |
Mar
(2) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2026 |
Jan
(1) |
Feb
(12) |
Mar
|
Apr
(2) |
May
(8) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: artella <art...@go...> - 2009-04-20 21:19:44
|
Hi, I have downloaded boost 1.38 and built via bjam. When I try to build QuantLibXL_full_vc9.sln requests are made for : 1)libboost_regex-vc90-mt-sgd-1_38.lib 2)libboost_serialization-vc90-mt-sgd-1_38.lib 3)libboost_unit_test_framework-vc90-mt-sgd-1_38.lib I am able to find these. However a request is also made for : (-->libboost_filesystem-vc90-mt-sgd-1_38.lib<--) which I have not managed to find. NB I have managed to find : libboost_filesystem-vc90-gd-1_38.lib and libboost_filesystem-vc90-1_38.lib Thanks -- View this message in context: http://www.nabble.com/libboost_filesystem-vc90-mt-sgd-1_38.lib-tp23145100p23145100.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: <s.i...@gm...> - 2009-04-20 16:39:48
|
I'd agree that simplifying the bond class into bond "amount" and number of bonds (separate to Quantlib) is useful... However, calling it "faceAmount" doesn't work for me... We normally talk about an amortizing (or accreting) "notional" - not a "face amount". Can anyone think of a better term? What does Bloomberg use for it's schedules? ------Original Message------ From: Ferdinando Ametrano To: lui...@gm... Cc: qua...@li... Sent: Apr 20, 2009 17:22 Subject: Re: [Quantlib-dev] [QuantLib-svn] SF.net SVN: quantlib:[16177]trunk/QuantLib On Mon, Apr 20, 2009 at 6:00 PM, Luigi Ballabio <lui...@gm...> wrote: > Are you telling me we're using the wrong term and we should use > faceAmount instead of notional? yes I am. Here's my 0.02€: the face amount is the bond's nominal outstanding debt which will be redeemed at maturity (or during bond's life for amortizing bonds). The notional of a bond is the face amount times number of bonds. ciao -- Nando ------------------------------------------------------------------------------ Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p _______________________________________________ QuantLib-dev mailing list Qua...@li... https://lists.sourceforge.net/lists/listinfo/quantlib-dev Sent from my BlackBerry® wireless device |
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 16:24:30
|
On Mon, Apr 20, 2009 at 5:51 PM, Luigi Ballabio <lui...@gm...> wrote: >> In ql/time/date.cpp >> [...] > [...] > We should probably use localtime as the default. > Objections? I agree ciao -- Nando |
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 16:22:40
|
On Mon, Apr 20, 2009 at 6:00 PM, Luigi Ballabio <lui...@gm...> wrote: > Are you telling me we're using the wrong term and we should use > faceAmount instead of notional? yes I am. Here's my 0.02€: the face amount is the bond's nominal outstanding debt which will be redeemed at maturity (or during bond's life for amortizing bonds). The notional of a bond is the face amount times number of bonds. ciao -- Nando |
|
From: PinkLizard <ka...@li...> - 2009-04-20 16:04:28
|
Hi, In Hestonprocess.cpp there is a switch on Exact Variance Simulation where it's said that one uses Alan Lewi's trick to decorrelate equity and variance process. Anyone can explain me this trick? I can't find it in the reference "Quantlib code is very high quality"... Thanks -- View this message in context: http://www.nabble.com/Heston.cpp-Alan-Lewis-decorrelation--for-Heston-tp23139658p23139658.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: Luigi B. <lui...@gm...> - 2009-04-20 16:01:10
|
On Mon, 2009-04-20 at 17:33 +0200, Ferdinando Ametrano wrote: > On Mon, Apr 20, 2009 at 5:21 PM, Luigi Ballabio > <lui...@gm...> wrote: > >> - removed Bond::faceAmount, as it is now ambiguous for amortizing bonds > > > > We could disambiguate instead (initialFaceAmount/currentFaceAmount?) > > what would be the difference with notional() ? No difference really, just idly wondering whether we could save the old convenience method as a shortcut to notionals().front() or whatever. initialNotional() was just as fine. But it's no big deal. > If I have a notional of 1M of a given bond whose face amount is 100, I > actually own 10,000 bonds, isn't it? Now if your strategy was to confuse me, you succeeded. Are you telling me we're using the wrong term and we should use faceAmount instead of notional? Or are you telling me that the face amount should be in the same basis as the price (you aren't, are you?) Luigi -- fix, n.,v. What one does when a problem has been reported too many times to be ignored. -- the Jargon file |
|
From: Luigi B. <lui...@gm...> - 2009-04-20 15:52:01
|
On Fri, 2009-04-17 at 21:22 -0500, Dirk Eddelbuettel wrote:
> In ql/time/date.cpp we have
>
> Date Date::todaysDate() {
> std::time_t t;
>
> if (std::time(&t) == std::time_t(-1)) // -1 means time() didn't work
> return Date();
> std::tm *gt = std::gmtime(&t);
> return Date(Day(gt->tm_mday),
> Month(gt->tm_mon+1),
> Year(gt->tm_year+1900));
> }
>
> I'd like to be able to use std::localtime instead as I just got bitten when I
> asked for todaysDate() here in UTC+6 and got tomorrow's date instead.
>
> Shall I add that with a binary toggle to turn localtime on/off with a default
> to off, i.e. existing behaviour?
Ouch. You're right. We should probably use localtime as the default.
Objections?
> I'd also love a Date() constructor from "yyyymmdd" or
> (long) yyyymmdd as just relying on the Applix/Excel number is a tad
> restrictive.
You can use DateParser in <ql/utilities/dataparsers.hpp>.
Luigi
--
Don't let school get in the way of your education.
-- Mark Twain
|
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 15:33:57
|
On Mon, Apr 20, 2009 at 5:21 PM, Luigi Ballabio <lui...@gm...> wrote: >> - removed Bond::faceAmount, as it is now ambiguous for amortizing bonds > > We could disambiguate instead (initialFaceAmount/currentFaceAmount?) what would be the difference with notional() ? Aren't notionals() and notional(Date d = Date()) that should be renamed faceAmounts() and faceAmount(Date d = Date()) respectively? If I have a notional of 1M of a given bond whose face amount is 100, I actually own 10,000 bonds, isn't it? ciao -- Nando |
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 15:31:05
|
On Mon, Apr 20, 2009 at 5:21 PM, Luigi Ballabio <lui...@gm...> wrote: >> - removed Bond::faceAmount, as it is now ambiguous for amortizing bonds > > We could disambiguate instead (initialFaceAmount/currentFaceAmount?) what would be the difference with notional() ? Aren't notionals() and notional(Date d = Date()) that should be renamed faceAmounts() and faceAmount(Date d = Date()) respectively? ciao -- Nando |
|
From: Luigi B. <lui...@gm...> - 2009-04-20 15:21:40
|
On Thu, 2009-04-16 at 17:40 +0000, na...@us... wrote: > Revision: 16177 > http://quantlib.svn.sourceforge.net/quantlib/?rev=16177&view=rev > Author: nando > Date: 2009-04-16 17:40:01 +0000 (Thu, 16 Apr 2009) > > Log Message: > ----------- > - removed Bond::faceAmount, as it is now ambiguous for amortizing bonds We could disambiguate instead (initialFaceAmount/currentFaceAmount?) > - a warning might be added in ConvertibleBond documentation stating > that its behavior is unspecified in the case of amortizing bonds Right. Or we could check constant notional as a precondition. Luigi -- Don't let school get in the way of your education. -- Mark Twain |
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 13:26:32
|
Hi Chris On Sun, Apr 19, 2009 at 5:19 PM, <chr...@us...> wrote: > Revision: 16183 > http://quantlib.svn.sourceforge.net/quantlib/?rev=16183&view=rev > Author: chris_kenyon > Date: 2009-04-19 15:19:25 +0000 (Sun, 19 Apr 2009) > [...] > Added Paths: > ----------- > trunk/QuantLib/ql/experimental/inflation/polynomial2D.hpp > trunk/QuantLib/ql/experimental/inflation/polynomial2Dspline.hpp unless I've missed something you don't need Polynomial2DInterpolation as you can obtain quadratic interpolation using the class CubicInterpolation with DerivativeApprox::Parabolic. Then it might be too exoteric, but it would benice to generalize Interpolation2D to accept a policy (x_first or y_first) and (possibly) different factories for the x and y axis, so that your new Polynomial2DSpline (and the old BicubicSpline, BilinearInterpolation too) would just become typedefs ciao -- Nando |
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 13:04:08
|
I meant Rev16184... On Mon, Apr 20, 2009 at 3:01 PM, Ferdinando Ametrano <qf...@am...> wrote: > Hi all > > I have no problem with Rev16194 with both VC8 and VC9. Please provide > more details if you still have problems after a whole trunk update to > Rev16194 > > ciao -- Nando > > On Mon, Apr 20, 2009 at 1:21 PM, cx479 <ar...@hu...> wrote: >> >> currently have revision 16182 of QuantLib >> revision 16093 of QuantLibAddin >> >> QuantLib builds fine. >> >> When I build QuantLibAddin, get errors in enumeratedclasses.cpp originating >> from : >> >> new QuantLib::FDAmericanEngine<>(process, timeSteps, timeSteps-1)); >> new QuantLib::FDBermudanEngine<>(process, timeSteps, timeSteps-1)); >> new QuantLib::FDEuropeanEngine<>(process, timeSteps, timeSteps-1)); >> >> When changed to : >> >> new QuantLib::FDAmericanEngine(process, timeSteps, timeSteps-1)); >> new QuantLib::FDBermudanEngine(process, timeSteps, timeSteps-1)); >> new QuantLib::FDEuropeanEngine(process, timeSteps, timeSteps-1)); >> >> this file compiler fine. But then further down the line I get errors in >> other files : >> >> e.g. >> >> ratehelpers.cpp(183) : error C2039: 'BondHelper' : is not a member of >> 'QuantLib' >> >> Thanks >> >> -- >> View this message in context: http://www.nabble.com/errors-on-building-QuantLibAddin-tp23134818p23134818.html >> Sent from the quantlib-dev mailing list archive at Nabble.com. >> >> >> ------------------------------------------------------------------------------ >> Stay on top of everything new and different, both inside and >> around Java (TM) technology - register by April 22, and save >> $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. >> 300 plus technical and hands-on sessions. Register today. >> Use priority code J9JMT32. http://p.sf.net/sfu/p >> _______________________________________________ >> QuantLib-dev mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Ferdinando A. <qf...@am...> - 2009-04-20 13:01:38
|
Hi all I have no problem with Rev16194 with both VC8 and VC9. Please provide more details if you still have problems after a whole trunk update to Rev16194 ciao -- Nando On Mon, Apr 20, 2009 at 1:21 PM, cx479 <ar...@hu...> wrote: > > currently have revision 16182 of QuantLib > revision 16093 of QuantLibAddin > > QuantLib builds fine. > > When I build QuantLibAddin, get errors in enumeratedclasses.cpp originating > from : > > new QuantLib::FDAmericanEngine<>(process, timeSteps, timeSteps-1)); > new QuantLib::FDBermudanEngine<>(process, timeSteps, timeSteps-1)); > new QuantLib::FDEuropeanEngine<>(process, timeSteps, timeSteps-1)); > > When changed to : > > new QuantLib::FDAmericanEngine(process, timeSteps, timeSteps-1)); > new QuantLib::FDBermudanEngine(process, timeSteps, timeSteps-1)); > new QuantLib::FDEuropeanEngine(process, timeSteps, timeSteps-1)); > > this file compiler fine. But then further down the line I get errors in > other files : > > e.g. > > ratehelpers.cpp(183) : error C2039: 'BondHelper' : is not a member of > 'QuantLib' > > Thanks > > -- > View this message in context: http://www.nabble.com/errors-on-building-QuantLibAddin-tp23134818p23134818.html > Sent from the quantlib-dev mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Stay on top of everything new and different, both inside and > around Java (TM) technology - register by April 22, and save > $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. > 300 plus technical and hands-on sessions. Register today. > Use priority code J9JMT32. http://p.sf.net/sfu/p > _______________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
|
From: cx479 <ar...@hu...> - 2009-04-20 11:21:14
|
currently have revision 16182 of QuantLib revision 16093 of QuantLibAddin QuantLib builds fine. When I build QuantLibAddin, get errors in enumeratedclasses.cpp originating from : new QuantLib::FDAmericanEngine<>(process, timeSteps, timeSteps-1)); new QuantLib::FDBermudanEngine<>(process, timeSteps, timeSteps-1)); new QuantLib::FDEuropeanEngine<>(process, timeSteps, timeSteps-1)); When changed to : new QuantLib::FDAmericanEngine(process, timeSteps, timeSteps-1)); new QuantLib::FDBermudanEngine(process, timeSteps, timeSteps-1)); new QuantLib::FDEuropeanEngine(process, timeSteps, timeSteps-1)); this file compiler fine. But then further down the line I get errors in other files : e.g. ratehelpers.cpp(183) : error C2039: 'BondHelper' : is not a member of 'QuantLib' Thanks -- View this message in context: http://www.nabble.com/errors-on-building-QuantLibAddin-tp23134818p23134818.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: Dirk E. <ed...@de...> - 2009-04-18 02:22:25
|
In ql/time/date.cpp we have
Date Date::todaysDate() {
std::time_t t;
if (std::time(&t) == std::time_t(-1)) // -1 means time() didn't work
return Date();
std::tm *gt = std::gmtime(&t);
return Date(Day(gt->tm_mday),
Month(gt->tm_mon+1),
Year(gt->tm_year+1900));
}
I'd like to be able to use std::localtime instead as I just got bitten when I
asked for todaysDate() here in UTC+6 and got tomorrow's date instead.
Shall I add that with a binary toggle to turn localtime on/off with a default
to off, i.e. existing behaviour?
Other suggestions? I'd also love a Date() constructor from "yyyymmdd" or
(long) yyyymmdd as just relying on the Applix/Excel number is a tad
restrictive.
Dirk
--
Three out of two people have difficulties with fractions.
|
|
From: Luigi B. <lui...@gm...> - 2009-04-17 10:10:21
|
Hi Nando, sorry if I'll be short---I don't have much time and I will be gone in the afternoon. On Fri, 2009-04-17 at 11:31 +0200, Ferdinando Ametrano wrote: > > So basically, you tried to discount to yesterday with the evaluation > > date set to today? > > it is not nonsensical as (you try to make) it sounds, especially in a > dynamic environment. > I have a session on QuantLibXL with the evaluation date equal to > today. I'm asked by the control office to justify a bond price > valuation done about 2 months ago. I deserialize the xml files of that > bond and its interest rate curve as they were at the time. The yield > curve has fixed reference date. The bond clean price fails because of > the evaluation date, and it should not since both bond and interest > rate curve are coherent. I think the clean price should fail. It's true that, with a fixed reference date for the curve, you can calculate the NPV. But for the clean price you need to calculate the bond settlement date, and you can't retrieve that from the discount curve---you don't know if the reference date was t+0, t+2 or whatever. And in general, yes, it might be a pain to keep curves, instrument and evaluation date consistent. But otherwise, I'm not sure that the library can always determine when you want it to disregard the evaluation date that you set earlier in the session. I tend to think it dangerous when the code tries to double-guess the user. > ok, now that at least we agree that it should check the evaluation > date, let's try to move ahead one more step. It might check the yield > term structure reference date if a pricing engine is set: wouldn't > this be better? It would. But to retrieve the discount curve, you'll have to downcast the engine (not a big problem now, but there might be a few different engines in the future.) We'd be entering a quagmire of "it's a discounting engine? Ok, get the discount curve. It's not? It's a short-rate model engine? Ok, get the model, and get the risk-free curve from it. It's not? ..." > It would allow to price the bond in the above QuantLibXL example Again, not sure about that. NPV? Yes. Price? No. > This is the key point you can observe in Revision 16180 > (http://quantlib.svn.sourceforge.net/quantlib/?rev=16180&view=rev): > isExpired sometime refers to the evaluation date, some other times to > the term structure reference date. In my opinion the latter should be > the correct, or at least preferred, behavior. Same problem here. When it checks against the reference date, it's because we didn't move the instrument to the pricing-engine framework and we still have the discount curve available. We'll lose it if we move it into the engine. Also, it depends. If we're checking cash-flow dates, they should be checked against the curve reference date. If we're checking exercise dates, those should be checked against the evaluation date, shouldn't they? Later, Luigi -- The First Rule of Optimization: Don't do it. The Second Rule of Optimization (For experts only): Don't do it yet. -- Michael Jackson |
|
From: Ferdinando A. <qf...@am...> - 2009-04-17 09:31:48
|
Hi Luigi > So basically, you tried to discount to yesterday with the evaluation > date set to today? it is not nonsensical as (you try to make) it sounds, especially in a dynamic environment. I have a session on QuantLibXL with the evaluation date equal to today. I'm asked by the control office to justify a bond price valuation done about 2 months ago. I deserialize the xml files of that bond and its interest rate curve as they were at the time. The yield curve has fixed reference date. The bond clean price fails because of the evaluation date, and it should not since both bond and interest rate curve are coherent. To solve this issue I have to change evaluation date, disrupting my session, or just use a different dedicated session for the control office check. No big deal, but definitely not nice. >> >> E.g. Bond::isExpired check the settlementDate() vs >> >> Settings::instance().evaluationDate(). > > Oh, you mean "it checks the last cash flow against the settlement date, > instead of checking it against the evaluation date". I though you meant > "it compares the settlement date and the evaluation date". Agreed, it > should check the evaluation date. ok, now that at least we agree that it should check the evaluation date, let's try to move ahead one more step. It might check the yield term structure reference date if a pricing engine is set: wouldn't this be better? It would allow to price the bond in the above QuantLibXL example This is the key point you can observe in Revision 16180 (http://quantlib.svn.sourceforge.net/quantlib/?rev=16180&view=rev): isExpired sometime refers to the evaluation date, some other times to the term structure reference date. In my opinion the latter should be the correct, or at least preferred, behavior. While this can be probably patched locally (and I'm mainly interest in the Bond class right now), thinking along this line might lead to conclude that we should add the reference date in Instrument::results, i.e. the date at which value and error estimate have been evaluated. This would make the information set in Instrument::results "complete" and would allow for easy check/use of that reference date. Then the current evaluation date might then just become a fall-back case when the engine is not provided in order to calculate Bond::settlementDate and Bond::accruedAmount I look forward to feedback ciao -- Nando |
|
From: Luigi B. <lui...@gm...> - 2009-04-17 07:45:33
|
On Thu, 2009-04-16 at 19:54 +0200, Ferdinando Ametrano wrote: > > If there's no payment after the evaluation date, you can consider the > > instrument as expired. Unless your settlement date is _before_ the > > evaluation date, but that's nonsense, isn't it? > > Not really. I tried to price an expired (from the point of view of the > evaluation date) bond with an YieldTermStructure whose settlement date > was also before evaluation date, i.e. I would have liked not to care > about the evaluation date at all. So basically, you tried to discount to yesterday with the evaluation date set to today? > >> E.g. Bond::isExpired check the settlementDate() vs > >> Settings::instance().evaluationDate(). Oh, you mean "it checks the last cash flow against the settlement date, instead of checking it against the evaluation date". I though you meant "it compares the settlement date and the evaluation date". Agreed, it should check the evaluation date. Luigi -- To err is human -- to blame it on a computer is even more so. -- unknown |
|
From: Ferdinando A. <qf...@am...> - 2009-04-16 17:29:19
|
Hi Luigi >> - modified Event:Date() to return a const reference > > This doesn't give you anything [..] and forces any Event class to store > the date, thus preventing it from calculating the date on the fly. Agreed. It escaped me. I can revert it tomorrow >> - added static Event::hasOccurredFunction to encapsulate the hasOccurred logic to be used also by non-Event object > > If it's generic logic, it shouldn't be in the Event class, even as a > static method. Agreed again. I put it there just because the Event class documentation suggest that it should be the only place in the code that is affected directly by QL_TODAYS_PAYMENTS. I could take it out of the Event class and keep it in the same event.hpp file, or put it in its own file, as you prefer > Then again, if you want to use it somewhere else, it's > probably a sign that something else should be inherited from Event and > is currently missing. Agreed again, anyway it would require a lot of refactoring and I'm currently not up for it. The goal of this commit was to uniform the hasOccurred logic which was erratic for non-Event object, and I would keep this result. ciao -- Nando |
|
From: Luigi B. <lui...@gm...> - 2009-04-16 16:13:31
|
On Thu, 2009-04-16 at 14:56 +0000, na...@us... wrote: > Revision: 16174 > http://quantlib.svn.sourceforge.net/quantlib/?rev=16174&view=rev > Author: nando > > Log Message: > ----------- > - added static Event::hasOccurredFunction to encapsulate the hasOccurred logic to be used also by non-Event object If it's generic logic, it shouldn't be in the Event class, even as a static method. Then again, if you want to use it somewhere else, it's probably a sign that something else should be inherited from Event and is currently missing. > - modified Event:Date() to return a const reference This doesn't give you anything (allocating a reference is just as costly as allocating a Date on the stack, since Date only contains a long. Any number of methods doesn't make a class any more heavier to instantiate) and forces any Event class to store the date, thus preventing it from calculating the date on the fly. In short, I'd revert the whole changeset, at least until we think a bit more about it. Objections? Luigi -- Perfection is reached, not when there is no longer anything to add, but when there is no longer anything to take away. -- Antoine de Saint-Exupery |
|
From: Ferdinando A. <qf...@am...> - 2009-04-16 15:16:41
|
Hi all in revision 16174 (http://quantlib.svn.sourceforge.net/quantlib/?rev=16174&view=rev) I've revisited Instrument::isExpired implementation, which is now often using Event::hasOccurredFunction I noticed that in many cases the Instrument is considered to be expired if its last payment date is earlier than Settings::instance().evaluationDate(). Unless I miss something this approach is wrong. isExired if often used in order to bypass NPV evaluation setting it to zero, and as such it should rely on a PricingEngine and/or TermStructure::referenceDate() to verify expiration E.g. Bond::isExpired check the settlementDate() vs Settings::instance().evaluationDate(). This imply that if a bond trade with t+3 settlement it could be expired and still have cashflows to be discounted for an YieldTermStructure with t=0 as referenceDate If I'm right removing the default referenceDate from Event::hasOccurredFunction would show at compilation time most of the places where expiration is deduced from Settings::instance().evaluationDate() Any feedback? ciao -- Nando |
|
From: Luigi B. <lui...@gm...> - 2009-04-15 15:04:26
|
On Tue, 2009-04-14 at 07:09 -0700, Matt Knox wrote: > easter monday is mistakenly flagged as a holiday for the Canadian calendars. > Only the friday (good friday) is an actual holiday (as far as the markets > and the vast majority of employers are concerned anyway). Fixed, thanks. Luigi -- Westheimer's Discovery: A couple of months in the laboratory can frequently save a couple of hours in the library. |
|
From: Matt K. <mat...@ho...> - 2009-04-14 14:09:02
|
Hi there, easter monday is mistakenly flagged as a holiday for the Canadian calendars. Only the friday (good friday) is an actual holiday (as far as the markets and the vast majority of employers are concerned anyway). This can be verified on bloomberg. Thanks, - Matt -- View this message in context: http://www.nabble.com/canada-calendar%3A-easter-monday-tp23040118p23040118.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: stefanadelbert <ste...@gm...> - 2009-04-13 03:16:43
|
Hi Nathan Today I've been playing with QLNet and ASP and have got a proof of concept going. I've just used the FixedRateBond class so far and have essentially modelled an interest only mortgage with it. I have not had a look at your code yet, but I reckon that for my purposes I might take your C++ code and port it to the C# QLNet project onto a branch, if you're OK with that. I still need to finalise with the owners of QLNet about how best to do that. Stefan Nathan Abbott wrote: > > Sorry for the delay. Here is what I have written so for. First the code is > off QuantLib 0.9.7. It will not work with the current copy of QuantLib in > subversion. > > in ql/cashflows/cashflows.hpp,cashflows.cpp > I add a sumAmount to the cashflows class. The loan class use this > method. > > > in ql/cashflows/fixedratecoupon.hpp, fixedratecoupon.cpp > I add delaydays method to a FixedRateLeg. We need this for Mortgage > Bonds > > in ql/experimental/loans/amortizingfixedrateleg.hpp, > amortizingfixedrateleg.cpp > I created a AmortizingFixedRateLeg class. This has the amortizing > logic > need to create a loan cash flow. > > in ql/experimental/loans/loan.hpp, loan.cpp > This is a base loan class. It is very similiar to the bond class. > > in ql/experimental/loans/fixedrateloan.hpp, fixedrateloan.cpp > This is a FixedRateLoan class that inherits from the loan class. It > use > the AmortizingFixedRateLeg to create it legs. It can create its own cash > flows and get the npv from an pricingengine. > > in ql/experimental/loans/discountingloanengine.cpp > This is the pricing engine for the loan class. > > in ql/experimental/mortgagebonds/mortgagebond.hpp, mortgagebond.cpp > This is a base MortgageBond class. Obviously, it inherits from the > bond > class. Right now all it has is a WAL calculation method. > > in ql/experimental/mortgagebonds/fixedratemortgagebond.hpp, > fixedratemortgagebond.cpp > This is a FixedRateMortgageBond class. Obviously, it inherits from the > mortgagebond class. It is very similiar to the AmortizingFixedRateBond > > > On Wed, Apr 8, 2009 at 3:24 AM, Jose Aparicio-Navarro > <ja...@fr...>wrote: > >> Hi Nathan, yes thank you, I want to sign for the free copy :-) >> I'll try to look at it from the prepayments/default side. But I do not >> think I'll implement anything in the short term. >> It is 0.9.7 code, right? >> >> Regards >> Pepe >> >> >> Quoting Nathan Abbott <nka...@gm...>: >> >> > I have a version of a Loan class, a FixedRateLoan class, a MortgageBond >> > class, and a FixedRateMortgageBond class that I am working on. If any >> body >> > wants to look at them just email me. Any suggests and comments would be >> > helpful. >> > >> > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > High Quality Requirements in a Collaborative Environment. > Download a free trial of Rational Requirements Composer Now! > http://p.sf.net/sfu/www-ibm-com > _______________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > -- View this message in context: http://www.nabble.com/mortgage-bond-tp22403757p23017302.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: Ferdinando A. <qf...@am...> - 2009-04-10 16:43:02
|
On Fri, Apr 10, 2009 at 6:13 PM, Luigi Ballabio <lui...@gm...> wrote: >> Log Message: >> ----------- >> Unadjusted termination date as per ISDA convention > > Did you run the test suite after this one? ehm... no, sorry If it can be of partial comfort I ate my own crap, as I was in the middle of some credit structure re-factoring (introducing jumps) and was banging my head about what I broke in that unit-test :-( ciao -- Nando |