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
(6) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: SX L <han...@ho...> - 2020-11-10 04:22:49
|
Hi Eric, Thanks for looking into this issue. Yes, I identified the issue in my windows x64 debug version. The issue could be hard to reproduce since my release version gives me normal exit code. It really depends on the sequence of calling dtors of those shared pointers at exit. So I would suggest moving away from shared pointers in Singletons. Create a singltonDestroyer or use static instances. Get Outlook for Android<https://aka.ms/ghei36> ________________________________ From: Eric Ehlers <eri...@re...> Sent: Monday, November 9, 2020, 11:42 PM To: SX L Cc: qua...@li... Subject: Re: [Quantlib-users] ObservableSettings is deleted early than Observables. Hi Philip, I tried unsuccessfully to recreate the error. You did not say which operating system you are using but you mention "debug version" which sounds like visual studio so I tested it on Windows - I'm using Visual Studio 2019 on 64-bit WIndows 10. I built it using "Debug (static runtime)" x64 and I ran ClientCppDemo and it behaves as I expected (no access violation). Anything else I can try to recreate the error? I have not examined the code but your remarks sound sensible to me. What resolution would you suggest? Regards, Eric On 10/7/20 6:43 AM, SX L wrote: I was trying the Quantlib Addin. The QLADemo exits abnormally in the debug version with an access violation exception. It turned out to be the case that ObervableSettings is deleted earlier than some observer and observables at exit. So in the dtor of the observer, ObservableSettings is called to check if update is deferred, hence causing the exception. I feel it's unsafe to use shared pointers inside a singleton. Any suggestion? Thanks. Regards, Philip Get Outlook for Android<https://aka.ms/ghei36> _______________________________________________ QuantLib-users mailing list Qua...@li...<mailto:Qua...@li...> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Francois B. <ig...@gm...> - 2020-11-09 16:13:53
|
I also could not reproduce the error. This might be specific to Excel *365*.
thanks
Francois Botha
On Thu, 5 Nov 2020 at 17:49, <da...@el...> wrote:
> Hi Eric,
>
>
>
> To be honest, it is something of a cludge solution.
>
>
>
> Ideally, the constructor wouldn’t have code that could fail: you could end
> up with a constructed object that doesn’t work properly. Any initialization
> code that might not work could be put instead in a private Init() call
> which sets a Valid flag in the object. Then any method calls could lazily
> check the state via Init() before doing anything.
>
>
>
> Alternatively you could handle the exception within the constructor, but
> you still have the issue of what state to leave the object in.
>
>
>
> On the other hand, it is clear that this exception takes a quite specific
> set of circumstances, so it might not matter in practice.
>
>
>
> I am something of a GitHub novice, so, yes, I can send a pull request …
> once I learn how to do it!
>
> Best wishes,
>
>
>
> David
>
>
>
>
>
> *From:* Eric Ehlers <eri...@re...>
> *Sent:* Thursday, 5 November 2020 15:05
> *To:* da...@el...
> *Cc:* qua...@li...
> *Subject:* Re: [Quantlib-users] Issue with QuantLibXL and Paste Special
> in Excel
>
>
>
> Hi David,
>
> Thank you, that analysis looks great to me. I say we stick this in to
> 1.20, if anybody reports a problem we can always reverse the change and
> release a patch.
>
> Would it be possible for you to send me a pull request?
>
> Kind Regards,
> Eric
>
> On 11/5/20 2:06 PM, da...@el... wrote:
>
> Thanks for coming back on this Eric.
>
>
>
> I’m using 64-bit Excel fwiw.
>
>
> Yes, the way to start a “blank” Excel is to use
> > Excel.exe /automation
>
> So add “/automation” to the command line arguments in the Debugger.
>
>
>
> I think I found the solution: it’s an issue of an exception not being
> handled within a constructor. As an aside, it might also be why evaluating
> functions in the Function Wizard sometimes has problems.
>
> The code for the constructor and destructor of the
> ObjectHandler::FunctionCall class is below. There is a static member
> _instance which I assume is there to ensure that there is only one
> FunctionCall object at a time?
>
>
>
> The problem comes from the Excel()s call in the constructor. For some
> reason when you are using the Paste Values button, xCaller_ is type
> xltypeSRef, but Excel(xlfReftext, …) fails (perhaps because Excel doesn’t
> know what to do when the function in this right-click ‘mode’) and xReftext_
> is of type Error. Inside the subsequent call to ConvertOper::operator
> std::string() is an Excel(xlCoerce,…) call.
>
>
>
> It is this call which throws the exception, as the underlying Excel4v()
> call for the Coerce does not return xlretSuccess. The Excel() code then
> generates an exception with the text:
> "Error in call to Excel: (xlSpecial | 2) callback failed: Command failed "
>
>
>
> This exception is not caught until the top-level spreadsheet function code
> (eg qlCalendarAdvance() in my example):
>
>
>
> XLL_DEC OPER *qlCalendarAdvance(…)
> {
>
>
>
> boost::shared_ptr<ObjectHandler::FunctionCall> functionCall;
>
> try {
>
>
>
> // instantiate the Function Call object
>
>
>
> functionCall = boost::shared_ptr<ObjectHandler::FunctionCall>(
>
> new ObjectHandler::FunctionCall("qlCalendarAdvance")); <<<
> ---- GENERATES EXCEPTION
>
>
>
> BUT the FunctionCall constructor is now bailing out with an exception, and
> TBH I don’t know what state of the shared pointer is in at this stage.
> However, before dying, the constructor has made this call:
>
>
> instance_ = this;
>
>
> And this instance_ is not 0 anymore. If the instance had been constructed
> successfully, then the later destructor code would have reset instance_ =0.
> (see below). But I don’t think the destructor ever gets called. This is why
> all subsequent QuantLibXL calls fail at:
> OH_REQUIRE(!instance_, "Multiple attempts to initialize global
> FunctionCall object");
>
> And the underlying function call never gets made.
>
>
>
> How to fix this? Here’s what I did. I just moved the
>
> Instance_ = this;
>
> Line in the constructor to AFTER the Excel call (in fact the last line of
> the constructor). I recompiled and the Paste Values issue seems to have
> gone away.
>
>
> Original code
>
> namespace ObjectHandler {
>
>
>
> FunctionCall *FunctionCall::instance_ = 0;
>
>
>
> FunctionCall::FunctionCall(const std::string functionName) :
>
> functionName_(functionName),
>
> callerDimensions_(CallerDimensions::Uninitialized),
>
> error_(false) {
>
> OH_REQUIRE(!instance_, "Multiple attempts to initialize global
> FunctionCall object");
>
> instance_ = this; <<<<< MOVE THIS FROM HERE
>
>
>
> Excel(xlfCaller, &xCaller_, 0);
>
> if (xCaller_->xltype == xltypeRef || xCaller_->xltype ==
> xltypeSRef) {
>
> Excel(xlfReftext, &xReftext_, 1, &xCaller_);
>
> refStr_ = ConvertOper(xReftext_());
>
> callerType_ = CallerType::Cell;
>
> } else if (xCaller_->xltype & xltypeErr) {
>
> callerType_ = CallerType::VBA;
>
> } else if (xCaller_->xltype == xltypeMulti) {
>
> callerType_ = CallerType::Menu;
>
> } else {
>
> callerType_ = CallerType::Unknown;
>
> }
>
>
>
> <<<<< TO HERE
>
> }
>
>
>
> FunctionCall::~FunctionCall() {
>
> if (!error_) {
>
> if (callerType_ == CallerType::Cell) {
>
> RepositoryXL::instance().clearError();
>
> } else if (callerType_ == CallerType::VBA || callerType_ ==
> CallerType::Menu) {
>
> RepositoryXL::instance().clearVbaError();
>
> }
>
> }
>
> instance_ = 0;
>
> }
>
>
> Maybe this is something you could change in the next release?
>
>
> Best wishes
>
> David Sansom
>
>
> *From:* Eric Ehlers <eri...@re...> <eri...@re...>
> *Sent:* Wednesday, 4 November 2020 19:57
> *To:* qua...@li...
> *Subject:* Re: [Quantlib-users] Issue with QuantLibXL and Paste Special
> in Excel
>
>
>
> Hi David,
>
> I just tried unsuccessfully to recreate the problem. I am using 32-bit
> Excel on 64-bit Windows 10. Would be interesting to know if anybody else
> can recreate the error.
>
> I have not done Excel support in many years but I seem to remember that
> there was a way to start Excel in safe mode so that it would not load any
> addins. Then load only QLXL and try again. If the error does not occur in
> that case then it would suggest that the problem is with a different addin.
>
> Regards,
> Eric
>
> On 11/2/20 10:33 AM, da...@el... wrote:
>
> Hi everyone.
>
> I’m having a curious issue with QuantLibXL and the Paste Special / Values
> button in Excel.
>
> I’ve put a full description in the link, but the executive summary is that
> if I used the Paste Special/Values quick access button (not the Paste
> Special … sub-menu) from the right-click menu in Excel, QuantLibXL falls
> over and all subsequent calls fail.
>
>
>
>
> https://quant.stackexchange.com/questions/59026/excel-pastespecial-values-shortcut-button-causing-quantlib-to-crash
>
>
>
> I wonder if anyone else can reproduce this?
>
> Best wishes
>
> David
>
>
>
>
>
> _______________________________________________
>
> 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: Eric E. <eri...@re...> - 2020-11-09 15:43:20
|
Hi Philip, I tried unsuccessfully to recreate the error. You did not say which operating system you are using but you mention "debug version" which sounds like visual studio so I tested it on Windows - I'm using Visual Studio 2019 on 64-bit WIndows 10. I built it using "Debug (static runtime)" x64 and I ran ClientCppDemo and it behaves as I expected (no access violation). Anything else I can try to recreate the error? I have not examined the code but your remarks sound sensible to me. What resolution would you suggest? Regards, Eric On 10/7/20 6:43 AM, SX L wrote: > I was trying the Quantlib Addin. The QLADemo exits abnormally in the > debug version with an access violation exception. It turned out to be > the case that ObervableSettings is deleted earlier than some observer > and observables at exit. So in the dtor of the observer, > ObservableSettings is called to check if update is deferred, hence > causing the exception. I feel it's unsafe to use shared pointers > inside a singleton. Any suggestion? Thanks. > > Regards, > > Philip > > > Get Outlook for Android <https://aka.ms/ghei36> > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Peter C. <pca...@gm...> - 2020-11-06 21:25:38
|
Luckily the answers were consistent... :-) If t is the reference date of the curve, wouldn't curve.discount(t) be 1.0, i.e. you can just omit that? On Fri, 6 Nov 2020 at 22:17, Amine Ifri <ami...@gm...> wrote: > > Thanks Peter/Luigi, > it was actually the discount factor seen as of today t, for the relative tenor T, which is DF(t, t + T) with t being the reference date of the curve. > > > > On 6 Nov 2020, at 21:14, Peter Caspers <pca...@gm...> wrote: > > > > Hi Amine, if you mean the forward discount factor between t and t+T as > > seen from today by DF(t,t+T), you'd use curve.discount(t+T) / > > curve.discount(t). > > Thanks, Peter > > > > On Fri, 6 Nov 2020 at 21:58, Amine Ifri <ami...@gm...> wrote: > >> > >> Hi, > >> > >> I am looking at using the Discount implementation method for the yield term structure: > >> > >> DiscountFactor YieldTermStructure::discount(Time t, > >> bool extrapolate) const > >> > >> How do I calculate DF(t,t+T) where T is a tenor I am interested in, do I use curve.discount(t), or curve.discount(t + curve.referenceDate()) ? > >> > >> Thanks, > >> Amine > >> > >> _______________________________________________ > >> QuantLib-users mailing list > >> Qua...@li... > >> https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Amine I. <ami...@gm...> - 2020-11-06 21:18:12
|
Thanks Peter/Luigi, it was actually the discount factor seen as of today t, for the relative tenor T, which is DF(t, t + T) with t being the reference date of the curve. > On 6 Nov 2020, at 21:14, Peter Caspers <pca...@gm...> wrote: > > Hi Amine, if you mean the forward discount factor between t and t+T as > seen from today by DF(t,t+T), you'd use curve.discount(t+T) / > curve.discount(t). > Thanks, Peter > > On Fri, 6 Nov 2020 at 21:58, Amine Ifri <ami...@gm...> wrote: >> >> Hi, >> >> I am looking at using the Discount implementation method for the yield term structure: >> >> DiscountFactor YieldTermStructure::discount(Time t, >> bool extrapolate) const >> >> How do I calculate DF(t,t+T) where T is a tenor I am interested in, do I use curve.discount(t), or curve.discount(t + curve.referenceDate()) ? >> >> Thanks, >> Amine >> >> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Peter C. <pca...@gm...> - 2020-11-06 21:15:22
|
Hi Amine, if you mean the forward discount factor between t and t+T as seen from today by DF(t,t+T), you'd use curve.discount(t+T) / curve.discount(t). Thanks, Peter On Fri, 6 Nov 2020 at 21:58, Amine Ifri <ami...@gm...> wrote: > > Hi, > > I am looking at using the Discount implementation method for the yield term structure: > > DiscountFactor YieldTermStructure::discount(Time t, > bool extrapolate) const > > How do I calculate DF(t,t+T) where T is a tenor I am interested in, do I use curve.discount(t), or curve.discount(t + curve.referenceDate()) ? > > Thanks, > Amine > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Luigi B. <lui...@gm...> - 2020-11-06 21:12:24
|
That would be curve.discount(t+T)/curve.discount(t). Luigi On Fri, Nov 6, 2020 at 9:57 PM Amine Ifri <ami...@gm...> wrote: > Hi, > > I am looking at using the Discount implementation method for the yield > term structure: > > DiscountFactor YieldTermStructure::discount(Time t, > bool extrapolate) const > > How do I calculate DF(t,t+T) where T is a tenor I am interested in, do I > use curve.discount(t), or curve.discount(t + curve.referenceDate()) ? > > Thanks, > Amine > > |
|
From: Amine I. <ami...@gm...> - 2020-11-06 20:57:32
|
Hi,
I am looking at using the Discount implementation method for the yield term structure:
DiscountFactor YieldTermStructure::discount(Time t,
bool extrapolate) const
How do I calculate DF(t,t+T) where T is a tenor I am interested in, do I use curve.discount(t), or curve.discount(t + curve.referenceDate()) ?
Thanks,
Amine
|
|
From: Eric E. <eri...@re...> - 2020-11-06 18:37:43
|
Hi Javid, It supports joint calendars, please see QuantLibXL/StandaloneExamples/DateCalendarsDayCounters/HolidaysAndJointCalendars.xlsx. The list of supported functions is https://www.quantlib.org/quantlibxl/allfunctions.html. That includes some ObjectHandler functions in support of inspecting objects and there is an example spreadsheet for that too. QLXL implements a subset of QL functionality and sometimes the QLXL interface is out of date or different. There may well be bugs in there too, none of the apparent bugs that you have discovered is known to me. To get to the bottom of all your questions looks like a few hours' work at least which is more time than I can spare. Regards, Eric On 9/1/20 4:04 PM, Javid Ashraff via QuantLib-users wrote: > Hi All, > > I am trying to reproduce the Eonia discount curve example provided in > the QuantLib Python Cookbook (Chapter 8, page 61) using both QuantLib > Python in a Jupyter notebook as well as QuantLib Excel. As part of a > basic 'sanity' check I want to be able to demonstrate that the PVs of > the instruments used to build this curve are zero. > > When I use QL Excel (Version 16) I get a number of errors which I need > help to resolve. If necessary I can provide my spreadsheet if that > would be helpful. The specific problems I am encountering are: > > (1) The function qlPiecewiseYieldCurve only seems to work with > interpolation types of LogLinear, Linear, BackwardFlat or ForwardFlat. > If I use either CubicSpline or LogCubic interpolation this function > seems to fail with error messages below: > > "qlPiecewiseYieldCurve - Unknown id for Type: Discount:LogCubic" or > "qlPiecewiseYieldCurve - Unknown id for Type: Discount:CubicSpline" > > According to the link below both are acceptable interpolation types > for this function. > https://www.quantlib.org/quantlibaddin/func_piecewiseyieldcurve.html#qlPiecewiseYieldCurve > > Is this a known bug or am I doing something wrong? > > (2) In order to construct the EONIA discount curve I have used a > combination of qlDepositRateHelper, qlOISRateHelper and > qlDatedOISRateHelper. > > I then used the function qlOvernightIndexedSwapfromOISRateHelper which > I understood would create an OIS Swap object from the OIS helpers > used. Although this function seems to work for an OIS helper created > using the qlOISRateHelper function, it seems to fail when applied to > an OIS helper created using the qlDatedOISRateHelper with error message: > > qlOvernightIndexedSwapFromOISRateHelper - Error retrieving object with > id 'EUROISFRA1#001' - unable to convert reference to type 'class > QuantLibAddin::OISRateHelper' found instead 'class > QuantLibAddin::DatedOISRateHelper' > > Is this a known bug or am I doing something wrong? > > (3) I then tried to display the fixed leg and OIS leg schedules > produced by the functions qlOvernightIndexedSwapFixedLegAnalysis and > qlOvernightIndexedSwapOvernightLegAnalysis and noticed that the fixed > leg 'Amount' and the 'Effective Rate' both show 0, which looks wrong. > > Is this a known bug? > > (4) Where the function qlOvernightIndexedSwapfromOISRateHelper > successfully creates an OIS Swap object, I have attempted to value the > fixed leg and overnight leg. First I set up a discounting swap engine > using qlDiscountingSwapEngine and then tried to price each leg using > qlOvernightIndexedSwapFixedLegNPV and > qlOvernightIndexedSwapOvernightLegNPV respectively in order to confirm > that these are equal. Although I seem to get a reasonable value for > the overnight leg, the fixed leg NPV returns 0 which I think is wrong. > > Please advise on whether this is a bug. > > Note that I have separately tried to use qlMakeOIS and price the fixed > leg and overnight leg separately, which seems to work, but it seemed > natural to be able to directly price the relevant OIS instrument via > the helper. > > > Finally, I have some general questions on the use of QL Python/Excel > > (i) Is it possible to create a joint calendar in QL Excel and if so > how do I do this? > > (ii) Is there a way to display the contents of an object in QL Excel? > I noticed that there are some logging functions and was wondering > whether these would serve this purpose? If so would you please > provide an example, since I was unable to get these to work. > > (iii) Finally, in QL Python I am struggling to figure out what valid > methods and attributes are applicable to objects. For example, if I > create an OIS swap object using OISSwapObj =ql.MakeOIS(OISSwapTenor, > OISSwapIndex, OISFixedRate), how would I know that I can obtain the > NPV of this object using OISSwapObj.NPV() and what other methods(?) > can I use? Is there a list that I can refer to, since I don't see > this information in the QuantLib-Python Documentation page (www.quant > lib-python-docs.readthedocs.io/en/latest)? For each accrual period I > had wanted to display things like Accrual Start Date, Accrual End > Date, Payment Date, Fixing Date, etc.. In other words, how do I get > the same information out of this QL Python object that I can retrieve > using something like qlOvernightIndexedSwapFixedLegAnalysis in QL Excel? > > Thanks in advance. > > Regards, > > Javid > > > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: <da...@el...> - 2020-11-05 15:46:28
|
Hi Eric,
To be honest, it is something of a cludge solution.
Ideally, the constructor wouldn't have code that could fail: you could end
up with a constructed object that doesn't work properly. Any initialization
code that might not work could be put instead in a private Init() call which
sets a Valid flag in the object. Then any method calls could lazily check
the state via Init() before doing anything.
Alternatively you could handle the exception within the constructor, but you
still have the issue of what state to leave the object in.
On the other hand, it is clear that this exception takes a quite specific
set of circumstances, so it might not matter in practice.
I am something of a GitHub novice, so, yes, I can send a pull request . once
I learn how to do it!
Best wishes,
David
From: Eric Ehlers <eri...@re...>
Sent: Thursday, 5 November 2020 15:05
To: da...@el...
Cc: qua...@li...
Subject: Re: [Quantlib-users] Issue with QuantLibXL and Paste Special in
Excel
Hi David,
Thank you, that analysis looks great to me. I say we stick this in to 1.20,
if anybody reports a problem we can always reverse the change and release a
patch.
Would it be possible for you to send me a pull request?
Kind Regards,
Eric
On 11/5/20 2:06 PM, da...@el... <mailto:da...@el...>
wrote:
Thanks for coming back on this Eric.
I'm using 64-bit Excel fwiw.
Yes, the way to start a "blank" Excel is to use
> Excel.exe /automation
So add "/automation" to the command line arguments in the Debugger.
I think I found the solution: it's an issue of an exception not being
handled within a constructor. As an aside, it might also be why evaluating
functions in the Function Wizard sometimes has problems.
The code for the constructor and destructor of the
ObjectHandler::FunctionCall class is below. There is a static member
_instance which I assume is there to ensure that there is only one
FunctionCall object at a time?
The problem comes from the Excel()s call in the constructor. For some reason
when you are using the Paste Values button, xCaller_ is type xltypeSRef, but
Excel(xlfReftext, .) fails (perhaps because Excel doesn't know what to do
when the function in this right-click 'mode') and xReftext_ is of type
Error. Inside the subsequent call to ConvertOper::operator std::string() is
an Excel(xlCoerce,.) call.
It is this call which throws the exception, as the underlying Excel4v() call
for the Coerce does not return xlretSuccess. The Excel() code then generates
an exception with the text:
"Error in call to Excel: (xlSpecial | 2) callback failed: Command failed "
This exception is not caught until the top-level spreadsheet function code
(eg qlCalendarAdvance() in my example):
XLL_DEC OPER *qlCalendarAdvance(.)
{
boost::shared_ptr<ObjectHandler::FunctionCall> functionCall;
try {
// instantiate the Function Call object
functionCall = boost::shared_ptr<ObjectHandler::FunctionCall>(
new ObjectHandler::FunctionCall("qlCalendarAdvance")); <<< ----
GENERATES EXCEPTION
BUT the FunctionCall constructor is now bailing out with an exception, and
TBH I don't know what state of the shared pointer is in at this stage.
However, before dying, the constructor has made this call:
instance_ = this;
And this instance_ is not 0 anymore. If the instance had been constructed
successfully, then the later destructor code would have reset instance_ =0.
(see below). But I don't think the destructor ever gets called. This is why
all subsequent QuantLibXL calls fail at:
OH_REQUIRE(!instance_, "Multiple attempts to initialize global
FunctionCall object");
And the underlying function call never gets made.
How to fix this? Here's what I did. I just moved the
Instance_ = this;
Line in the constructor to AFTER the Excel call (in fact the last line of
the constructor). I recompiled and the Paste Values issue seems to have gone
away.
Original code
namespace ObjectHandler {
FunctionCall *FunctionCall::instance_ = 0;
FunctionCall::FunctionCall(const std::string functionName) :
functionName_(functionName),
callerDimensions_(CallerDimensions::Uninitialized),
error_(false) {
OH_REQUIRE(!instance_, "Multiple attempts to initialize global
FunctionCall object");
instance_ = this; <<<<< MOVE THIS FROM HERE
Excel(xlfCaller, &xCaller_, 0);
if (xCaller_->xltype == xltypeRef || xCaller_->xltype == xltypeSRef)
{
Excel(xlfReftext, &xReftext_, 1, &xCaller_);
refStr_ = ConvertOper(xReftext_());
callerType_ = CallerType::Cell;
} else if (xCaller_->xltype & xltypeErr) {
callerType_ = CallerType::VBA;
} else if (xCaller_->xltype == xltypeMulti) {
callerType_ = CallerType::Menu;
} else {
callerType_ = CallerType::Unknown;
}
<<<<< TO HERE
}
FunctionCall::~FunctionCall() {
if (!error_) {
if (callerType_ == CallerType::Cell) {
RepositoryXL::instance().clearError();
} else if (callerType_ == CallerType::VBA || callerType_ ==
CallerType::Menu) {
RepositoryXL::instance().clearVbaError();
}
}
instance_ = 0;
}
Maybe this is something you could change in the next release?
Best wishes
David Sansom
From: Eric Ehlers <mailto:eri...@re...> <eri...@re...>
Sent: Wednesday, 4 November 2020 19:57
To: qua...@li...
<mailto:qua...@li...>
Subject: Re: [Quantlib-users] Issue with QuantLibXL and Paste Special in
Excel
Hi David,
I just tried unsuccessfully to recreate the problem. I am using 32-bit
Excel on 64-bit Windows 10. Would be interesting to know if anybody else
can recreate the error.
I have not done Excel support in many years but I seem to remember that
there was a way to start Excel in safe mode so that it would not load any
addins. Then load only QLXL and try again. If the error does not occur in
that case then it would suggest that the problem is with a different addin.
Regards,
Eric
On 11/2/20 10:33 AM, da...@el... <mailto:da...@el...>
wrote:
Hi everyone.
I'm having a curious issue with QuantLibXL and the Paste Special / Values
button in Excel.
I've put a full description in the link, but the executive summary is that
if I used the Paste Special/Values quick access button (not the Paste
Special . sub-menu) from the right-click menu in Excel, QuantLibXL falls
over and all subsequent calls fail.
https://quant.stackexchange.com/questions/59026/excel-pastespecial-values-sh
ortcut-button-causing-quantlib-to-crash
I wonder if anyone else can reproduce this?
Best wishes
David
_______________________________________________
QuantLib-users mailing list
Qua...@li...
<mailto:Qua...@li...>
https://lists.sourceforge.net/lists/listinfo/quantlib-users
|
|
From: Eric E. <eri...@re...> - 2020-11-05 15:06:13
|
Hi David,
Thank you, that analysis looks great to me. I say we stick this in to
1.20, if anybody reports a problem we can always reverse the change and
release a patch.
Would it be possible for you to send me a pull request?
Kind Regards,
Eric
On 11/5/20 2:06 PM, da...@el... wrote:
>
> Thanks for coming back on this Eric.
>
> I’m using 64-bit Excel fwiw.
>
>
> Yes, the way to start a “blank” Excel is to use
> > Excel.exe /automation
>
> So add “/automation” to the command line arguments in the Debugger.
>
> I think I found the solution: it’s an issue of an exception not being
> handled within a constructor. As an aside, it might also be why
> evaluating functions in the Function Wizard sometimes has problems.
>
> The code for the constructor and destructor of the
> ObjectHandler::FunctionCall class is below. There is a static member
> _instance which I assume is there to ensure that there is only one
> FunctionCall object at a time?
>
> The problem comes from the Excel()s call in the constructor. For some
> reason when you are using the Paste Values button, xCaller_ is type
> xltypeSRef, but Excel(xlfReftext, …) fails (perhaps because Excel
> doesn’t know what to do when the function in this right-click ‘mode’)
> and xReftext_ is of type Error. Inside the subsequent call to
> ConvertOper::operator std::string() is an Excel(xlCoerce,…) call.
>
> It is this call which throws the exception, as the underlying
> Excel4v() call for the Coerce does not return xlretSuccess. The
> Excel() code then generates an exception with the text:
> "Error in call to Excel: (xlSpecial | 2) callback failed: Command failed "
>
> This exception is not caught until the top-level spreadsheet function
> code (eg qlCalendarAdvance() in my example):
>
> XLL_DEC OPER *qlCalendarAdvance(…)
> {
>
> boost::shared_ptr<ObjectHandler::FunctionCall> functionCall;
>
> try {
>
> // instantiate the Function Call object
>
> functionCall = boost::shared_ptr<ObjectHandler::FunctionCall>(
>
> new ObjectHandler::FunctionCall("qlCalendarAdvance")); <<<
> ---- GENERATES EXCEPTION
>
> BUT the FunctionCall constructor is now bailing out with an exception,
> and TBH I don’t know what state of the shared pointer is in at this
> stage. However, before dying, the constructor has made this call:
>
> instance_ = this;
>
>
> And this instance_ is not 0 anymore. If the instance had been
> constructed successfully, then the later destructor code would have
> reset instance_ =0. (see below). But I don’t think the destructor ever
> gets called. This is why all subsequent QuantLibXL calls fail at:
> OH_REQUIRE(!instance_, "Multiple attempts to initialize global
> FunctionCall object");
>
> And the underlying function call never gets made.
>
> How to fix this? Here’s what I did. I just moved the
>
> Instance_ = this;
>
> Line in the constructor to AFTER the Excel call (in fact the last line
> of the constructor). I recompiled and the Paste Values issue seems to
> have gone away.
>
> Original code
>
> namespace ObjectHandler {
>
> FunctionCall *FunctionCall::instance_ = 0;
>
> FunctionCall::FunctionCall(const std::string functionName) :
>
> functionName_(functionName),
>
> callerDimensions_(CallerDimensions::Uninitialized),
>
> error_(false) {
>
> OH_REQUIRE(!instance_, "Multiple attempts to initialize global
> FunctionCall object");
>
> instance_ = this; <<<<< MOVE THIS FROM HERE
>
> Excel(xlfCaller, &xCaller_, 0);
>
> if (xCaller_->xltype == xltypeRef || xCaller_->xltype ==
> xltypeSRef) {
>
> Excel(xlfReftext, &xReftext_, 1, &xCaller_);
>
> refStr_ = ConvertOper(xReftext_());
>
> callerType_ = CallerType::Cell;
>
> } else if (xCaller_->xltype & xltypeErr) {
>
> callerType_ = CallerType::VBA;
>
> } else if (xCaller_->xltype == xltypeMulti) {
>
> callerType_ = CallerType::Menu;
>
> } else {
>
> callerType_ = CallerType::Unknown;
>
> }
>
> <<<<< TO HERE
>
> }
>
> FunctionCall::~FunctionCall() {
>
> if (!error_) {
>
> if (callerType_ == CallerType::Cell) {
>
> RepositoryXL::instance().clearError();
>
> } else if (callerType_ == CallerType::VBA || callerType_
> == CallerType::Menu) {
>
> RepositoryXL::instance().clearVbaError();
>
> }
>
> }
>
> instance_ = 0;
>
> }
>
> Maybe this is something you could change in the next release?
>
>
> Best wishes
>
> David Sansom
>
> *From:*Eric Ehlers <eri...@re...>
> *Sent:* Wednesday, 4 November 2020 19:57
> *To:* qua...@li...
> *Subject:* Re: [Quantlib-users] Issue with QuantLibXL and Paste
> Special in Excel
>
> Hi David,
>
> I just tried unsuccessfully to recreate the problem. I am using
> 32-bit Excel on 64-bit Windows 10. Would be interesting to know if
> anybody else can recreate the error.
>
> I have not done Excel support in many years but I seem to remember
> that there was a way to start Excel in safe mode so that it would not
> load any addins. Then load only QLXL and try again. If the error
> does not occur in that case then it would suggest that the problem is
> with a different addin.
>
> Regards,
> Eric
>
> On 11/2/20 10:33 AM, da...@el...
> <mailto:da...@el...> wrote:
>
> Hi everyone.
>
> I’m having a curious issue with QuantLibXL and the Paste Special /
> Values button in Excel.
>
> I’ve put a full description in the link, but the executive summary
> is that if I used the Paste Special/Values quick access button
> (not the Paste Special … sub-menu) from the right-click menu in
> Excel, QuantLibXL falls over and all subsequent calls fail.
>
> https://quant.stackexchange.com/questions/59026/excel-pastespecial-values-shortcut-button-causing-quantlib-to-crash
>
> I wonder if anyone else can reproduce this?
>
> Best wishes
>
> David
>
>
>
>
> _______________________________________________
>
> QuantLib-users mailing list
>
> Qua...@li... <mailto:Qua...@li...>
>
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: <da...@el...> - 2020-11-05 13:07:16
|
Thanks for coming back on this Eric.
I'm using 64-bit Excel fwiw.
Yes, the way to start a "blank" Excel is to use
> Excel.exe /automation
So add "/automation" to the command line arguments in the Debugger.
I think I found the solution: it's an issue of an exception not being
handled within a constructor. As an aside, it might also be why evaluating
functions in the Function Wizard sometimes has problems.
The code for the constructor and destructor of the
ObjectHandler::FunctionCall class is below. There is a static member
_instance which I assume is there to ensure that there is only one
FunctionCall object at a time?
The problem comes from the Excel()s call in the constructor. For some reason
when you are using the Paste Values button, xCaller_ is type xltypeSRef, but
Excel(xlfReftext, .) fails (perhaps because Excel doesn't know what to do
when the function in this right-click 'mode') and xReftext_ is of type
Error. Inside the subsequent call to ConvertOper::operator std::string() is
an Excel(xlCoerce,.) call.
It is this call which throws the exception, as the underlying Excel4v() call
for the Coerce does not return xlretSuccess. The Excel() code then generates
an exception with the text:
"Error in call to Excel: (xlSpecial | 2) callback failed: Command failed "
This exception is not caught until the top-level spreadsheet function code
(eg qlCalendarAdvance() in my example):
XLL_DEC OPER *qlCalendarAdvance(.)
{
boost::shared_ptr<ObjectHandler::FunctionCall> functionCall;
try {
// instantiate the Function Call object
functionCall = boost::shared_ptr<ObjectHandler::FunctionCall>(
new ObjectHandler::FunctionCall("qlCalendarAdvance")); <<< ----
GENERATES EXCEPTION
BUT the FunctionCall constructor is now bailing out with an exception, and
TBH I don't know what state of the shared pointer is in at this stage.
However, before dying, the constructor has made this call:
instance_ = this;
And this instance_ is not 0 anymore. If the instance had been constructed
successfully, then the later destructor code would have reset instance_ =0.
(see below). But I don't think the destructor ever gets called. This is why
all subsequent QuantLibXL calls fail at:
OH_REQUIRE(!instance_, "Multiple attempts to initialize global
FunctionCall object");
And the underlying function call never gets made.
How to fix this? Here's what I did. I just moved the
Instance_ = this;
Line in the constructor to AFTER the Excel call (in fact the last line of
the constructor). I recompiled and the Paste Values issue seems to have gone
away.
Original code
namespace ObjectHandler {
FunctionCall *FunctionCall::instance_ = 0;
FunctionCall::FunctionCall(const std::string functionName) :
functionName_(functionName),
callerDimensions_(CallerDimensions::Uninitialized),
error_(false) {
OH_REQUIRE(!instance_, "Multiple attempts to initialize global
FunctionCall object");
instance_ = this; <<<<< MOVE THIS FROM HERE
Excel(xlfCaller, &xCaller_, 0);
if (xCaller_->xltype == xltypeRef || xCaller_->xltype == xltypeSRef)
{
Excel(xlfReftext, &xReftext_, 1, &xCaller_);
refStr_ = ConvertOper(xReftext_());
callerType_ = CallerType::Cell;
} else if (xCaller_->xltype & xltypeErr) {
callerType_ = CallerType::VBA;
} else if (xCaller_->xltype == xltypeMulti) {
callerType_ = CallerType::Menu;
} else {
callerType_ = CallerType::Unknown;
}
<<<<< TO HERE
}
FunctionCall::~FunctionCall() {
if (!error_) {
if (callerType_ == CallerType::Cell) {
RepositoryXL::instance().clearError();
} else if (callerType_ == CallerType::VBA || callerType_ ==
CallerType::Menu) {
RepositoryXL::instance().clearVbaError();
}
}
instance_ = 0;
}
Maybe this is something you could change in the next release?
Best wishes
David Sansom
From: Eric Ehlers <eri...@re...>
Sent: Wednesday, 4 November 2020 19:57
To: qua...@li...
Subject: Re: [Quantlib-users] Issue with QuantLibXL and Paste Special in
Excel
Hi David,
I just tried unsuccessfully to recreate the problem. I am using 32-bit
Excel on 64-bit Windows 10. Would be interesting to know if anybody else
can recreate the error.
I have not done Excel support in many years but I seem to remember that
there was a way to start Excel in safe mode so that it would not load any
addins. Then load only QLXL and try again. If the error does not occur in
that case then it would suggest that the problem is with a different addin.
Regards,
Eric
On 11/2/20 10:33 AM, da...@el... <mailto:da...@el...>
wrote:
Hi everyone.
I'm having a curious issue with QuantLibXL and the Paste Special / Values
button in Excel.
I've put a full description in the link, but the executive summary is that
if I used the Paste Special/Values quick access button (not the Paste
Special . sub-menu) from the right-click menu in Excel, QuantLibXL falls
over and all subsequent calls fail.
https://quant.stackexchange.com/questions/59026/excel-pastespecial-values-sh
ortcut-button-causing-quantlib-to-crash
I wonder if anyone else can reproduce this?
Best wishes
David
_______________________________________________
QuantLib-users mailing list
Qua...@li...
<mailto:Qua...@li...>
https://lists.sourceforge.net/lists/listinfo/quantlib-users
|
|
From: Forde A S. <for...@gm...> - 2020-11-04 21:57:08
|
Hi QLers, I have a client who is looking to utilise QL & Open Risk but wants to use their own C++ pricing libraries (they are aiming for the IMA under FRTB). Could you let me know your views of the ways/options they could do this? There may be opportunities for consulting work as part of this… In case people are interested. Best, Forde Smith 0447 034 081 Sent from my phone, please excuse errors. |
|
From: Eric E. <eri...@re...> - 2020-11-04 21:21:41
|
> Is there a change log that describe the new functionalities in QLXL 1.20 compared to previous version? This is the change log: https://www.quantlib.org/quantlibxl/history.html This is the new entry for 1.20.0: Release 1.20.0 - November 2020 - Consolidate project files and upgrade to VS2019 (thanks to Francois Botha) - New enumeraition UnitedStates::FederalReserve with alias US Fedwire System (thanks to mdelmedico) > Please keep it up. QuantLibXL is great. Thanks for the feedback! Kind Regards, Eric On 10/27/20 3:00 PM, Zhang, Binchi wrote: > > Hello QuantLib contributors, > > Thanks for the great work! > > Is there a change log that describe the new functionalities in QLXL > 1.20 compared to previous version? > > > > > > *From:* SX L <han...@ho...> > *Sent:* Tuesday, October 27, 2020 8:34 AM > *To:* Eric Ehlers <eri...@re...>; Jack G > <jac...@gm...> > *Cc:* QuantLib users <qua...@li...> > *Subject:* #External Sender# Re: [Quantlib-users] QuantLibXL > Prerelease 1.20 > > Hi Eric, > > Please keep it up. QuantLibXL is great. > > From a happy user of QuantLibXL > > Get Outlook for Android <https://aka.ms/ghei36> > > ------------------------------------------------------------------------ > > *From:*Eric Ehlers <eri...@re... > <mailto:eri...@re...>> > *Sent:* Thursday, October 22, 2020 6:40:56 PM > *To:* Jack G <jac...@gm... <mailto:jac...@gm...>> > *Cc:* QuantLib users <qua...@li... > <mailto:qua...@li...>> > *Subject:* Re: [Quantlib-users] QuantLibXL Prerelease 1.20 > > Dear Jack, > > Not all QuantLib functionality has been exported to QuantLibXL. I > would describe my efforts as mantainer as hovering around the level of > barely keeping the project alive. I aim to get a 1.20 release out. I > do merge the pull requests that I receive. > > Kind Regards, > Eric > > On 10/21/20 9:38 AM, Jack G wrote: > > Dear Eric and QuantLibXL users, > > I've been experimenting with QuantLibXL a little bit recently and > had a couple of questions regarding it... > > 1) the qlGeneralizedBlackScholesProcess() class seems to only > accept doubles for the rate and dividend arguments (as opposed to > termstructures in QL)* > > 2) I can't see any other spot/vol processes (eg. Heston) > implemented in the wrapper yet > > I'm not a heavy excel user but my use-case here is that it's quite > nice as a demonstration aid to have excel in one window and the > C++/Python in another if the API is consistent to show how you > build the same items in each. > > Is the add-on being actively worked on at the moment? Are pull > requests being merged, and is the correct repo the one below? > > Thanks, > > Jack > > References for GeneralizedBlackScholesProcess: > > https://www.quantlib.org/quantlibxl/func_processes.html#qlGeneralizedBlackScholesProcess > > https://github.com/eehlers/QuantLibAddin-Old/blob/a891cc372429be11cc44bb4ac99931aefc548066/QuantLibAddin/qlo/processes.cpp > > On Tue, Oct 20, 2020 at 8:41 PM Eric Ehlers > <eri...@re... <mailto:eri...@re...>> wrote: > > Hi All, > > I have generated a preliminary build of QuantLibXL version 1.20: > > https://bintray.com/quantlib/prerelease/QuantLibXL/1.20_prerelease#files > > In the coming days I will respond to all of the outstanding pull > requests and queries that I have received, and then I will > produce a > final release candidate. > > Kind Regards, > Eric > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > <mailto:Qua...@li...> > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > This message contains information which may be confidential and > privileged. Unless you are the addressee (or authorized to receive for > the addressee), you may not use, copy or disclose to anyone the > message or any information contained in the message. If you have > received the message in error, please advise the sender by reply > e-mail, and delete or destroy the message. Thank you. > > ------------------------------------------------------------------------ > > *P***Please consider the environment before printing this email > |
|
From: Eric E. <eri...@re...> - 2020-11-04 20:16:34
|
Hi All, I have upload to the same link mentioned below a near-final snapshot of all of the files for the release. I would be grateful to anyone who could test them and let me know of any problems. Kind Regards, Eric On 10/20/20 2:40 PM, Eric Ehlers wrote: > Hi All, > > I have generated a preliminary build of QuantLibXL version 1.20: > > https://bintray.com/quantlib/prerelease/QuantLibXL/1.20_prerelease#files > > In the coming days I will respond to all of the outstanding pull > requests and queries that I have received, and then I will produce a > final release candidate. > > Kind Regards, > Eric > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Eric E. <eri...@re...> - 2020-11-04 19:57:54
|
Hi David, I just tried unsuccessfully to recreate the problem. I am using 32-bit Excel on 64-bit Windows 10. Would be interesting to know if anybody else can recreate the error. I have not done Excel support in many years but I seem to remember that there was a way to start Excel in safe mode so that it would not load any addins. Then load only QLXL and try again. If the error does not occur in that case then it would suggest that the problem is with a different addin. Regards, Eric On 11/2/20 10:33 AM, da...@el... wrote: > > Hi everyone. > > I’m having a curious issue with QuantLibXL and the Paste Special / > Values button in Excel. > > I’ve put a full description in the link, but the executive summary is > that if I used the Paste Special/Values quick access button (not the > Paste Special … sub-menu) from the right-click menu in Excel, > QuantLibXL falls over and all subsequent calls fail. > > https://quant.stackexchange.com/questions/59026/excel-pastespecial-values-shortcut-button-causing-quantlib-to-crash > > I wonder if anyone else can reproduce this? > > Best wishes > > David > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: <da...@el...> - 2020-11-02 10:02:16
|
Hi everyone. I'm having a curious issue with QuantLibXL and the Paste Special / Values button in Excel. I've put a full description in the link, but the executive summary is that if I used the Paste Special/Values quick access button (not the Paste Special . sub-menu) from the right-click menu in Excel, QuantLibXL falls over and all subsequent calls fail. https://quant.stackexchange.com/questions/59026/excel-pastespecial-values-sh ortcut-button-causing-quantlib-to-crash I wonder if anyone else can reproduce this? Best wishes David |
|
From: Vineet J. <vj...@ea...> - 2020-10-30 10:03:32
|
Hi All, I am trying to calculate Yield for FixedRateBond with certain cashflows. Bonds pay timing is 182 days. I am able to generate the schedule successfully using the tenor = 26 * ql::Weeks; But when I am calculating the Yield using ql::BondFunctions::yield() then frequency what is getting passed is OtherFrequency with value 9999. This has issue in calculating discount factor for NPV. In my case DayCounter is 30/360. So frequency has to be 360/182, is there a way to achieve this? Thanks Vineet |
|
From: Zhang, B. <bin...@sa...> - 2020-10-27 14:16:31
|
Hello QuantLib contributors, Thanks for the great work! Is there a change log that describe the new functionalities in QLXL 1.20 compared to previous version? From: SX L <han...@ho...> Sent: Tuesday, October 27, 2020 8:34 AM To: Eric Ehlers <eri...@re...>; Jack G <jac...@gm...> Cc: QuantLib users <qua...@li...> Subject: #External Sender# Re: [Quantlib-users] QuantLibXL Prerelease 1.20 Hi Eric, Please keep it up. QuantLibXL is great. >From a happy user of QuantLibXL Get Outlook for Android<https://aka.ms/ghei36> ________________________________ From: Eric Ehlers <eri...@re...<mailto:eri...@re...>> Sent: Thursday, October 22, 2020 6:40:56 PM To: Jack G <jac...@gm...<mailto:jac...@gm...>> Cc: QuantLib users <qua...@li...<mailto:qua...@li...>> Subject: Re: [Quantlib-users] QuantLibXL Prerelease 1.20 Dear Jack, Not all QuantLib functionality has been exported to QuantLibXL. I would describe my efforts as mantainer as hovering around the level of barely keeping the project alive. I aim to get a 1.20 release out. I do merge the pull requests that I receive. Kind Regards, Eric On 10/21/20 9:38 AM, Jack G wrote: Dear Eric and QuantLibXL users, I've been experimenting with QuantLibXL a little bit recently and had a couple of questions regarding it... 1) the qlGeneralizedBlackScholesProcess() class seems to only accept doubles for the rate and dividend arguments (as opposed to termstructures in QL)* 2) I can't see any other spot/vol processes (eg. Heston) implemented in the wrapper yet I'm not a heavy excel user but my use-case here is that it's quite nice as a demonstration aid to have excel in one window and the C++/Python in another if the API is consistent to show how you build the same items in each. Is the add-on being actively worked on at the moment? Are pull requests being merged, and is the correct repo the one below? Thanks, Jack References for GeneralizedBlackScholesProcess: https://www.quantlib.org/quantlibxl/func_processes.html#qlGeneralizedBlackScholesProcess https://github.com/eehlers/QuantLibAddin-Old/blob/a891cc372429be11cc44bb4ac99931aefc548066/QuantLibAddin/qlo/processes.cpp On Tue, Oct 20, 2020 at 8:41 PM Eric Ehlers <eri...@re...<mailto:eri...@re...>> wrote: Hi All, I have generated a preliminary build of QuantLibXL version 1.20: https://bintray.com/quantlib/prerelease/QuantLibXL/1.20_prerelease#files In the coming days I will respond to all of the outstanding pull requests and queries that I have received, and then I will produce a final release candidate. Kind Regards, Eric _______________________________________________ QuantLib-users mailing list Qua...@li...<mailto:Qua...@li...> https://lists.sourceforge.net/lists/listinfo/quantlib-users This message contains information which may be confidential and privileged. Unless you are the addressee (or authorized to receive for the addressee), you may not use, copy or disclose to anyone the message or any information contained in the message. If you have received the message in error, please advise the sender by reply e-mail, and delete or destroy the message. Thank you. ________________________________ P Please consider the environment before printing this email |
|
From: SX L <han...@ho...> - 2020-10-27 12:34:08
|
Hi Eric, Please keep it up. QuantLibXL is great. >From a happy user of QuantLibXL Get Outlook for Android<https://aka.ms/ghei36> ________________________________ From: Eric Ehlers <eri...@re...> Sent: Thursday, October 22, 2020 6:40:56 PM To: Jack G <jac...@gm...> Cc: QuantLib users <qua...@li...> Subject: Re: [Quantlib-users] QuantLibXL Prerelease 1.20 Dear Jack, Not all QuantLib functionality has been exported to QuantLibXL. I would describe my efforts as mantainer as hovering around the level of barely keeping the project alive. I aim to get a 1.20 release out. I do merge the pull requests that I receive. Kind Regards, Eric On 10/21/20 9:38 AM, Jack G wrote: Dear Eric and QuantLibXL users, I've been experimenting with QuantLibXL a little bit recently and had a couple of questions regarding it... 1) the qlGeneralizedBlackScholesProcess() class seems to only accept doubles for the rate and dividend arguments (as opposed to termstructures in QL)* 2) I can't see any other spot/vol processes (eg. Heston) implemented in the wrapper yet I'm not a heavy excel user but my use-case here is that it's quite nice as a demonstration aid to have excel in one window and the C++/Python in another if the API is consistent to show how you build the same items in each. Is the add-on being actively worked on at the moment? Are pull requests being merged, and is the correct repo the one below? Thanks, Jack References for GeneralizedBlackScholesProcess: https://www.quantlib.org/quantlibxl/func_processes.html#qlGeneralizedBlackScholesProcess https://github.com/eehlers/QuantLibAddin-Old/blob/a891cc372429be11cc44bb4ac99931aefc548066/QuantLibAddin/qlo/processes.cpp On Tue, Oct 20, 2020 at 8:41 PM Eric Ehlers <eri...@re...<mailto:eri...@re...>> wrote: Hi All, I have generated a preliminary build of QuantLibXL version 1.20: https://bintray.com/quantlib/prerelease/QuantLibXL/1.20_prerelease#files In the coming days I will respond to all of the outstanding pull requests and queries that I have received, and then I will produce a final release candidate. Kind Regards, Eric _______________________________________________ QuantLib-users mailing list Qua...@li...<mailto:Qua...@li...> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Luigi B. <lui...@gm...> - 2020-10-26 08:44:16
|
Hello everybody,
QuantLib 1.20 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: Arkadiy N. <ark...@gm...> - 2020-10-26 04:40:24
|
There is also what’s now part of Black Knight - was known as “AFT” before. Both ADCo and AFT are similar in that you can either integrate with just the prepayments model (providing your own rates - and those can come from QL) or get their “full package”, which will include their own proprietary implementation of term structure modeling. For MBS cash flows - if you interested in anything beyond pass-thrus (structured finance), there is Intex and what used to be known as Chasen (I lost track of where that ended up after several acquisitions - last I remember they were part Moody’s analytics). All of these are commercial vendor products. Sent from my iPad > On Oct 20, 2020, at 12:13 PM, mat...@gm... wrote: > > > Hello, > > Maybe this one: https://www.ad-co.com/analytics_valuation#OASSub > > I remember a proof-of-concept I created some time ago which went fairly well, but my involvement was more on the technical side, so I cannot really judge the quality of the model. > > It is “fairly” compatible with QL in that it is a C library ;) > Free or libre as QL it is not. > > > Best regards, > Matthias > > > From: Philippe Hatstadt <phi...@ex...> > Sent: Tuesday, 20 October 2020 15:16 > To: QuantLib users <Qua...@li...> > Subject: [Quantlib-users] Mortgage analytics compatible with QL / Python API > > Are there any 3rd party analytics vendors specialized in MBS? > In particular, I'd be interested in both cash flow modeling and OAS, the latter requiring a stochastic rate model. > For a number of reasons, I'd like such a vendor to be somehow compatible with QL although it's not 100% clear what that even means, short of being based on QL an open source, which probably doesn't exist. > > Philippe Hatstadt > > > > Brokerage services offered through Exos Securities LLC, member of SIPC / FINRA. For important disclosures, click here. > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Peter C. <pca...@gm...> - 2020-10-25 17:47:26
|
I think this is expected, according to Brigo Mercurio Formula (3.37) for the mean of the short rate at t (conditional on F_s with s = 0, i.e. the unconditional mean) is r(0) exp(-at) + alpha(t) - alpha(0) exp(-at) = alpha(t) = f(0,t) + sigma^2 / (2 a^2) ( 1 - exp(- at) ) ^2 because alpha(0) = r(0) and so the first and last summand cancel out. Plugging in sigma = 0.1 and a = 0.1 that means that E( r( 30 ) ) = 0.05 + 0.4514... = 0.5014.... This is all including the term responsible for the fit to the initial flat curve at 5%. And by the way, I don't think you can disable this part of the drift in HullWhiteProcess. Also, I think sigma = 0.1 is an extremely high value, maybe on purpose for the sake of the example? On Sun, 25 Oct 2020 at 17:44, Philippe Hatstadt <phi...@ex...> wrote: > > Actually, I have a follow-up question on the drift issue. > I was experimenting with the Hull-White implementation from the QuantLib Cookbook, and interestingly, in Chapter 15, they build a flat curve with a forward rate of 5%, via: > spot_curve = ql.FlatForward(todays_date, ql.QuoteHandle(ql.SimpleQuote(forward_rate)), day_count) > > The HW parameters are sigma=10% and a=10%, and the HW engine is built via: > > hw_process = ql.HullWhiteProcess(spot_curve_handle, a, sigma) > > They then proceed to generate paths of the short term rate, and they demonstrate that the simulated rate converges to the theoretical expected forward rate f(0,t<T) but the graph of such expected forward is not flat at 5%, instead it is monotonously increasing from 5% to as high as 50% after 30 years. So it very much looks like the paths of rates that they show are not drift adjusted otherwise the expected path should be flat at 5%. > So I'm unsure what is going on? Is there an optional argument in the hw_process call to do the drift adjustment or not? > > Philippe Hatstadt > > > On Sun, Oct 25, 2020 at 9:09 AM Peter Caspers <pca...@gm...> wrote: >> >> Hi Philippe, >> >> the Jamshidian engine uses a) discount bond prices conditional on the >> state of the model (i.e. the short rate in the case of the Hull-White >> model) and b) zero bond option prices in the model to come up with a >> model swaption price. It retrieves this information via the >> discountBond() and discountBondOption() methods in the >> OneFactorAffineModel interface. The methods account for the adjustment >> term theta(t) in the Hull-White model SDE already, there is nothing >> that the engine needs to do in addition to that. I don't know if that >> answers your question? >> >> The HullWhiteProcess also takes into account the adjustment to the >> initial curve already. To see that you can look into the >> implementation of HullWhiteProcess::drift() >> >> https://github.com/lballabio/QuantLib/blob/master/ql/processes/hullwhiteprocess.cpp#L38 >> >> which coincides with e.g. Brigo Mercurio, Interest Rate Models, Theory >> and Practice, Formulas (3.33) and (3.34) observing that in this >> context >> >> https://github.com/lballabio/QuantLib/blob/master/ql/processes/ornsteinuhlenbeckprocess.hpp#L90 >> >> level_ is zero, speed_ is the Hull-White mean reversion parameter and >> x stands for the short rate at time t. >> >> Does that make sense? >> >> Thanks, >> Peter >> >> >> On Sun, 25 Oct 2020 at 12:47, philippe hatstadt via QuantLib-users >> <qua...@li...> wrote: >> > >> > Is there any information about how the Jamshidian engine does the drift adjustment to match the initial curve for the Hull White model? >> > If I want to use the QL HW Process in a MC model, I assume II have to do the drift adjustment myself, or is there existing QL functionality to do that? >> > >> > Regards >> > >> > Philippe Hatstadt >> > +1-203-252-0408 >> > https://www.linkedin.com/in/philippe-hatstadt >> > >> > >> > >> > _______________________________________________ >> > 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 > > > > > Brokerage services offered through Exos Securities LLC, member of SIPC / FINRA. For important disclosures, click here. |
|
From: Philippe H. <phi...@ex...> - 2020-10-25 16:44:25
|
Actually, I have a follow-up question on the drift issue. I was experimenting with the Hull-White implementation from the QuantLib Cookbook, and interestingly, in Chapter 15, they build a flat curve with a forward rate of 5%, via: spot_curve = ql.FlatForward(todays_date, ql.QuoteHandle(ql.SimpleQuote(forward_rate)), day_count) The HW parameters are sigma=10% and a=10%, and the HW engine is built via: hw_process = ql.HullWhiteProcess(spot_curve_handle, a, sigma) They then proceed to generate paths of the short term rate, and they demonstrate that the simulated rate converges to the theoretical expected forward rate f(0,t<T) but the graph of such expected forward is not flat at 5%, instead it is monotonously increasing from 5% to as high as 50% after 30 years. So it very much looks like the paths of rates that they show are not drift adjusted otherwise the expected path should be flat at 5%. So I'm unsure what is going on? Is there an optional argument in the hw_process call to do the drift adjustment or not? Philippe Hatstadt On Sun, Oct 25, 2020 at 9:09 AM Peter Caspers <pca...@gm...> wrote: > Hi Philippe, > > the Jamshidian engine uses a) discount bond prices conditional on the > state of the model (i.e. the short rate in the case of the Hull-White > model) and b) zero bond option prices in the model to come up with a > model swaption price. It retrieves this information via the > discountBond() and discountBondOption() methods in the > OneFactorAffineModel interface. The methods account for the adjustment > term theta(t) in the Hull-White model SDE already, there is nothing > that the engine needs to do in addition to that. I don't know if that > answers your question? > > The HullWhiteProcess also takes into account the adjustment to the > initial curve already. To see that you can look into the > implementation of HullWhiteProcess::drift() > > > https://github.com/lballabio/QuantLib/blob/master/ql/processes/hullwhiteprocess.cpp#L38 > > which coincides with e.g. Brigo Mercurio, Interest Rate Models, Theory > and Practice, Formulas (3.33) and (3.34) observing that in this > context > > > https://github.com/lballabio/QuantLib/blob/master/ql/processes/ornsteinuhlenbeckprocess.hpp#L90 > > level_ is zero, speed_ is the Hull-White mean reversion parameter and > x stands for the short rate at time t. > > Does that make sense? > > Thanks, > Peter > > > On Sun, 25 Oct 2020 at 12:47, philippe hatstadt via QuantLib-users > <qua...@li...> wrote: > > > > Is there any information about how the Jamshidian engine does the drift > adjustment to match the initial curve for the Hull White model? > > If I want to use the QL HW Process in a MC model, I assume II have to do > the drift adjustment myself, or is there existing QL functionality to do > that? > > > > Regards > > > > Philippe Hatstadt > > +1-203-252-0408 > > https://www.linkedin.com/in/philippe-hatstadt > > > > > > > > _______________________________________________ > > 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 > -- Brokerage services offered through Exos Securities LLC, member of SIPC <http://www.sipc.org/> / FINRA <http://www.finra.org/>. For important disclosures, click here <https://www.exosfinancial.com/disclosures>. |
|
From: philippe h. <pha...@ma...> - 2020-10-25 13:15:43
|
Makes sense thank you. I was asking because I’m writing a MC swaption calculator and for some reason; the realized volatility of my forward swap rate does not match the volatility of the short term rate with zero mean reversion nor does it match the closed form Jamshidian engine pricing. So I was trying to eliminate possible reasons but the drift is not one of them as per your explanation. Regards Philippe Hatstadt +1-203-252-0408 https://www.linkedin.com/in/philippe-hatstadt > On Oct 25, 2020, at 9:09 AM, Peter Caspers <pca...@gm...> wrote: > > Hi Philippe, > > the Jamshidian engine uses a) discount bond prices conditional on the > state of the model (i.e. the short rate in the case of the Hull-White > model) and b) zero bond option prices in the model to come up with a > model swaption price. It retrieves this information via the > discountBond() and discountBondOption() methods in the > OneFactorAffineModel interface. The methods account for the adjustment > term theta(t) in the Hull-White model SDE already, there is nothing > that the engine needs to do in addition to that. I don't know if that > answers your question? > > The HullWhiteProcess also takes into account the adjustment to the > initial curve already. To see that you can look into the > implementation of HullWhiteProcess::drift() > > https://github.com/lballabio/QuantLib/blob/master/ql/processes/hullwhiteprocess.cpp#L38 > > which coincides with e.g. Brigo Mercurio, Interest Rate Models, Theory > and Practice, Formulas (3.33) and (3.34) observing that in this > context > > https://github.com/lballabio/QuantLib/blob/master/ql/processes/ornsteinuhlenbeckprocess.hpp#L90 > > level_ is zero, speed_ is the Hull-White mean reversion parameter and > x stands for the short rate at time t. > > Does that make sense? > > Thanks, > Peter > > >> On Sun, 25 Oct 2020 at 12:47, philippe hatstadt via QuantLib-users >> <qua...@li...> wrote: >> >> Is there any information about how the Jamshidian engine does the drift adjustment to match the initial curve for the Hull White model? >> If I want to use the QL HW Process in a MC model, I assume II have to do the drift adjustment myself, or is there existing QL functionality to do that? >> >> Regards >> >> Philippe Hatstadt >> +1-203-252-0408 >> https://www.linkedin.com/in/philippe-hatstadt >> >> >> >> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users |