You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(60) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(18) |
Feb
(4) |
Mar
(6) |
Apr
(2) |
May
|
Jun
(12) |
Jul
(48) |
Aug
(6) |
Sep
(3) |
Oct
(24) |
Nov
(15) |
Dec
(18) |
| 2002 |
Jan
(39) |
Feb
(12) |
Mar
(80) |
Apr
(72) |
May
(46) |
Jun
(27) |
Jul
(23) |
Aug
(34) |
Sep
(65) |
Oct
(71) |
Nov
(19) |
Dec
(14) |
| 2003 |
Jan
(44) |
Feb
(59) |
Mar
(18) |
Apr
(62) |
May
(54) |
Jun
(27) |
Jul
(46) |
Aug
(15) |
Sep
(44) |
Oct
(36) |
Nov
(19) |
Dec
(12) |
| 2004 |
Jan
(26) |
Feb
(33) |
Mar
(47) |
Apr
(63) |
May
(36) |
Jun
(65) |
Jul
(80) |
Aug
(163) |
Sep
(65) |
Oct
(39) |
Nov
(36) |
Dec
(39) |
| 2005 |
Jan
(97) |
Feb
(78) |
Mar
(64) |
Apr
(64) |
May
(48) |
Jun
(55) |
Jul
(89) |
Aug
(57) |
Sep
(51) |
Oct
(111) |
Nov
(86) |
Dec
(76) |
| 2006 |
Jan
(84) |
Feb
(103) |
Mar
(143) |
Apr
(92) |
May
(55) |
Jun
(58) |
Jul
(71) |
Aug
(57) |
Sep
(74) |
Oct
(59) |
Nov
(8) |
Dec
(32) |
| 2007 |
Jan
(60) |
Feb
(40) |
Mar
(50) |
Apr
(26) |
May
(61) |
Jun
(120) |
Jul
(119) |
Aug
(48) |
Sep
(121) |
Oct
(66) |
Nov
(103) |
Dec
(43) |
| 2008 |
Jan
(60) |
Feb
(109) |
Mar
(92) |
Apr
(106) |
May
(82) |
Jun
(59) |
Jul
(67) |
Aug
(118) |
Sep
(131) |
Oct
(56) |
Nov
(37) |
Dec
(69) |
| 2009 |
Jan
(75) |
Feb
(76) |
Mar
(103) |
Apr
(78) |
May
(61) |
Jun
(35) |
Jul
(66) |
Aug
(69) |
Sep
(166) |
Oct
(46) |
Nov
(72) |
Dec
(65) |
| 2010 |
Jan
(48) |
Feb
(57) |
Mar
(93) |
Apr
(85) |
May
(123) |
Jun
(82) |
Jul
(98) |
Aug
(121) |
Sep
(146) |
Oct
(86) |
Nov
(72) |
Dec
(34) |
| 2011 |
Jan
(96) |
Feb
(55) |
Mar
(73) |
Apr
(57) |
May
(33) |
Jun
(74) |
Jul
(89) |
Aug
(71) |
Sep
(103) |
Oct
(76) |
Nov
(52) |
Dec
(61) |
| 2012 |
Jan
(48) |
Feb
(54) |
Mar
(78) |
Apr
(60) |
May
(75) |
Jun
(59) |
Jul
(33) |
Aug
(66) |
Sep
(43) |
Oct
(46) |
Nov
(75) |
Dec
(51) |
| 2013 |
Jan
(112) |
Feb
(72) |
Mar
(49) |
Apr
(48) |
May
(42) |
Jun
(44) |
Jul
(80) |
Aug
(19) |
Sep
(33) |
Oct
(37) |
Nov
(38) |
Dec
(98) |
| 2014 |
Jan
(113) |
Feb
(93) |
Mar
(49) |
Apr
(106) |
May
(97) |
Jun
(155) |
Jul
(87) |
Aug
(127) |
Sep
(85) |
Oct
(48) |
Nov
(41) |
Dec
(37) |
| 2015 |
Jan
(34) |
Feb
(50) |
Mar
(104) |
Apr
(80) |
May
(82) |
Jun
(66) |
Jul
(41) |
Aug
(84) |
Sep
(37) |
Oct
(65) |
Nov
(83) |
Dec
(52) |
| 2016 |
Jan
(68) |
Feb
(35) |
Mar
(42) |
Apr
(35) |
May
(54) |
Jun
(75) |
Jul
(45) |
Aug
(52) |
Sep
(60) |
Oct
(52) |
Nov
(36) |
Dec
(64) |
| 2017 |
Jan
(92) |
Feb
(59) |
Mar
(35) |
Apr
(53) |
May
(83) |
Jun
(43) |
Jul
(65) |
Aug
(68) |
Sep
(46) |
Oct
(75) |
Nov
(40) |
Dec
(49) |
| 2018 |
Jan
(68) |
Feb
(54) |
Mar
(48) |
Apr
(58) |
May
(51) |
Jun
(44) |
Jul
(40) |
Aug
(68) |
Sep
(35) |
Oct
(15) |
Nov
(7) |
Dec
(37) |
| 2019 |
Jan
(43) |
Feb
(7) |
Mar
(22) |
Apr
(21) |
May
(31) |
Jun
(39) |
Jul
(73) |
Aug
(45) |
Sep
(47) |
Oct
(89) |
Nov
(19) |
Dec
(69) |
| 2020 |
Jan
(52) |
Feb
(63) |
Mar
(45) |
Apr
(59) |
May
(42) |
Jun
(57) |
Jul
(30) |
Aug
(29) |
Sep
(75) |
Oct
(64) |
Nov
(96) |
Dec
(22) |
| 2021 |
Jan
(14) |
Feb
(24) |
Mar
(35) |
Apr
(58) |
May
(36) |
Jun
(15) |
Jul
(18) |
Aug
(31) |
Sep
(30) |
Oct
(33) |
Nov
(27) |
Dec
(16) |
| 2022 |
Jan
(35) |
Feb
(22) |
Mar
(14) |
Apr
(20) |
May
(44) |
Jun
(53) |
Jul
(25) |
Aug
(56) |
Sep
(11) |
Oct
(47) |
Nov
(22) |
Dec
(36) |
| 2023 |
Jan
(30) |
Feb
(17) |
Mar
(31) |
Apr
(48) |
May
(31) |
Jun
(7) |
Jul
(25) |
Aug
(26) |
Sep
(61) |
Oct
(66) |
Nov
(19) |
Dec
(21) |
| 2024 |
Jan
(37) |
Feb
(29) |
Mar
(26) |
Apr
(26) |
May
(34) |
Jun
(9) |
Jul
(27) |
Aug
(13) |
Sep
(15) |
Oct
(25) |
Nov
(13) |
Dec
(8) |
| 2025 |
Jan
(13) |
Feb
(1) |
Mar
(16) |
Apr
(17) |
May
(8) |
Jun
(6) |
Jul
(9) |
Aug
|
Sep
(6) |
Oct
(15) |
Nov
(6) |
Dec
|
| 2026 |
Jan
(6) |
Feb
(4) |
Mar
(20) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Philippe H. <phi...@ex...> - 2021-07-26 13:18:55
|
Does QL have a convertible bond model of any sort? Looking for something simple enough, not making markets so approximate would be good enough. Philippe Hatstadt -- Broker-Dealer services offered through Exos Securities LLC, member of SIPC <http://www.sipc.org/> / FINRA <http://www.finra.org/> / BrokerCheck <https://brokercheck.finra.org/>/ 2021 Exos, inc. For important disclosures, click here <https://www.exosfinancial.com/general-disclosures>. |
|
From: <mat...@gm...> - 2021-07-24 11:33:03
|
Dear mailing list,
Apologies for the imprecise subject line. Cannot seem to summarize the matter less verbosely than the following:
I would like to price an instrument, say a Bond with the DiscountingBondEngine (using QuantLib’s Python bindings). This engine consumes e.g. a handle to a ZeroCurve or ZeroSpreadedTermStructure.
That is, the YieldTermStructure instance used here is built from a list of Dates and Rates (and potentially a spread). The reference date of the curve so constructed will be the first element in the list of Dates.
For example:
ref_date = ql.Date(2021, 7, 23)
zero_dates_t = [ref_date] + [ql.Date.from_date(d) for d in …]
zero_rates_t = [-0.001, -0.0009, …]
zero_curve_t = ql.NaturalCubicZeroCurve(zero_dates_t, zero_rates_t, day_count, calendar, ql.SplineCubic(), compounding, frequency)
shifted_curve_t = ql.ZeroSpreadedTermStructure(ql.YieldTermStructureHandle(zero_curve_t), spread_handle, compounding, zero_curve_t.dayCounter())
engine = ql.DiscountingBondEngine(ql.YieldTermStructureHandle(shifted_curve_t))
bond.setPricingEngine(engine)
Now imagine I also have a zero_curve_t0 with rates from a prior reference date, say 2021-6-23.
When I would like to price the bond as of 2021-7-23 (T), but using the rate curve of 2021-6-23 (T0) – thus playing the scenario that no change in yields occurred in 1 month – then I could for example use the composite zero curve as follows:
composite_zero = ql.CompositeZeroYieldStructure(
ql.YieldTermStructureHandle(zero_curve_t),
ql.YieldTermStructureHandle(zero_curve_t0),
lambda r1, r2: r2,
compounding,
frequency)
)
shifted_composite = ql.ZeroSpreadedTermStructure(ql.YieldTermStructureHandle(composite_zero), spread_handle)
Here, timeFromReference is calculated from the reference date of the first argument curve, zero_curve_t: 2021-7-23. But rates are picked from the second argument curve, zero_curve_t0.
It looks a bit like a hack, but it appears to work.
However, imagine now I would like to price the bond still as of 2021-7-23 (reference date of zero_curve_t), but using rates from 2021-6-23 *without* shifting zero_curve_t0 by a time offset of 1 month.
So let us say the first cash flow occurs on 2021-10-23, i.e. in three month from T (and four months from T0). Then it should be discounted with the 4-month zero rate of zero_curve_t0. The method described above would discount with the 3-month zero rate of zero_curve_t0.
Because the discounting engine uses as evaluation date the reference date of the yield curve supplied to the engine, one has to supply a curve with reference 2021-7-23 in order to price at T.
Now how would I shift the rates of zero_curve_t0 such that it attains a reference date of 2021-7-23, but the zero rate on t=3/12 would coincide with the zero rate of zero_curve_t0 on t=4/12?
I could maybe construct a new curve with, say, daily nodes beginning from 2021-7-23, going on for 40Y and its rates are evaluated per zero_curve_t0. But this looks like an even worse hack than the roll-down via composite curves and it sure is wasteful with respect to resources.
Is there any better way which I fail to see?
Thanks and kind regards,
Matthias
|
|
From: <mat...@gm...> - 2021-07-22 17:59:26
|
Not straightforward, but there is this: OpenSourceRisk/ORE-SWIG (github.com) <https://github.com/OpenSourceRisk/ORE-SWIG> Cannot immediately verify whether the risky bond engine is included or not (first glance looks like a “not”). KR Matthias From: Philippe Hatstadt <phi...@ex...> Sent: Thursday, 22 July, 2021 17:44 Cc: QuantLib users <qua...@li...> Subject: Re: [Quantlib-users] [EXT] RE: Bootstrapping corporate bond hazard rate curve Thanks. Is there a Python interface to the ORE extension? Philippe Hatstadt On Thu, Jul 22, 2021 at 11:30 AM <mat...@gm... <mailto:mat...@gm...> > wrote: Hello, The latter exists in ORE/qle to some extent: https://github.com/OpenSourceRisk/Engine/blob/347f7d81b1991b5b88522e6e4793e82ddfe9be09/QuantExt/qle/pricingengines/discountingriskybondengine.cpp#L35 Would be interested in the former as well – esp. methodology and how to choose the appropriate bonds. Best regards, Matthias From: Philippe Hatstadt <phi...@ex... <mailto:phi...@ex...> > Sent: Thursday, 22 July, 2021 15:15 To: QuantLib users <qua...@li... <mailto:qua...@li...> > Subject: [Quantlib-users] Bootstrapping corporate bond hazard rate curve Does QL have any routines to bootstrap a hazard rate curve from a set of increasing maturity corporate bonds? I am sure that capability exists for CDS, but wondering if it exists for bonds. A related question (or dependency really) is whether there exists a method to price a corporate bond from a hazard rate curve and a fixed recovery rate? Regards Philippe Hatstadt Broker-Dealer services offered through Exos Securities LLC, member of <http://www.sipc.org/> SIPC / <http://www.finra.org/> FINRA / BrokerCheck <https://brokercheck.finra.org/> / 2021 Exos, inc. For important disclosures, click here <https://www.exosfinancial.com/general-disclosures> . Broker-Dealer services offered through Exos Securities LLC, member of <http://www.sipc.org/> SIPC / <http://www.finra.org/> FINRA / BrokerCheck <https://brokercheck.finra.org/> / 2021 Exos, inc. For important disclosures, click here <https://www.exosfinancial.com/general-disclosures> . |
|
From: Philippe H. <phi...@ex...> - 2021-07-22 15:44:18
|
Thanks. Is there a Python interface to the ORE extension? Philippe Hatstadt On Thu, Jul 22, 2021 at 11:30 AM <mat...@gm...> wrote: > Hello, > > > > The latter exists in ORE/qle to some extent: > https://github.com/OpenSourceRisk/Engine/blob/347f7d81b1991b5b88522e6e4793e82ddfe9be09/QuantExt/qle/pricingengines/discountingriskybondengine.cpp#L35 > > > > Would be interested in the former as well – esp. methodology and how to > choose the appropriate bonds. > > > > > > Best regards, > > > > Matthias > > > > > > *From:* Philippe Hatstadt <phi...@ex...> > *Sent:* Thursday, 22 July, 2021 15:15 > *To:* QuantLib users <qua...@li...> > *Subject:* [Quantlib-users] Bootstrapping corporate bond hazard rate curve > > > > Does QL have any routines to bootstrap a hazard rate curve from a set of > increasing maturity corporate bonds? I am sure that capability exists for > CDS, but wondering if it exists for bonds. A related question (or > dependency really) is whether there exists a method to price a corporate > bond from a hazard rate curve and a fixed recovery rate? > > > > Regards > > > Philippe Hatstadt > > > > > > > > Broker-Dealer services offered through Exos Securities LLC, member of SIPC > <http://www.sipc.org/> / *FINRA <http://www.finra.org/>* / BrokerCheck > <https://brokercheck.finra.org/>/ 2021 Exos, inc. For important > disclosures, *click here > <https://www.exosfinancial.com/general-disclosures>*. > > > -- Broker-Dealer services offered through Exos Securities LLC, member of SIPC <http://www.sipc.org/> / FINRA <http://www.finra.org/> / BrokerCheck <https://brokercheck.finra.org/>/ 2021 Exos, inc. For important disclosures, click here <https://www.exosfinancial.com/general-disclosures>. |
|
From: <mat...@gm...> - 2021-07-22 15:31:00
|
Hello, The latter exists in ORE/qle to some extent: https://github.com/OpenSourceRisk/Engine/blob/347f7d81b1991b5b88522e6e4793e82ddfe9be09/QuantExt/qle/pricingengines/discountingriskybondengine.cpp#L35 Would be interested in the former as well – esp. methodology and how to choose the appropriate bonds. Best regards, Matthias From: Philippe Hatstadt <phi...@ex...> Sent: Thursday, 22 July, 2021 15:15 To: QuantLib users <qua...@li...> Subject: [Quantlib-users] Bootstrapping corporate bond hazard rate curve Does QL have any routines to bootstrap a hazard rate curve from a set of increasing maturity corporate bonds? I am sure that capability exists for CDS, but wondering if it exists for bonds. A related question (or dependency really) is whether there exists a method to price a corporate bond from a hazard rate curve and a fixed recovery rate? Regards Philippe Hatstadt Broker-Dealer services offered through Exos Securities LLC, member of <http://www.sipc.org/> SIPC / <http://www.finra.org/> FINRA / BrokerCheck <https://brokercheck.finra.org/> / 2021 Exos, inc. For important disclosures, click here <https://www.exosfinancial.com/general-disclosures> . |
|
From: Philippe H. <phi...@ex...> - 2021-07-22 13:46:14
|
Does QL have any routines to bootstrap a hazard rate curve from a set of increasing maturity corporate bonds? I am sure that capability exists for CDS, but wondering if it exists for bonds. A related question (or dependency really) is whether there exists a method to price a corporate bond from a hazard rate curve and a fixed recovery rate? Regards Philippe Hatstadt -- Broker-Dealer services offered through Exos Securities LLC, member of SIPC <http://www.sipc.org/> / FINRA <http://www.finra.org/> / BrokerCheck <https://brokercheck.finra.org/>/ 2021 Exos, inc. For important disclosures, click here <https://www.exosfinancial.com/general-disclosures>. |
|
From: Luigi B. <lui...@gm...> - 2021-07-20 19:02:27
|
Yes, you could. Luigi On Tue, Jul 20, 2021 at 8:16 PM David Sansom <da...@el...> wrote: > Hi, > > Could you just derive MyFixedRateBond from FixedRateBond and modify the > constructor to remember the payment convention? > > Best > > David > > Sent from my iPhone > > > On 20 Jul 2021, at 18:33, mat...@gm... wrote: > > > > Hello Jian, > > > > You probably cannot: The Bond c'tor consumes a Leg, a dynamic array of > cash flows. To get those, the payment convention has already been applied. > Essentially no reason to keep memorizing it. > > > > Maybe there is even a case where the convention can change over time, > say for a bond with two coupon periods: one fixed, one structured. Not sure > if it makes sense and it probably needs some extension to actually properly > price the structure, but let us leave that aside. I do think, multiple Legs > for one bond are possible in ORE though: > https://github.com/OpenSourceRisk/Engine/blob/347f7d81b1991b5b88522e6e4793e82ddfe9be09/OREData/ored/portfolio/bond.cpp#L186 > > > > Similar can be said for the day counter, which may also be an > interesting feature to obtain from a bond instance (and which also may not > be unique). > > > > So I suggest to create a wrapper around the QuantLib bond instance and > store those properties if required somewhere downstream in the program flow. > > > > > > HTH > > Matthias > > > > > > -----Original Message----- > > From: jian Xu <jia...@gm...> > > Sent: Friday, 16 July, 2021 23:01 > > To: QuantLib users <qua...@li...> > > Subject: [Quantlib-users] How to get the payment convention given a > FixedRateBond? > > > > Hi, > > > > I'm using the Python interface of the QuantLib. The FixedRateBond > constructor can take in a payment convention (Unadjusted, > ModifiedFollowing, etc). And inside the C++ code, I can see the > paymentConvention is used to construct the cashflows. My question is, > given a FixedRateBond object in Python (or more generally a Bond object), > how do I get the paymentConvention out of it? Thanks a lot. > > > > Jian > > > > > > _______________________________________________ > > QuantLib-users mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > > > > > _______________________________________________ > > QuantLib-users mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: David S. <da...@el...> - 2021-07-20 18:13:33
|
Hi, Could you just derive MyFixedRateBond from FixedRateBond and modify the constructor to remember the payment convention? Best David Sent from my iPhone > On 20 Jul 2021, at 18:33, mat...@gm... wrote: > > Hello Jian, > > You probably cannot: The Bond c'tor consumes a Leg, a dynamic array of cash flows. To get those, the payment convention has already been applied. Essentially no reason to keep memorizing it. > > Maybe there is even a case where the convention can change over time, say for a bond with two coupon periods: one fixed, one structured. Not sure if it makes sense and it probably needs some extension to actually properly price the structure, but let us leave that aside. I do think, multiple Legs for one bond are possible in ORE though: https://github.com/OpenSourceRisk/Engine/blob/347f7d81b1991b5b88522e6e4793e82ddfe9be09/OREData/ored/portfolio/bond.cpp#L186 > > Similar can be said for the day counter, which may also be an interesting feature to obtain from a bond instance (and which also may not be unique). > > So I suggest to create a wrapper around the QuantLib bond instance and store those properties if required somewhere downstream in the program flow. > > > HTH > Matthias > > > -----Original Message----- > From: jian Xu <jia...@gm...> > Sent: Friday, 16 July, 2021 23:01 > To: QuantLib users <qua...@li...> > Subject: [Quantlib-users] How to get the payment convention given a FixedRateBond? > > Hi, > > I'm using the Python interface of the QuantLib. The FixedRateBond constructor can take in a payment convention (Unadjusted, ModifiedFollowing, etc). And inside the C++ code, I can see the paymentConvention is used to construct the cashflows. My question is, given a FixedRateBond object in Python (or more generally a Bond object), how do I get the paymentConvention out of it? Thanks a lot. > > Jian > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: <mat...@gm...> - 2021-07-20 17:32:09
|
Hello Jian, You probably cannot: The Bond c'tor consumes a Leg, a dynamic array of cash flows. To get those, the payment convention has already been applied. Essentially no reason to keep memorizing it. Maybe there is even a case where the convention can change over time, say for a bond with two coupon periods: one fixed, one structured. Not sure if it makes sense and it probably needs some extension to actually properly price the structure, but let us leave that aside. I do think, multiple Legs for one bond are possible in ORE though: https://github.com/OpenSourceRisk/Engine/blob/347f7d81b1991b5b88522e6e4793e82ddfe9be09/OREData/ored/portfolio/bond.cpp#L186 Similar can be said for the day counter, which may also be an interesting feature to obtain from a bond instance (and which also may not be unique). So I suggest to create a wrapper around the QuantLib bond instance and store those properties if required somewhere downstream in the program flow. HTH Matthias -----Original Message----- From: jian Xu <jia...@gm...> Sent: Friday, 16 July, 2021 23:01 To: QuantLib users <qua...@li...> Subject: [Quantlib-users] How to get the payment convention given a FixedRateBond? Hi, I'm using the Python interface of the QuantLib. The FixedRateBond constructor can take in a payment convention (Unadjusted, ModifiedFollowing, etc). And inside the C++ code, I can see the paymentConvention is used to construct the cashflows. My question is, given a FixedRateBond object in Python (or more generally a Bond object), how do I get the paymentConvention out of it? Thanks a lot. Jian _______________________________________________ QuantLib-users mailing list Qua...@li... https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: jian Xu <jia...@gm...> - 2021-07-16 21:01:15
|
Hi, I'm using the Python interface of the QuantLib. The FixedRateBond constructor can take in a payment convention (Unadjusted, ModifiedFollowing, etc). And inside the C++ code, I can see the paymentConvention is used to construct the cashflows. My question is, given a FixedRateBond object in Python (or more generally a Bond object), how do I get the paymentConvention out of it? Thanks a lot. Jian |
|
From: Eric E. <eri...@re...> - 2021-07-16 17:59:51
|
Hi All, A preliminary build of QuantLibXL version 1.23 is available at this link: https://github.com/eehlers/QuantLibAddin-Old/releases/tag/QuantLibAddin-v1.23-prerelease I would be grateful to anyone who could test it and let me know if it's OK. I believe that I have merged all of the pull requests that I have received, and responded to other queries. If I forgot anything please let me know. Kind Regards, Eric |
|
From: Luigi B. <lui...@gm...> - 2021-07-14 08:18:50
|
QuantLib 1.23 has been released and is available for download at < https://www.quantlib.org/download.shtml>. The list of changes for this release is at < https://www.quantlib.org/reference/history.html>. Please report any problems you have with this release to the QuantLib mailing list (<qua...@li...>), or open a GitHub issue at <https://github.com/lballabio/quantlib/issues>. |
|
From: Luigi B. <lui...@gm...> - 2021-07-05 15:59:10
|
Hello everybody,
I published release candidates for version 1.23 at <
https://github.com/lballabio/QuantLib/releases/tag/1.23-rc>.
The changes are in the News.md file in the release. If you have some time
in the next few days, I'd appreciate your trying it out and reporting your
feedback.
Thanks,
Luigi
|
|
From: rohan t. <rot...@ya...> - 2021-06-17 04:05:14
|
HiI am following up on this - Are there any users of the xl version ? I note the May2021 update of the XL wrapper has removed some deprecated functions/classes: Release 1.22.0 - May 2021 - Deleted obsolete classes FDAmericanEngine, FDEuropeanEngine, FDBermudanEngine There appear no forums using the XL version, and all discussions are around Python in the main in a developer theme. Does anyone have any views ? Kind regardsRohan ----- Forwarded message ----- From: rohan talwar <rot...@ya...>To: qua...@li... <qua...@li...>Sent: Thursday, 3 June 2021, 11:31:53 GMT+10Subject: American option, discrete dividends HiI hope all are well, and thanks in advance for any help provided. Is anyone able to tell me how to determine appropriate dependencies for the XL implementation, when trying to value a single option on equity. I attach the option.xls (*_rt.xls) which comes in the standalone worksheets, and I have set up a parallel option (on RIO as the case may be). I was aiming to do FD to bump inputs (Perturb is the language often used her I think I recall) and establish risk sensitivities. I am pointing the pricing engine to "AEQPB", However, I get wrong engine, but little else, as the process to establish the pricing engine returns ok, even when providing an american exercise type. I am using ver 1.21, on excel ver 2105, 365 apps for enterprise. ObjectHandler::PricingEngineConstructor2 | String | Class | | AEQPB | QuantLib::AdditiveEQPBinomialTree | | CRR | QuantLib::CoxRossRubinstein | | JOSHI | QuantLib::Joshi4 | | JR | QuantLib::JarrowRudd | | LR | QuantLib::LeisenReimer | | TIAN | QuantLib::Tian | | TRI | QuantLib::Trigeorgis | Kind regardsRohan |
|
From: Luigi B. <lui...@gm...> - 2021-06-14 12:40:03
|
Hello Paul,
FDDividendAmericanEngine was deprecated a while ago in favor
of FdBlackScholesVanillaEngine, which can handle dividend and non-dividend
options.
Luigi
On Mon, Jun 14, 2021 at 12:39 PM Paul Bilokon <pa...@th...> wrote:
> Dear Colleagues,
>
> We are looking at pricing American options with discrete dividends using
> QuantLib and found that there was FDDividendAmericanEngine in some posts
> years ago, but it does not exist in the QuantLib Python documentation
> anymore (https://quantlib-python-docs.readthedocs.io/en/latest/). Would
> it be possible that it has been removed? In that case, do you know how to
> use QuantLib to price options with discrete dividends?
>
> Best wishes,
> Paul
>
> --
>
> Dr Paul A. Bilokon, PhD, MSc(Oxon), DIC
> Founder and CEO
>
>
>
> *Thalesians Ltd* <https://thalesians.com/>
> Level39, One Canada Square
> Canary Wharf
> London E14 5AB
>
> *Tel.:* +44 (0)20 796 57587
> *Email:* in...@th...
> *Web:* https://thalesians.com/
> *Twitter:* @thalesians <https://twitter.com/thalesians?lang=en>
>
> Follow us on LinkedIn: https://www.linkedin.com/company/thalesians
> <https://www.linkedin.com/company/thalesians>Join us on Meetup:
> https://meetup.com/thalesians/
>
> (The Thalesian Seminar series is administered via Meetup.)
>
> *VAT Registration Number:* 228 5299 80
> *Company Number:* 06843387 (Registered in England and Wales)
> *Date of Incorporation:* 11th March, 2009
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Paul B. <pa...@th...> - 2021-06-14 10:37:30
|
Dear Colleagues, We are looking at pricing American options with discrete dividends using QuantLib and found that there was FDDividendAmericanEngine in some posts years ago, but it does not exist in the QuantLib Python documentation anymore (https://quantlib-python-docs.readthedocs.io/en/latest/). Would it be possible that it has been removed? In that case, do you know how to use QuantLib to price options with discrete dividends? Best wishes, Paul -- Dr Paul A. Bilokon, PhD, MSc(Oxon), DIC Founder and CEO *Thalesians Ltd* <https://thalesians.com/> Level39, One Canada Square Canary Wharf London E14 5AB *Tel.:* +44 (0)20 796 57587 *Email:* in...@th... *Web:* https://thalesians.com/ *Twitter:* @thalesians <https://twitter.com/thalesians?lang=en> Follow us on LinkedIn: https://www.linkedin.com/company/thalesians <https://www.linkedin.com/company/thalesians>Join us on Meetup: https://meetup.com/thalesians/ (The Thalesian Seminar series is administered via Meetup.) *VAT Registration Number:* 228 5299 80 *Company Number:* 06843387 (Registered in England and Wales) *Date of Incorporation:* 11th March, 2009 |
|
From: Sumit S. <su...@mo...> - 2021-06-11 10:13:00
|
Hi all,
I have the following script that I am using to match the Treasury
2yr contract yield.
The yield is close to 0.17%. I am getting a yield of around 0.14%
One of the issues (I think) is not being able to use the accrued
interest into the calculation.
The underlying Ctd has a coupon on 30th June, 2021 and also the
settlement date assumed(based on mkt convention) is 30th Sept, 2021.
Is there a way I can incorporate this accrued into the yield calculation?
Also, does anyone see any issues with the script below that I am
using (seems to be working fine for most of the other contracts)
Regards
Sumit
===============================================================================
import QuantLib as ql
accrued_int = 0.655
price = 110.355
conv_factor = 0.9447
face_value = 100
end_of_month = False
calendar = ql.UnitedStates()
settlement_days = 84
coupon_rate = 2.625
maturity_date = ql.Date(30, 6, 2023)
issue_date = ql.Date(2, 7, 2018)
# 1. Create security
schedule = ql.Schedule(
ql.Date(2, 6, 2021),
maturity_date,
ql.Period('6M'),
calendar,
ql.ModifiedFollowing,
ql.ModifiedFollowing,
ql.DateGeneration.Backward,
end_of_month
)
day_count = ql.ActualActual(ql.ActualActual.Bond, schedule)
security = ql.FixedRateBond(
settlement_days,
face_value,
schedule,
[coupon_rate/100],
day_count
)
yld = security.bondYield(
price * conv_factor,
day_count,
ql.Compounded,
ql.Semiannual
)
print(f"yield = {yld * 100}")
--
Mosaic Smart Data
mobile +44 (0)7961839363
su...@mo...
25 Finsbury Circus ▫ EC2M 7EE ▫ London ▫ United Kingdom
www.mosaicsmartdata.com
|
|
From: Rasika S. <ras...@ai...> - 2021-06-03 13:38:11
|
Hello Luigi,
Thanks for your prompt response!
As suggested, I have opened an issue on GitHub with the request to export bucketAnalysis. Alternatively will also see how can we calculate the key rate durations without bucketAnalysis.
Regards,
Rasika Sinha
From: Luigi Ballabio <lui...@gm...>
Sent: Thursday, June 3, 2021 1:37 PM
To: Rasika Sinha <ras...@ai...>
Cc: qua...@li...
Subject: Re: [Quantlib-users] Quantlib installation on Ubuntu - bucketAnalysis function missing
Hello,
not all C++ functionality is available from Python — it's a partly manual process, so it's done when things are needed or requested. You can see what's exported by looking into <https://github.com/lballabio/QuantLib-SWIG/tree/master/SWIG>.
You can open an issue on GitHub to request that function to be exported. However, it might be easier to write something similar in Python. The idea is to calculate the initial NPV of the instruments, then bump the quotes and calculate the NPV again.
Hope this helps,
Luigi
On Wed, Jun 2, 2021 at 6:49 PM Rasika Sinha <ras...@ai...<mailto:ras...@ai...>> wrote:
Hello QL-Community,
Issue – Unable to access bucketAnalysis in Quantlib
Environment – Ubuntu 18.04 via WSL; Python 3.6.1; Windows 10
Details - I was following the steps to install Quantlib as mentioned at https://www.quantlib.org/install/linux-python.shtml. To start with I tried the first approach i.e. “Installation from PyPI”. Quantlib 1.21 got installed successfully but I am unable to use the function bucketAnalysis.
The error says - module 'QuantLib' has no attribute 'bucketAnalysis'.
I tried the second approach as well mentioned under “Installation from a released version”, but when using the newly compiled files, I got same error as mentioned above.
I can see bucketAnalysis function is present in the c++ code under experimental/risk/ but why is it missing in the Python wrapper.
Can you please guide me.
Regards,
Rasika Sinha
_______________________________________________
QuantLib-users mailing list
Qua...@li...<mailto:Qua...@li...>
https://lists.sourceforge.net/lists/listinfo/quantlib-users
|
|
From: Luigi B. <lui...@gm...> - 2021-06-03 08:07:46
|
Hello,
not all C++ functionality is available from Python — it's a partly
manual process, so it's done when things are needed or requested. You can
see what's exported by looking into <
https://github.com/lballabio/QuantLib-SWIG/tree/master/SWIG>.
You can open an issue on GitHub to request that function to be exported.
However, it might be easier to write something similar in Python. The idea
is to calculate the initial NPV of the instruments, then bump the quotes
and calculate the NPV again.
Hope this helps,
Luigi
On Wed, Jun 2, 2021 at 6:49 PM Rasika Sinha <ras...@ai...>
wrote:
> Hello QL-Community,
>
>
>
> *Issue* – Unable to access *bucketAnalysis* in Quantlib
>
> *Environment* – Ubuntu 18.04 via WSL; Python 3.6.1; Windows 10
>
>
>
> *Details* - I was following the steps to install Quantlib as mentioned at
> https://www.quantlib.org/install/linux-python.shtml. To start with I
> tried the first approach i.e. “Installation from PyPI”. Quantlib 1.21 got
> installed successfully but I am unable to use the function bucketAnalysis.
>
>
>
> *The error says - module 'QuantLib' has no attribute 'bucketAnalysis'.*
>
>
>
> I tried the second approach as well mentioned under “Installation from a
> released version”, but when using the newly compiled files, I got same
> error as mentioned above.
>
> I can see bucketAnalysis function is present in the c++ code under
> experimental/risk/ but why is it missing in the Python wrapper.
>
>
>
> Can you please guide me.
>
>
>
> Regards,
>
> Rasika Sinha
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Luigi B. <lui...@gm...> - 2021-06-03 07:54:27
|
Hello Alix,
thanks for trying this out. I think SWIG wrappers introduce an
overhead that Cython is able to sidestep, but I might be wrong. You're
welcome to try and optimize the wrappers further, if you want.
Regards,
Luigi
On Wed, Jun 2, 2021 at 9:40 AM Alix Lassauzet <ali...@gm...>
wrote:
> Hello Luigi and QL-community,
>
> I would like to share some of my findings regarding QuantLib performance
> in Python. Over the last few days, I was comparing the speed of SABR
> formula run through 3 different ways in Python: 1/ the pure Python
> implementation (my benchmark), 2/ the exposed Python function via QuantLib
> SWIG, and 3/ the same formula compiled through Cython.
>
> I would expect method 3 with Cython to reach the same level of performance
> of the usual QuantLib-Python from method 2 with a backend in C++, but I am
> surprised to observe Cython is faster than QuantLib-Python by a factor of
> around 2 (see attached python script extracted from a notebook).
>
> QuantLib C++ was compiled with the below command
>
> ./configure --enable-unity-build --disable-static CC=clang CXX=clang++ CXXFLAGS=
> '-O3 -g0 -fPIC'
>
> And then, QuantLib-Python:
> ./configure PYTHON=/usr/bin/python3 CXXFLAGS='-O3'
>
> I also tried to compile PyQL, and I observed the same level of speed-up.
>
> Should I review the compilation of QuantLb in C++ or SWIG to increase the
> performance?
>
> Interested to know any thoughts!
>
> Thanks,
> Alix
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: rohan t. <rot...@ya...> - 2021-06-03 01:52:28
|
HiI hope all are well, and thanks in advance for any help provided. Is anyone able to tell me how to determine appropriate dependencies for the XL implementation, when trying to value a single option on equity. I attach the option.xls (*_rt.xls) which comes in the standalone worksheets, and I have set up a parallel option (on RIO as the case may be). I was aiming to do FD to bump inputs (Perturb is the language often used her I think I recall) and establish risk sensitivities. I am pointing the pricing engine to "AEQPB", However, I get wrong engine, but little else, as the process to establish the pricing engine returns ok, even when providing an american exercise type. I am using ver 1.21, on excel ver 2105, 365 apps for enterprise. ObjectHandler::PricingEngineConstructor2 | String | Class | | AEQPB | QuantLib::AdditiveEQPBinomialTree | | CRR | QuantLib::CoxRossRubinstein | | JOSHI | QuantLib::Joshi4 | | JR | QuantLib::JarrowRudd | | LR | QuantLib::LeisenReimer | | TIAN | QuantLib::Tian | | TRI | QuantLib::Trigeorgis | Kind regardsRohan |
|
From: Rasika S. <ras...@ai...> - 2021-06-02 16:47:23
|
Hello QL-Community, Issue - Unable to access bucketAnalysis in Quantlib Environment - Ubuntu 18.04 via WSL; Python 3.6.1; Windows 10 Details - I was following the steps to install Quantlib as mentioned at https://www.quantlib.org/install/linux-python.shtml. To start with I tried the first approach i.e. "Installation from PyPI". Quantlib 1.21 got installed successfully but I am unable to use the function bucketAnalysis. The error says - module 'QuantLib' has no attribute 'bucketAnalysis'. I tried the second approach as well mentioned under "Installation from a released version", but when using the newly compiled files, I got same error as mentioned above. I can see bucketAnalysis function is present in the c++ code under experimental/risk/ but why is it missing in the Python wrapper. Can you please guide me. Regards, Rasika Sinha |
|
From: Alix L. <ali...@gm...> - 2021-06-02 07:37:38
|
Hello Luigi and QL-community, I would like to share some of my findings regarding QuantLib performance in Python. Over the last few days, I was comparing the speed of SABR formula run through 3 different ways in Python: 1/ the pure Python implementation (my benchmark), 2/ the exposed Python function via QuantLib SWIG, and 3/ the same formula compiled through Cython. I would expect method 3 with Cython to reach the same level of performance of the usual QuantLib-Python from method 2 with a backend in C++, but I am surprised to observe Cython is faster than QuantLib-Python by a factor of around 2 (see attached python script extracted from a notebook). QuantLib C++ was compiled with the below command ./configure --enable-unity-build --disable-static CC=clang CXX=clang++ CXXFLAGS= '-O3 -g0 -fPIC' And then, QuantLib-Python: ./configure PYTHON=/usr/bin/python3 CXXFLAGS='-O3' I also tried to compile PyQL, and I observed the same level of speed-up. Should I review the compilation of QuantLb in C++ or SWIG to increase the performance? Interested to know any thoughts! Thanks, Alix |
|
From: HANISH S. <han...@gm...> - 2021-06-01 11:49:27
|
Oh great.
Thank you. You have been a great help.
Regards
Hanish Sharma
On Tue, Jun 1, 2021 at 5:14 PM Luigi Ballabio <lui...@gm...>
wrote:
> Hi,
> no, each bespoke calendar instance is different.
>
> Luigi
>
>
> On Tue, Jun 1, 2021 at 1:31 PM HANISH SHARMA <han...@gm...>
> wrote:
>
>> Hi Luigi,
>>
>> Thank you for the explanation.
>> This implementation sparks another line of thought.
>>
>> If I make 2 instances of BespokeCalendar (say obj =
>> BespokeCalendar("Cal1") and obj2 = BespokeCalendar("Cal2")) and holidays
>> to one of the instances, the code will behave in the same way as the
>> previous implementation with Target class as they both are the instances of
>> the same calendar class.
>>
>> Is my understanding correct?
>>
>> Regards
>> Hanish Sharma
>>
>>
>> On Tue, Jun 1, 2021 at 3:08 PM Luigi Ballabio <lui...@gm...>
>> wrote:
>>
>>> ...and of course that wasn't tested. Here are the correct calls:
>>>
>>> obj2 = ql.BespokeCalendar("mycalendar")
>>> obj2.addWeekend(ql.Saturday)
>>> obj2.addWeekend(ql.Sunday)
>>>
>>> for d in ql.TARGET().holidayList(start_date, end_date):
>>> obj2.addHoliday(d)
>>>
>>> obj2.addHoliday(my_new_holiday1)
>>> obj2.addHoliday(my_new_holiday2)
>>>
>>>
>>>
>>> On Tue, Jun 1, 2021 at 11:32 AM Luigi Ballabio <lui...@gm...>
>>> wrote:
>>>
>>>> Hello,
>>>> instances of the same calendar share the added holidays. The
>>>> rationale is that, when a new holiday is announced (for instance, next
>>>> year's Platinum Jubilee in the UK) it's possible to add it to the relevant
>>>> calendar just once at initialization instead of having to do it for each
>>>> instance.
>>>>
>>>> If you want a particular calendar instance detached from all others,
>>>> you can use the BespokeCalendar class, but in that case you'll start from a
>>>> calendar without holidays and you'll have to add the whole list of them
>>>> manually. You can do something like this:
>>>>
>>>> obj2 = ql.BespokeCalendar("mycalendar")
>>>> obj2.addWeekday(ql.Saturday)
>>>> obj2.addWeekday(ql.Sunday)
>>>>
>>>> for d in TARGET().holidayList(start_date, end_date):
>>>> obj2.add(d)
>>>>
>>>> obj2.add(my_new_holiday1)
>>>> obj2.add(my_new_holiday2)
>>>>
>>>> Hope this helps,
>>>> Luigi
>>>>
>>>>
>>>>
>>>> On Tue, Jun 1, 2021 at 12:07 AM HANISH SHARMA <
>>>> han...@gm...> wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> Greetings,
>>>>>
>>>>> I have a question regarding the TARGET class.
>>>>> I have created 2 instances of the target class "obj" and "obj2".
>>>>> After this, I added 2 holidays in obj2 instance using addHoliday().
>>>>>
>>>>> Now, if I print the holidayList of both the instances, I get the same
>>>>> result ie 2 added holidays in the holiday list of obj as well.
>>>>> PFB the code snippet and output:
>>>>> [image: image.png]
>>>>> [image: image.png]
>>>>>
>>>>> Why is the output of obj.holidayList contains the holidays added in
>>>>> obj2 instance?
>>>>>
>>>>> How can I get the holidaylist of obj exclusive to obj ie holidays
>>>>> added in other instances do not become the part obj's holidaylist.
>>>>>
>>>>> Thank you in advance.
>>>>>
>>>>> Regards
>>>>> Hanish Sharma
>>>>> _______________________________________________
>>>>> QuantLib-users mailing list
>>>>> Qua...@li...
>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>>>>
>>>>
|
|
From: Luigi B. <lui...@gm...> - 2021-06-01 11:44:53
|
Hi,
no, each bespoke calendar instance is different.
Luigi
On Tue, Jun 1, 2021 at 1:31 PM HANISH SHARMA <han...@gm...>
wrote:
> Hi Luigi,
>
> Thank you for the explanation.
> This implementation sparks another line of thought.
>
> If I make 2 instances of BespokeCalendar (say obj =
> BespokeCalendar("Cal1") and obj2 = BespokeCalendar("Cal2")) and holidays
> to one of the instances, the code will behave in the same way as the
> previous implementation with Target class as they both are the instances of
> the same calendar class.
>
> Is my understanding correct?
>
> Regards
> Hanish Sharma
>
>
> On Tue, Jun 1, 2021 at 3:08 PM Luigi Ballabio <lui...@gm...>
> wrote:
>
>> ...and of course that wasn't tested. Here are the correct calls:
>>
>> obj2 = ql.BespokeCalendar("mycalendar")
>> obj2.addWeekend(ql.Saturday)
>> obj2.addWeekend(ql.Sunday)
>>
>> for d in ql.TARGET().holidayList(start_date, end_date):
>> obj2.addHoliday(d)
>>
>> obj2.addHoliday(my_new_holiday1)
>> obj2.addHoliday(my_new_holiday2)
>>
>>
>>
>> On Tue, Jun 1, 2021 at 11:32 AM Luigi Ballabio <lui...@gm...>
>> wrote:
>>
>>> Hello,
>>> instances of the same calendar share the added holidays. The
>>> rationale is that, when a new holiday is announced (for instance, next
>>> year's Platinum Jubilee in the UK) it's possible to add it to the relevant
>>> calendar just once at initialization instead of having to do it for each
>>> instance.
>>>
>>> If you want a particular calendar instance detached from all others, you
>>> can use the BespokeCalendar class, but in that case you'll start from a
>>> calendar without holidays and you'll have to add the whole list of them
>>> manually. You can do something like this:
>>>
>>> obj2 = ql.BespokeCalendar("mycalendar")
>>> obj2.addWeekday(ql.Saturday)
>>> obj2.addWeekday(ql.Sunday)
>>>
>>> for d in TARGET().holidayList(start_date, end_date):
>>> obj2.add(d)
>>>
>>> obj2.add(my_new_holiday1)
>>> obj2.add(my_new_holiday2)
>>>
>>> Hope this helps,
>>> Luigi
>>>
>>>
>>>
>>> On Tue, Jun 1, 2021 at 12:07 AM HANISH SHARMA <han...@gm...>
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> Greetings,
>>>>
>>>> I have a question regarding the TARGET class.
>>>> I have created 2 instances of the target class "obj" and "obj2".
>>>> After this, I added 2 holidays in obj2 instance using addHoliday().
>>>>
>>>> Now, if I print the holidayList of both the instances, I get the same
>>>> result ie 2 added holidays in the holiday list of obj as well.
>>>> PFB the code snippet and output:
>>>> [image: image.png]
>>>> [image: image.png]
>>>>
>>>> Why is the output of obj.holidayList contains the holidays added in
>>>> obj2 instance?
>>>>
>>>> How can I get the holidaylist of obj exclusive to obj ie holidays added
>>>> in other instances do not become the part obj's holidaylist.
>>>>
>>>> Thank you in advance.
>>>>
>>>> Regards
>>>> Hanish Sharma
>>>> _______________________________________________
>>>> QuantLib-users mailing list
>>>> Qua...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>>>
>>>
|