|
From: Luigi B. <lui...@gm...> - 2013-10-24 09:21:03
|
Ok, I see. It's YieldTermStructure::update(), which gets called when
the zero-spreaded curve is notified that the discount handle has
changed and tries to calculate the new reference date. Except it
can't, because the handle is empty.
As a quick and dirty fix, wrap the "if" in
YieldTermStructure::update() in a try/catch and just block the
exception. But be aware that this could hide other problems, i.e.,
actual exceptions in setJumps(). I'll try and commit a more robust
patch in the repository.
Luigi
On Wed, Oct 23, 2013 at 11:13 PM, Breig, Dr. Christoph (IDS GmbH)
<CHR...@in...> wrote:
> Hi Luigi, hi all,
> yes, here is it. Do you have an idea how to reset "discTermStructure" after the initialisation of "spreadedDiscTermStructure".
> -------------------
> #include <ql/quantlib.hpp>
>
> using namespace QuantLib;
>
> int main(int, char* []) {
>
> try {
>
> QuantLib::RelinkableHandle<QuantLib::YieldTermStructure> discTermStructure;
> boost::shared_ptr<YieldTermStructure> nullYTSPtr;
> Date evaluationDate = Date(23,Month(10),2013);
> boost::shared_ptr<YieldTermStructure> yts(new FlatForward(evaluationDate, 0.02, ActualActual()));
> discTermStructure.linkTo(yts);
> boost::shared_ptr<Quote> spread(new SimpleQuote(0.02));
>
> // no problem
> discTermStructure.linkTo(nullYTSPtr);
> discTermStructure.linkTo(yts);
>
> // problem
> boost::shared_ptr<YieldTermStructure> spreadedDiscTermStructure(new ZeroSpreadedTermStructure(discTermStructure,Handle<Quote>(spread)));
> discTermStructure.linkTo(nullYTSPtr);
>
> system("PAUSE");
> return 0;
>
> } catch (std::exception& e) {
> std::cerr << e.what() << std::endl;
> system("PAUSE");
> return 1;
> } catch (...) {
> std::cerr << "unknown error" << std::endl;
> system("PAUSE");
> return 1;
> }
> }
>
> -------------
>
> Best and thx
> Chris
>
> -----Ursprüngliche Nachricht-----
> Von: Luigi Ballabio [mailto:lui...@gm...]
> Gesendet: Mittwoch, 23. Oktober 2013 18:08
> An: Breig, Dr. Christoph (IDS GmbH)
> Cc: QuantLib developers
> Betreff: Re: [Quantlib-dev] RelinkableHandle<YieldTermStructure> reset to Null
>
> It looks like the spreaded curve notifies its observers of the change,
> one of them tries to perform some calculation as a consequence, and
> the calculation fails because the handle is empty. Can you reproduce
> the problem in a short program you can post?
>
> Luigi
>
>
> On Wed, Oct 23, 2013 at 4:49 PM, Breig, Dr. Christoph (IDS GmbH)
> <CHR...@in...> wrote:
>> Hi Luigi, hi all
>>
>> the empty shared_ptr works fine for e.g. InterpolatedZeroCurves but not for
>> ZeroSpreadedTermStructures. Then, while setting the empty shared_ptr,
>> following error messages takes place:
>> "could not notify one or more observers: empty Handle cannot be
>> dereferenced"
>>
>> I'm at the moment using version 1.0 of QuantLib (in case the problem is a
>> bug and was already fixed).
>>
>> Best and thanks
>> Chris
>>
>> ________________________________
>> Von: Luigi Ballabio [mailto:lui...@gm...]
>> Gesendet: Freitag, 18. Oktober 2013 16:13
>> An: Breig, Dr. Christoph (IDS GmbH)
>> Cc: QuantLib developers
>> Betreff: Re: [Quantlib-dev] RelinkableHandle<YieldTermStructure> reset to
>> Null
>>
>> Hi,
>> link it to an empty shared_ptr.
>>
>> Luigi
>>
>> On Oct 18, 2013 4:01 PM, "Breig, Dr. Christoph (IDS GmbH)"
>> <CHR...@in...> wrote:
>>>
>>> Dear all,
>>>
>>> has anybody an idea how to set a Relinkable Handle who is already linked
>>> to a YieldTermStructure object back to Null, so that the function
>>> "empty()" returns again true?
>>>
>>> Best and thanks
>>> Chris
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> October Webinars: Code for Performance
>>> Free Intel webinars can help you accelerate application performance.
>>> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
>>> from
>>> the latest Intel processors and coprocessors. See abstracts and register >
>>>
>>> http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> QuantLib-dev mailing list
>>> Qua...@li...
>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev
>>>
>>
>
>
>
> --
> <https://implementingquantlib.blogspot.com>
> <https://twitter.com/lballabio>
--
<https://implementingquantlib.blogspot.com>
<https://twitter.com/lballabio>
|