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: Luigi B. <lui...@gm...> - 2020-09-23 11:31:26
|
Hello,
sorry, there are no FRN callables at this moment.
Luigi
On Mon, Sep 21, 2020 at 1:12 PM Sumit Sengupta <su...@mo...>
wrote:
> Hi,
>
> I usually use the CallableFixedRateBond() with callabilitySchedule for
> fixed coupon bonds with callability/ early redemption schedules
>
> Is there a way I can create a FRN: FloatingRateBond() with the
> callabilitySchedule?
>
> Any python based example would be very useful.
>
> Thanks,
> Sumit
>
> --
> Mosaic Smart Data
>
> mobile +44 (0)7961839363
> su...@mo...
> 25 Finsbury Circus ▫ EC2M 7EE ▫ London ▫ United Kingdom
> www.mosaicsmartdata.com
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Luigi B. <lui...@gm...> - 2020-09-23 11:24:50
|
You're right on both counts. It's that permissive, and relicensing would require agreement from all contributors. Luigi On Wed, Sep 16, 2020 at 10:41 AM Francois Botha <ig...@gm...> wrote: > Thanks, Luigi. > > Does the BSD license then permit one to take the entire QuantLib source > code, repackage it as a commercial project and sell it, with no > modifications whatsoever (as long as you include the license text)? Of > course it's not what I intend to do. I'm just curious about how permissive > it is. > > And following on, would someone be able to take the project and relicense > it under something else. I'm guessing that would require the permission of > all code contributors first, which would be quite a practical challenge. > > Sorry if this is a bit off topic. > > Francois Botha > > > On Sat, 5 Sep 2020 at 18:18, Luigi Ballabio <lui...@gm...> > wrote: > >> Hello Mudit, Francois, >> the QuantLib license is the 3-clause BSD license (< >> https://opensource.org/licenses/BSD-3-Clause>). It allows you to do >> anything with the QuantLib code: your product can be closed source, and if >> you're modifying the QuantLib code, you don't have to make the modified >> source available. I'm not a lawyer either, but as I read it, your only >> obligation is that if you redistribute/sell whatever it is you do, in >> binary or source form, you must also include the full text of the QuantLib >> license, including the disclaimer of warranty. It doesn't mean you're >> applying the same license to your product! Basically, you're saying that >> your product includes or uses some QuantLib code, and you're including the >> QuantLib license so it's clear to whomever uses it that the QuantLib >> developers are not responsible for anything that might happen as a >> consequence. >> >> Hope this helps. In any case, you can find more information by >> researching the 3-clause BSD license. >> >> Luigi >> >> P.S. @Francois: GPL is an entirely different beast, and I'm not sure I'm >> qualified to answer about that. >> >> >> On Sat, Sep 5, 2020 at 9:27 AM Francois Botha <ig...@gm...> wrote: >> >>> Hi >>> >>> I'm also interested this question. Hope it's OK if I add to it, Mudit. >>> >>> I understand that the license is quite permissive, but I'm still not >>> sure exactly what it requires. >>> >>> Can I link to quantlib from a commercial product? >>> >>> Can I copy code directly from quantlib into my project and compile it? >>> >>> When do I have to release the quantlib source code alongside my >>> commercial product? >>> >>> I know few of us here are lawyers and that the usual disclaimer holds, >>> but I'm sure someone else here is less confused than I am. >>> >>> While we're at it, it doesn't pertain to quantlib, but how do the >>> answers to my questions change if the license were eg a GPL based license? >>> >>> Thanks >>> Francois >>> >>> On Sat, 5 Sep 2020, 08:42 Mudit Sharma, <sha...@gm...> >>> wrote: >>> >>>> Dear list, >>>> >>>> I intend to derive a commercial product relying on Quantlib. I just >>>> want to be sure that >>>> I can use Quantlib freely for my product. I have read the license and I >>>> think my product will not violate it. However I have a doubt : >>>> >>>> 1) In this page : https://www.quantlib.org/license.shtml >>>> there it is mentioned : It allows proprietary extensions to be >>>> commercialized >>>> I wanted to know what exactly is meant by this statement. >>>> Can the extension be anything ? another library/api/website/blog etc ? >>>> >>>> Hoping to hear from you soon, >>>> Mudit Sharma >>>> _______________________________________________ >>>> 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: Luigi B. <lui...@gm...> - 2020-09-23 11:23:35
|
ZeroCurve is shorthand for InterpolatedZeroCurve<Linear>. You can also use InterpolatedZeroCurve<LogLinear> etc. Luigi On Sat, Sep 19, 2020 at 7:05 PM Daniel Lobo <dan...@gm...> wrote: > Okay. > > Is there any way to set the extrapolation method like linear, non-linear > etc? > > On Sat, 19 Sep 2020 at 22:29, Amine Ifri <ami...@gm...> wrote: > > > > I dont see anything wrong with your call. I suspect this has to do with > the Black pricing formula used for valuing the swaption. That is where you > would have to look for the mistake. > > > > > On 19 Sep 2020, at 17:54, Daniel Lobo <dan...@gm...> wrote: > > > > > > Thanks. > > > > > > I tried to enable extrapolation with below snippet - > > > > > > std::vector<QuantLib::Date> sr_dt; > > > std::vector<QuantLib::Real> sr_v; > > > sr_dt.push_back(Date(15, February, 2002)); > > > sr_dt.push_back(Date(15, February, 2003)); > > > sr_dt.push_back(Date(15, February, 2004)); > > > sr_v.push_back(0); > > > sr_v.push_back(3.5/100); > > > sr_v.push_back(6/100); > > > > > > Handle<YieldTermStructure> > > > rhTermStructure(ext::make_shared<ZeroCurve>(sr_dt, sr_v, > > > Actual365Fixed())); > > > rhTermStructure->enableExtrapolation(); > > > > > > However with this I am getting below error - > > > > > > strike + displacement (-0.0621661 + 0) must be non-negative > > > > > > Is there any better way to enable extrapolation? > > > > > > Thanks again for your help. > > > > > > On Sat, 19 Sep 2020 at 21:36, Amine Ifri <ami...@gm...> wrote: > > >> > > >> Hi Daniel, > > >> > > >> The curve and the instrument you are pricing are independent: curve > is only based on the instruments you use to build it and their tenor > points, not on the cash flows of the instrument you are pricing with it. > > >> > > >> If you don’t have spot quotes that go that far, I believe you can > enable extrapolation. > > >> > > >> Hope it helps. > > >> > > >> Amine Ifri > > >> > > >>> On 19 Sep 2020, at 12:05, Daniel Lobo <dan...@gm...> > wrote: > > >>> > > >>> Hi, > > >>> > > >>> Thanks for your suggestion. I changed to below and it worked. > > >>> > > >>> std::vector<QuantLib::Date> sr_dt; > > >>> std::vector<QuantLib::Real> sr_v; > > >>> sr_dt.push_back(Date(15, February, 2002)); > > >>> sr_dt.push_back(Date(15, February, 2003)); > > >>> sr_dt.push_back(Date(15, February, 2054)); > > >>> sr_v.push_back(0); > > >>> sr_v.push_back(1.5/100); > > >>> sr_v.push_back(2/100); > > >>> > > >>> Handle<YieldTermStructure> rhTermStructure( > > >>> ext::make_shared<ZeroCurve>(sr_dt, > > >>> sr_v, > > >>> Actual365Fixed() > > >>> )); > > >>> > > >>> But my question is, shouldnt the curve automatically extrapolated > > >>> automatically to the last cash-flow date? > > >>> > > >>> What I should do if I dont have spot-quoted till that far? > > >>> > > >>>> On Sat, 19 Sep 2020 at 16:28, Amine Ifri <ami...@gm...> > wrote: > > >>>> > > >>>> Hi Daniel, > > >>>> > > >>>> I believe the error is due to an initial check on the term > structure that fails because The last tenor on the curve is less than the > maturity date of your instrument/ underlying swap. > > >>>> > > >>>> I would try setting the last tenor on the curve to be longer than > the last point on your instrument. > > >>>> > > >>>> Let me know how it goes ! > > >>>> > > >>>> Amine Ifri > > >>>> > > >>>>>> On 19 Sep 2020, at 11:27, Daniel Lobo <dan...@gm...> > wrote: > > >>>>> > > >>>>> Hi, > > >>>>> > > >>>>> I was replicating the examples as given in > > >>>>> > https://github.com/lballabio/QuantLib/blob/master/Examples/BermudanSwaption/BermudanSwaption.cpp > . > > >>>>> > > >>>>> However I changed the Term structure curve as below - > > >>>>> > > >>>>> Asin the file - > > >>>>> > > >>>>> Handle<YieldTermStructure> rhTermStructure( > > >>>>> ext::make_shared<FlatForward>( > > >>>>> settlementDate, Handle<Quote>(flatRate), > > >>>>> Actual365Fixed())); > > >>>>> > > >>>>> But I changed to - > > >>>>> > > >>>>> Handle<YieldTermStructure> rhTermStructure1( > > >>>>> ext::make_shared<FlatForward>( > > >>>>> settlementDate, Handle<Quote>(flatRate), > > >>>>> Actual365Fixed())); > > >>>>> > > >>>>> std::vector<QuantLib::Date> sr_dt; > > >>>>> std::vector<QuantLib::Real> sr_v; > > >>>>> sr_dt.push_back(Date(15, February, 2002)); > > >>>>> sr_dt.push_back(Date(15, February, 2003)); > > >>>>> sr_dt.push_back(Date(15, February, 2004)); > > >>>>> sr_v.push_back(0); > > >>>>> sr_v.push_back(1.5/100); > > >>>>> sr_v.push_back(2/100); > > >>>>> > > >>>>> Handle<YieldTermStructure> rhTermStructure( > > >>>>> ext::make_shared<ZeroCurve>(sr_dt, > > >>>>> sr_v, > > >>>>> Actual365Fixed() > > >>>>> )); > > >>>>> > > >>>>> With this change I failed to generate any value. I received error - > > >>>>> > > >>>>> 1st leg: time (2.01096) is past max curve time (2) > > >>>>> > > >>>>> Any insight why I get this error and how to resolve this would be > > >>>>> really helpful. > > >>>>> > > >>>>> Thanks for your time > > >>>>> > > >>>>> > > >>>>> _______________________________________________ > > >>>>> 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: Luigi B. <lui...@gm...> - 2020-09-23 11:02:09
|
Hello,
the SWIG wrappers are not yet updated to use std pointers (there's a PR
for that on GitHub, but it's not merged).
For the time being, please run configure without --enable-std-classes and
recompile QuantLib.
Luigi
On Mon, Sep 21, 2020 at 11:57 PM Yoshiro Ozawa <yos...@ma...>
wrote:
> Hello,
>
> I am very sorry if this post appears twice, I was not subscribed to the
> list when I posted first.
>
> I have successfully built QuantLib 1.18 on Ubuntu.
>
> Following were my commands when building QL
>
> ./configure CXXFLAGS="-std=c++17 -g -O2 -Wno-deprecated-declarations"
> --enable-shared=no \
> --enable-static=yes \
> --enable-error-lines \
> --enable-error-functions \
> --enable-thread-safe-observer-pattern \
> --enable-std-classes
>
> sudo make -j4
> sudo make install
> sudo ldconfig
>
> After this, I downloaded Quantlib-SWIG tar and tried following
>
> ./configure
> --with-jdk-include=${JAVA_HOME}/include \
> --with-jdk-system-include=${JAVA_HOME}/include/linux \
> --disable-python \
> --disable-csharp \
> --disable-r \
> --disable-scala
>
> make -C Java
>
> I get errors building as follows
>
> ======================================
>
> /usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate
> expects 1 argument, 3 provided
> /usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate:
> ‘QuantLib::Swaption::Swaption(QuantLib::Swaption&&)’
> /usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate
> expects 1 argument, 3 provided
> quantlib_wrap.cpp: In function ‘jlong
> Java_org_quantlib_QuantLibJNI_new_1Swaption_1_1SWIG_12(JNIEnv*, jclass,
> jlong, jobject, jlong, jobject)’:
> quantlib_wrap.cpp:287193:133: error: no matching function for call to
> ‘QuantLib::Swaption::Swaption(const
> boost::shared_ptr<QuantLib::VanillaSwap>&, const
> boost::shared_ptr<QuantLib::Exercise>&)’
> 287193 | result = (Swaption *)new Swaption((boost::shared_ptr<
> VanillaSwap > const &)*arg1,(boost::shared_ptr< Exercise > const &)*arg2);
> |
> ^
> In file included from
> /usr/local/include/ql/experimental/basismodels/swaptioncfs.hpp:27,
> from
> /usr/local/include/ql/experimental/basismodels/all.hpp:4,
> from /usr/local/include/ql/experimental/all.hpp:7,
> from /usr/local/include/ql/quantlib.hpp:46,
> from quantlib_wrap.cpp:808:
> /usr/local/include/ql/instruments/swaption.hpp:85:9: note: candidate:
> ‘QuantLib::Swaption::Swaption(const
> std::shared_ptr<QuantLib::VanillaSwap>&, const
> std::shared_ptr<QuantLib::Exercise>&, QuantLib::Settlement::Type,
> QuantLib::Settlement::Method)’
> 85 | Swaption(const ext::shared_ptr<VanillaSwap>& swap,
> | ^~~~~~~~
> /usr/local/include/ql/instruments/swaption.hpp:85:54: note: no known
> conversion for argument 1 from ‘const
> boost::shared_ptr<QuantLib::VanillaSwap>’ to ‘const
> std::shared_ptr<QuantLib::VanillaSwap>&’
> 85 | Swaption(const ext::shared_ptr<VanillaSwap>& swap,
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
> /usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate:
> ‘QuantLib::Swaption::Swaption(const QuantLib::Swaption&)’
> 81 | class Swaption : public Option {
> | ^~~~~~~~
> ========================================
>
> quantlib_wrap.cpp: In function ‘jlong
> Java_org_quantlib_QuantLibJNI_new_1FloatFloatSwaption_1_1SWIG_10(JNIEnv*,
> jclass, jlong, jobject, jlong, jobject, jint, jint)’:
> quantlib_wrap.cpp:288061:166: error: no matching function for call to
> ‘QuantLib::FloatFloatSwaption::FloatFloatSwaption(const
> boost::shared_ptr<QuantLib::FloatFloatSwap>&, const
> boost::shared_ptr<QuantLib::Exercise>&, QuantLib::Settlement::Type&,
> QuantLib::Settlement::Method&)’
> 288061 | result = (FloatFloatSwaption *)new
> FloatFloatSwaption((boost::shared_ptr< FloatFloatSwap > const
> &)*arg1,(boost::shared_ptr< Exercise > const &)*arg2,arg3,arg4);
> |
> ^
> In file included from /usr/local/include/ql/instruments/all.hpp:26,
> from /usr/local/include/ql/quantlib.hpp:48,
> from quantlib_wrap.cpp:808:
> /usr/local/include/ql/instruments/floatfloatswaption.hpp:45:9: note:
> candidate: ‘QuantLib::FloatFloatSwaption::FloatFloatSwaption(const
> std::shared_ptr<QuantLib::FloatFloatSwap>&, const
> std::shared_ptr<QuantLib::Exercise>&, QuantLib::Settlement::Type,
> QuantLib::Settlement::Method)’
> 45 | FloatFloatSwaption(
> | ^~~~~~~~~~~~~~~~~~
> /usr/local/include/ql/instruments/floatfloatswaption.hpp:46:52: note: no
> known conversion for argument 1 from ‘const
> boost::shared_ptr<QuantLib::FloatFloatSwap>’ to ‘const
> std::shared_ptr<QuantLib::FloatFloatSwap>&’
> 46 | const ext::shared_ptr<FloatFloatSwap>& swap,
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
> /usr/local/include/ql/instruments/floatfloatswaption.hpp:41:11: note:
> candidate: ‘QuantLib::FloatFloatSwaption::FloatFloatSwaption(const
> QuantLib::FloatFloatSwaption&)’
> ===========================================
>
> I suspect that this has something to do with boost shared pointers vs
> standard pointers in c++ 11 and above.
>
> I also tried passing in
> CXXFLAGS="-std=c++17 -g -O2 -Wno-deprecated-declarations"
> for configure for SWIG build, however, I got the same errors.
>
> Has anyone seen this issue before?
>
> Any help is much appreciated.
>
> Thank you very much,
> Yoshiro
> Osaka,Japan
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Luigi B. <lui...@gm...> - 2020-09-23 11:00:00
|
Hi,
the example uses a flat curve just for simplicity; by doing so, it
focuses on the calibration code without adding too much code to set up a
term structure. In a real case, you'd use the full term structure.
Hope this helps,
Luigi
On Wed, Sep 23, 2020 at 11:26 AM oyvfos--- via QuantLib-users <
qua...@li...> wrote:
> Hi,
> It seems to be common practice to use a flat forward rate when
> calibrating the short rate models using QuantLib (example
> <https://github.com/lballabio/QuantLib/blob/940a3b4db517ebae000e968875e7d0483ac901a4/test-suite/shortratemodels.cpp>).
> What is the explanation for that? Is there any rationale for choosing a
> specific forward term? Using the full term structure yields quite different
> results. I am a bit confused. Thanks
>
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: philippe h. <pha...@ma...> - 2020-09-23 10:53:39
|
Even without the stochastic element, the behavior of linear forward curve is well known to be extremely unstable to small moves in key rates used to bootstrap it. For instance, if you calculate the Key Rate dv01s of à bond using linear forwards, you will see a substantial amount of propagation into adjacent instruments. The total dc01 is still correct but the allocation across input instruments is a bit insane. This property is totally avoided by flat continuous forwards when bootstrapping the curve. By extension; I assume that the bad propagation behavior of a linear forward curve strongly destabilizes a stochastic rate calibration model. Regards Philippe Hatstadt +1-203-252-0408 https://www.linkedin.com/in/philippe-hatstadt > On Sep 23, 2020, at 5:23 AM, oyvfos--- via QuantLib-users <qua...@li...> wrote: > > > Hi, > It seems to be common practice to use a flat forward rate when calibrating the short rate models using QuantLib (example). What is the explanation for that? Is there any rationale for choosing a specific forward term? Using the full term structure yields quite different results. I am a bit confused. Thanks > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: <oy...@ya...> - 2020-09-23 10:45:05
|
Hi Amine, Thanks for your reply. If I understand you correctly the parameters resulting from the calibration using swaptions would not be sensitive to the term structure? The calibration results I get are very sensitive to the term structure. I am also using a shift to reproduce the term structure once the parameters are estimated. Unless I can confirm that the calibrated parameters are insensitive to the term structure, I will have to know why it is common to use a flat structure. Van: Amine Ifri <ami...@gm...> Verzonden: woensdag 23 september 2020 11:31 Aan: oy...@ya... <oy...@ya...> CC: qua...@li... <qua...@li...> Onderwerp: Re: [Quantlib-users] Calibration short rate models Hi, Per my own experience, I could run calibrations on short rates - Gaussian 2F - assuming LogLinear interpolated zero curve built from Ibor instruments. In my case, the deterministic shift in the G2 model is calibrated to replicate the initial full term structure, so it is agnostic as to how you build the initial curve. Hope this helps, Regards, Amine On 23 Sep 2020, at 10:21, oyvfos--- via QuantLib-users <qua...@li...<mailto:qua...@li...>> wrote: Hi, It seems to be common practice to use a flat forward rate when calibrating the short rate models using QuantLib (example<https://github.com/lballabio/QuantLib/blob/940a3b4db517ebae000e968875e7d0483ac901a4/test-suite/shortratemodels.cpp>). What is the explanation for that? Is there any rationale for choosing a specific forward term? Using the full term structure yields quite different results. I am a bit confused. Thanks _______________________________________________ QuantLib-users mailing list Qua...@li...<mailto:Qua...@li...> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Amine I. <ami...@gm...> - 2020-09-23 09:31:44
|
Hi, Per my own experience, I could run calibrations on short rates - Gaussian 2F - assuming LogLinear interpolated zero curve built from Ibor instruments. In my case, the deterministic shift in the G2 model is calibrated to replicate the initial full term structure, so it is agnostic as to how you build the initial curve. Hope this helps, Regards, Amine > On 23 Sep 2020, at 10:21, oyvfos--- via QuantLib-users <qua...@li...> wrote: > > Hi, > It seems to be common practice to use a flat forward rate when calibrating the short rate models using QuantLib (example <https://github.com/lballabio/QuantLib/blob/940a3b4db517ebae000e968875e7d0483ac901a4/test-suite/shortratemodels.cpp>). What is the explanation for that? Is there any rationale for choosing a specific forward term? Using the full term structure yields quite different results. I am a bit confused. Thanks > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... <mailto:Qua...@li...> > https://lists.sourceforge.net/lists/listinfo/quantlib-users <https://lists.sourceforge.net/lists/listinfo/quantlib-users> |
|
From: <oy...@ya...> - 2020-09-23 09:21:35
|
Hi, It seems to be common practice to use a flat forward rate when calibrating the short rate models using QuantLib (example<https://github.com/lballabio/QuantLib/blob/940a3b4db517ebae000e968875e7d0483ac901a4/test-suite/shortratemodels.cpp>). What is the explanation for that? Is there any rationale for choosing a specific forward term? Using the full term structure yields quite different results. I am a bit confused. Thanks |
|
From: Francis D. <fdf...@gm...> - 2020-09-22 21:49:05
|
Hi Brian, the test case at https://github.com/OpenSourceRisk/Engine/blob/master/OREData/test/indices.cpp#L350 shows how this function can be used to take a string and create a shared_ptr<QuantLib::IborIndex> based on the string. On Tue, Sep 22, 2020 at 10:05 PM Brian Smith <bri...@gm...> wrote: > Thanks Francis, > > Could you please help how to use this function in a typical index > creating with QL? > > On Wed, 23 Sep 2020 at 01:28, Francis Duffy <fdf...@gm...> > wrote: > > > > Hi Brian, Tom, > > > > You could possibly adapt this function, boost::shared_ptr<IborIndex> > parseIborIndex(...), from ORE to achieve what you want: > https://github.com/OpenSourceRisk/Engine/blob/master/OREData/ored/utilities/indexparser.cpp#L197 > ? > > > > Thanks, > > Francis. > > > > On Tue, Sep 22, 2020 at 8:52 PM Tom Anderson <tw...@ur...> > wrote: > >> > >> On Wed, 23 Sep 2020, Brian Smith wrote: > >> > >> > It will really be very helpful if there is some way to achieve this > >> > using a variable string - > >> > >> I agree. > >> > >> In my code, i define an enum Index, and then have a function like this: > >> > >> shared_ptr<IborIndex> lookupIborIndex(Index index, > Handle<YieldTermStructure>& curveHandle = EMPTY_HANDLE) { > >> switch (index) { > >> case Index::FED_FUNDS: return make_shared<FedFunds>(curveHandle); > >> case Index::SOFR: return make_shared<Sofr>(curveHandle); > >> case Index::USD_LIBOR_3M: return make_shared<USDLibor>(Period(3, > TimeUnit::Months), curveHandle); > >> default: QL_FAIL("unknown index: " << Traits<Index>::name(index) > << " (" << index << ")"); > >> } > >> } > >> > >> It would be nice not to have to do that. > >> > >> tom > >> > >> > On Sat, 19 Sep 2020 at 23:01, Brian Smith <bri...@gm...> > wrote: > >> >> > >> >> Hi, > >> >> > >> >> I understand that one way to create an index in QuantLib is, > >> >> > >> >> ext::shared_ptr<IborIndex> myIndex(new Euribor1M(termStructure)); > >> >> > >> >> However in my case the information like Euribor1M is variable and > >> >> stored in another variable like, > >> >> > >> >> std::string getIndex = "Euribor1M"; > >> >> > >> >> I am looking for some way to pass the variable getIndex, instead > >> >> Euribor1M directly, to create appropriate index based on my dynamic > >> >> situation. > >> >> > >> >> Is there any possible way to achieve this? > >> > > >> > > >> > _______________________________________________ > >> > QuantLib-users mailing list > >> > Qua...@li... > >> > https://lists.sourceforge.net/lists/listinfo/quantlib-users > >> > > >> > >> -- > >> a blood-spattered Canadarm flinging goat carcasses into the void > >> > >> > >> _______________________________________________ > >> QuantLib-users mailing list > >> Qua...@li... > >> https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Brian S. <bri...@gm...> - 2020-09-22 21:06:22
|
Thanks Francis, Could you please help how to use this function in a typical index creating with QL? On Wed, 23 Sep 2020 at 01:28, Francis Duffy <fdf...@gm...> wrote: > > Hi Brian, Tom, > > You could possibly adapt this function, boost::shared_ptr<IborIndex> parseIborIndex(...), from ORE to achieve what you want: https://github.com/OpenSourceRisk/Engine/blob/master/OREData/ored/utilities/indexparser.cpp#L197? > > Thanks, > Francis. > > On Tue, Sep 22, 2020 at 8:52 PM Tom Anderson <tw...@ur...> wrote: >> >> On Wed, 23 Sep 2020, Brian Smith wrote: >> >> > It will really be very helpful if there is some way to achieve this >> > using a variable string - >> >> I agree. >> >> In my code, i define an enum Index, and then have a function like this: >> >> shared_ptr<IborIndex> lookupIborIndex(Index index, Handle<YieldTermStructure>& curveHandle = EMPTY_HANDLE) { >> switch (index) { >> case Index::FED_FUNDS: return make_shared<FedFunds>(curveHandle); >> case Index::SOFR: return make_shared<Sofr>(curveHandle); >> case Index::USD_LIBOR_3M: return make_shared<USDLibor>(Period(3, TimeUnit::Months), curveHandle); >> default: QL_FAIL("unknown index: " << Traits<Index>::name(index) << " (" << index << ")"); >> } >> } >> >> It would be nice not to have to do that. >> >> tom >> >> > On Sat, 19 Sep 2020 at 23:01, Brian Smith <bri...@gm...> wrote: >> >> >> >> Hi, >> >> >> >> I understand that one way to create an index in QuantLib is, >> >> >> >> ext::shared_ptr<IborIndex> myIndex(new Euribor1M(termStructure)); >> >> >> >> However in my case the information like Euribor1M is variable and >> >> stored in another variable like, >> >> >> >> std::string getIndex = "Euribor1M"; >> >> >> >> I am looking for some way to pass the variable getIndex, instead >> >> Euribor1M directly, to create appropriate index based on my dynamic >> >> situation. >> >> >> >> Is there any possible way to achieve this? >> > >> > >> > _______________________________________________ >> > QuantLib-users mailing list >> > Qua...@li... >> > https://lists.sourceforge.net/lists/listinfo/quantlib-users >> > >> >> -- >> a blood-spattered Canadarm flinging goat carcasses into the void >> >> >> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Francis D. <fdf...@gm...> - 2020-09-22 19:58:56
|
Hi Brian, Tom, You could possibly adapt this function, boost::shared_ptr<IborIndex> parseIborIndex(...), from ORE to achieve what you want: https://github.com/OpenSourceRisk/Engine/blob/master/OREData/ored/utilities/indexparser.cpp#L197 ? Thanks, Francis. On Tue, Sep 22, 2020 at 8:52 PM Tom Anderson <tw...@ur...> wrote: > On Wed, 23 Sep 2020, Brian Smith wrote: > > > It will really be very helpful if there is some way to achieve this > > using a variable string - > > I agree. > > In my code, i define an enum Index, and then have a function like this: > > shared_ptr<IborIndex> lookupIborIndex(Index index, > Handle<YieldTermStructure>& curveHandle = EMPTY_HANDLE) { > switch (index) { > case Index::FED_FUNDS: return make_shared<FedFunds>(curveHandle); > case Index::SOFR: return make_shared<Sofr>(curveHandle); > case Index::USD_LIBOR_3M: return make_shared<USDLibor>(Period(3, > TimeUnit::Months), curveHandle); > default: QL_FAIL("unknown index: " << Traits<Index>::name(index) << " > (" << index << ")"); > } > } > > It would be nice not to have to do that. > > tom > > > On Sat, 19 Sep 2020 at 23:01, Brian Smith <bri...@gm...> > wrote: > >> > >> Hi, > >> > >> I understand that one way to create an index in QuantLib is, > >> > >> ext::shared_ptr<IborIndex> myIndex(new Euribor1M(termStructure)); > >> > >> However in my case the information like Euribor1M is variable and > >> stored in another variable like, > >> > >> std::string getIndex = "Euribor1M"; > >> > >> I am looking for some way to pass the variable getIndex, instead > >> Euribor1M directly, to create appropriate index based on my dynamic > >> situation. > >> > >> Is there any possible way to achieve this? > > > > > > _______________________________________________ > > QuantLib-users mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > -- > a blood-spattered Canadarm flinging goat carcasses into the void > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Tom A. <tw...@ur...> - 2020-09-22 19:49:42
|
On Wed, 23 Sep 2020, Brian Smith wrote:
> It will really be very helpful if there is some way to achieve this
> using a variable string -
I agree.
In my code, i define an enum Index, and then have a function like this:
shared_ptr<IborIndex> lookupIborIndex(Index index, Handle<YieldTermStructure>& curveHandle = EMPTY_HANDLE) {
switch (index) {
case Index::FED_FUNDS: return make_shared<FedFunds>(curveHandle);
case Index::SOFR: return make_shared<Sofr>(curveHandle);
case Index::USD_LIBOR_3M: return make_shared<USDLibor>(Period(3, TimeUnit::Months), curveHandle);
default: QL_FAIL("unknown index: " << Traits<Index>::name(index) << " (" << index << ")");
}
}
It would be nice not to have to do that.
tom
> On Sat, 19 Sep 2020 at 23:01, Brian Smith <bri...@gm...> wrote:
>>
>> Hi,
>>
>> I understand that one way to create an index in QuantLib is,
>>
>> ext::shared_ptr<IborIndex> myIndex(new Euribor1M(termStructure));
>>
>> However in my case the information like Euribor1M is variable and
>> stored in another variable like,
>>
>> std::string getIndex = "Euribor1M";
>>
>> I am looking for some way to pass the variable getIndex, instead
>> Euribor1M directly, to create appropriate index based on my dynamic
>> situation.
>>
>> Is there any possible way to achieve this?
>
>
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
--
a blood-spattered Canadarm flinging goat carcasses into the void
|
|
From: Brian S. <bri...@gm...> - 2020-09-22 18:48:35
|
Hi, It will really be very helpful if there is some way to achieve this using a variable string - std::string getIndex = "Euribor1M" Basically, for my case, the Currency and period are variable. So I want to be able to create index based on the dynamically supplied values. Another way to do the same is - boost::shared_ptr<IborIndex> MyIndex(new USDLibor(Period(3, Months), forecastingTermStructure)); But again, I require to chose "USDLibor" dynamically. Means, If currency is USD then use -> boost::shared_ptr<IborIndex> MyIndex(new USDLibor(Period(3, Months), forecastingTermStructure)); If currency is EUR then use -> boost::shared_ptr<IborIndex> MyIndex(new EURLibor(Period(3, Months), forecastingTermStructure)); etc. I have long list of currencies, so any pointer to achieve this flexibility will be very helpful. Thanks for your time. On Sat, 19 Sep 2020 at 23:01, Brian Smith <bri...@gm...> wrote: > > Hi, > > I understand that one way to create an index in QuantLib is, > > ext::shared_ptr<IborIndex> myIndex(new Euribor1M(termStructure)); > > However in my case the information like Euribor1M is variable and > stored in another variable like, > > std::string getIndex = "Euribor1M"; > > I am looking for some way to pass the variable getIndex, instead > Euribor1M directly, to create appropriate index based on my dynamic > situation. > > Is there any possible way to achieve this? |
|
From: Yoshiro O. <yos...@ma...> - 2020-09-21 21:54:45
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>Hello,</div>
<div> </div>
<div>I am very sorry if this post appears twice, I was not subscribed to the list when I posted first.</div>
<div> </div>
<div>I have successfully built QuantLib 1.18 on Ubuntu.</div>
<div><br/>
Following were my commands when building QL</div>
<div> </div>
<div>./configure CXXFLAGS="-std=c++17 -g -O2 -Wno-deprecated-declarations" --enable-shared=no \<br/>
--enable-static=yes \<br/>
--enable-error-lines \<br/>
--enable-error-functions \<br/>
--enable-thread-safe-observer-pattern \<br/>
--enable-std-classes</div>
<div> </div>
<div>sudo make -j4<br/>
sudo make install<br/>
sudo ldconfig</div>
<div> </div>
<div>After this, I downloaded Quantlib-SWIG tar and tried following </div>
<div> </div>
<div>./configure <br/>
--with-jdk-include=${JAVA_HOME}/include \<br/>
--with-jdk-system-include=${JAVA_HOME}/include/linux \<br/>
--disable-python \<br/>
--disable-csharp \<br/>
--disable-r \<br/>
--disable-scala</div>
<div> </div>
<div>make -C Java</div>
<div> </div>
<div>I get errors building as follows</div>
<div> </div>
<div>======================================</div>
<div> </div>
<div>/usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate expects 1 argument, 3 provided<br/>
/usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate: ‘QuantLib::Swaption::Swaption(QuantLib::Swaption&&)’<br/>
/usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate expects 1 argument, 3 provided<br/>
quantlib_wrap.cpp: In function ‘jlong Java_org_quantlib_QuantLibJNI_new_1Swaption_1_1SWIG_12(JNIEnv*, jclass, jlong, jobject, jlong, jobject)’:<br/>
quantlib_wrap.cpp:287193:133: error: no matching function for call to ‘QuantLib::Swaption::Swaption(const boost::shared_ptr<QuantLib::VanillaSwap>&, const boost::shared_ptr<QuantLib::Exercise>&)’<br/>
287193 | result = (Swaption *)new Swaption((boost::shared_ptr< VanillaSwap > const &)*arg1,(boost::shared_ptr< Exercise > const &)*arg2);<br/>
| ^<br/>
In file included from /usr/local/include/ql/experimental/basismodels/swaptioncfs.hpp:27,<br/>
from /usr/local/include/ql/experimental/basismodels/all.hpp:4,<br/>
from /usr/local/include/ql/experimental/all.hpp:7,<br/>
from /usr/local/include/ql/quantlib.hpp:46,<br/>
from quantlib_wrap.cpp:808:<br/>
/usr/local/include/ql/instruments/swaption.hpp:85:9: note: candidate: ‘QuantLib::Swaption::Swaption(const std::shared_ptr<QuantLib::VanillaSwap>&, const std::shared_ptr<QuantLib::Exercise>&, QuantLib::Settlement::Type, QuantLib::Settlement::Method)’<br/>
85 | Swaption(const ext::shared_ptr<VanillaSwap>& swap,<br/>
| ^~~~~~~~<br/>
/usr/local/include/ql/instruments/swaption.hpp:85:54: note: no known conversion for argument 1 from ‘const boost::shared_ptr<QuantLib::VanillaSwap>’ to ‘const std::shared_ptr<QuantLib::VanillaSwap>&’<br/>
85 | Swaption(const ext::shared_ptr<VanillaSwap>& swap,<br/>
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~<br/>
/usr/local/include/ql/instruments/swaption.hpp:81:11: note: candidate: ‘QuantLib::Swaption::Swaption(const QuantLib::Swaption&)’<br/>
81 | class Swaption : public Option {<br/>
| ^~~~~~~~<br/>
========================================</div>
<div> </div>
<div>quantlib_wrap.cpp: In function ‘jlong Java_org_quantlib_QuantLibJNI_new_1FloatFloatSwaption_1_1SWIG_10(JNIEnv*, jclass, jlong, jobject, jlong, jobject, jint, jint)’:<br/>
quantlib_wrap.cpp:288061:166: error: no matching function for call to ‘QuantLib::FloatFloatSwaption::FloatFloatSwaption(const boost::shared_ptr<QuantLib::FloatFloatSwap>&, const boost::shared_ptr<QuantLib::Exercise>&, QuantLib::Settlement::Type&, QuantLib::Settlement::Method&)’<br/>
288061 | result = (FloatFloatSwaption *)new FloatFloatSwaption((boost::shared_ptr< FloatFloatSwap > const &)*arg1,(boost::shared_ptr< Exercise > const &)*arg2,arg3,arg4);<br/>
| ^<br/>
In file included from /usr/local/include/ql/instruments/all.hpp:26,<br/>
from /usr/local/include/ql/quantlib.hpp:48,<br/>
from quantlib_wrap.cpp:808:<br/>
/usr/local/include/ql/instruments/floatfloatswaption.hpp:45:9: note: candidate: ‘QuantLib::FloatFloatSwaption::FloatFloatSwaption(const std::shared_ptr<QuantLib::FloatFloatSwap>&, const std::shared_ptr<QuantLib::Exercise>&, QuantLib::Settlement::Type, QuantLib::Settlement::Method)’<br/>
45 | FloatFloatSwaption(<br/>
| ^~~~~~~~~~~~~~~~~~<br/>
/usr/local/include/ql/instruments/floatfloatswaption.hpp:46:52: note: no known conversion for argument 1 from ‘const boost::shared_ptr<QuantLib::FloatFloatSwap>’ to ‘const std::shared_ptr<QuantLib::FloatFloatSwap>&’<br/>
46 | const ext::shared_ptr<FloatFloatSwap>& swap,<br/>
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~<br/>
/usr/local/include/ql/instruments/floatfloatswaption.hpp:41:11: note: candidate: ‘QuantLib::FloatFloatSwaption::FloatFloatSwaption(const QuantLib::FloatFloatSwaption&)’</div>
<div>===========================================</div>
<div> </div>
<div>I suspect that this has something to do with boost shared pointers vs standard pointers in c++ 11 and above.</div>
<div><br/>
I also tried passing in <br/>
CXXFLAGS="-std=c++17 -g -O2 -Wno-deprecated-declarations" <br/>
for configure for SWIG build, however, I got the same errors.</div>
<div> </div>
<div>Has anyone seen this issue before?</div>
<div><br/>
Any help is much appreciated.</div>
<div> </div>
<div>Thank you very much,<br/>
Yoshiro<br/>
Osaka,Japan</div>
</div></div></body></html>
|
|
From: Sumit S. <su...@mo...> - 2020-09-21 11:09:41
|
Hi, I usually use the CallableFixedRateBond() with callabilitySchedule for fixed coupon bonds with callability/ early redemption schedules Is there a way I can create a FRN: FloatingRateBond() with the callabilitySchedule? Any python based example would be very useful. Thanks, Sumit -- Mosaic Smart Data mobile +44 (0)7961839363 su...@mo... 25 Finsbury Circus ▫ EC2M 7EE ▫ London ▫ United Kingdom www.mosaicsmartdata.com |
|
From: Josep R. <jos...@gm...> - 2020-09-21 00:59:55
|
https://quantra.io/ is an initial implementation of a REST wrapper for QuantLib. You can either use it online or download the sources. It can price bonds, swaps, options and create curves. I have not worked on it for a while and the API docs are missing the options part, but if you would need to add something let me know and I could spend some time on it. Josep On Sun, Sep 20, 2020, 17:13 Philippe Hatstadt < phi...@ex...> wrote: > You may want to look into ORE (Quaternion) which is an open source QL > extension. > They use XML for certain aspects of the trilogy of mkt data+transaction > data+static data. > > Philippe Hatstadt > > > On Sun, Sep 20, 2020 at 5:25 PM Jean-Philippe Guichard ( > jph...@gm...) <jph...@gm...> wrote: > >> Hello, >> >> I am quite new to quantlib and I was wondering if there was a xml >> interface of quantlib to describe the market data, payoffs, models for each >> underlier, pricing methodology, pricing command ? >> >> With this xml description (or json), Quantlib would be able to read the >> xml and finds all the information needed to: >> - book the payoff >> - associate the pricing engine to each payoff >> - associate the stochastic process to the underlier >> - set the fixing >> - calibrate the curve >> - calibrate the model >> and I would only need to modify in a text editor the xml file [changing >> the underlying level, the volatility, the payoff] to see the results >> instead of having to go through the quite complex cpp implementation of >> quantlib. >> >> Best, >> Jean-Philippe >> _______________________________________________ >> 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>. > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Philippe H. <phi...@ex...> - 2020-09-20 22:10:42
|
You may want to look into ORE (Quaternion) which is an open source QL extension. They use XML for certain aspects of the trilogy of mkt data+transaction data+static data. Philippe Hatstadt On Sun, Sep 20, 2020 at 5:25 PM Jean-Philippe Guichard ( jph...@gm...) <jph...@gm...> wrote: > Hello, > > I am quite new to quantlib and I was wondering if there was a xml > interface of quantlib to describe the market data, payoffs, models for each > underlier, pricing methodology, pricing command ? > > With this xml description (or json), Quantlib would be able to read the > xml and finds all the information needed to: > - book the payoff > - associate the pricing engine to each payoff > - associate the stochastic process to the underlier > - set the fixing > - calibrate the curve > - calibrate the model > and I would only need to modify in a text editor the xml file [changing > the underlying level, the volatility, the payoff] to see the results > instead of having to go through the quite complex cpp implementation of > quantlib. > > Best, > Jean-Philippe > _______________________________________________ > 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: Jean-Philippe G. (<jph...@gm...>
<jph...@gm...> - 2020-09-20 21:24:35
|
Hello, I am quite new to quantlib and I was wondering if there was a xml interface of quantlib to describe the market data, payoffs, models for each underlier, pricing methodology, pricing command ? With this xml description (or json), Quantlib would be able to read the xml and finds all the information needed to: - book the payoff - associate the pricing engine to each payoff - associate the stochastic process to the underlier - set the fixing - calibrate the curve - calibrate the model and I would only need to modify in a text editor the xml file [changing the underlying level, the volatility, the payoff] to see the results instead of having to go through the quite complex cpp implementation of quantlib. Best, Jean-Philippe |
|
From: Brian S. <bri...@gm...> - 2020-09-19 17:32:12
|
Hi, I understand that one way to create an index in QuantLib is, ext::shared_ptr<IborIndex> myIndex(new Euribor1M(termStructure)); However in my case the information like Euribor1M is variable and stored in another variable like, std::string getIndex = "Euribor1M"; I am looking for some way to pass the variable getIndex, instead Euribor1M directly, to create appropriate index based on my dynamic situation. Is there any possible way to achieve this? |
|
From: Daniel L. <dan...@gm...> - 2020-09-19 17:03:33
|
Okay. Is there any way to set the extrapolation method like linear, non-linear etc? On Sat, 19 Sep 2020 at 22:29, Amine Ifri <ami...@gm...> wrote: > > I dont see anything wrong with your call. I suspect this has to do with the Black pricing formula used for valuing the swaption. That is where you would have to look for the mistake. > > > On 19 Sep 2020, at 17:54, Daniel Lobo <dan...@gm...> wrote: > > > > Thanks. > > > > I tried to enable extrapolation with below snippet - > > > > std::vector<QuantLib::Date> sr_dt; > > std::vector<QuantLib::Real> sr_v; > > sr_dt.push_back(Date(15, February, 2002)); > > sr_dt.push_back(Date(15, February, 2003)); > > sr_dt.push_back(Date(15, February, 2004)); > > sr_v.push_back(0); > > sr_v.push_back(3.5/100); > > sr_v.push_back(6/100); > > > > Handle<YieldTermStructure> > > rhTermStructure(ext::make_shared<ZeroCurve>(sr_dt, sr_v, > > Actual365Fixed())); > > rhTermStructure->enableExtrapolation(); > > > > However with this I am getting below error - > > > > strike + displacement (-0.0621661 + 0) must be non-negative > > > > Is there any better way to enable extrapolation? > > > > Thanks again for your help. > > > > On Sat, 19 Sep 2020 at 21:36, Amine Ifri <ami...@gm...> wrote: > >> > >> Hi Daniel, > >> > >> The curve and the instrument you are pricing are independent: curve is only based on the instruments you use to build it and their tenor points, not on the cash flows of the instrument you are pricing with it. > >> > >> If you don’t have spot quotes that go that far, I believe you can enable extrapolation. > >> > >> Hope it helps. > >> > >> Amine Ifri > >> > >>> On 19 Sep 2020, at 12:05, Daniel Lobo <dan...@gm...> wrote: > >>> > >>> Hi, > >>> > >>> Thanks for your suggestion. I changed to below and it worked. > >>> > >>> std::vector<QuantLib::Date> sr_dt; > >>> std::vector<QuantLib::Real> sr_v; > >>> sr_dt.push_back(Date(15, February, 2002)); > >>> sr_dt.push_back(Date(15, February, 2003)); > >>> sr_dt.push_back(Date(15, February, 2054)); > >>> sr_v.push_back(0); > >>> sr_v.push_back(1.5/100); > >>> sr_v.push_back(2/100); > >>> > >>> Handle<YieldTermStructure> rhTermStructure( > >>> ext::make_shared<ZeroCurve>(sr_dt, > >>> sr_v, > >>> Actual365Fixed() > >>> )); > >>> > >>> But my question is, shouldnt the curve automatically extrapolated > >>> automatically to the last cash-flow date? > >>> > >>> What I should do if I dont have spot-quoted till that far? > >>> > >>>> On Sat, 19 Sep 2020 at 16:28, Amine Ifri <ami...@gm...> wrote: > >>>> > >>>> Hi Daniel, > >>>> > >>>> I believe the error is due to an initial check on the term structure that fails because The last tenor on the curve is less than the maturity date of your instrument/ underlying swap. > >>>> > >>>> I would try setting the last tenor on the curve to be longer than the last point on your instrument. > >>>> > >>>> Let me know how it goes ! > >>>> > >>>> Amine Ifri > >>>> > >>>>>> On 19 Sep 2020, at 11:27, Daniel Lobo <dan...@gm...> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> I was replicating the examples as given in > >>>>> https://github.com/lballabio/QuantLib/blob/master/Examples/BermudanSwaption/BermudanSwaption.cpp. > >>>>> > >>>>> However I changed the Term structure curve as below - > >>>>> > >>>>> Asin the file - > >>>>> > >>>>> Handle<YieldTermStructure> rhTermStructure( > >>>>> ext::make_shared<FlatForward>( > >>>>> settlementDate, Handle<Quote>(flatRate), > >>>>> Actual365Fixed())); > >>>>> > >>>>> But I changed to - > >>>>> > >>>>> Handle<YieldTermStructure> rhTermStructure1( > >>>>> ext::make_shared<FlatForward>( > >>>>> settlementDate, Handle<Quote>(flatRate), > >>>>> Actual365Fixed())); > >>>>> > >>>>> std::vector<QuantLib::Date> sr_dt; > >>>>> std::vector<QuantLib::Real> sr_v; > >>>>> sr_dt.push_back(Date(15, February, 2002)); > >>>>> sr_dt.push_back(Date(15, February, 2003)); > >>>>> sr_dt.push_back(Date(15, February, 2004)); > >>>>> sr_v.push_back(0); > >>>>> sr_v.push_back(1.5/100); > >>>>> sr_v.push_back(2/100); > >>>>> > >>>>> Handle<YieldTermStructure> rhTermStructure( > >>>>> ext::make_shared<ZeroCurve>(sr_dt, > >>>>> sr_v, > >>>>> Actual365Fixed() > >>>>> )); > >>>>> > >>>>> With this change I failed to generate any value. I received error - > >>>>> > >>>>> 1st leg: time (2.01096) is past max curve time (2) > >>>>> > >>>>> Any insight why I get this error and how to resolve this would be > >>>>> really helpful. > >>>>> > >>>>> Thanks for your time > >>>>> > >>>>> > >>>>> _______________________________________________ > >>>>> QuantLib-users mailing list > >>>>> Qua...@li... > >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Amine I. <ami...@gm...> - 2020-09-19 16:59:53
|
I dont see anything wrong with your call. I suspect this has to do with the Black pricing formula used for valuing the swaption. That is where you would have to look for the mistake. > On 19 Sep 2020, at 17:54, Daniel Lobo <dan...@gm...> wrote: > > Thanks. > > I tried to enable extrapolation with below snippet - > > std::vector<QuantLib::Date> sr_dt; > std::vector<QuantLib::Real> sr_v; > sr_dt.push_back(Date(15, February, 2002)); > sr_dt.push_back(Date(15, February, 2003)); > sr_dt.push_back(Date(15, February, 2004)); > sr_v.push_back(0); > sr_v.push_back(3.5/100); > sr_v.push_back(6/100); > > Handle<YieldTermStructure> > rhTermStructure(ext::make_shared<ZeroCurve>(sr_dt, sr_v, > Actual365Fixed())); > rhTermStructure->enableExtrapolation(); > > However with this I am getting below error - > > strike + displacement (-0.0621661 + 0) must be non-negative > > Is there any better way to enable extrapolation? > > Thanks again for your help. > > On Sat, 19 Sep 2020 at 21:36, Amine Ifri <ami...@gm...> wrote: >> >> Hi Daniel, >> >> The curve and the instrument you are pricing are independent: curve is only based on the instruments you use to build it and their tenor points, not on the cash flows of the instrument you are pricing with it. >> >> If you don’t have spot quotes that go that far, I believe you can enable extrapolation. >> >> Hope it helps. >> >> Amine Ifri >> >>> On 19 Sep 2020, at 12:05, Daniel Lobo <dan...@gm...> wrote: >>> >>> Hi, >>> >>> Thanks for your suggestion. I changed to below and it worked. >>> >>> std::vector<QuantLib::Date> sr_dt; >>> std::vector<QuantLib::Real> sr_v; >>> sr_dt.push_back(Date(15, February, 2002)); >>> sr_dt.push_back(Date(15, February, 2003)); >>> sr_dt.push_back(Date(15, February, 2054)); >>> sr_v.push_back(0); >>> sr_v.push_back(1.5/100); >>> sr_v.push_back(2/100); >>> >>> Handle<YieldTermStructure> rhTermStructure( >>> ext::make_shared<ZeroCurve>(sr_dt, >>> sr_v, >>> Actual365Fixed() >>> )); >>> >>> But my question is, shouldnt the curve automatically extrapolated >>> automatically to the last cash-flow date? >>> >>> What I should do if I dont have spot-quoted till that far? >>> >>>> On Sat, 19 Sep 2020 at 16:28, Amine Ifri <ami...@gm...> wrote: >>>> >>>> Hi Daniel, >>>> >>>> I believe the error is due to an initial check on the term structure that fails because The last tenor on the curve is less than the maturity date of your instrument/ underlying swap. >>>> >>>> I would try setting the last tenor on the curve to be longer than the last point on your instrument. >>>> >>>> Let me know how it goes ! >>>> >>>> Amine Ifri >>>> >>>>>> On 19 Sep 2020, at 11:27, Daniel Lobo <dan...@gm...> wrote: >>>>> >>>>> Hi, >>>>> >>>>> I was replicating the examples as given in >>>>> https://github.com/lballabio/QuantLib/blob/master/Examples/BermudanSwaption/BermudanSwaption.cpp. >>>>> >>>>> However I changed the Term structure curve as below - >>>>> >>>>> Asin the file - >>>>> >>>>> Handle<YieldTermStructure> rhTermStructure( >>>>> ext::make_shared<FlatForward>( >>>>> settlementDate, Handle<Quote>(flatRate), >>>>> Actual365Fixed())); >>>>> >>>>> But I changed to - >>>>> >>>>> Handle<YieldTermStructure> rhTermStructure1( >>>>> ext::make_shared<FlatForward>( >>>>> settlementDate, Handle<Quote>(flatRate), >>>>> Actual365Fixed())); >>>>> >>>>> std::vector<QuantLib::Date> sr_dt; >>>>> std::vector<QuantLib::Real> sr_v; >>>>> sr_dt.push_back(Date(15, February, 2002)); >>>>> sr_dt.push_back(Date(15, February, 2003)); >>>>> sr_dt.push_back(Date(15, February, 2004)); >>>>> sr_v.push_back(0); >>>>> sr_v.push_back(1.5/100); >>>>> sr_v.push_back(2/100); >>>>> >>>>> Handle<YieldTermStructure> rhTermStructure( >>>>> ext::make_shared<ZeroCurve>(sr_dt, >>>>> sr_v, >>>>> Actual365Fixed() >>>>> )); >>>>> >>>>> With this change I failed to generate any value. I received error - >>>>> >>>>> 1st leg: time (2.01096) is past max curve time (2) >>>>> >>>>> Any insight why I get this error and how to resolve this would be >>>>> really helpful. >>>>> >>>>> Thanks for your time >>>>> >>>>> >>>>> _______________________________________________ >>>>> QuantLib-users mailing list >>>>> Qua...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Daniel L. <dan...@gm...> - 2020-09-19 16:54:40
|
Thanks.
I tried to enable extrapolation with below snippet -
std::vector<QuantLib::Date> sr_dt;
std::vector<QuantLib::Real> sr_v;
sr_dt.push_back(Date(15, February, 2002));
sr_dt.push_back(Date(15, February, 2003));
sr_dt.push_back(Date(15, February, 2004));
sr_v.push_back(0);
sr_v.push_back(3.5/100);
sr_v.push_back(6/100);
Handle<YieldTermStructure>
rhTermStructure(ext::make_shared<ZeroCurve>(sr_dt, sr_v,
Actual365Fixed()));
rhTermStructure->enableExtrapolation();
However with this I am getting below error -
strike + displacement (-0.0621661 + 0) must be non-negative
Is there any better way to enable extrapolation?
Thanks again for your help.
On Sat, 19 Sep 2020 at 21:36, Amine Ifri <ami...@gm...> wrote:
>
> Hi Daniel,
>
> The curve and the instrument you are pricing are independent: curve is only based on the instruments you use to build it and their tenor points, not on the cash flows of the instrument you are pricing with it.
>
> If you don’t have spot quotes that go that far, I believe you can enable extrapolation.
>
> Hope it helps.
>
> Amine Ifri
>
> > On 19 Sep 2020, at 12:05, Daniel Lobo <dan...@gm...> wrote:
> >
> > Hi,
> >
> > Thanks for your suggestion. I changed to below and it worked.
> >
> > std::vector<QuantLib::Date> sr_dt;
> > std::vector<QuantLib::Real> sr_v;
> > sr_dt.push_back(Date(15, February, 2002));
> > sr_dt.push_back(Date(15, February, 2003));
> > sr_dt.push_back(Date(15, February, 2054));
> > sr_v.push_back(0);
> > sr_v.push_back(1.5/100);
> > sr_v.push_back(2/100);
> >
> > Handle<YieldTermStructure> rhTermStructure(
> > ext::make_shared<ZeroCurve>(sr_dt,
> > sr_v,
> > Actual365Fixed()
> > ));
> >
> > But my question is, shouldnt the curve automatically extrapolated
> > automatically to the last cash-flow date?
> >
> > What I should do if I dont have spot-quoted till that far?
> >
> >> On Sat, 19 Sep 2020 at 16:28, Amine Ifri <ami...@gm...> wrote:
> >>
> >> Hi Daniel,
> >>
> >> I believe the error is due to an initial check on the term structure that fails because The last tenor on the curve is less than the maturity date of your instrument/ underlying swap.
> >>
> >> I would try setting the last tenor on the curve to be longer than the last point on your instrument.
> >>
> >> Let me know how it goes !
> >>
> >> Amine Ifri
> >>
> >>>> On 19 Sep 2020, at 11:27, Daniel Lobo <dan...@gm...> wrote:
> >>>
> >>> Hi,
> >>>
> >>> I was replicating the examples as given in
> >>> https://github.com/lballabio/QuantLib/blob/master/Examples/BermudanSwaption/BermudanSwaption.cpp.
> >>>
> >>> However I changed the Term structure curve as below -
> >>>
> >>> Asin the file -
> >>>
> >>> Handle<YieldTermStructure> rhTermStructure(
> >>> ext::make_shared<FlatForward>(
> >>> settlementDate, Handle<Quote>(flatRate),
> >>> Actual365Fixed()));
> >>>
> >>> But I changed to -
> >>>
> >>> Handle<YieldTermStructure> rhTermStructure1(
> >>> ext::make_shared<FlatForward>(
> >>> settlementDate, Handle<Quote>(flatRate),
> >>> Actual365Fixed()));
> >>>
> >>> std::vector<QuantLib::Date> sr_dt;
> >>> std::vector<QuantLib::Real> sr_v;
> >>> sr_dt.push_back(Date(15, February, 2002));
> >>> sr_dt.push_back(Date(15, February, 2003));
> >>> sr_dt.push_back(Date(15, February, 2004));
> >>> sr_v.push_back(0);
> >>> sr_v.push_back(1.5/100);
> >>> sr_v.push_back(2/100);
> >>>
> >>> Handle<YieldTermStructure> rhTermStructure(
> >>> ext::make_shared<ZeroCurve>(sr_dt,
> >>> sr_v,
> >>> Actual365Fixed()
> >>> ));
> >>>
> >>> With this change I failed to generate any value. I received error -
> >>>
> >>> 1st leg: time (2.01096) is past max curve time (2)
> >>>
> >>> Any insight why I get this error and how to resolve this would be
> >>> really helpful.
> >>>
> >>> Thanks for your time
> >>>
> >>>
> >>> _______________________________________________
> >>> QuantLib-users mailing list
> >>> Qua...@li...
> >>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
|
|
From: Amine I. <ami...@gm...> - 2020-09-19 16:06:49
|
Hi Daniel, The curve and the instrument you are pricing are independent: curve is only based on the instruments you use to build it and their tenor points, not on the cash flows of the instrument you are pricing with it. If you don’t have spot quotes that go that far, I believe you can enable extrapolation. Hope it helps. Amine Ifri > On 19 Sep 2020, at 12:05, Daniel Lobo <dan...@gm...> wrote: > > Hi, > > Thanks for your suggestion. I changed to below and it worked. > > std::vector<QuantLib::Date> sr_dt; > std::vector<QuantLib::Real> sr_v; > sr_dt.push_back(Date(15, February, 2002)); > sr_dt.push_back(Date(15, February, 2003)); > sr_dt.push_back(Date(15, February, 2054)); > sr_v.push_back(0); > sr_v.push_back(1.5/100); > sr_v.push_back(2/100); > > Handle<YieldTermStructure> rhTermStructure( > ext::make_shared<ZeroCurve>(sr_dt, > sr_v, > Actual365Fixed() > )); > > But my question is, shouldnt the curve automatically extrapolated > automatically to the last cash-flow date? > > What I should do if I dont have spot-quoted till that far? > >> On Sat, 19 Sep 2020 at 16:28, Amine Ifri <ami...@gm...> wrote: >> >> Hi Daniel, >> >> I believe the error is due to an initial check on the term structure that fails because The last tenor on the curve is less than the maturity date of your instrument/ underlying swap. >> >> I would try setting the last tenor on the curve to be longer than the last point on your instrument. >> >> Let me know how it goes ! >> >> Amine Ifri >> >>>> On 19 Sep 2020, at 11:27, Daniel Lobo <dan...@gm...> wrote: >>> >>> Hi, >>> >>> I was replicating the examples as given in >>> https://github.com/lballabio/QuantLib/blob/master/Examples/BermudanSwaption/BermudanSwaption.cpp. >>> >>> However I changed the Term structure curve as below - >>> >>> Asin the file - >>> >>> Handle<YieldTermStructure> rhTermStructure( >>> ext::make_shared<FlatForward>( >>> settlementDate, Handle<Quote>(flatRate), >>> Actual365Fixed())); >>> >>> But I changed to - >>> >>> Handle<YieldTermStructure> rhTermStructure1( >>> ext::make_shared<FlatForward>( >>> settlementDate, Handle<Quote>(flatRate), >>> Actual365Fixed())); >>> >>> std::vector<QuantLib::Date> sr_dt; >>> std::vector<QuantLib::Real> sr_v; >>> sr_dt.push_back(Date(15, February, 2002)); >>> sr_dt.push_back(Date(15, February, 2003)); >>> sr_dt.push_back(Date(15, February, 2004)); >>> sr_v.push_back(0); >>> sr_v.push_back(1.5/100); >>> sr_v.push_back(2/100); >>> >>> Handle<YieldTermStructure> rhTermStructure( >>> ext::make_shared<ZeroCurve>(sr_dt, >>> sr_v, >>> Actual365Fixed() >>> )); >>> >>> With this change I failed to generate any value. I received error - >>> >>> 1st leg: time (2.01096) is past max curve time (2) >>> >>> Any insight why I get this error and how to resolve this would be >>> really helpful. >>> >>> Thanks for your time >>> >>> >>> _______________________________________________ >>> QuantLib-users mailing list >>> Qua...@li... >>> https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Daniel L. <dan...@gm...> - 2020-09-19 11:05:21
|
Hi,
Thanks for your suggestion. I changed to below and it worked.
std::vector<QuantLib::Date> sr_dt;
std::vector<QuantLib::Real> sr_v;
sr_dt.push_back(Date(15, February, 2002));
sr_dt.push_back(Date(15, February, 2003));
sr_dt.push_back(Date(15, February, 2054));
sr_v.push_back(0);
sr_v.push_back(1.5/100);
sr_v.push_back(2/100);
Handle<YieldTermStructure> rhTermStructure(
ext::make_shared<ZeroCurve>(sr_dt,
sr_v,
Actual365Fixed()
));
But my question is, shouldnt the curve automatically extrapolated
automatically to the last cash-flow date?
What I should do if I dont have spot-quoted till that far?
On Sat, 19 Sep 2020 at 16:28, Amine Ifri <ami...@gm...> wrote:
>
> Hi Daniel,
>
> I believe the error is due to an initial check on the term structure that fails because The last tenor on the curve is less than the maturity date of your instrument/ underlying swap.
>
> I would try setting the last tenor on the curve to be longer than the last point on your instrument.
>
> Let me know how it goes !
>
> Amine Ifri
>
> > On 19 Sep 2020, at 11:27, Daniel Lobo <dan...@gm...> wrote:
> >
> > Hi,
> >
> > I was replicating the examples as given in
> > https://github.com/lballabio/QuantLib/blob/master/Examples/BermudanSwaption/BermudanSwaption.cpp.
> >
> > However I changed the Term structure curve as below -
> >
> > Asin the file -
> >
> > Handle<YieldTermStructure> rhTermStructure(
> > ext::make_shared<FlatForward>(
> > settlementDate, Handle<Quote>(flatRate),
> > Actual365Fixed()));
> >
> > But I changed to -
> >
> > Handle<YieldTermStructure> rhTermStructure1(
> > ext::make_shared<FlatForward>(
> > settlementDate, Handle<Quote>(flatRate),
> > Actual365Fixed()));
> >
> > std::vector<QuantLib::Date> sr_dt;
> > std::vector<QuantLib::Real> sr_v;
> > sr_dt.push_back(Date(15, February, 2002));
> > sr_dt.push_back(Date(15, February, 2003));
> > sr_dt.push_back(Date(15, February, 2004));
> > sr_v.push_back(0);
> > sr_v.push_back(1.5/100);
> > sr_v.push_back(2/100);
> >
> > Handle<YieldTermStructure> rhTermStructure(
> > ext::make_shared<ZeroCurve>(sr_dt,
> > sr_v,
> > Actual365Fixed()
> > ));
> >
> > With this change I failed to generate any value. I received error -
> >
> > 1st leg: time (2.01096) is past max curve time (2)
> >
> > Any insight why I get this error and how to resolve this would be
> > really helpful.
> >
> > Thanks for your time
> >
> >
> > _______________________________________________
> > QuantLib-users mailing list
> > Qua...@li...
> > https://lists.sourceforge.net/lists/listinfo/quantlib-users
|