Recent Releases of quantlib

quantlib - 1.39

Downloads:

Changes for QuantLib 1.39:

QuantLib 1.39 includes 28 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/37?closed=1.

Portability

  • Bug in recent Visual C++ versions: a few recent versions of the Visual C++ 2022 compiler (from 17.14.2 to 17.14.8) had a known bug that, unfortunately, affected QuantLib heavily and made it basically unusable. A fix was released in version 17.14.9; if you’re compiling QuantLib on Windows, make sure you're using at least that version (or, if you can't upgrade, use the Visual C++ 2019 toolset; you can do that from VC++ 2022, as well).
  • Change of default: as already announced, in this release we're switching the default for ext::any and ext::optional from the Boost implementation to the standard one. Using boost::any and boost::optional is still possible for the time being but deprecated.

Dates, calendars and day-count conventions

  • Fixed a corner case of Calendar::advance when using EOM and the unadjusted business-day convention; thanks to Eugene Toder (@eltoder).
  • Fixed an error when asking for the serial number of a null date with intraday support enabled (@lballabio); thanks to @UnitedMarsupial for the heads-up.
  • Added the SHIR fixing calendar (@lballabio).
  • Fixed the order of operations in the 30/360 USA day-count convention; thanks to Eugene Toder (@eltoder).

Indexes

  • Added the SARON index; thanks to Paolo D'Elia (@paolodelia99).
  • Added a CustomIborIndex class that allows to create an IBOR-like index with custom calendars for value and maturity dates calculations; thanks to Eugene Toder (@eltoder).

Instruments and pricing engines

  • The MakeOIS class now knows the default number of settlement days for a few currencies; thanks to Zak Kraehling (@7astro7).

Interest rates

  • The FxSwapRateHelper class can now be built specifying fixed dates instead of a tenor; thanks to Eugene Toder (@eltoder).
  • A number of helpers can now take quoted rates either as numbers or Handle<Quote> via the use of std::variant; this reduces the number of overloaded constructors and in some cases allows the use of keyword arguments when exported to Python. Thanks to Paolo D'Elia (@paolodelia99) and Eugene Toder (@eltoder).
  • The OISRateHelper class can now specify a calendar for the overnight leg; thanks to Eugene Toder (@eltoder).
  • The ZeroCouponInflationSwapHelper class now doesn't need to be passed a nominal curve, which wouldn't affect the results anyway (@lballabio).

Volatility

  • Optionlet strippers can now use overnight indexes; thanks to Paolo D'Elia (@paolodelia99).
  • Added calculation of better guesses for SABR calibration as detailed in the Le Floc'h and Kennedy paper (@lballabio).

Deprecated features

  • Removed features deprecated in version 1.34:
    • the overloads of Bond::yield, BondFunctions::atmRate, BondFunctions::yield and BondFunctions::zSpread taking a price as a Real instead of a Bond::Price instance;
    • the Swaption::underlyingSwap and SwaptionHelper::underlyingSwap methods;
    • the constructors of InflationTermStructure, ZeroInflationTermStructure, YoYInflationTermStructure, InterpolatedZeroInflationCurve, InterpolatedYoYInflationCurve, PiecewiseZeroInflationCurve and PiecewiseYoYInflationCurve taking an observation lag;
    • the overload of InflationTermStructure::setSeasonality taking no arguments;
    • the InflationTermStructure::setBaseRate method;
    • the fixedRateBond method and fixedRateBond_ data member of the FixedRateBondHelper class, and the cpiBond method and cpiBond_ data member of the CPIBondHelper class.
  • Deprecated the observationLag and hasExplicitBaseDate methods and the observationLag_ data member of the InflationTermStructure class; inflation term structures always have an explicit base date now.
  • Deprecated the usage of boost::any and boost::optional; their standard counterparts are used by default now.
  • Deprecated the constructor of ZeroCouponInflationSwapHelper taking a nominal curve; use the other constructor instead.

Thanks go also to Imrane Amri (@raneamri), Ralf Konrad Eckel (@ralfkonrad), Joan Carlos Naftanaila (@MiDDiz), Eugene Toder (@eltoder), Paolo D'Elia (@paolodelia99) and Holger Rother (@hrother) for miscellaneous smaller fixes, improvements or reports.

New Contributors

  • @MiDDiz made their first contribution in https://github.com/lballabio/QuantLib/pull/2219
  • @7astro7 made their first contribution in https://github.com/lballabio/QuantLib/pull/2237

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.38...v1.39

- C++
Published by lballabio 7 months ago

quantlib - 1.39 release candidate

Downloads

QuantLib-1.39-rc.tar.gz QuantLib-1.39-rc.zip QuantLib-SWIG-1.39-rc.tar.gz QuantLib-SWIG-1.39-rc.zip

This is a release candidate for QuantLib 1.39. If you have time, please try it out. In case of problems with this prerelease, please report them to the QuantLib mailing list or open an issue here.

- C++
Published by lballabio 8 months ago

quantlib - 1.38

Downloads:

Changes for QuantLib 1.38:

QuantLib 1.38 includes 29 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/36?closed=1.

Portability

  • Future change of default: as already announced, in the next release we're going to switch the default for ext::any and ext::optional from the Boost implementation to the standard one. Using boost::any and boost::optional is still possible for the time being but deprecated.
  • Possible future breaking change: in the next release, the SimpleQuote class might be made final. If you're inheriting from it, drop us a line.

Dates and calendars

  • The Schedule class now honors the passed business day convention when end-of-month is enabled (@lballabio). Previously, enabling end-of-month caused it to always use the Modified Following convention.
  • Added Chinese holidays for 2025; thanks to Cheng Li (@wegamekinglc).
  • Added Thailand holidays for 2025; thanks to Paolo D'Elia (@paolodelia99).
  • Added Hong Kong holidays for 2025; thanks to Ka Wai Lee (@kawailee).

Indexes

  • Year-or-year inflation indexes can (and should) now be built without an interpolated flag (@lballabio). As for zero inflation indexes, the interpolation was moved into the coupons using the indexes.
  • Fixed obsolete conventions for the (now discountinued) EUR LIBOR index; thanks to Eugene Toder (@eltoder).

Instruments and pricing engines

  • Added implementation of partial-time barrier put options; thanks to Paolo D'Elia (@paolodelia99).
  • The OvernightIndexFuture class would not receive notifications when the convexity quote or the evaluation date changed; this is now fixed. Thanks to Eugene Toder (@eltoder).
  • The experimental BlackCallableFixedRateBondEngine wouldn't take discount correctly into account when evaluation the embedded option; this is now fixed. Thanks to @RobertS548 for the heads-up.
  • Moved a few instruments and engines from the experimental folder to the core library (@lballabio):
    • HolderExtensibleOption and AnalyticHolderExtensibleOptionEngine;
    • WriterExtensibleOption and AnalyticWriterExtensibleOptionEngine;
    • PartialTimeBarrierOption and AnalyticPartialTimeBarrierOptionEngine;
    • TwoAssetBarrierOption and AnalyticTwoAssetBarrierEngine;
    • TwoAssetCorrelationOption and `AnalyticTwoAssetCorrelationEngine;
    • ContinuousArithmeticAsianLevyEngine;
    • AnalyticPDFHestonEngine.

Term structures

  • The DepositRateHelper and FraRateHelper classes can now be built specifying fixed dates instead of a tenor; thanks to Eugene Toder (@eltoder).
  • The cross-currency basis-swap rate helpers can now be passed an overnight index and a corresponding payment frequency; it is also possible to pass a payment lag. Thanks to @kp9991-git.
  • The additional penalty functions passed to the GlobalBootstrap class can now take the curve nodes as arguments; thanks to Eugene Toder (@eltoder). This makes it possible, for example, to penalize gradients to make the curve smoother. It is also possible to specify additional variables to be optimized, e.g., futures convexity adjustments.
  • Added a piecewise forward-spreaded term structure; thanks to Paolo D'Elia (@paolodelia99).

Deprecated features

  • Removed features deprecated in version 1.33:
    • the constructors of Currency and Currency::Data taking a format string, the format method of the Currency class and the formatString data member of Currency::Data.
  • Deprecated the constructors of year-on-year inflation indexes taking an interpolated argument; use the other constructors instead.
  • Deprecated the header files in ql/experimental/exoticoptions for some classes moved to the core library (see above); use the corresponding new headers in ql/instruments and ql/pricingengines instead.

Thanks go also to Eugene Toder (@eltoder), Konstantin Novitsky (@novitk), Tomas Kalibera (@kalibera) and @raneamri for miscellaneous smaller fixes, improvements or reports.

New Contributors

  • @paolodelia99 made their first contribution in https://github.com/lballabio/QuantLib/pull/2142
  • @kp9991-git made their first contribution in https://github.com/lballabio/QuantLib/pull/2168
  • @kalibera made their first contribution in https://github.com/lballabio/QuantLib/pull/2179
  • @kawailee made their first contribution in https://github.com/lballabio/QuantLib/pull/2196

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.37...v1.38

- C++
Published by lballabio 10 months ago

quantlib - 1.37

Downloads:

Changes for QuantLib 1.37:

QuantLib 1.37 includes 27 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/35?closed=1.

Portability

  • Future change of default: as already announced, in the next release we're going to switch the default for ext::any and ext::optional from the Boost implementation to the standard one.

Dates and calendars

  • Added closure for President Carter's funeral to the NYSE calendar; thanks to Dirk Eddelbuettel (@eddelbuettel).
  • Added distinct Wellington and Auckland variants for New Zealand calendar (@lballabio).

Indexes

  • Improved the performance of the addFixing and addFixings method in the Index class; thanks to Peter Caspers (@pcaspers).
  • Added the KOFR index; thanks to Jongbong An (@jongbongan).

Instruments and pricing engines

  • Added Choi pricing engine for Asian options; thanks to Klaus Spanderen (@klausspanderen).
  • Passing a risk-free overnight index to an asset swap now implies using OIS-like coupons (@lballabio).
  • Added Bjerksund-Stensland, Operator-Splitting, Deng-Li-Zhou, Choi and n-dim PDE engines for spread options; thanks to Klaus Spanderen (@klausspanderen).
  • Deng-Li-Zhou, Choi and n-dim PDE engines for basket options; thanks to Klaus Spanderen (@klausspanderen).

Term structures

  • Possibly breaking: better upper and lower bounds for global bootstrap; thanks to Eugene Toder (@eltoder). If you created your own bootstrap traits, you'll need to add transformDirect and transformInverse methods for them to work with the GlobalBootstrap class.
  • Fitted bond curves can now be passed precomputed parameters without the need for bond helpers (@lballabio).
  • Use correct guess in SABR swaption vol cube (@lballabio).
  • OIS rate helpers can now be passed a date-generation rule; thanks to Sotirios Papathanasopoulos (@sophistis42).
  • Swap rate helpers can now be passed explicit start and end dates; thanks to Eugene Toder (@eltoder).
  • OIS rate helpers can now be passed explicit start and end dates, making a distinct DatedOISRateHelper class unnecessary; thanks to Eugene Toder (@eltoder).

Cash flows

  • Added new MultipleResetsCoupon and MultipleResetsLeg classes to manage coupons with multiple resets (@lballabio). They fix and replace SubPeriodsCoupon and SubPeriodsLeg.

Deprecated features

  • Removed features deprecated in version 1.32:
    • the FixedRateBondForward class;
    • the SampledCurve and SampledCurveSet classes;
    • the StepConditionSet and BoundaryConditionSet classes;
    • the ParallelEvolver and ParallelEvolverTraits classes;
    • the FDVanillaEngine and FDMultiPeriodEngine classes;
    • the BSMTermOperator, StandardFiniteDifferenceModel, StandardSystemFiniteDifferenceModel and StandardStepCondition typedefs;
    • the QL_NULL_FUNCTION macro;
    • the overloads of DigitalCmsLeg::withReplication , DigitalCmsSpreadLeg::withReplication and DigitalIborLeg::withReplication taking no arguments;
    • the empty headers analyticamericanmargrabeengine.hpp, analyticcomplexchooserengine.hpp, analyticcomplexchooserengine.hpp, analyticcompoundoptionengine.hpp, analyticeuropeanmargrabeengine.hpp, analyticsimplechooserengine.hpp, complexchooseroption.hpp, compoundoption.hpp, margrabeoption.hpp and simplechooseroption.hpp in the ql/experimental/exoticoptions folder;
    • the empty header ql/experimental/termstructures/multicurvesensitivities.hpp;
    • the empty headers pdeshortrate.hpp and shoutcondition.hpp in the ql/methods/finitedifferences folder;
    • the empty header ql/models/marketmodels/duffsdeviceinnerproduct.hpp;
    • the empty headers fdconditions.hpp, fddividendengine.hpp and fdstepconditionengine.hpp in the ql/pricingengines/vanilla folder.
  • Deprecated the SubPeriodsCoupon, SubPeriodsPricer, AveragingRatePricer and CompoundingRatePricer classes; renamed to MultipleResetsCoupon, MultipleResetsPricer, AveragingMultipleResetsPricer and CompoundingMultipleResetsPricer, respectively.
  • Deprecated the SubPeriodsLeg class; use MultipleResetsLeg instead.
  • Deprecated the MultipleResetsCoupon constructor without a reset schedule; use the other constructor.
  • Deprecated the calendar, price, addQuote, addQuotes, clearQuotes, isValidQuoteDate and quotes methods in the CommodityIndex class; use fixingCalendar, fixing, addFixing, addFixings, clearFixings, isValidFixingDate and timeSeries instead.
  • Deprecated the experimental SpreadOption and KirkSpreadOptionEngine classes; use BasketOption and KirkEngine instead.
  • Deprecated the TransformedGrid and LogGrid classes and the CenteredGrid, BoundedGrid and BoundedLogGrid functions; use the new FD framework instead.
  • Deprecated the PdeOperator and BSMOperator classes; use the new FD framework instead.
  • Deprecated the PdeSecondOrderParabolic, PdeConstantCoeff, PdeBSM and GenericTimeSetter classes; use the new FD framework instead.
  • Deprecated the hasHistory, getHistory, clearHistory, hasHistoricalFixing and setHistory in the IndexManager class; use Index::hasHistoricalFixing, Index::timeSeries, Index::clearFixings, Index::hasHistoricalFixing and Index::addFixings instead.
  • Deprecated the notifier method in the IndexManager class; register with the relevant index instead.
  • Deprecated one of the AssetSwap constructors; use the other overload.
  • Deprecated the fcn and jacFcn methods in the LevenbergMarquardt class; they are for internal use only.
  • Deprecated the indexIsInterpolated parameter in YoY inflation curve constructors; use another overload. Fixings will be interpolated by coupons instead, so curves and indexes will only be asked for fixing at the start of a month.
  • Deprecated the indexIsInterpolated method and the indexIsInterpolated_ data member in the YoYInflationTermStructure class.
  • Deprecated the DatedOISRateHelper class; use OISRateHelper instead.

Thanks go also to Eugene Toder (@eltoder), Ben Watson (@sonben) and the XAD team (@auto-differentiation-dev) for miscellaneous smaller fixes, improvements or reports.

New Contributors

  • @sophistis42 made their first contribution in https://github.com/lballabio/QuantLib/pull/2107

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.36...v1.37

- C++
Published by lballabio about 1 year ago

quantlib - 1.36

Downloads:

Changes for QuantLib 1.36:

QuantLib 1.36 includes 34 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/34?closed=1.

Portability

  • New minimum C++ standard: starting from this release, a compiler supporting C++17 is required. Passing --enable-std-classes to configure now causes std::any and std::optional to be used.
  • End of support: related to the above, and as announced since release 1.32, this release drops support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4. Also, given the testing environments available on GitHub actions, clang 5 and 6 are no longer available to us for testing, and the same holds for g++ 7. Therefore, it is suggested to upgrade to a newer version if possible.
  • End of support: this release also removes the configure switch that allowed to use boost::tuple, boost::function and boost::bind instead of their std counterparts; the std classes were already the default since release 1.32. The corresponding classes in the ext namespace are now deprecated.
  • Future change of default: in a couple of releases, we're going to switch the default for ext::any and ext::optional from the Boost implementation to the standard one.

Dates and calendars

  • Added startOfMonth and isStartOfMonth methods to both Date and Calendar; thanks to Francois Botha (@igitur).
  • Added specialized Warsaw Stock Exchange (WSE) calendar to Poland; thanks to Marcin Bogusz (@marcinfair).
  • Added a new one-off holiday to South Korean calendar; thanks to Jongbong An (@jongbongan).

Cash flows

  • MadeOvernightIndexedCouponPricer public and renamed to CompoundingOvernightIndexedCouponPricer, and moved ArithmeticAveragedOvernightIndexedCouponPricer from experimental to core library; thanks to Ralf Konrad Eckel (@ralfkonrad).

Indexes

  • Possibly breaking: inherited the Index class from Observer and added a virtual pastFixing method. If you inherited a class from both Index and Observer, change your code to avoid inheriting twice from Observer. Thanks to Ralf Konrad Eckel (@ralfkonrad).
  • Added currency information to EquityIndex; thanks to Ralf Konrad Eckel (@ralfkonrad).

Inflation

  • Inflation indexes are now better at deciding when to forecast (@lballabio); also added a needsForecast method that makes the information available.
  • Added CPI::laggedYoYRate; also, YoYInflationCoupon, yoyInflationLeg, CappedFlooredYoYInflationCoupon, YearOnYearInflationSwap, MakeYoYInflationCapFloor, YearOnYearInflationSwapHelper, YoYOptionletHelper and the experimental YoYCapFloorTermPriceSurface and InterpolatedYoYCapFloorTermPriceSurface can now take an explicit CPI::InterpolationType parameter instead of relying on the index being defined as interpolated or not (@lballabio). This is a first step in removing interpolation from YoYInflationIndex and moving it into the coupons where it belongs.
  • Added method to YoY inflation index returning the date of the last available fixing (@lballabio).

Term structures

  • Allow passing a pricer to the constructor of the OISRateHelper and DatedOISRateHelper classes (@lballabio); this makes it possible to use arithmetic averaging of overnight rates.
  • Allow custom constraint in non-linear fitting methods; thanks to Kai Lin (@klin333).
  • Allow creating a swap helper with frequency "Once" (@lballabio).
  • The GlobalBootstrap constructor can now take an optional optimizer and end criteria, allowing for better configuration; thanks to Eugene Toder (@eltoder).

Volatility

  • Added exact Bachelier implied-vol formula from Jäckel's paper; thanks to Peter Caspers (@pcaspers).

Deprecated features

  • Removed features deprecated in version 1.31:
    • the BlackVanillaOptionPricer typedef;
    • the constructors of CPICoupon taking a spread parameter, its spread method, and its protected spread_ data member;
    • the withSpreads method of CPILeg;
    • the protected adjustedFixing method and spread_ data member of CPICouponPricer;
    • the YYAUCPIr, YYEUHICPr, YYFRHICPr, YYUKRPIr, YYUSCPIr and YYZACPIr indexes and the experimental YYGenericCPIr class;
    • the constructor of YoYInflationIndex taking a ratio parameter;
    • a couple of constructors of ForwardRateAgreement;
    • the empty files ql/math/curve.hpp, ql/math/lexicographicalview.hpp, ql/termstructures/yield/drifttermstructure.hpp and ql/patterns/composite.hpp;
    • the const_iterator and const_value_iterator typedefs in the Garch11 class;
    • the const_time_iterator, const_value_iterator, const_reverse_time_iterator and const_reverse_value_iterator typedefs and the cbegin_values, cend_values, crbegin_values, crend_values, cbegin_time, cend_time, crbegin_time and crend_time methods of the TimeSeries class;
    • the base, increment, decrement, advance and distance_to method of the step_iterator class.
  • Deprecated ext::function, ext::bind, ext::ref, ext::cref, ext::placeholders, ext::tuple, ext::make_tuple, ext::get and ext::tie; use the corresponding std:: classes and functions instead.
  • Deprecated the ArithmeticAverageOIS, MakeArithmeticAverageOIS and ArithmeticOISRateHelper classes; use OvernightIndexedSwap, MakeOIS and OISRateHelper instead.
  • Deprecated the YoYInflationCoupon, yoyInflationLeg, CappedFlooredYoYInflationCoupon, YearOnYearInflationSwap, MakeYoYInflationCapFloor, YearOnYearInflationSwapHelper, YoYOptionletHelper, YoYCapFloorTermPriceSurface and InterpolatedYoYCapFloorTermPriceSurface constructors that don't take an explicit CPI interpolation type.
  • Deprecated the getInfo method of LevenbergMarquardt; inspect the result of minimize instead.
  • Deprecated the ql/experimental/averageois/averageoiscouponpricer.hpp file; include ql/cashflows/overnightindexedcouponpricer.hpp instead.
  • Deprecated the somewhat out-of-scope and experimental CreditRiskPlus, SensitivityAnalysis, aggregateNPV, parallelAnalysis and bucketAnalysis.

Thanks go also to Jonathan Sweemer (@sweemer), Eugene Toder (@eltoder), Ralf Konrad Eckel (@ralfkonrad), Tony Wang (@twan3617) and the XAD team (@auto-differentiation-dev) for miscellaneous smaller fixes, improvements or reports.

New Contributors

  • @raneamri made their first contribution in https://github.com/lballabio/QuantLib/pull/2056
  • @twan3617 made their first contribution in https://github.com/lballabio/QuantLib/pull/2057
  • @klin333 made their first contribution in https://github.com/lballabio/QuantLib/pull/2059
  • @marcinfair made their first contribution in https://github.com/lballabio/QuantLib/pull/2063
  • @jongbongan made their first contribution in https://github.com/lballabio/QuantLib/pull/2086

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.35...v1.36

- C++
Published by lballabio over 1 year ago

quantlib - 1.35

Downloads:

Changes for QuantLib 1.35:

QuantLib 1.35 includes 32 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/33?closed=1.

Portability

  • Future end of support: as announced since release 1.32, this release is the last to support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4; support for those compilers will be dropped in next release, 1.36, about three months from now. From that point onwards, this will allows us to enable the use of C++17 in the code base. Also, given the testing environments available on GitHub actions, clang 5 and 6 are no longer available to us for testing, and the same holds for g++ 7. Therefore, it is suggested to upgrade to a newer version if possible.
  • Future end of support: at the same time as the above, we'll also remove the configure switch that allows to use boost::tuple, boost::function and boost::bind instead of their std counterparts; the std classes are already the default since release 1.32.
  • The config.hpp generated by cmake now behaves like the one generated by autotools and provides values for the defines so that they can be used in static_assert (@lballabio). Thanks to Tom Anderson (@tomwhoiscontrary) for the heads-up.

Calendars

  • Some fixes for the Chilean calendar; thanks to Eugene Toder (@eltoder).
  • Better NFP/SIFMA rule for Good Friday in U.S. government bond calendar; thanks to Eugene Toder (@eltoder).
  • Updated Indian NSE holidays for 2024; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Some fixes for the Mexican calendar; thanks to Lucas Dias (@lukedays).

Cash flows

  • Added lookback days, lockout days and observation shift to overnight-indexed coupons; thanks to Marcin Rybacki (@marcin-rybacki). The same parameters were propagated to overnight-indexed swaps and to the corresponding helpers.
  • Added the hasFixed method to IBOR coupons that detects whether they have fixed or still need to be forecast; thanks to Tom Anderson (@tomwhoiscontrary).

Instruments

  • Overnight index futures didn't manage a start date falling on a holiday; this is now fixed (@lballabio). Thanks to GitHub user @JustCallMeDavid for the heads-up.
  • Callable bonds didn't account for nominal when calculating OAS; this is now fixed. Thanks to Hristo Raykov (@HristoRaykov).
  • For European swaption, sometimes the price is quoted as a forward price to be paid at exercise time. Such a quoted price can now be used for implied-volatility calculation. The forward price is also returned by the Black and Bachelier swaption engines as an additional result (@lballabio).

Random numbers

  • Added the fast ZigguratGaussianRng generator; thanks to Ralf Konrad Eckel (@ralfkonrad).

Term structures

  • Fix treatment of custom end date in FuturesRateHelper (@lballabio).
  • Add possibility to reset guess in fitted bond curves (@lballabio). Thanks to GitHub user @klin333 for the suggestion.

Utilities

  • Overloaded Handle and RelinkableHandle constructors on lvalue and rvalue references for performance; thanks to Jonathan Sweemer (@sweemer).

Tools

  • Better benchmark utility; thanks to Jacques du Toit (@amd-jadutoit).

Examples

  • Reworked bond example (@lballabio).

Deprecated features

  • Removed features deprecated in version 1.30:
    • the DividendVanillaOption and DividendBarrierOption classes;
    • the constructor of AnalyticDividendEuropeanEngine taking only a process and no dividends;
    • the SwaptionVolCube1, SwaptionVolCube1a, SwaptionVolCube1x and SwaptionVolCube2 typedefs and the empty headers ql/experimental/volatility/swaptionvolcube1.hpp, ql/experimental/volatility/swaptionvolcube1a.hpp and ql/experimental/volatility/swaptionvolcube2.hpp;
    • the setCommon method of CappedFlooredYoYInflationCoupon.
  • Deprecated the constructor of DatedOISRateHelper taking a forward start; use the other overload instead.
  • Deprecated the specialized Bibor9M, Euribor2W, Euribor3W, Euribor2M, Euribor4M, Euribor5M, Euribor7M, Euribor8M, Euribor9M, Euribor10M, Euribor11M, Euribor365_SW, Euribor365_2W, Euribor365_3W, Euribor365_1M, Euribor365_2M, Euribor365_3M, Euribor365_4M, Euribor365_5M, Euribor365_6M, Euribor365_7M, Euribor365_8M, Euribor365_9M, Euribor365_10M, Euribor365_11M, Euribor365_1Y, EURLiborSW, EURLibor2W, EURLibor2M, EURLibor4M, EURLibor5M, EURLibor7M, EURLibor8M, EURLibor9M, EURLibor10M, EURLibor11M; if needed, use the corresponding generic class and pass the tenor (for instance, Euribor(4 * Months)).
  • Renamed EuriborSW to Euribor1W and deprecated the old name.
  • Deprecated the constructor of RelinkableHandle taking a raw pointer.

Thanks go also to Dmitri Goloubentsev (@DmitriGoloubentsev), Eleanor Green (@eleanorTurintech), Tom Anderson (@tomwhoiscontrary), Peter Caspers (@pcaspers), Jonghee Lee (@nistick21), Ralf Konrad Eckel (@ralfkonrad) and the XAD team (@auto-differentiation-dev) for miscellaneous fixes, improvements or reports.

New Contributors

  • @DmitriGoloubentsev made their first contribution in https://github.com/lballabio/QuantLib/pull/1957
  • @eleanorTurintech made their first contribution in https://github.com/lballabio/QuantLib/pull/1965
  • @amd-jadutoit made their first contribution in https://github.com/lballabio/QuantLib/pull/1962
  • @lukedays made their first contribution in https://github.com/lballabio/QuantLib/pull/2018

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.34...v1.35

- C++
Published by lballabio over 1 year ago

quantlib - 1.34

Downloads:

Changes for QuantLib 1.34:

QuantLib 1.34 includes 35 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/32?closed=1.

Portability

  • Future end of support: as announced in release 1.32, we're targeting next release (1.35) as the last to support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4; support for those compilers will be dropped in release 1.36, about six months from now. From that point onwards, this will allows us to enable the use of C++17 in the code base. Also, given the testing environments available on GitHub actions, clang 5 is already no longer available to us for testing, and in a while the same will hold for clang 6 and g++ 7. Therefore, it is suggested to upgrade to a newer version if possible.
  • Future end of support: at the same time as the above, we'll also remove the configure switch that allows to use boost::tuple, boost::function and boost::bind instead of their std counterparts; the std classes are already the default since release 1.32.
  • Generate and install pkg-config files in CMake builds; thanks to GitHub user @jez6.

Dates and calendars

  • Prevent Calendar::advance from returning the business end of month (instead of the calendar end) when endOfMonth is true and convention is Unadjusted; thanks to GitHub user @DeimosXing.
  • Add good Friday holiday for SOFR fixing; thanks to GitHub user @PaulXiCao.
  • Properly restrict São Paulo city holiday to years before 2022; thanks to Marco Bruno Ferreira Vasconcellos (@marcobfv).
  • Update holidays for 2023 and 2024 in calendars for India, Thailand, Singapore and South Africa; thanks to Fredrik Gerdin Börjesson (@gbfredrik).

Cash flows

  • Fixed a couple of cases in which notifications were not forwarded properly; thanks to GitHub user @djkrystul for the heads-up.
  • Fixed past payment dates and added support for OIS in LinearTsrPricer; thanks to Peter Caspers (@pcaspers).

Instruments

  • Swaptions can now take an OIS as underlying; thanks to Guillaume Horel (@thrasibule) and Peter Caspers (@pcaspers). So far, only BlackSwaptionEngine manages OIS explicitly; other engines might work and return approximated values.
  • More methods in MakeOIS and MakeVanillaSwap; thanks to Eugene Toder (@eltoder).
  • More methods in the BondFunctions class now support either clean or dirty prices; thanks to Francois Botha (@igitur).
  • The basisPointValue and yieldValueBasisPoint methods in BondFunctions didn't always manage the settlement date correctly; this is now fixed (thanks to GitHub user @jez6).
  • Add Custom to Futures::Type enumeration to allow passing custom dates to futures; thanks to Eugene Toder (@eltoder).

Term structures

  • Inflation curves can now be built passing an explicit base date (corresponding to the last published fixing) instead of an observation lag (@lballabio).
  • Fixed calculation of year fraction under Actual/365 Canadian convention in FuturesRateHelper; thanks to GitHub user @PaulXiCao.
  • Fixed settlement date calculation in cross-currency basis-swap rate helpers in some cases; thanks to Marcin Rybacki (@marcin-rybacki) for the fix and to Aleksis Ali Raza for the heads-up.

Math

  • Handle non-equidistant grids and arbitrary dimensions in Laplace interpolation; thanks to Peter Caspers (@pcaspers).

Deprecated features

  • Removed features deprecated in version 1.29:
    • The argument_type, first_argument_type, second_argument_type and result_type typedefs in several classes;
    • The overloads of zero-rate inflation index constructors taking an interpolated argument;
    • The interpolated method and the protected interpolated_ data member in InflationIndex;
    • The overload of CashFlows::npvbps taking the result by reference;
    • The protected rateCurve_ method in InflationCouponPricer;
    • The ThreadKey typedef;
    • The empty header ql/experimental/credit/riskybond.hpp.
  • Deprecated the constructors of InflationTermStructure, ZeroInflationTermStructure, YoYInflationTermStructure, InterpolatedZeroInflationCurve, InterpolatedYoYInflationCurve, PiecewiseZeroInflationCurve and PiecewiseYoYInflationCurve taking an observation lag; use the overloads taking an explicit base date instead.
  • Deprecated the Bond::yield, BondFunctions::atmRate, BondFunctions::yield and BondFunctions::zSpread overloads taking a clean price as a number; use the overloads taking a Bond::Price instead.
  • Deprecated the InflationTermStructure::setSeasonality overload taking no arguments; use the overload taking a pointer and pass an empty one to remove seasonality.
  • Deprecated the InflationTermStructure::setBaseRate method; set baseRate_ directly if needed.
  • Deprecated the Swaption::underlyingSwap and SwaptionHelper::underlyingSwap methods; use underlying instead.
  • Deprecated the broken FixedRateBondHelper::fixedRateBond and CPIBondHelper::cpiBond methods and the corresponding fixedRateBond_ and cpiBond_ data members.

Thanks go also to Isuru Fernando (@isuruf), Viktor Zhou (@yyuuhhjjnnmm), Stephen Dacek (@sdacek), Yi Jiang (@yjian012), Jonathan Sweemer (@sweemer), Eugene Toder (@eltoder), the XAD team (@auto-differentiation-dev) and GitHub user @PaulXiCao and @klin333 for miscellaneous fixes, improvements or reports.

New Contributors

  • @isuruf made their first contribution in https://github.com/lballabio/QuantLib/pull/1893
  • @yyuuhhjjnnmm made their first contribution in https://github.com/lballabio/QuantLib/pull/1895
  • @jez6 made their first contribution in https://github.com/lballabio/QuantLib/pull/1900
  • @marcobfv made their first contribution in https://github.com/lballabio/QuantLib/pull/1897
  • @sdacek made their first contribution in https://github.com/lballabio/QuantLib/pull/1906
  • @DeimosXing made their first contribution in https://github.com/lballabio/QuantLib/pull/1917

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.33...v1.34

- C++
Published by lballabio almost 2 years ago

quantlib - 1.33

Downloads:

Changes for QuantLib 1.33:

QuantLib 1.33 includes 43 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/31?closed=1.

Portability

  • Future end of support: as announced in release 1.32, we're targeting the future release 1.35 as the last to support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4; support for those compilers will be dropped in release 1.36, about nine months from now. From that point onwards, this will allows us to enable the use of C++17 in the code base.
  • Future end of support: at the same time as the above, we'll also remove the configure switch that allows to use boost::tuple, boost::function and boost::bind instead of their std counterparts; the std classes are already the default since release 1.32.
  • Added CMake presets for Apple; thanks to Christian Köhnenkamp (@kohnech).

Dates and calendars

  • Added New Year's Eve as a holiday to the Chilean calendar; thanks to GitHub user @MoixaStrikes.
  • Added Black Awareness Day as a holiday to the Brazilian calendar starting from 2024; thanks to GitHub user @PaulXiCao.
  • Added Inauguration Day as a holiday to the Mexican calendar starting from 2024; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added Chinese holidays for 2024; thanks to Cheng Li (@wegamekinglc).
  • Updated list of known ECB dates; thanks to GitHub user @PaulXiCao.
  • Added Thailandese and Taiwanese holidays up to 2024; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added a one-time holiday to the South African calendar; thanks to Francois Botha (@igitur).

Models

  • Added support for angled contour shift integrals to Heston model; thanks to Klaus Spanderen (@klausspanderen).

Instruments

  • Allow different calendars and frequencies for different legs in MakeOIS and OISRateHelper; thanks to Eugene Toder (@eltoder).
  • Enabled negative payment lag in swap legs; thanks to GitHub user @Stoozy.

Random numbers

  • Added Burley 2020 scrambled Sobol sequence generator; thanks to Peter Caspers (@pcaspers).

Tests

  • Use automated registration of unit tests; thanks to Siddharth Mehrotra (@Sidsky).
  • Added a few fuzzing tests; thanks to Nathaniel Brough (@silvergasp).
  • Improved test coverage for a few classes; thanks to GitHub user @PaulXiCao.

Deprecated features

  • Removed features deprecated in version 1.28:
    • The overload of CallableBond::impliedVolatility taking an NPV as target.
    • The constructor of AmortizingFixedRateBond taking a sinking frequency.
    • The constructor of AmortizingFixedRateBond taking a vector of InterestRate instances.
    • The constructor of FixedRateBond taking start date, maturity date etc. instead of a schedule.
    • The constructor of FixedRateBond taking a vector of InterestRate instances.
    • The constructor of FloatingRateBond taking start date, maturity date etc. instead of a schedule.
    • The constructor of CPICapFloor taking a handle to an interest-rate index.
    • The CPICapFloor::inflationIndex method.
    • The infIndex data member of the CPICapFloor::arguments class.
    • A redundant constructor of SabrSmileSection.
    • The empty headers ql/experimental/amortizingbonds/amortizingcmsratebond.hpp, ql/experimental/amortizingbonds/amortizingfixedratebond.hpp and ql/experimental/amortizingbonds/amortizingfloatingratebond.hpp.
  • Deprecated the constructor of Currency and Currency::Data taking a format string, and the Currency::format method.

Thanks go also to Yi Jiang (@yjian012), Hoang Giap Vu (@hgv79116), Jonathan Sweemer (@sweemer) and the XAD team (@auto-differentiation-dev) for smaller fixes and improvements.

New Contributors

  • @Stoozy made their first contribution in https://github.com/lballabio/QuantLib/pull/1818
  • @silvergasp made their first contribution in https://github.com/lballabio/QuantLib/pull/1807
  • @PaulXiCao made their first contribution in https://github.com/lballabio/QuantLib/pull/1825
  • @Sidsky made their first contribution in https://github.com/lballabio/QuantLib/pull/1811
  • @hgv79116 made their first contribution in https://github.com/lballabio/QuantLib/pull/1858
  • @yjian012 made their first contribution in https://github.com/lballabio/QuantLib/pull/1876
  • @MoixaStrikes made their first contribution in https://github.com/lballabio/QuantLib/pull/1846

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.32...v1.33

- C++
Published by lballabio about 2 years ago

quantlib - 1.33 release candidate

Downloads

QuantLib-1.33-rc.tar.gz QuantLib-1.33-rc.zip QuantLib-SWIG-1.33-rc.tar.gz QuantLib-SWIG-1.33-rc.zip

Please check this release and report any problems to the QuantLib mailing list.

- C++
Published by lballabio about 2 years ago

quantlib - 1.32

Downloads:

Changes for QuantLib 1.32:

QuantLib 1.32 includes 34 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/29?closed=1.

Portability

  • Possibly breaking change: the protected evaluationDate_ data member of the SwaptionVolatilityDiscrete class was renamed to cachedReferenceDate_.
  • Future end of support: we're targeting the future release 1.35 as the last to support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4; support for those compilers will be dropped in release 1.36, about one year from now. From that point onwards, this will allows us to enable the use of C++17 in the code base.
  • Future end of support: at the same time as the above, we'll also remove the configure switch that allows to use boost::tuple, boost::function and boost::bind instead of their std counterparts; starting from this release, the std classes are already the default.
  • Reorganized the CMake presets; thanks to the XAD team (@auto-differentiation-dev).

Cash flows

  • All cash flows are now lazy; thanks to Peter Caspers (@pcaspers).

Instruments

  • Overnight-indexed swaps can now have different schedules and nominals on the two legs; thanks to Tom Anderson (@tomwhoiscontrary).
  • Margrabe options, compound options and chooser options were moved from experimental to core (@lballabio).
  • Introduced common base class FixedVsFloatingSwap for vanilla swap and overnight-indexed swaps; this will be used in the future to help a few existing swap engines support OIS (@lballabio).
  • Added optional redemptions argument to amortizing bond constructors. This allows them to be used for pools of loans where a certain proportion of the underlying loans are subject to defaults and losses. Thanks to Gyan Sinha (@gyansinha).
  • It is now possible to manually prune the notification tree for swaps and bonds if one knows that the cashflows won't change pricer; thanks to Peter Caspers (@pcaspers).

Models

  • Fixed the algorithm to add instruments to the calibration set of the Markov model; thanks to Peter Caspers (@pcaspers) for the fix and Giuseppe Trapani (@lePidduN7) for the heads-up.

Term structures

  • Time-to-date conversion in some swaption volatility classes could return the wrong date before the first exercise date; this is now fixed, thanks to Peter Caspers (@pcaspers).
  • It's now possible to specify the maximum number of iteration for the solver inside a bootstrapped term structure; thanks to Jonathan Sweemer (@sweemer) for the change and Daniel Ángeles Ortiz (@Danie8) for the heads-up.
  • Reduced the number of notifications for bootstrap helpers; thanks to Peter Caspers (@pcaspers).

Random numbers

  • Added the xoshiro265** random-number generator; thanks to Ralf Konrad (@ralfkonrad). It is faster than the Mersenne Twister and might be used as default in the future.

Examples

  • The code of the examples has been modernized a bit; thanks to Jonathan Sweemer (@sweemer).

Patterns

  • Avoided a possible crash when using observables in a multi-threaded setting; thanks to Peter Caspers (@pcaspers).

Deprecated features

  • Removed features deprecated in version 1.27:
    • The QL_NULL_INTEGER, QL_NULL_REAL, QL_NOEXCEPT, QL_CONSTEXPR and QL_USE_STD_UNIQUE_PTR macros.
    • The MultiCurveSensitivities class.
    • The constant, identity, square, cube, fourth_power, add, subtract, subtract_from, multiply_by, divide, divide_by, less_than, greater_than, greater_or_equal_to, not_zero, not_null, everywhere, nowhere, equal_within, clipped_function, clip, composed_function, compose, binary_compose3_function and compose3 functors.
    • The PdeShortRate, ShoutCondition, FDShoutCondition, FDStepConditionEngine and FDEngineAdapter classes from the old finite-differences framework.
    • The dsd::inner_product function.
    • The FDDividendEngineBase, FDDividendEngineMerton73, FDDividendEngineShiftScale and FDDividendEngine pricing engines.
    • The empty headers ql/auto_ptr.hpp, ql/math/initializers.hpp, ql/methods/finitedifferences/americancondition.hpp, ql/methods/finitedifferences/onefactoroperator.hpp, ql/pricingengines/vanilla/fddividendshoutengine.hpp, ql/pricingengines/vanilla/fdshoutengine.hpp and ql/utilities/disposable.hpp.
  • Deprecated the overload of the withReplication method in the DigitalIborLeg, DigitalCmsLeg and DigitalCmsSpreadLeg classes that takes no arguments; use the other overload instead.
  • Deprecated the StandardFiniteDifferenceModel, StandardSystemFiniteDifferenceModel and StandardStepCondition typedefs; define your own typedefs if needed.
  • Deprecated the FDVanillaEngine, FDMultiPeriodEngine, StepConditionSet, ParallelEvolverTraits, ParallelEvolver and SampledCurveclasses and the BSMTermOperator and SampledCurveSet typedefs; use the new finite-differences framework instead.
  • Deprecated the QL_NULL_FUNCTION macro; to check if a function is empty, use it in a bool context instead.
  • Deprecated the now empty headers ql/experimental/exoticoptions/margrabeoption.hpp, ql/experimental/exoticoptions/analyticcomplexchooserengine.hpp, ql/experimental/exoticoptions/analyticeuropeanmargrabeengine.hpp, ql/experimental/exoticoptions/analyticcompoundoptionengine.hpp, ql/experimental/exoticoptions/simplechooseroption.hpp, ql/experimental/exoticoptions/compoundoption.hpp, ql/experimental/exoticoptions/analyticamericanmargrabeengine.hpp, ql/experimental/exoticoptions/analyticsimplechooserengine.hpp, ql/experimental/exoticoptions/complexchooseroption.hpp, ql/experimental/termstructures/multicurvesensitivities.hpp, ql/methods/finitedifferences/shoutcondition.hpp, ql/methods/finitedifferences/pdeshortrate.hpp, ql/pricingengines/vanilla/fddividendengine.hpp, ql/pricingengines/vanilla/fdstepconditionengine.hpp, ql/pricingengines/vanilla/fdconditions.hpp and ql/models/marketmodels/duffsdeviceinnerproduct.hpp.

Thanks go also to Jonathan Sweemer (@sweemer), Ralf Konrad (@ralfkonrad), Klaus Spanderen (@klausspanderen), Peter Caspers (@pcaspers), Tom Anderson (@tomwhoiscontrary), Fredrik Gerdin Börjesson (@gbfredrik), Guillaume Horel (@thrasibule) and the XAD team (@auto-differentiation-dev) for a number of smaller fixes and improvements.

New Contributors

  • @gyansinha made their first contribution in https://github.com/lballabio/QuantLib/pull/1790

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.31.1...v1.32

- C++
Published by lballabio over 2 years ago

quantlib - 1.32 release candidate 1

Downloads

QuantLib-1.32-rc.tar.gz QuantLib-1.32-rc.zip QuantLib-SWIG-1.32-rc.tar.gz QuantLib-SWIG-1.32-rc.zip

This is a prerelease for version 1.32. If you have some time, please try them out and report any problems to the QuantLib mailing list.

- C++
Published by lballabio over 2 years ago

quantlib - 1.31.1

Downloads:

Changes for QuantLib 1.31.1:

QuantLib 1.31.1 is a bug-fix release for QuantLib 1.31.

It fixes a regression that could cause a segmentation fault when bootstrapping an interest-rate curve using OIS rates.

Details are available at https://github.com/lballabio/QuantLib/milestone/30?closed=1.

Full Changelog: https://github.com/lballabio/QuantLib/compare/v1.31...v1.31.1

- C++
Published by lballabio over 2 years ago

quantlib - 1.31

Downloads:

Changes for QuantLib 1.31:

QuantLib 1.31 includes a record 68 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/28?closed=1.

Portability

  • Future end of support: as announced in the notes for the previous release, after this release using std::tuple, std::function and std::bind (instead of their boost counterparts) will become the default. If you're using ext::tuple etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose the boost versions via a configure switch for a while; but we do suggest you start using ext::tuple etc. in the meantime.
  • The cmake build now creates (but doesn't install) a quantlib-config script that can be used to retrieve flags for compiling QuantLib-dependent projects; thanks to Christian Köhnenkamp (@kohnech).
  • A number of Boost classes and functions only used internally were replaced by their standard-library equivalent; thanks to Jonathan Sweemer (@sweemer).

Patterns

  • Optional change of behavior: by default, the LazyObject class forwards only one notification after recalculating and silently ignores the others. In some edge cases, this could lead to objects not being updated. It's now possible to enable a different behavior where all notifications are forwarded; the new behavior can be chosen at compile time via the configure option --disable-faster-lazy-objects (or disabling QL_FASTER_LAZY_OBJECTS in cmake or userconfig.hpp) or at run time by calling LazyObject::Defaults::instance().alwaysForwardNotifications(). This might cause a slow down, so you're invited to try it out and report on the mailing list. If there are no problems, the new behavior might become the default in future releases. Also, a new configure option --enable-throwing-in-cycles (QL_THROW_IN_CYCLES in cmake or userconfig.hpp) is optionally available; when both this option and the new behavior are enabled, notifications cycles involving a lazy object will throw an exception. It is suggested to try enabling the option and removing such loops, if any. Thanks to Peter Caspers (@pcaspers) for the change and to Ralf Konrad (@ralfkonrad), Jonathan Sweemer (@sweemer) and GitHub user @djkrystul for feedback.

Date/time

  • Change of behavior: when the end-of-month option is true, the constructor of a schedule no longer adjust to the end of their month the effective date and the termination date if they were passed explicitly. Thanks to Hristo Raykov (@HristoRaykov).
  • Added separate US SOFR calendar to manage days that are business days for the US government bond market but in which SOFR doesn't fix; for instance, Good Friday 2023 (@lballabio). Thanks to Tom Anderson (@tomwhoiscontrary) for reporting the issue.
  • Fixed some rolling rules for South Korean calendar; thanks to Jonghee Lee (@nistick21).
  • Fixed incorrect 2023 holidays for Hong Kong calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added Hong Kong holidays for 2021-2024; thanks to Rémy Frèrebeau (@rfrerebe-stx) and Binrui Dong (@BrettDong).
  • Added Singapore holidays for 2019-2023; thanks to Rémy Frèrebeau (@rfrerebe-stx).
  • Added Indian holidays for 2021-2025; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added Taiwanese holidays for 2020-2023; thanks to @jsmx.
  • Added a few election days for South African and South Korean calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Updated Danish calendar; starting in 2024, General Prayer Day will no longer be a holiday. Thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Fixed a few holidays in Finland and Singapore calendars; Thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • More day counters (Act/364, Act/365.25, Act/366) now take into account intraday resolution when enabled; thanks to Klaus Spanderen (@klausspanderen).

Cash flows

  • The accrued amount for CPI coupons is now correctly based on the index ratio at settlement date. An inspector for retrieving the index ratio at a given date was also added (@lballabio).
  • Enabled the use of normal volatilities in Hagan pricer for CMS coupons; thanks to Andre Miemiec (@amiemiec).
  • Floating-rate coupons are now lazy; thanks to Peter Caspers (@pcaspers).

Indexes

  • When passed a tenor of 7 or 14 business days, interest-rate indexes would wrongly convert it to 1 or 2 weeks. This is now fixed (@lballabio). Thanks to Eugene Toder (@eltoder) for reporting the issue.
  • Added DESTR and SWESTR indexes; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added CORRA index; thanks to @AND2797.
  • When an YoY inflation index is calculated as a ratio, the underlying inflation index is available through an inspector and its fixings are used to calculate the fixing of the YoY index (@lballabio).

Instruments

  • Instruments now register automatically with the global evaluation date and are notified when it changes. This makes sense in general (if the evaluation date changes, you probably want to recalculate) and can also help avoid some edge cases when lazy objects only forward their first notification (@lballabio).
  • Allowed passing a schedule without a regular tenor to callable fixed-rate bonds; thanks to Hristo Raykov (@HristoRaykov) for the fix and to @OleBueker for reporting the issue.
  • Reorganized the constructors of FRA instruments; thanks to Jake Heke (@jakeheke75).

Term structures

  • Ensures that upfront CDS helpers update correctly when the global evaluation date changes; thanks to Andrea Pellegatta (@andrea85p) for the fix and to @bkhoor for reporting the issue.
  • Allow more maturities for SOFR quarterly contract in SOFR futures rate helper; thanks to Jake Heke (@jakeheke75).
  • Added constructor for date-dependent strikes to StrippedOptionlet; thanks to Peter Caspers (@pcaspers).

Test suite

  • Global settings (such as the evaluation date) are now restored and index fixings are now cleaned automatically at the end of each test case, making it unnecessary to clean them up manually. Thanks to Eugene Toder (@eltoder).
  • The parallel unit-test runner now passes the --run_test=<filter> option down to the underlying Boost.Test implementation. Thanks to Eugene Toder (@eltoder).

Deprecated features

  • Removed features deprecated in version 1.26:

    • The CPICoupon constructor taking a number of fixing days and its indexObservation, adjustedFixing and indexFixing(date) methods.
    • The CPICashFlow constructor taking a fixing date.
    • The withFixingDays methods of CPILeg.
    • The ZeroInflationCashFlow constructor taking a calendar and business-day convention.
    • The LsmBasisSystem::PolynomType typedef and the MakeMCAmericanEngine::withPolynomOrder method.
    • The Observer::set_type and Observable::set_type typedefs.
    • The Curve class.
    • The LexicographicalView class.
    • The Composite class.
    • The DriftTermStructure class.
  • Deprecated the various time_iterator and value_iterator types in TimeSeries, as well as methods returning them. The more general const_iterator and const_reverse_iterator types can be used instead.

  • Deprecated the constructors of CPICoupon taking a spread, as well as its spread method, its protected spread_ data member, and the withSpreads methods of CPILeg.

  • Deprecated the adjustedFixing method and the protected spread_ data member of CPICouponPricer.

  • Renamed BlackVanillaOptionPricer to MarketQuotedOptionPricer and deprecated the old name.

  • Deprecated a couple of constructors of ForwardRateAgreement.

  • Deprecated the constructor of YoYInflationIndex taking a ratio. Also, deprecated explicit classes for YoY ratio indexes YYGenericCPIr, YYAUCPIr, YYEUHICPr, YYFRHICPr, YYUKRPIr, YYUSCPIr and YYZACPIr.

  • Deprecated the base, increment, decrement, advance and distance_to methods of the step_iterator class.

Thanks go also to Jonathan Sweemer (@sweemer), Jose Garcia (@j053g), Jake Heke (@jakeheke75), Eugene Toder (@eltoder), Binrui Dong (@BrettDong), the Xcelerit Dev Team (@xcelerit-dev), Ralf Konrad (@ralfkonrad), Fredrik Gerdin Börjesson (@gbfredrik) and Tom Anderson (@tomwhoiscontrary) for a number of smaller fixes and improvements.

New Contributors

  • @rfrerebe-stx made their first contribution in https://github.com/lballabio/QuantLib/pull/1640
  • @HristoRaykov made their first contribution in https://github.com/lballabio/QuantLib/pull/1638
  • @amiemiec made their first contribution in https://github.com/lballabio/QuantLib/pull/1660
  • @kohnech made their first contribution in https://github.com/lballabio/QuantLib/pull/1679
  • @eltoder made their first contribution in https://github.com/lballabio/QuantLib/pull/1690
  • @jsmx made their first contribution in https://github.com/lballabio/QuantLib/pull/1694
  • @AND2797 made their first contribution in https://github.com/lballabio/QuantLib/pull/1705
  • @andrea85p made their first contribution in https://github.com/lballabio/QuantLib/pull/1704
  • @BrettDong made their first contribution in https://github.com/lballabio/QuantLib/pull/1708

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.30...v1.31

- C++
Published by lballabio over 2 years ago

quantlib - 1.30

Downloads:

Changes for QuantLib 1.30:

QuantLib 1.30 includes 34 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/27?closed=1.

Portability

  • Future end of support: as announced in the notes for the previous release, after this release and the next, using std::tuple, std::function and std::bind (instead of their boost counterparts) will become the default. If you're using ext::tuple etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose the boost versions via a configure switch for a while; but we do suggest you start using ext::tuple etc. in the meantime.
  • CMake builds now use a stricter warning level by default; thanks to Ralf Konrad (@ralfkonrad).
  • Is it now possible to use std::any and std::optional (and the related std::any_cast and std::nullopt) instead of their boost counterparts by setting new compilation switches; thanks to Jonathan Sweemer (@sweemer). Using the std classes requires C++17. We expect the boost classes to remain the default for a while, but in the meantime we encourage to start using ext::any and ext::optional in preparation for a new default.

Date/time

  • Good Friday 2023 is now a business day for the US government bond calendar; thanks to Anastasiia Shumyk (@ashumyk).
  • Added specialized Australian calendar for ASX; thanks to Trent Maetzold (@trentmaetzold).
  • Fixed Turkish holidays between 2019 and 2023; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added a few missing holidays to Danish calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added the Matariki holiday to the New Zealand calendar; thanks to Jake Heke (@jakeheke75).

Cashflows

  • Added a new equity cash flow class to model equity legs in total return swaps; thanks to Marcin Rybacki (@marcin-rybacki). Quanto pricing is also supported.
  • Added an overloaded constructor for CPI coupons that allows to specify a base date instead of a base CPI value; thanks to Matthias Groncki (@mgroncki).

Instruments

  • Added a new total-return swap; thanks to Marcin Rybacki (@marcin-rybacki). An equity-index class was also added to support this instrument.
  • The analytic engine for barrier options would return NaN for low values of volatility; this is now fixed (@lballabio).
  • The VanillaOption and BarrierOption classes can now be used to model vanilla and barrier options with discrete dividends; the future dividends (not being part of the terms and conditions of the contract) should be passed to the pricing engine instead (@lballabio).
  • Added analytical Greeks to Bjerksund-Stensland engine; thanks to Klaus Spanderen (@klausspanderen).

Indexes

  • Added UKHICP inflation index; thanks to Fredrik Gerdin Börjesson (@gbfredrik).

Term structures

  • Renamed SwaptionVolCube1, SwaptionVolCube1x, SwaptionVolCube1a and SwaptionVolCube2 to SabrSwaptionVolatilityCube, XabrSwaptionVolatilityCube, NoArbSabrSwaptionVolatilityCube and InterpolatedSwaptionVolatilityCube, respectively; thanks to Ignacio Anguita (@IgnacioAnguita). The old names are deprecated but still available for a few releases.
  • Ensure that inflation curves are re-bootstrapped correctly when seasonality is added (@lballabio).

Models

  • Moved the Heston SLV model from experimental to main; thanks to Klaus Spanderen (@klausspanderen).

Math

  • Added a few overloads to Array and Matrix operators taking rvalue references for increased speed; thanks to Jonathan Sweemer (@sweemer).

Deprecated features

  • Removed features deprecated in version 1.25:
    • the protected spreadLegValue_ data member of BlackIborCouponPricer;
    • the WulinYongDoubleBarrierEngine alias for SuoWangDoubleBarrierEngine;
    • the settlementDate, incomeDiscountCurve, spotIncome, spotValue, impliedYield and forwardValue methods of ForwardRateAgreement, as well as its protected underlyingIncome_, underlyingSpotValue_, settlementDays_, payoff_ and incomeDiscountCurve_ data members;
    • constructors for InflationTermStructure, ZeroInflationTermStructure, InterpolatedZeroInflationCurve, PiecewiseZeroInflationCurve taking an indexIsInterpolated parameter;
    • the indexIsInterpolated method of InflationTermStructure and its protected indexIsInterpolated_ data member;
    • some overloaded constructors of SofrFutureRateHelper.
  • Deprecated the DividendVanillaOption and DividendBarrierOption classes; use VanillaOption and BarrierOption instead (see above).
  • Deprecated the constructor of AnalyticDividendEuropeanEngine that takes no dividend information; use the other overload instead.
  • Deprecated the names SwaptionVolCube1, SwaptionVolCube1x, SwaptionVolCube1a and SwaptionVolCube2 (see above).
  • Deprecated the protected setCommon method of CappedFlooredYoYInflationCoupon.

Thanks go also to Jonathan Sweemer (@sweemer), the Xcelerit Dev Team (@xcelerit-dev), Fredrik Gerdin Börjesson (@gbfredrik), Klaus Spanderen (@klausspanderen) and Peter Caspers (@pcaspers) for a number of smaller fixes and improvements, and to Matthias Groncki (@mgroncki) and @lukey8767 for raising issues.

New Contributors

  • @jakeheke75 made their first contribution in https://github.com/lballabio/QuantLib/pull/1564
  • @trentmaetzold made their first contribution in https://github.com/lballabio/QuantLib/pull/1599
  • @ashumyk made their first contribution in https://github.com/lballabio/QuantLib/pull/1620

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.29...QuantLib-v1.30

- C++
Published by lballabio almost 3 years ago

quantlib - 1.29

Downloads:

Changes for QuantLib 1.29:

QuantLib 1.29 includes 42 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/26?closed=1.

Portability

  • End of support: as announced in the notes for the previous release, this release no longer manages thread-local singletons via a user-provided sessionId function, and therefore the latter is no longer needed. Instead, the code now uses the built-in language support for thread-local variables. Thanks go to Peter Caspers (@pcaspers).
  • Future end of support: as announced in the notes for the previous release, after the next couple of releases, using std::tuple, std::function and std::bind (instead of their boost counterparts) will become the default. If you're using ext::tuple etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose the boost versions via a configure switch for a while; but we do suggest you start using ext::tuple etc. in the meantime.
  • Replaced internal usage of boost::thread with std::thread; thanks to Jonathan Sweemer (@sweemer). This removed our last dependency on Boost binaries and makes it possible to compile QuantLib using a header-only Boost installation.
  • On Windows, it is now possible to use the MSVC dynamic runtime when using cmake by passing -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL on the command line; thanks to Jonathan Sweemer (@sweemer). The static runtime remains the default.
  • It is now possible to build QuantLib with Intel's icpx compiler using cmake; thanks to Jonathan Sweemer (@sweemer). Note that in order to get all the unit tests passing, -fp-model=precise must be added to CMAKE_CXX_FLAGS.

Date/time

  • Updated Chinese holidays for 2023; thanks to Cheng Li (@wegamekinglc).
  • Added in-lieu holiday for Christmas 2022 to South-African calendar; thanks to Joshua Hayes (@JoshHayes).
  • Added King Charles III coronation holiday to UK calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
  • Added holiday for National Day of Mourning to Australian calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).

Instruments

  • Added high performance/precision American engine based on fixed-point iteration for the exercise boundary; thanks to Klaus Spanderen (@klausspanderen).
  • Bonds with draw-down (i.e., increasing notionals) are now allowed; thanks to Oleg Kulkov (@Borgomi42 ).
  • Added withIndexedCoupons and withAtParCoupons methods to MakeSwaption for easier initialization; thanks to Ralf Konrad (@ralfkonrad).
  • It is now possible to use the same pricing engine for vanilla and dividend vanilla options, or for barrier and dividend barrier options (@lballabio).

Indexes

  • Creating a zero inflation index as "interpolated" is now deprecated; thanks to Ralf Konrad (@ralfkonrad). The index should only return monthly fixings. Interpolation is now the responsibility of inflation-based coupons.

Term structures

  • The ConstantCPIVolatility constructor can now take a handle to a volatility quote, instead of just an immutable number (@lballabio).

Deprecated features

  • Removed features deprecated in version 1.24:
    • the createAtParCoupons, createIndexedCoupons and usingAtParCoupons methods of IborCoupon;
    • the RiskyBond class and its subclasses RiskyFixedBond and RiskyFloatingBond;
    • the CrossCurrencyBasisSwapRateHelper typedef;
    • the termStructure_ data member of BlackCalibrationHelper;
    • the static baseCurrency and conversionType data members of Money;
    • the nominalTermStructure method and the nominalTermStructure_ data member of InflationTermStructure;
    • the constructor of the UnitedStates calendar not taking an explicit market.
  • Deprecated the argument_type, first_argument_type, second_argument_type and result_type typedefs in a number of classes; use auto or decltype instead.
  • Deprecated the constructors of InflationIndex, ZeroInflationIndex, FRHICP, ZACPI, UKRPI, EUHICP, EUHICPXT, USCPI, AUCPI and GenericCPI taking an interpolated parameter; use another constructor.
  • Deprecated the interpolated method and the interpolated_ data member of InflationIndex.
  • Deprecated the ThreadKey typedef. It was used in the signature of sessionId, which is no longer needed after the changes in the Singleton implementation.
  • Deprecated the rateCurve_ data member of the InflationCouponPricer base class. If you need it, provide it in your derived class.
  • Deprecated the npvbps function taking NPV and BPS as references. Use the overload returning a pair of Reals.

Thanks go also to Matthias Groncki (@mgroncki), Jonathan Sweemer (@sweemer) and Nijaz Kovacevic (@NijazK) for a number of smaller fixes and improvements, to the Xcelerit Dev Team (@xcelerit-dev) for improvements to the automated CI builds, and to Vincenzo Ferrazzanno (@vincferr), @alienbrett, @xuruilong100 and @philippb90 for raising issues.

New Contributors

  • @dsuprmajstc93r made their first contribution in https://github.com/lballabio/QuantLib/pull/1514
  • @NijazK made their first contribution in https://github.com/lballabio/QuantLib/pull/1530
  • @JoshHayes made their first contribution in https://github.com/lballabio/QuantLib/pull/1542

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.28...QuantLib-v1.29

- C++
Published by lballabio about 3 years ago

quantlib - 1.28

Downloads:

Changes for QuantLib 1.28:

QuantLib 1.28 includes 33 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/24?closed=1.

Portability

  • New language standard: as announced in the notes for the previous release, this release started using some C++14 syntax. This should be supported by most compilers released in the past several years.
  • End of support: as announced in the notes for the previous release, this release is the last to manage thread-local singletons via a user-provided sessionId function. Future releases will use the built-in language support for thread-local variables.
  • Future end of support: after the next two or three releases, using std::tuple, std::function and std::bind (instead of their boost counterparts) will become the default. If you're using ext::tuple etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose the boost versions via a configure switch for a while.

Date/time

  • Added Act/366 and Act/365.25 day counters; thanks to Ignacio Anguita (@IgnacioAnguita).
  • Added H.M. the Queen's funeral to the UK calendars; thanks to Tomass Wilson (@Wilsontomass).

Instruments

  • Amortizing bonds were moved out of the experimental folder. Also, a couple of utility functions were provided to calculate amortization schedules and notionals.

Pricing engines

  • Fixed results from COSHestonEngine in the case of an option with short time to expiration and deep ITM or deep OTM strike prices; thanks to Ignacio Anguita (@IgnacioAnguita).
  • The ISDA engine for CDS could calculate the fair upfront with the wrong sign; this is now fixed, thanks to Gualtiero Chiaia (@gchiaia).

Term structures

  • The constructor for OISRateHelper now allows to specify the endOfMonth parameter; thanks to Guillaume Horel (@thrasibule).

Finite differences

  • Fixed computation of cds boundaries in LocalVolRNDCalculator; thanks to @mdotlic.

Experimental folder

The ql/experimental folder contains code whose interface is not fully stable, but is released in order to get user feedback. Experimental classes make no guarantees of backward compatibility; their interfaces might change in future releases.

  • Breaking change: the constructor of the CPICapFloorTermPriceSurface class now also takes an explicit interpolation type.
  • Possibly breaking: the protected constructor for CallableBond changes its arguments. If you inherited from this class, you'll need to update your code. If you're using the existing derived bond classes, the change will be transparent.
  • Pricing engines for callable bonds worked incorrectly when the face amount was not 100. This is now fixed.
  • The impliedVolatility method for callable bonds was taking a target NPV, not a price. This implementation is now deprecated, and a new overload was added taking a price in base 100.

Deprecated features

  • Removed features deprecated in version 1.23:
    • the constructors of ZeroCouponInflationSwap and ZeroCouponInflationSwapHelper missing an explicit CPI interpolation type;
    • the constructors of ActualActual and Thirty360 missing an explicit choice of convention, and the constructor of Thirty360 passing an isLastPeriod boolean flag.
  • Deprecated the constructors of FixedRateBond taking an InterestRate instance or not taking a Schedule instance.
  • Deprecated the constructor of FloatingRateBond not taking a Schedule instance.
  • Deprecated the constructors of AmortizingFixedRateBond taking a sinking frequency or a vector of InterestRate instances.
  • Deprecated the constructor of CPICapFloor taking a Handle to an inflation index, and its inflationIndex method returning a Handle. New versions of both were added using shared_ptr instead.
  • Deprecated one of the constructors of SabrSmileSection; a new version was added also taking an optional reference date.
  • Deprecated the old impliedVolatility method for callable bonds; see above.

Thanks go also to Konstantin Novitsky (@novitk), Peter Caspers (@pcaspers), Klaus Spanderen (@klausspanderen), Fredrik Gerdin Börjesson (@gbfredrik) and Dirk Eddelbuettel (@eddelbuettel) for a number of smaller fixes, and to Jonathan Sweemer (@sweemer) for various improvements to the automated CI builds.

New Contributors

  • @novitk made their first contribution in https://github.com/lballabio/QuantLib/pull/1448
  • @IgnacioAnguita made their first contribution in https://github.com/lballabio/QuantLib/pull/1453
  • @mdotlic made their first contribution in https://github.com/lballabio/QuantLib/pull/1435
  • @Wilsontomass made their first contribution in https://github.com/lballabio/QuantLib/pull/1481

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.27.1...QuantLib-v1.28

- C++
Published by lballabio over 3 years ago

quantlib - 1.27.1

Downloads:

Changes for QuantLib 1.27.1:

QuantLib 1.27.1 is a bug-fix release.

It restores the old implementation of Null<T> which was replaced in version 1.27 with a new one; the latter was reported to cause an internal compiler error under Visual C++ 2022 for some client code. The new version (which avoids some problems when replacing Real with some AAD-enabled types) is still available; depending on how you compile QuantLib, it can be enabled through the --enable-null-as-functions configure flag, the cmake variable QL_NULL_AS_FUNCTIONS, or the define with the same name in the ql/userconfig.hpp header (@lballabio).

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.27...QuantLib-v1.27.1

- C++
Published by lballabio over 3 years ago

quantlib - 1.27

Downloads:

Changes for QuantLib 1.27:

QuantLib 1.27 includes 37 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/23?closed=1.

Portability

  • Removed support: as announced in the notes for the previous release, support for Visual Studio 2013 was dropped.
  • End of support: as announced in the notes for the previous release, this release will be the last to avoid C++14 syntax. Allowing the newer (but still oldish) standard should still support most compilers released in the past several years.
  • Future end of support: this release and the next will be the last to manage thread-local singletons via a user-provided sessionId function. Future releases will use the built-in language support for thread-local variables.
  • The Real type is now used consistently throughout the codebase, thanks to the Xcelerit dev team (@xcelerit-dev). This, along with other changes, allows its default definition to double to be replaced with one of the available third-party AAD types.
  • The test suite is now built using the header-only version of Boost.Test, thanks to Jonathan Sweemer (@sweemer). This might simplify Boost installation for some users, since in the default configuration QuantLib now only needs the Boost headers.
  • Replaced some Boost facilities with the corresponding C++11 counterparts; thanks to Klaus Spanderen (@klausspanderen) and Jonathan Sweemer (@sweemer).

Date/time

  • Fixed the behavior of a couple of Australian holidays; thanks to Pradeep Krishnamurthy (@pradkrish) and Fredrik Gerdin Börjesson (@gbfredrik).

Instruments

  • Added the Turnbull-Wakeman engine for discrete Asian options; thanks to Fredrik Gerdin Börjesson (@gbfredrik) for the main engine code and to Jack Gillett (@jackgillett101) for the Greeks.
  • Added more validation to barrier options; thanks to Jonathan Sweemer (@sweemer).

Models

  • Fixed the start date of the underlying swap in swaption calibration helpers; thanks to Peter Caspers (@pcaspers).
  • Fixed parameter checks in SVI volatility smiles; thanks to Fredrik Gerdin Börjesson (@gbfredrik).

Patterns

  • Avoid possible iterator invalidation while notifying observers; thanks to Klaus Spanderen (@klausspanderen).

Deprecated features

  • Removed the --enable-disposable and --enable-std-unique-ptr configure switches.
  • Removed features deprecated in version 1.22 (@lballabio):
    • the unused AmericanCondition and FDAmericanCondition classes;
    • the old-style FD shout and dividend shout engines;
    • the unused OneFactorOperator class;
    • the io::to_integer function;
    • the ArrayProxy and MatrixProxy classes.
  • Deprecated the QL_NOEXCEPT and QL_CONSTEXPR macros.
  • Deprecated the QL_NULL_INTEGER and QL_NULL_REAL macros.
  • Deprecated some unused parts of the old-style FD framework (@lballabio):
    • the PdeShortRate class;
    • the ShoutCondition and FDShoutCondition classes;
    • the FDDividendEngineBase, FDDividendEngineMerton73, FDDividendEngineShiftScale and FDDividendEngine classes;
    • the FDStepConditionEngine and FDEngineAdapter classes.
  • Deprecated a number of function objects in the ql/math/functional.hpp header.
  • Deprecated the unused MultiCurveSensitivities class.
  • Deprecated the unused inner_product function.

Thanks go also to Ryan Russell (@ryanrussell) for documentation fixes.

New Contributors

  • @gbfredrik made their first contribution in https://github.com/lballabio/QuantLib/pull/1351
  • @pradkrish made their first contribution in https://github.com/lballabio/QuantLib/pull/1374
  • @ryanrussell made their first contribution in https://github.com/lballabio/QuantLib/pull/1395
  • @xcelerit-dev made their first contribution in https://github.com/lballabio/QuantLib/pull/1400
  • @lotzej made their first contribution in https://github.com/lballabio/QuantLib/pull/1401

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.26...QuantLib-v1.27

- C++
Published by lballabio over 3 years ago

quantlib - 1.26

Downloads:

Changes for QuantLib 1.26:

QuantLib 1.26 includes 26 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/22?closed=1.

Portability

  • End of support: as announced in the notes for the previous release, this release is the last to support Visual Studio 2013.
  • End of support: this release is the last to support the long-deprecated configure switches --enable-disposable and --enable-std-unique-ptr. From the next release, Disposable will always be disabled (and eventually removed) and std::unique_ptr will always be used instead of std::auto_ptr. This has already been the default in the last few releases.
  • Future end of support: this release and the next will be the last to avoid C++14 syntax. This should still support most compilers released in the past several years (except for Visual Studio 2013, which we're already dropping in this release).
  • If tagged libraries are specified, as is the default on Windows, CMake now gives the built libraries the same names as the Visual Studio solution (for instance, QuantLib-x64-mt-s instead of QuantLib-mt-s-x64) so that the pragma in ql/auto_link.hpp works.
  • QuantLib can now also be built as a subproject in a larger CMake build (thanks to @pcaspers).

Date/time

  • When printed, Period instances now display transparently what their units and length are, instead of doing more fancy formatting (e.g., "16 months" is now displayed instead of "1 year 4 months"). Also, Period instances that compare as equal now return the same period from their normalize method (@lballabio).

Indexes

  • Added Tona (Tokyo overnight average) index (thanks to @nistick21).
  • Added static laggedFixing method to CPI structure which provides interpolation of inflation index fixings (@lballabio).

Cash flows

  • The CPICoupon and CPICashFlow classes now take into account the correct dates and observation lag for interpolation (@lballabio).

Instruments

  • Added a BondForward class that generalizes the existing FixedRateBondForward to any kind of bond (thanks to @marcin-rybacki).
  • Avoided unexpected jumps in callable bond OAS (thanks to @ralfkonrad).
  • Fixed TreeSwaptionEngine mispricing when adjusting the instrument schedule to a near exercise date (thanks to @ralfkonrad).
  • the ForwardRateAgreement class now works correctly without an explicit discount curve (@lballabio).

Term structures

  • Dates explixitly passed to InterpolatedZeroInflationCurve are no longer adjusted automatically to the beginning of their inflation period (@lballabio).

Deprecated features

  • Removed the MCDiscreteAveragingAsianEngine class, deprecated in version 1.21.
  • Deprecated the LsmBasisSystem::PolynomType typedef, now renamed to PolynomialType; MakeMCAmericanEngine::withPolynomOrder was also deprecated and renamed to withPolynomialOrder.
  • Deprecated the ZeroInflationCashFlow constructor taking an unused calendar and business-day convention.
  • Deprecated the CPICoupon constructor taking a number of fixing days, as well as the CPICoupon::indexObservation, CPICoupon::adjustedFixing and CPICoupon::indexFixing methods and the CPILeg::withFixingDays method.
  • Deprecated the CPICashFlow constructor taking a precalculated fixing date and a frequency.
  • Deprecated the Observer::set_type and Observable::set_type typedefs.
  • Deprecated the unused Curve class.
  • Deprecated the unused LexicographicalView class.
  • Deprecated the unused Composite class.
  • Deprecated the unused DriftTermStructure class.

Thanks go also to @mgroncki, @sweemer and @FloridSleeves for smaller fixes, enhancements and bug reports.

New Contributors

  • @FloridSleeves made their first contribution in https://github.com/lballabio/QuantLib/pull/1295
  • @nistick21 made their first contribution in https://github.com/lballabio/QuantLib/pull/1302

Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.25...QuantLib-v1.26

- C++
Published by lballabio almost 4 years ago

quantlib - 1.25

Downloads:

Changes for QuantLib 1.25:

QuantLib 1.25 includes 35 pull requests from several contributors.

Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/21?closed=1.

Portability

  • End of support: this release and the next will be the last two to support Visual Studio 2013.
  • Added a few CMake presets for building the library (thanks to @sweemer).
  • When built and installed through CMake, the library now installs a QuantLibConfig.cmake file that allows other CMake projects to find and use QuantLib (thanks to @sweemer).

Cashflows

  • Fixed the accrual calculation in overnight-indexed coupons (thanks to @mshojatalab).
  • Fixed fixing-days usage in SubPeriodsCoupon class (thanks to @marcin-rybacki).
  • IBOR coupons fixed in the past no longer need a forecast curve to return their amount (@lballabio).

Indexes

  • Important change: inflation indexes inherited from the ZeroInflationIndex class no longer rely on their forecast curve for interpolation. For coupons that already took care of interpolation (as in the case of CPICoupon and ZeroInflationCashFlow) this should not change the results. In other cases, figures will change but should be more correct as the interpolation is now performed according to market conventions. Also, most inflation curves now assume that the index is not implemented. Year-on-year inflation indexes and curves are not affected (@lballabio).

Instruments

  • Breaking change: convertible bonds were moved out of the ql/experimental folder. Also, being market values and not part of the contract, dividends and credit spread were moved from the bond to the BinomialConvertibleEngine class (thanks to @w31ha0).
  • The ForwardRateAgreement no longer inherits from Forward. This also made it possible to implement the amount method returning the expected cash settlement (thanks to @w31ha0). The methods from Forward were kept available but deprecated so code using them won't break. Client code might break if it performed casts to Forward.

Models

  • Fixed formula for discount bond option in CIR++ model (thanks to @mmencke).

Term structures

  • It is now possible to use normal volatilities in SABR smile sections, and thus in the SwaptionVolCube1 class (thanks to @w31ha0).

Date/time

  • Added Chinese holidays for 2022 (thanks to @wegamekinglc).

Currencies

  • Added a number of African, American, Asian and European currencies from Quaternion's QuantExt project (thanks to @OleBueker).

Experimental folder

The ql/experimental folder contains code whose interface is not fully stable, but is released in order to get user feedback. Experimental classes make no guarantees of backward compatibility; their interfaces might change in future releases.

  • Added experimental rate helpers for LIBOR-LIBOR and Overnight-LIBOR basis swaps (@lballabio).
  • Renamed WulinYongDoubleBarrierEngine to SuoWangDoubleBarrierEngine (thanks to @aditya113141 for the fix and @xuruilong100 for the heads-up).

Deprecated features

  • Deprecated the constructors of zero-coupon inflation term structures taking an indexIsInterpolated boolean argument.
  • Deprecated a number of methods in the ForwardRateAgreement class that used to be inherited from Forward.
  • Deprecated a couple of constructors in the SofrFutureRateHelper class.
  • Deprecated the WulinYongDoubleBarrierEngine alias for SuoWangDoubleBarrierEngine.
  • Deprecated the protected spreadLegValue_ data member in the BlackIborCouponPricer class.

Thanks go also to @tomwhoiscontrary, @igitur, @matthewkolbe, @bensonluk, @hsegger, @klausspanderen, @jxcv0 and @azsrz for smaller fixes, enhancements and bug reports.

New Contributors

  • @sweemer made their first contribution in https://github.com/lballabio/QuantLib/pull/1209
  • @azsrz made their first contribution in https://github.com/lballabio/QuantLib/pull/1242
  • @jxcv0 made their first contribution in https://github.com/lballabio/QuantLib/pull/1248
  • @matthewkolbe made their first contribution in https://github.com/lballabio/QuantLib/pull/1254
  • @OleBueker made their first contribution in https://github.com/lballabio/QuantLib/pull/1262
  • @hsegger made their first contribution in https://github.com/lballabio/QuantLib/pull/1280
  • @aditya113141 made their first contribution in https://github.com/lballabio/QuantLib/pull/1279

- C++
Published by lballabio about 4 years ago

quantlib - 1.24

Downloads

Changes for QuantLib 1.24:

QuantLib 1.24 includes 25 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/20?closed=1.

Portability

  • Overhauled the CMake build system (thanks to @pkovacs). Among other things, it now allows to specify the available configuration options from the cmake invocation and adds the required Boost libraries accordingly.

Instruments

  • Avoid callable-bond mispricing when a call date is close but not equal to a coupon date (thanks to @ralfkonrad for the fix and to @aichao for the analysis). See https://github.com/lballabio/QuantLib/issues/930 for details.
  • A new RiskyBondEngine is available for bonds (thanks to @w31ha0). It prices bonds based on a risk-free discount cure and a default-probability curve used to assess the probability of each coupon payment. It makes accessible to all bonds the calculations previously available in the experimental RiskyBond class.

Cashflows

  • The choice between par and indexed coupons was moved to IborCouponPricer (thanks to @pcaspers). This also made it possible to override the choice locally when building a VanillaSwap or a SwapRateHelper, so that coupons with both behaviors can now be used at the same time.

Term structures

  • Cross-currency basis swap rate helpers now support both constant-notional and marked-to-market swaps (thanks to @marcin-rybacki).

Date/time

  • Added Chilean calendar (thanks to @anubhav-pandey1).
  • Added new ThirdWednesdayInclusive date-generation rule that also adjusts start and end dates (thanks to @w31ha0).

Patterns

  • Overhauled Singleton implementation (thanks to @pcaspers). Singletons are now initialized in a thread-safe way when sessions are enabled, global singletons (that is, independent of sessions) were made available, and static initialization was made safer.

Test suite

  • Sped up some of the longer-running tests (thanks to @mshojatalab).

Deprecated features

  • Deprecated default constructor for the U.S. calendar; the desired market should now be passed explicitly.
  • Deprecated the nominalTermStructure method and the corresponding data member in inflation term structures. Any object needing the nominal term structure should have it passed explicitly.
  • Deprecated the termStructure_ data member in BlackCalibrationHelper. It you're inheriting from BlackCalibrationHelper and need it, declare it in your derived class.
  • Deprecated the createAtParCoupons, createIndexedCoupons and usingAtParCoupons methods of IborCoupon, now moved to a new IborCoupon::Settings singleton (thanks to @pkovacs).
  • Deprecated the conversionType and baseCurrency static data members of Money, now moved to a new Money::Settings singleton (thanks to @pkovacs).
  • Removed features deprecated in version 1.19: the BMAIndex constructor taking a calendar, the AmericanCondition and ShoutCondition constructors taking an option type and strike, the CurveDependentStepCondition class and the StandardCurveDependentStepCondition typedef, the BlackCalibrationHelper constructor taking a yield term structure, the various inflation term structure constructors taking a yield term structure, the various yield term constructors taking a vector of jumps but not specifying a reference date.

Thanks go also to @lballabio, @laaouini, @jackgillett101, @bnalgo and @klausspanderen for smaller fixes, enhancements and bug reports.

New Contributors

  • @laaouini made their first contribution in https://github.com/lballabio/QuantLib/pull/1162
  • @anubhav-pandey1 made their first contribution in https://github.com/lballabio/QuantLib/pull/1155
  • @pkovacs made their first contribution in https://github.com/lballabio/QuantLib/pull/1183
  • @mshojatalab made their first contribution in https://github.com/lballabio/QuantLib/pull/1202

- C++
Published by lballabio over 4 years ago

quantlib - 1.23

Downloads:

QuantLib-1.23.tar.gz QuantLib-1.23.zip

Changes for QuantLib 1.23:

QuantLib 1.23 includes 30 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/19?closed=1.

Portability

  • On Mac OS, the -std=c++11 flag is now added automatically when needed. This applies to both configure and cmake (thanks to Leander Schulten).
  • We now assume that the compiler supports Boost::uBLAS and no longer check for it in configure. (The check was originally introduced for versions of gcc before 4.x, which don't support C++ anyway.) Please let us know if this causes problems on some systems.
  • The Period, InterestRate and InterestRateIndex classes are now visualized more clearly in the Visual Studio debugger (thanks to Francois Botha).

Cashflows

  • Year-on-year and CPI legs are now set a default coupon pricer. In most cases, this removes the need for setting it explicitly.
  • Add new ZeroInflationCashFlow class, used in zero-coupon inflation swaps (thanks to Ralf Konrad).

Currencies

  • Added custom constructor that allows to create bespoke currencies not already included in the library (thanks to Marcin Rybacki).

Date/time

  • Fixed implementation of U.S. 30/360 convention (the old one is still available as 30/360 NASD).
  • The 30/360 ISDA convention can now take the termination date as a constructor argument and use it to adjust the calculation properly.
  • Added the 30/360 ISMA convention; the Bond-Basis convention is now an alias to the former.
  • The 30/360 German convention was renamed to ISDA; "German" remains as an alias.
  • Added new Canadian holiday (National Day for Truth and Reconciliation) established in 2021 (thanks to GitHub user qiubill for the heads-up).
  • Added new U.S. holiday (Juneteenth) established in 2021.
  • Added new Platinum Jubilee U.K. holiday for 2022 (thanks to Ioannis Rigopoulos for the heads-up.)
  • Added missing Christmas Eve holiday to Norwegian calendar (thanks to Prince Nanda).

Indexes

  • Added ESTR index (thanks to Magnus Mencke).

Instruments

  • Added zero-coupon swap (thanks to Marcin Rybacki).
  • The Type enumeration defined in several swap classes was moved to their base Swap class.
  • Fixed sign of theta in experimental Kirk engine for spread options (thanks to Xu Ruilong for the heads-up).

Processes

  • Improved discretization of Cox-Ingersoll-Ross process to avoid occasional divergence (thanks to Magnus Mencke).

Deprecated features

  • Deprecated default constructor for actual/actual and 30/360 day counters; the desired convention should now be passed explicitly.
  • Removed features deprecated in version 1.18: the CalibrationHelperBase typedef (now CalibrationHelper), some overloads of the CalibratedModel::calibrate and CalibratedModel::value methods, the constructors of PiecewiseYieldCurve and PiecewiseDefaultCurve taking an accuracy parameter, the constructors of BondHelper, FixedRateBondHelper and CPIBondHelper taking a boolean useCleanPrice parameter, the BondHelper::useCleanPrice() method, and the non-static Calendar::holidayList method.

Thanks go also to Francis Duffy, Kevin Kirchhoff, Magnus Mencke and Klaus Spanderen for smaller fixes, enhancements and bug reports.

- C++
Published by lballabio over 4 years ago

quantlib - 1.22

Downloads:

QuantLib-1.22.tar.gz QuantLib-1.22.zip

Changes for QuantLib 1.22:

QuantLib 1.22 includes 54 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/18?closed=1.

Portability

  • As previously announced, this release drops support for Visual C++ 2012. VC++ 2013 or later is now required.
  • The Date and Array classes are now visualized more clearly in the Visual Studio debugger (thanks to Francois Botha).

Language standard

  • QuantLib now uses the C++11 standard and no longer compiles in C++03 mode. As before, it can be compiled with later versions of the standard. For details on the C++11 features used, see the pull requests marked "C++11 modernization" at the above link; for information on possible problems, see https://www.implementingquantlib.com/2021/02/leaving-03-for-real.html.

Cashflows

  • Revised and tested the SubPeriodCoupon class (thanks to Marcin Rybacki). The class was moved out of the ql/experimental folder and its interface can now be considered stable.
  • Add simple averaging to overnight-index coupons in addition to the existing compound averaging (thanks to Marcin Rybacki).
  • Fixed accrual calculation for inflation coupon when trading ex-coupon (thanks to GitHub user bachhani).

Currencies

  • Added the Nigerian Naira (thanks to Bryte Morio).

Date/time

  • Fixed actual/actual (ISMA) day counter calculation for long/short final periods (thanks to Francois Botha).
  • Updated a couple of changed rules for New Zealand calendar (thanks to Paul Giltinan).

Indexes

  • Added hasHistoricalFixing inspector to Index class to check if the fixing for a given past date is available (thanks to Ralf Konrad).

Instruments

  • Added new-style finite-difference engine for shout options (thanks to Klaus Spanderen). In the case of dividend shout options, an escrowed dividend model is used.
  • Revised the OvernightIndexFutures class. The class was moved out of the ql/experimental folder and its interface can now be considered stable.
  • Added an overloaded constructor for Asian options that takes all past fixings and thus allows to reprice them correctly when the evaluation date changes (thanks to Jack Gillett).
  • Added support for seasoned geometric Asian options to the Heston engine (thanks to Jack Gillett).

Patterns

  • Faster implementation of the Observable class in the thread-safe case (thanks to Klaus Spanderen).

Term structures

  • Added experimental rate helper for constant-notional cross-currency basis swaps (thanks to Marcin Rybacki).
  • Added volatility type and displacements to year-on-year inflation volatility surfaces (thanks to Peter Caspers).

Deprecated features

  • Removed features deprecated in version 1.17: the Callability::Type typedef (now Bond::Price), the FdmOrnsteinUhlenbackOp typedef (now correctly spelled as FdmOrnsteinUhlenbeckOp, and a number of old-style finite-difference engines (FDAmericanEngine, FDBermudanEngine, FDDividendAmericanEngine and its variants, FDDividendEuropeanEngine and its variants, and FDEuropeanEngine) all replaced by the FdBlackScholesVanillaEngine class.
  • Deprecated the old-style finite difference engines for shout options; they are now replaced by the new FDDividendShoutEngine class.
  • Deprecated a few unused parts of the old-style finite-differences framework: the AmericanCondition class, the OneFactorOperator typedef, and the FDAmericanCondition class.

Test suite

  • Reduced the run time for the longest-running test cases.

Thanks go also to Francis Duffy and Cay Oest for smaller fixes, enhancements and bug reports.

- C++
Published by lballabio almost 5 years ago

quantlib - 1.21

Downloads:

QuantLib-1.21.tar.gz

QuantLib-1.21.zip

Changes for QuantLib 1.21:

QuantLib 1.21 includes 24 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/17?closed=1.

Portability

  • As previously announced, this is the last release to support Visual C++ 2012. Starting from next release, VC++ 2013 or later will be required in order to enable use of C++11 features.

Instruments

  • Improve date generation for CDS schedules under the post-big-bang rules (thanks to Francis Duffy).
  • Amortizing fixed-rate bonds can now use a generic InterestRate object (thanks to Piter Dias).
  • Added Monte Carlo pricer for discrete-average arithmetic Asian options under the Heston model (thanks to Jack Gillett).
  • Added analytic and Monte Carlo pricers for discrete-average geometric Asian options under the Heston model (thanks to Jack Gillett). Together, they can also be used as a control variate in Monte Carlo models for arithmetic Asian options.
  • Added analytic pricer for continuous-average geometric Asian options under the Heston model (thanks to Jack Gillett).
  • Added analytic pricer for forward options under the Heston model (thanks to Jack Gillett).
  • Added Monte Carlo pricers for forward options under the Black-Scholes and the Heston models (thanks to Jack Gillett).

Term structures

  • Added Dutch regulatory term structure, a.k.a. ultimate forward term structure (thanks to Marcin Rybacki).
  • Generalized exponential spline fitting to an arbitrary number of parameters; it is now also possible to fix kappa (thanks to David Sansom).
  • Fixed averaging period for 1-month SOFR futures rate helper (thanks to Eisuke Tani).

Date/time

  • Fixed a bug and added 2017 holidays in Thailand calendar (thanks to GitHub user phil-zxx for the heads-up).
  • Updated Chinese calendar for 2021 (thanks to Cheng Li).
  • Updated Japanese calendar for 2021 (thanks to Eisuke Tani).

Thanks go also to Francois Botha, Peter Caspers, Ralf Konrad, Matthias Siemering, Klaus Spanderen and Joseph Wang for smaller fixes, enhancements and bug reports.

- C++
Published by lballabio about 5 years ago

quantlib - 1.20

Changes for QuantLib 1.20:

QuantLib 1.20 includes 24 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/16?closed=1.

Portability

  • Support for Visual C++ 2012 is being deprecated. It will be dropped after the next release in order to enable use of C++11 features.
  • It is now possible to opt into using std::tuple instead of boost::tuple when the compiler allows it. The default is still to use the Boost implementation. The feature can be enabled by uncommenting the QL_USE_STD_TUPLE macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-std-tuple switch to ./configure on other systems. The --enable-std-tuple switch is also implied by --enable-std-classes. (Thanks to Joseph Wang.)

Instruments

  • Added mixing-factor parameter to Heston finite-differences barrier, rebate and double-barrier engines (thanks to Jack Gillett).
  • Added a few additional results to Black swaption engine and to analytic European option engine (thanks to Peter Caspers and Marcin Rybacki).
  • Improved calculation of spot date for vanilla swap around holidays (thanks to Paul Giltinan).
  • Added ex-coupon feature to amortizing bonds, callable bonds and convertible bonds.
  • Added optional first-coupon day counter to fixed-rate bonds (thanks to Jacob Lee-Howes).

Math

  • Added convenience classes LogCubic and LogMixedLinearCubic hiding a few default parameters (thanks to Andrea Maffezzoli).

Models

  • Added control variate based on asymptotic expansion for the Heston model (thanks to Klaus Spanderen).

Date/time

  • Added missing Hong Kong holiday (thanks to GitHub user CarrieMY).
  • Added a couple of one-off closing days to the Romanian calendar.
  • Added a one-off holiday to South Korean calendar (thanks to GitHub user fayce66).
  • Added a missing holiday to Turkish calendar (thanks to Berat Postalcioglu).

Documentation

  • Added basic documentation to optimization methods (thanks to GitHub user martinbrose).

Deprecated features

  • Features deprecate in version 1.16 were removed: a constructor of the FdmOrnsteinUhlenbeckOp class and a constructor of the SwaptionVolatilityMatrix class.

- C++
Published by lballabio over 5 years ago

quantlib - 1.19

Changes for QuantLib 1.19:

QuantLib 1.19 includes 40 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/15?closed=1.

Portability

  • Support for Visual C++ 2012 is being deprecated. It will be dropped around the end of 2020 or the beginning of 2021 in order to enable use of C++11 features.
  • Avoided use in Makefiles of functions only available to GNU Make (thanks to GitHub user UnitedMarsupials for the heads-up).

Build

  • Automated builds on Travis and GitHub Actions were extended. We now have a build for Mac OS X, as well as a few builds that run a number of checks on the code (including clang-tidy) and automatically open pull requests with fixes.

Term structures

  • Added options for iterative bootstrap to widen the search domain or to keep the best result upon failure (thanks to Francis Duffy).
  • Added flat-extrapolation option to fitted bond curves (thanks to Peter Caspers).

Instruments

  • Added finite-difference pricing engine for equity options under the Cox-Ingersoll-Ross process (thanks to Lew Wei Hao).
  • Added Heston engine based on exponentially-fitted Laguerre quadrature rule (thanks to Klaus Spanderen).
  • Added Monte Carlo pricing engines for lookback options (thanks to Lew Wei Hao).
  • Added Monte Carlo pricing engine for double-barrier options (thanks to Lew Wei Hao).
  • Added analytic pricing engine for equity options under the Vasicek model (thanks to Lew Wei Hao).
  • The Bond::yield method can now specify a guess and whether the passed price is clean or dirty (thanks to Francois Botha).

Models

  • Improved grid scaling for FDM Heston SLV calibration, and fixed drift and diffusion for Heston SLV process (thanks to Klaus Spanderen and Peter Caspers).
  • Added mixing factor to Heston SLV process (thanks to Lew Wei Hao).

Math

  • Improved nodes/weights for the exponentially fitted Laguerre quadrature rule and added sine and cosine quadratures (thanks to Klaus Spanderen).

Date/time

  • Improved performance of the Calendar class (thanks to Leonardo Arcari).
  • Updated holidays for Indian and Russian calendars (thanks to Alexey Indiryakov).
  • Added missing All Souls Day holiday to Mexican calendar (thanks to GitHub user phil-zxx for the heads-up).
  • Restored New Year's Eve holiday to Eurex calendar (thanks to Joshua Engelman).

Deprecated features

  • Features deprecate in version 1.15 were removed: constructors of inflation swap helpers, inflation-based pricing engines and inflation coupon pricers that didn't take a nominal term structure.
  • The constructor of BMAIndex taking a calendar was deprecated.
  • The constructors of several interest-rate term structures taking jumps without a reference date were deprecated.
  • The CurveDependentStepCondition class and related typedefs were deprecated.
  • The constructor of BlackCalibrationHelper taking an interest-rate structure was deprecated.
  • The constructors of several inflation curves taking a nominal curve were deprecated. The nominal curve should now be passed to the used coupon pricers.

- C++
Published by lballabio over 5 years ago

quantlib - 1.18

Changes for QuantLib 1.18:

QuantLib 1.18 includes 34 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/14?closed=1.

Portability

  • As announced in the past release, support of Visual C++ 2010 is dropped. Also, we'll probably deprecate Visual C++ 2012 in the next release in order to drop it around the end of 2020.

Build

Term structures

  • A new GlobalBootstrap class can now be used with PiecewiseYieldCurve and other bootstrapped curves (thanks to Peter Caspers). It allows to produce curves close to Bloomberg's.
  • The experimental SofrFutureRateHelper class and its parent OvernightIndexFutureRateHelper can now choose to use either compounding or averaging, in order to accommodate different conventions for 1M and 3M SOFR futures (thanks to GitHub user tani3010).
  • The FraRateHelper class has new constructors that take IMM start / end offsets (thanks to Peter Caspers).
  • It is now possible to pass explicit minimum and maximum values to the IterativeBootstrap class. The accuracy parameter was also moved to the same class; passing it to the curve constructor is now deprecated.

Instruments

  • It is now possible to build fixed-rate bonds with an arbitrary schedule, even without a regular tenor (thanks to Steven Van Haren).

Models

  • It is now possible to use normal volatilities to calibrate a short-rate model over caps.

Date/time

  • The Austrian calendar was added (thanks to Benjamin Schwendinger).
  • The German calendar incorrectly listed December 31st as a holiday; this is now fixed (thanks to Prasad Somwanshi).
  • Chinese holidays were updated for 2020 and the coronavirus event (thanks to Cheng Li).
  • South Korea holidays were updated for 2016-2020 (thanks to GitHub user fayce66).
  • In the calendar class, holidayList is now an instance method; the static version is deprecated. The businessDayList method was also added. (Thanks to Piotr Siejda.)
  • A bug in the 30/360 German day counter was fixed (thanks to Kobe Young for the heads-up).

Optimizers

  • The differential evolution optimizer was updated (thanks to Peter Caspers).

Currencies

  • Added Kazakstani Tenge to currencies (thanks to Jonathan Barber).

Deprecated features

  • Features deprecate in version 1.14 were removed: one of the constructors of the BSMOperator class, the whole OperatorFactory class, and the typedef CalibrationHelper which was used to alias the BlackCalibrationHelper class.
  • The CalibrationHelperBase class is now called CalibrationHelper. The old name remains as a typedef but is deprecated.
  • The overload of CalibratedModel::calibrate and CalibratedModel::value taking a vector of BlackCalibrationHelpers are deprecated in favor of the ones taking a vector of CalibrationHelpers.
  • The static method Calendar::holidayList is deprecated in favor of the instance method by the same name.
  • The constructors of PiecewiseDefaultCurve and PiecewiseYieldCurve taking an accuracy parameter are deprecated in favor of passing the parameter to an instance of the bootstrap class.
  • The constructors of BondHelper and derived classes taking a boolean flag to choose between clean and dirty price are deprecated in favor of the ones taking a Bond::Price::Type argument. The useCleanPrice method is also deprecated in favor of priceType.

Thanks go also to Ralf Konrad, Klaus Spanderen, Carlos Fidel Selva Ochoa, F. Eugene Aumson and Francois Botha for smaller fixes, enhancements, and bug reports.

- C++
Published by lballabio almost 6 years ago

quantlib - 1.17

Changes for QuantLib 1.17:

QuantLib 1.17 includes 30 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/13?closed=1.

Portability

  • As of this release, support of Visual C++ 2010 is deprecated; it will be dropped in next release. Also, we'll probably deprecate Visual C++ 2012 in one of the next few releases in order to drop it around the end of 2020.

Configuration

  • A new function compiledBoostVersion() is available, (thanks to Andrew Smith). It returns the version of Boost used to compile the library, as reported by the BOOST_VERSION macro. This can help avoid linking the library with user code compiled with a different Boost version (which can result in erratic behavior).
  • It is now possible to specify at run time whether to use indexed coupons (thanks to Ralf Konrad). The compile-time configuration is still used as a default, but it is also possible to call either of the static methods IborCoupon::createAtParCoupons or IborCoupon::createIndexedCoupons to specify your preference. For the time being, the methods above must necessarily be called before creating any instance of IborCoupon or of its derived classes.

Build

  • As of this version, the names of the binaries produced by the included Visual C++ solution no longer contain the toolset version (e.g., v142).

Instruments

  • Added ex-coupon functionality to floating-rate bonds (thanks to Steven Van Haren).
  • The inner structure Callability::Price was moved to the class Bond and can now be used to specify what kind of price was passed to the BondFunctions::yield method (thanks to Francois Botha).
  • It is now possible to use a par-coupon approximation for FRAs like the one used in Ibor coupons (thanks to Peter Caspers).

Pricing engines

  • Added escrowed dividend model to the new-style FD engine for DividendVanillaOption (thanks to Klaus Spanderen).
  • Black cap/floor engine now also returns caplet deltas (thanks to Wojciech Slusarski).

Term structures

  • OIS rate helpers can now choose whether to use as a pillar for the bootstrap either their maturity date or the end date of the last underlying fixing. This provides an alternative if the bootstrap should fail. (Thanks to Drew Saunders for the heads-up.)
  • Instances of the FittedBondDiscountCurve class now behave as simple evaluators (that is, they use the given paramters without performing root-solving) when the maxIterations parameter is set to 0. (Thanks to Nick Firoozye for the heads-up.)

Date/time

  • Added a few special closing days to the US government bond calendar (thanks to Mike DelMedico).
  • Fixed an incorrect 2019 holiday in Chinese calendar (thanks to Cheng Li).
  • Added missing holiday to Swedish calendar (thanks to GitHub users periculus and tonyzhipengzhou).

Deprecated features

  • The classes FDEuropeanEngine, FDAmericanEngine, FDBermudanEngine, FDDividendEuropeanEngine, FDDividendEuropeanEngineShiftScale, FDDividendAmericanEngine, FDDividendAmericanEngineShiftScale are now deprecated. They are superseded by FdBlackScholesVanillaEngine.

Thanks go also to Joel King, Kai Striega, Francis Duffy, Tom Anderson and GitHub user lab4quant for smaller fixes, enhancements, and bug reports.

- C++
Published by lballabio about 6 years ago

quantlib - 1.16

Changes for QuantLib 1.16:

QuantLib 1.16 includes 34 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/12?closed=1.

Portability

  • Added support for Visual Studio 2019 (thanks to Paul Giltinan).

Configuration

  • As announced in past release, the compile-time switch to force non-negative rates was removed.

Pricing engines

  • Added constant elasticity of variance (CEV) pricing engines for vanilla options. Analytic, FD and SABR engines are available (thanks to Klaus Spanderen).
  • Added quanto pricing functionality to a couple of FD engines for DividendVanillaOption (thanks to Klaus Spanderen).

Cash flows

  • Digital coupons can now optionally return the value of the naked option (thanks to Peter Caspers).

Date/time

  • Updated Taiwan holidays for 2019 (thanks to Hank Liu).
  • Added two newly announced holidays to Chinese calendar (thanks to Cheng Li).
  • Updated Japan calendar (thanks to Eisuke Tani).
  • Fixed New Year's day adjustment for Canadian calendar (thanks to Roy Zywina).
  • Added a couple of exceptions for UK bank holidays (thanks to GitHub user Vililikku for the heads-up).
  • Added French calendar (thanks to GitHub user NJeanray).
  • Added public methods to expose a calendar's added and removed holidays (thanks to Francois Botha).
  • Allow the stub date of a schedule to equal the maturity.

Deprecated features

  • Deprecated a constructor of the SwaptionVolatilityMatrix class that didn't take a calendar.
  • Removed typedefs GammaDistribution, ChiSquareDistribution, NonCentralChiSquareDistribution and InverseNonCentralChiSquareDistribution, deprecated in version 1.12. Use CumulativeGammaDistribution, CumulativeChiSquareDistribution, NonCentralCumulativeChiSquareDistribution and InverseNonCentralCumulativeChiSquareDistribution instead.
  • Removed Actual365NoLeap class, deprecated in version 1.11. It was folded into Actual365Fixed.

Term structures

  • Take payment days into account when calculating the nodes of a bootstrapped curve based on overnight swaps.

- C++
Published by lballabio over 6 years ago

quantlib - 1.15

Changes for QuantLib 1.15:

QuantLib 1.15 includes 32 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/11?closed=1.

Portability

  • This release drops support for Boost version 1.43 to 1.47; the minimum required version is now Boost 1.48, released in 2011.
  • Added a .clang-format file to the repository. The format is not going to be enforced, but the style file is provided as a convenience in case you want to format new code according to the conventions of the library.
  • boost::function, boost::bind and a few related classes and functions were imported into the new namespace QuantLib::ext. This allows them to be conditionally replaced with their std:: versions (see the "opt-in features" section below). The default is still to use the Boost implementation. Client code using the boost namespace explicitly doesn't need to be updated.

Models

  • Added an experimental volatility basis model for caplet and swaptions (thanks to Sebastian Schlenkrich).

Pricing engines

  • It is now possible to specify polynomial order and type when creating a MCAmericanBasketEngine instance (thanks to Klaus Spanderen).

Term structures

  • Inflation curves used to store the nominal curve used during their construction. This is still supported for backward compatibility, but is deprecated. You should instead pass the nominal curve explicitly to objects that need one (e.g., inflation helpers, engines, or cashflow pricers).
  • Added experimental helpers to bootstrap an interest-rate curve on SOFR futures (thanks to Roy Zywina).

Indexes

  • It is now possible to choose the fixing calendar for the BMA index (thanks to Jan Ladislav Dussek).

Cash flows

  • Fixed broken observability in CMS-spread coupon pricer (thanks to Peter Caspers).

Date/time

  • Fix implementation of Actual/Actual (ISMA) day counter in case a schedule is provided (thanks to Philip Stephens).
  • Fix implementation of Calendar::businessDaysBetween method when the initial and final date are the same (thanks to Weston Steimel).
  • Added day of mourning for G.H.W. Bush to the list of United States holidays (thanks to Joshua Engelman).
  • Updated list of Chinese holidays for 2019 (thanks to Cheng Li).
  • Added basic unit tests for the TimeGrid class (thanks to Kai Striega).

Math

  • Prevent solver failure in Richardson extrapolation (thanks to Klaus Spanderen).

Examples

  • Added multi-curve bootstrapping example (thanks to Jose Garcia). This examples supersedes the old swap-valuation example, that was therefore removed.

Deprecated features

  • Up to this release, it has been possible to force interest rates to be non-negative by commenting the QL_NEGATIVE_RATES macro in ql/userconfig.hpp on Visual C++ or by passing the --disable-negative-rates switch to ./configure on other systems. This possibility will no longer be supported in future releases.

New opt-in features

  • It is now possible to use std::function, std::bind and their related classes instead of boost::function and boost::bind. The feature can be enabled by uncommenting the QL_USE_STD_FUNCTION macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-std-function switch to ./configure on other systems. This requires using at least the C++11 standard during compilation.
  • A new ./configure switch, --enable-std-classes, was added as a shortcut for --enable-std-pointers --enable-std-unique-ptr --enable-std-function.

- C++
Published by lballabio about 7 years ago

quantlib - 1.14

Changes for QuantLib 1.14:

QuantLib 1.14 includes 40 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/10?closed=1.

Portability

  • In April 2018, Microsoft ended its support for Microsoft Visual C++ 2008. As previously announced, this release drops support for it.
  • Fixed generation of RPM from QuantLib.spec (thanks to Simon Rees).
  • Avoided uses of some features removed in C++17 so that the library can be compiled under the latest standard if needed.
  • boost::shared_ptr and a few related classes and functions were imported into the new namespace QuantLib::ext. This allows them to be conditionally replaced with their std:: versions (see the "opt-in features" section below). The default is still to use the boost implementation. Client code using the boost namespace explicitly doesn't need to be updated.
  • Fixed build and tests on FreeBSD-11 (thanks to Klaus Spanderen and to Mikhail Teterin for the heads-up).
  • Fixed tests with the -ffast-math compilation flag enabled (thanks to Klaus Spanderen and to Jon Davies for the heads-up).

Instruments and pricing engines

  • Add different settlement methods for swaptions (thanks to Peter Caspers).
  • Take into account distinct day-count conventions for different curves in the analytic barrier-option engine (thanks to GitHub user cosplay-raven).
  • Extract the correct constant coefficients to use in finite-difference vanilla-option engine when using a time-dependent Black-Scholes process (thanks to GitHub user Grant6899 for the analysis).

Cash flows and interest rates

  • Added Bibor and THBFIX indices (thanks to Matthias Lungwitz).

Models

  • Added a hook for using a custom smile model in the Markov functional model (thanks to Peter Caspers).
  • Added a base class CalibrationHelperBase to the hierarchy of calibration helpers in order to allow for helpers not using the Black model.
  • Return underlying dynamics from Black-Karasinski model (thanks to Fanis Antoniou).

Finite differences

  • Added higher-order spatial operators (thanks to Klaus Spanderen).
  • Added TR-BDF2 finite-difference scheme (thanks to Klaus Spanderen).

Term structures

  • Allow swap helpers to specify end-of-month convention (thanks to Matthias Lungwitz).

Date/time

  • Prevented division by zero in Actual/365 Canadian day counter (thanks to Ioannis Rigopoulos for the heads-up).
  • Added Children's Day to the list of Romanian holidays (thanks to Matthias Lungwitz).
  • Added new calendar for Thailand (thanks to Matthias Lungwitz).
  • Added 30/360 German day counter (thanks to Peter Caspers and Alexey Indiryakov).

Math

  • Fixed bug in convex-monotone interpolation (thanks to Peter Caspers for the fix and to Tom Anderson for finding the bug).

New opt-in features

  • It is now possible to use std::shared_ptr and its related classes instead of boost::shared_ptr. Note that, unlike its boost counterpart, std::shared_ptr doesn't check for null pointers before access; this can lead to crashes. The feature can be enabled by uncommenting the QL_USE_STD_SHARED_PTR macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-std-pointers to ./configure on other systems. This requires using at least the C++11 standard during compilation.
  • It is now possible to use std::unique_ptr instead of std::auto_ptr; this makes it possible to compile the library in strict C++17 mode and to avoid deprecation warnings in C++11 and C++14 mode. The feature can be enabled by uncommenting the QL_USE_STD_UNIQUE_PTR macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-std-unique-ptr to ./configure on other systems.

Thanks go also to Sam Danbury, Barry Devlin, Roland Kapl, and GitHub user todatamining for smaller fixes, enhancements, and bug reports.

- C++
Published by lballabio over 7 years ago

quantlib - 1.13

Changes for QuantLib 1.13:

QuantLib 1.13 includes 42 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/8?closed=1.

Portability

  • In April 2018, Microsoft ended its support for Microsoft Visual C++ 2008. This release still includes a solution file for VC++ 2008, but we won't support it further or take bug reports for it. The next release will only contain project files for Visual C++ 2010 and later.
  • Fixed build on Solaris 12.5 in C++11 mode (thanks to Nick Glass).

Instruments and pricing engines

  • Fix CDS calculation when the start date falls during the week-end (thanks to Guillaume Horel).
  • Allow construction of a ForwardRateAgreement instance even if the interest-rate curve is not yet linked (thanks to Tom Anderson).

Cash flows and interest rates

  • Added Mosprime, Pribor, Robor and Wibor indices (thanks to Matthias Lungwitz).
  • Improved performance of Black pricer for LIBOR coupons (thanks to Peter Caspers).
  • Fixed experimental quanto coupon pricer (thanks to Peter Caspers).
  • Revised experimental CMS-spread coupon pricer (thanks to Peter Caspers).

Models

  • Improvements for the experimental generalized Hull-White model (thanks to Roy Zywina).
  • Fixed drift in GSR process (thanks to Peter Caspers for the fix and to Seung Beom Bang for the heads up).
  • Fixed an out-of-bound access in the TwoFactorModel::ShortRateDynamics::process method (thanks to Weston Steimel).

Finite differences

  • Improved Black-Scholes mesher for low volatilities and high discrete dividends (thanks to Klaus Spanderen).
  • Added method-of-lines scheme (thanks to Klaus Spanderen).

Date/time

  • Schedule::until can now be used with schedules built from vectors of dates (thanks to GitHub user Grant6899).
  • Added Good Friday to the list of Hungarian and Czech holidays (thanks to Matthias Lungwitz).
  • Updated the list of Turkish holidays after 2014 (thanks to Matthias Lungwitz).

Math

  • Added convenience operators to initialize array and matrices (thanks to Peter Caspers).

Test suite

  • Added test case for CIR++ model (thanks to Klaus Spanderen).

Thanks go also to Jose Aparicio, Roland Kapl and GitHub user lab4quant for smaller fixes and enhancements.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.12.1

Changes for QuantLib 1.12.1:

QuantLib 1.12.1 is a bug-fix release for version 1.12.

It fixes an error that would occur during initialization of the test suite when using the newly released Boost 1.67.0 (see https://github.com/lballabio/QuantLib/pull/446 for details). Thanks to Klaus Spanderen for the prompt fix.

The library code is unchanged from version 1.12.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.12

Changes for QuantLib 1.12:

QuantLib 1.12 includes 54 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/7?closed=1.

Portability

  • As announced in the previous release, support for the Dev-C++ IDE was removed.
  • In April 2018, Microsoft will end its support for Microsoft Visual C++ 2008. Therefore, this is the last version of QuantLib to support it with maintained project files. The next release will only contain project files for Visual C++ 2010 and later.
  • It is now possible to build a usable library with CMake on Windows (thanks to Javier G. Sogo).
  • Fix autotools build outside the source tree (thanks to Joshua Ulrich).

Instruments and pricing engines

  • Added OAS calculation to experimental callable bonds (thanks to Bojan Nikolic).
  • Avoided infinite loop for some sets of parameters in experimental variance-gamma engine (thanks to Roy Zywina).

Cash flows

  • It is now possible to build a cash-flow leg from a schedule created from a precalculated vector of dates (thanks to Peter Caspers).

Models

  • Affine models can now be used to bootstrap a default-probability curve (thanks to Jose Aparicio).
  • Added Andreasen-Huge volatility interpolation and local volatility calibration (thanks to Klaus Spanderen).
  • Added Rannacher smoothing steps for Heston stochastic local volatility calibration (thanks to Klaus Spanderen).

Term structures

  • Added L2 penalty to fitted parameters of fitted bond discount curve (thanks to Robin Northcott).
  • Added an optional trading calendar to the FX-swap rate helper and and optional payment lag to the OIS rate helper (thanks to Wojciech Slusarski).
  • Fixed inconsistent treatment of strike in experimental CPI cap/floor term price surface (thanks to Francis Duffy).
  • Correctly handled the case of overlapping strike regions for caps and floors in experimental CPI cap/floor term price surface (thanks to Peter Caspers).
  • Fixed calculation of seasonality correction for interpolated inflation indexes (thanks to Francis Duffy).
  • Implemented composite zero-yield curve as combination of two existing curves via a given binary function (thanks to Francois Botha).
  • Fixed interpolation of shift in swaption volatility matrix (thanks to Peter Caspers).

Date/time

  • Updated Chinese calendar for 2018 (thanks to Cheng Li).
  • Added Botswana calendar (thanks to Francois Botha).
  • Fixed a few problems with US calendars (thanks to Mike DelMedico and to GitHub user ittegrat).
  • User-added holidays now work correctly when intraday calculations are enabled (thanks to Klaus Spanderen for the fix and to GitHub user volchemist for the report).

Math

  • Fixed monotonicity of Fritsch-Butland and prevented NaNs in some cases (thanks to GitHub user Grant6899 for the fix and to Tom Anderson for the report).

Deprecated features

  • The ChiSquareDistribution, NonCentralChiSquareDistribution, InverseNonCentralChiSquareDistribution and GammaDistribution were renamed to CumulativeChiSquareDistribution, NonCentralCumulativeChiSquareDistribution, InverseNonCentralCumulativeChiSquareDistribution and CumulativeGammaDistribution, respectively (thanks to GitHub user IGonza). The old names are still available as typedefs and will be removed in a future release.

Thanks go also to Marco Craveiro, Dirk Eddelbuettel, Lakshay Garg, Guillaume Horel, Alix Lassauzet, Patrick Lewis, and GitHub users bmmay, bingoko and tournierjc for smaller fixes and enhancements.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.11

Changes for QuantLib 1.11:

QuantLib 1.11 includes 47 pull requests and fixed issues from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/6?closed=1.

Portability

  • This is the last version of QuantLib to support the now obsolete Dev-C++ IDE with a maintained project file. The project will be removed in next release.

Instruments and pricing engines

  • Added ISDA pricing engine for credit default swaps (thanks to Guillaume Horel, Jose Aparicio and Peter Caspers).
  • Added Andersen-Piterbarg engine for the Heston model (thanks to Klaus Spanderen).
  • Improved experimental vanna-volga engine for double-barrier knock-in options (thanks to Giorgio Pazmandi).
  • Added theta calculation to experimental Kirk spread-option engine (thanks to Krzysztof Wos).

Cash flows

  • Added optional payment lag to fixed, floating and OIS legs (thanks to Fabrice Lecuyer and Joseph Jeisman).
  • Fixed yield calculation with 30/360 US day count convention and settlement on the 31st of the month (thanks to Frank Xue).

Models

  • Added adaptive successive over-relaxation method for implied volatility calculation (thanks to Klaus Spanderen).

Indexes

  • Fixed day-count convention and spot lag for CAD LIBOR (thanks to Oleg Kulkov).

Term structures

  • Optionally optimize setting up OIS helpers (thanks to Peter Caspers).

Date/time

  • Added Actual/365 Canadian day count convention (thanks to Andrea Maggiulli).

Math

  • Added GMRES iterative solver for large linear systems (thanks to Klaus Spanderen).
  • Updated Hong Kong calendar up to 2020 (thanks to Nicholas Bertocchi and Alix Lassauzet).

Build

  • Added configure switch to enable unity build.

Test suite

  • Added --fast and --faster flags to the test-suite executable. When passed, slower tests are discarded so that the test suite runs in just a few minutes.

Deprecated features

  • Remove the HestonExpansionEngine::numberOfEvaluations method (deprecated in version 1.9).
  • Remove the MixedLinearCubicInterpolation and MixedLinearCubic constructors not specifying the behavior of the mixed interpolation (deprecated in version 1.8).
  • Remove deprecated overloads of the Swaption::impliedVolatility and CapFloor::impliedVolatility methods (deprecated in version 1.9).
  • Remove NoArbSabrModel::checkAbsorptionMatrix method (deprecated in version 1.8.1).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.10.1

Changes for QuantLib 1.10.1:

QuantLib 1.10.1 is a bug-fix release for version 1.10.

  • Prevented a name clash when using the newly-released Boost 1.65.0 with g++ 6.3.
  • Added a few missing function declarations in the SwaptionVolatilityStructure class (thanks to Peter Caspers).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.10

Changes for QuantLib 1.10:

QuantLib 1.10 includes 59 pull requests and fixed issues from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/5?closed=1.

Portability

  • Added support for the recently released Visual Studio 2017.
  • Unified Visual Studio solution file. The provided QuantLib.sln file works for all versions from 2010 to 2017.
  • Added support for the recently released Boost 1.64.0 (thanks to Klaus Spanderen).
  • Converted non-ASCII characters in source files to UTF-8; this should make them work with most editors (thanks to Krzysztof Woś and Jose Aparicio).
  • Fixed some compilation issues with older versions of the Sun CC compiler and with the gcc 3.4 series. The offending code has simply been disabled; when using those compilers, is also suggested to downgrade Boost to an older version since more recent ones can give problems. Boost 1.54.0 was reported to work. It is likely that no further support will be given to these compilers in future releases.

Instruments and pricing engines

  • Added Heston pricing engine based on Fourier-Cosine series expansion (thanks to Klaus Spanderen).
  • Added cash annuity model in Black swaption engine (thanks to Peter Caspers, Werner Kuerzinger and Paul Giltinan).
  • Add an optional exogenous discount curve to analytic Black European option engine (thanks to Paul Giltinan).

Models

  • Added collocating local-volatility model (thanks to Klaus Spanderen).
  • Optionally disable Feller constraint in Cox-Ingersoll-Ross model (thanks to Oleksandr Khomenko).

Interest rates

  • Allow using an arbitrary solver to calculate yield (thanks to Daniel Hrabovcak).
  • Update handling of July 4th for US LIBOR fixings (thanks to Oleg Kulkov for the heads-up).
  • Added CompoundingThenSimple convention (thanks to Martin Ross).

Inflation

  • Use the lagged reference period to interpolate inflation fixings (thanks to Francois Botha).

Volatility

  • Reduce the memory footprint of OptionletStripper1 (thanks to Matthias Lungwitz)

Date/time

  • Updated Chinese calendar for 2017 (thanks to Cheng Li).
  • Added CDS2015 date-generation rule with the correct semiannual frequency (thanks to Guillaume Horel).
  • The Iceland calendar used to incorrectly adjust New Year's Day to the next Monday when falling on a holiday. That's now fixed (thanks to Stefan Gunnsteinsson for the heads-up).
  • Fixed bug that prevented correct calculation of an ECB date on the first day of a month (thanks to Nicholas Bertocchi).
  • Fixed bug in Schedule that ignored end-of-month convention when calculating reference dates for irregular coupons (thanks to Ryan Taylor).
  • Allow passing a schedule to Actual/Actual day counter for correct calculation of reference dates (thanks to Ryan Taylor).

Math

  • Added harmonic spline interpolation (thanks to Nicholas Bertocchi).

Examples

  • Added examples for global optimizers (thanks to Andres Hernandez).

Deprecated features

  • Removed the SwaptionHelper constructors not taking an explicit volatility type (deprecated in version 1.8).
  • Removed the SwaptionVolatilityMatrix constructors not taking an explicit volatility type (deprecated in version 1.8).
  • Removed the BlackSwaptionEngine constructor overriding the displacement from the given volatility structure (deprecated in version 1.8).
  • Removed the FlatSmileSection and InterpolatedSmileSection constructors not taking an explicit volatility type (deprecated in version 1.8).
  • Removed the RiskyAssetSwapOption constructor taking a side (deprecated in version 1.8).

Possibly breaking changes

  • The constructors of a few Libor-like indexes were made explicit. This means that code such as the following, which used to compile, will now break. That's probably a good thing.

    Handle forecastcurve; Euribor6M index = forecastcurve;

- C++
Published by lballabio almost 8 years ago

quantlib - 1.9.2

Changes for QuantLib 1.9.2:

QuantLib 1.9.2 is a bug-fix release for QuantLib 1.9.1.

  • Prevented errors in yield-curve bootstrapping tests due to an incorrect test setup (thanks to Peter Caspers for the heads-up).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.9.1

Changes for QuantLib 1.9.1:

QuantLib 1.9.1 is a bug-fix release for QuantLib 1.9.

  • Prevented a linking error when multiple compilation units included the global ql/quantlib.hpp header (thanks to Dirk Eddelbuettel).
  • Prevented a compilation error with gcc 4.4 on RedHat (thanks to GitHub user aloupos for the heads-up).
  • Prevented a compilation error with the parallel unit runner and the recently released Boost 1.63.0.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.9

Changes for QuantLib 1.9:

QuantLib 1.9 includes 27 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/3?closed=1.

Portability

  • Dropped support for Visual C++ 8 (2005). As of April 2016, the compiler is no longer supported by Microsoft.
  • Allow the parallel test runner to work with Boost 1.62 (thanks to Klaus Spanderen for the fix and to Andrei Borodaenko for the heads-up).

Interest rates

  • Allow negative jumps in interest-rate curves. Previously, trying to pass one would result in an exception (thanks to Leanpub reader Jeff for the heads-up).
  • Added BBSW and Aonia indexes from Australia and BKBM and NZOCR indexes from New Zealand (thanks to Fabrice Lecuyer).

Volatility

  • Added normal implied-volatility calculation to caps/floors (thanks to Paolo Mazzocchi).

Instruments

  • Fix a scenario in which a CompositeInstrument instance would stop receiving notifications (thanks to Peter Caspers for the heads-up).
  • Added a few safety checks to the CVA swap engine (thanks to Andrea Maggiulli).
  • Auto-deactivate Boyle-Lau optimization for barrier options when not using a CRR tree (thanks to Riccardo Ghetta).

Date/time

  • Changed data type for Date serial numbers to int_fast_32t to improve performance of date calculations (thanks to Peter Caspers).
  • Added ECB maintenance period dates for 2017 (thanks to Paolo Mazzocchi).
  • Fixed rule for the Japanese Mountain Day holiday (thanks to Eisuke Tani).
  • Fixed United States holidays before 1971 (thanks to Nick Glass for the heads-up).
  • Added a missing Chinese holiday (thanks to Cheng Li).
  • Ensure correct formatting when outputting dates (thanks to Peter Caspers).

New opt-in features

These features are disabled by default and can be enabled by defining a macro or passing a flag to ./configure. Feedback is appreciated.

  • Enable thread-safe singleton initialization (thanks to GitHub user sdgit). The feature can be enabled by uncommenting the QL_ENABLE_SINGLETON_THREAD_SAFE_INIT macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-thread-safe-singleton-init to ./configure on other systems.

Experimental folder

The ql/experimental folder contains code whose interface is not fully stable, but is released in order to get user feedback. Experimental classes make no guarantees of backward compatibility; their interfaces might change in future releases.

Changes and new contributions for this release were:

  • OIS with arithmetic average (thanks to Stefano Fondi). A corresponding bootstrap helpers is also available.
  • a function to calculate multi-curve sensitivities (thanks to Michael von den Driesch).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.8.1

Changes for QuantLib 1.8.1:

QuantLib 1.8.1 is a bug-fix release for version 1.8.

  • A test failure with Visual C++ 14 (2015) was avoided. Up to VC++14 update 2, the compiler would inline a call to std::min and std::max incorrectly causing a calculation to fail (thanks to Ivan Cherkasov for the heads-up).
  • A test failure with the upcoming Boost 1.62 was avoided. A QuantLib test was checking for the stored value of a hash whose value changed in Boost 1.62.
  • Miscellaneous fixes for the g1d swaption engine and instrument (thanks to Peter Caspers).
  • Whit Monday was no longer a holiday in Sweden since 2005 (thanks to Stefano Fondi).
  • A new holiday for election day 2016 was added to the South African calendar (thanks to Jasen Mackie).
  • A few missing CMakeLists were added to the distributed release (thanks to izavyalov for the heads-up).
  • An irregular last period in a schedule was not reported as such (thanks to Schmidt for the heads-up).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.8

Changes for QuantLib 1.8

QuantLib 1.8 includes 45 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt.

Portability

  • The minimum required Boost version is now Boost 1.43 (May 2010). However, it is strongly suggested to use a recent version, or at least Boost 1.48 (November 2011).
  • Added initial CMake support (thanks to Dmitri Nesteruk). This makes it possible to compile QuantLib on CLion and other CMake-based tools.
  • The build now generates and installs pkg-config file on Linux systems (thanks to GitHub user njwhite).

Interest rates

  • Fixed links to documentation for LIBOR indexes (thanks to Jose Magana).

Volatility

  • Added the possibility to price swaptions and to calculate their implied volatilities in a Black-like model with normal volatilities as well as shifted lognormal (thanks to Peter Caspers).
  • Added the possibility to price caps in a Black-like model with normal volatilities as well as shifted lognormal (thanks to Michael von den Driesch).
  • Caplet strike is correctly recomputed during stripping (thanks to Michael von den Driesch).

Instruments

  • Added basic CVA IRS pricing engine (stand alone, no portfolio; no WWR, no collateral). Thanks to Jose Aparicio.

Models

  • Black-Scholes processes now return the closed-formula expectation, standard deviation and variance over long periods (thanks to Peter Caspers).

Currencies

  • Added Ukrainian hryvnia (thanks to GitHub user maksym-studenets).

Monte Carlo

  • Use different random-number generators for calibration and pricing in Longstaff-Schwartz engine (thanks to Peter Caspers).

Date/time

  • Added forecast dates for moving holidays to Saudi Arabia calendar up to 2022 (thanks to Jayanth R. Varma).
  • Added new Ukrainian holiday, Defender's Day (thanks to GitHub user maksym-studenets).
  • Added a few more holidays for South Korea (thanks to Faycal El Karaa).

Math

  • Added mixed log interpolation (thanks to GitHub user sfondi).
  • Avoid mixing different types while bit-shifting in fast Fourier transform on 64-bit systems (thanks to Nikolai Nowaczyk).

Deprecated features

  • Removed DateParser::split method (deprecated in version 1.6).

Test suite

The test suite is now run with a fixed evaluation date instead of using today's date. This helps avoid transient errors due to holidays. It is still possible to use today's date (or any other date) by running it as:

$ quantlib-test-suite -- --date=today

or

$ quantlib-test-suite -- --date=2016-02-08

(Thanks to Peter Caspers.)

New opt-in features

These features are disabled by default and can be enabled by defining a macro or passing a flag to ./configure. Feedback is appreciated.

  • Added a parallel unit-test runner (thanks to Klaus Spanderen). This was successfully used under Linux, but problems were reported on Mac OS X and occasionally on Visual C++ 2010. The feature requires Boost 1.59 or later and can be enabled by uncommenting the QL_ENABLE_PARALLEL_UNIT_TEST_RUNNER macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-parallel-unit-test-runner to ./configure on other systems.

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

Changes and new contributions for this release were:

  • Stochastic local-volatility Heston model, (thanks to Klaus Spanderen and Johannes Goettker-Schnetmann). Both a Monte Carlo and a finite-difference calibration and calculation are provided.
  • Laplace interpolation (thanks to Peter Caspers).
  • Global optimizers: Hybrid Simulated Annealing, Particle Swarm Optimization, Firefly Algorithm, and Differential Evolution (thanks to Andres Hernandez).
  • A SVD-based calculation of the Moore-Penrose inverse matrix (thanks to Peter Caspers).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.7.1

Changes for QuantLib 1.7.1

QuantLib 1.7.1 is a bug-fix release for version 1.7.

  • An unneeded dependency on the Boost.Thread library had slipped into version 1.7 and prevented a successful build when the library was not available. The dependency was removed (thanks to GitHub user MattPD).
  • Trying to build a schedule with a 4-weeks tenor would fail. This is now fixed (thanks to GitHub user smallnamespace for the heads-up).
  • A couple of errors in the list of past holidays for the Russian MOEX calendar was fixed, and the list of holidays for 2016 was added (thanks to Dmitri Nesteruk).
  • Chinese holidays for 2016 were updated (thanks to Cheng Li).
  • The correct curve is now used when calculating the at-the-money swap rate while building swaptions (thanks to Peter Caspers).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.7

Changes for QuantLib 1.7:

QuantLib 1.7 includes over 50 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt.

Interest rates

  • Added rate helper to bootstrap on cross-currency swaps (thanks to Maddalena Zanzi). The curve to be bootstrapped can be the one for either of the two currencies.
  • Added the possibility for bootstrap helpers to define their pillar date in different ways (thanks to Paolo Mazzocchi). For each helper, the date of the corresponding node can be defined as the maturity date of the corresponding instrument, as the latest date used on the term structure to price the instrument, or as a custom date. Currently, the feature is enabled for FRAs and swaps.
  • Added the possibility to pass weight when fitting a bond discount curve. Also, it is now possible to fit a spread over an existing term structure (thanks to Andres Hernandez).

Inflation

  • Added Kerkhof seasonality model (thanks to Bernd Lewerenz).
  • Retrieve inflation fixings from the first day of the month (thanks to Gerardo Ballabio). This avoids the need to store them for each day of the corresponding month.

Volatility

  • Improve consistency between caplet stripping and pricing (thanks to Michael von den Driesch)

Instruments

  • Fixed usage of dividend yield in double-barrier formula (Thanks to Dean Raf for the heads-up).
  • Fixed perturbation formula for barrier options.

Models

  • Refine update behavior of GSR model. Depending on the market change, only the appropriate recalculations are performed (thanks to Peter Caspers).
  • Improve calibration of Heston model (thanks to Peter Caspers).

Monte Carlo

  • Added the possibility to return the estimated exercise probability from a Longstaff-Schwartz engine (thanks to Giorgio Pazmandi).

Settings

  • Added the possibility to temporarily disable notifications to observers (thanks to Chris Higgs). When re-enabled, any pending notifications are sent.

Date/time

  • Added Romanian and Israelian calendars (thanks to Riccardo Barone).
  • Added ECB reserve maintenance periods for 2016 (thanks to Paolo Mazzocchi).
  • Updated South Korean calendar until the end of 2032 (thanks to Paolo Mazzocchi and Faycal El Karaa).
  • Added new Mountain Day holiday for Japan (thanks to Aaron Stephanic for the heads-up).
  • Remove MLK day from list of US holidays before 1983 (thanks to John Orford for the heads-up).
  • Added Christmas Eve to BOVESPA holidays (thanks to Daniel Beren for the heads-up).

Math

  • Added polynomial and abcd functions.
  • Added Pascal triangle coefficients.
  • Replaced home-grown implementation of incremental statistics with Boost implementation (thanks to Peter Caspers).
  • Added Goldstein line-search method (thanks to Cheng Li).

New opt-in features

These features are disabled by default and can be enabled by defining a macro or passing a flag to ./configure. Feedback is appreciated.

  • Added intraday component to dates (thanks to Klaus Spanderen). Date specifications now include hours, minutes, seconds, milliseconds and microseconds. Day counters are aware of the added data and include them in results. The feature can be enabled by uncommenting the QL_HIGH_RESOLUTION_DATE macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-intraday flag to ./configure on other systems.
  • Added thread-safe implementation of the Observer pattern (thanks to Klaus Spanderen). This can be used to avoid crashes when using QuantLib from languages (such as C# or Java) that run a garbage collector in a separate thread. The feature requires Boost 1.58 or later and can be enabled by uncommenting the QL_ENABLE_THREAD_SAFE_OBSERVER_PATTERN macro in ql/userconfig.hpp on Visual C++ or by passing the --enable-thread-safe-observer-pattern to ./configure on other systems.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.6.2

Changes for QuantLib 1.6.2:

QuantLib 1.6.2 is a compatibility release. It solves an ambiguous name resolution in the test-suite code when Visual Studio and the newly released Boost 1.59.0 are used together.

The library code did not change.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.6.1

Changes for QuantLib 1.6.1

QuantLib 1.6.1 is a compatibility release. It adds out-of-the-box support for the newly released Visual Studio 2015, and avoids use of deprecated Boost macros that will be removed in the upcoming Boost 1.59.0 release.

It is otherwise the same as version 1.6.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.6

Changes for QuantLib 1.6:

QuantLib 1.6 includes 65 pull requests from several contributors.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt.

Portability

  • Enable successful compilation with Boost 1.58 and either gcc or clang.
  • Enable multi-processor compilation on Visual C++ as a project switch (thanks to Giorgio Pazmandi).

Date/time

  • Added Moscow Exchange calendar (thanks to Dmitri Nesteruk).
  • Added 70th anniversary of anti-Japanese day to Chinese calendar (thanks to Cheng Li).
  • Fixed Chinese New Year date for 2010 (thanks to Cheng Li).
  • Added nearest-trading-day business day convention (thanks to Francois Botha).
  • Prevented normalization of a 7-days period to a 1-week period, since this doesn't apply to business days (thanks to Paolo Mazzocchi).
  • Allowed schedules built with a vector of dates to be used for coupon generation, given that the required information was provided (thanks to Peter Caspers).
  • Added support for Australian Security Exchange (ASX) dates (thanks to Maddalena Zanzi).
  • Added ECB dates for April and June 2016 (thanks to Paolo Mazzocchi).

Instruments

  • Extended digital American options to handle knock-off case (thanks to Riccardo Ghetta).
  • Extended barrier options to handle KIKO/KOKI barriers (thanks to Riccardo Ghetta).
  • Added Ikeda/Kunitomo engine, binomial engine and binary/digital engine for double-barrier option (thanks to Riccardo Ghetta).
  • Added Bachelier engine for caps/floors based on normal volatility (thanks to Michael von den Driesch).
  • Allowed non strike/type payoffs in finite-differences engine for vanilla options (thanks to Joseph Wang).
  • Fixed settlement days of BTP bonds.
  • Fixed generation of schedule for OIS and vanilla swaps.
  • Added support for ASX dates to futures rate helper (thanks to Maddalena Zanzi).

Models

  • Moved Markov functional model, GSR model, Gaussian 1D model and related engines, processes and term structures from the experimental folder to the code library (thanks to Peter Caspers).

Cash flows

  • Added CMS-spread coupons, including digital (thanks to Peter Caspers).

Indexes

  • Added CMS-spread index (thanks to Peter Caspers).
  • Fixed day-count convention for Fed Funds rate.

Term structures

  • Fixed bug where a valid previous curve state could be a bad guess for the next and lead to a bootstrap failure.
  • Allow negative adjustment for futures rate helpers (thanks to Paolo Mazzocchi).

Volatility

  • Added support for normal and displaced lognormal volatility to optionlet stripper (thanks to Michael von den Driesch).
  • Allowed calibration of the alpha of the SABR model to the ATM point while keeping beta, nu and rho fixed (thanks to Peter Caspers).
  • Added Chambers-Nawalkha implied-volatility approximation (thanks to Peter Caspers).
  • Added displaced lognormal swaption volatilities (thanks to Peter Caspers).
  • Allowed the optionlet boostrap to continue if one caplet can no be matched (thanks to Peter Caspers).
  • Added flat-extrapolation option to swaption ATM volatility matrix (thanks to Peter Caspers).
  • Implied swaption volatility cube for Gaussian 1-D model (thanks to Peter Caspers).

Math

  • Allowed user-defined Jacobian in optimization (thanks to Peter Caspers).

Miscellanea

  • Added IDR, MYR, RUB and VND currencies (thanks to Lucy King).

Deprecated features

  • Removed deprecated methods and constructors from the BlackVarianceTermStructure, BlackVolTermStructure, CapFloorTermVolatilityStructure, DateParser, FittedBondDiscountCurve, GeneralLinearLeastSquares, Handle, LocalVolTermStructure, OptionletVolatilityStructure, Settings, SwaptionVolatilityStructure and VolatilityTermStructure classes.

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

Changes and new contributions for this release were:

  • Finite-difference meshers based on multi-dimensional integrals (thanks to Klaus Spanderen).
  • SVI interpolation and a corresponding smile section (thanks to Peter Caspers).
  • ZABR volatility model (thanks to Peter Caspers).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.5

Changes for QuantLib 1.5:

QuantLib 1.5 includes about 60 pull requests from several contributors, ranging from small bug fixes to relevant new additions to the library.

The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt.

Portability

  • Unified project files for Visual Studio 10 and above. Different solutions are still provided for Visual Studio 10, 11 and 12.

Date/time

  • Added China Inter-Bank calendar (thanks to Cheng Li).
  • Added half-month modified following convention (thanks to Paolo Mazzocchi).
  • Added a few more historical closings for NYSE.
  • Updated the Hong Kong and China calendar for 2015.
  • Updated list of ECB dates up to the first two dates for 2016 (thanks to Paolo Mazzocchi).

Instruments

  • Improved Storage and Swing engine (thanks to Klaus Spanderen).
  • Fixed behavior of the Bjerksund Stensland engine for very small volatilities (thanks to Klaus Spanderen).
  • Add Heston expansion engine for European options (thanks to Fabien Le Floc'h).
  • Caps, floors and swaptions can use a displacement in implied-volatility calculation.
  • Added partial-time fixed and floating strike lookback options (thanks to Francois Botha).
  • Added binary barrier options (thanks to Riccardo Ghetta).
  • Added binomial engine for barrier options (thanks to Riccardo Ghetta).
  • Added Vecer engine for continuous-averaging Asian options (thanks to Bernd Lewerenz).

Cash flows

  • Added ex-coupon feature to fixed-rate bonds, CPI bonds and bond helpers (thanks to Francois Botha).
  • Fix calculation of sinking notionals when the coupon rate is very near 0 (thanks to Cheng Li).

Indexes

  • Added Shanghai Inter-bank Offering Rate index (thanks to Cheng Li).
  • Added Fed Fund index.
  • Added South-African CPI (thanks to Francois Botha).

Term structures

  • Improvement to CMS market calibration: enabled use of general coupon pricers, added calibration to a term structure of betas (thanks to Peter Caspers).
  • InterpolatedZeroCurve can be passed rates with any compounding convention and frequency (thanks to Alexandre Radicchi).
  • Bond helpers can now use quotes for either clean or dirty prices (thanks to Francois Botha).
  • Added CPI bond helper (thanks to Francois Botha).
  • Better handling in rate helpers of evaluation dates which are not business dates.
  • Spreaded curves allow extrapolation if their underlying curve does (thanks to Peter Caspers).
  • Fixed inflation-rate interpolation (thanks to Amine Ifri).

Math

  • Added generation of student-t distributed random numbers (thanks to Jose Aparicio).
  • Added Folin's integration methods (thanks to Klaus Spanderen).
  • Added mixed backward-flat/linear interpolation (thanks to Peter Caspers).
  • Improved performance of matrix multiplication (thanks to Peter Caspers).
  • Fixed wrong primitive calculation in mixed interpolation (thanks to Peter Caspers).
  • Fixed corner case for finite-difference Newton solver leading to infinite derivative (thanks to Peter Caspers).
  • Added Maddock's cumulative normal distribution (thanks to Klaus Spanderen).
  • Added bivariate cumulative student t distribution (thanks to Michal Kaut).

Lattices

  • Calculate option delta/gamma on binomial trees using Hull formulas (thanks to Riccardo Ghetta).

Miscellanea

  • A number of small performance improvements (thanks to Michael Sharpe).

Examples

  • Added example for Gaussian 1-D models (thanks to Peter Caspers).
  • Added examples for latent models and basket losses (thanks to Jose Aparicio).
  • Added example for multi-dimensional integral (thanks to Jose Aparicio).

Deprecated classes

  • Removed deprecated Domain and Surface classes.

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

Changes and new contributions for this release were:

  • Extended credit risk plus model (thanks to Peter Caspers).
  • No-arbitrage Sabr model with corresponding volatility-cube, smile section and interpolation classes (thanks to Peter Caspers).
  • A number of latent models for basket losses (thanks to Jose Aparicio).
  • Complex chooser option (thanks to Nathan Kruck, Ahmed Ayadi and Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
  • Holder-extensible option (thanks to Nathan Kruck, Ahmed Ayadi and Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
  • Partial-time barrier option (thanks to Nathan Kruck, Ahmed Ayadi and Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
  • Two-asset correlation option (thanks to Ilyas Rahbaoui and Driss Aouad from the IMAFA program at Polytech'Nice Sophia).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.4.1

Changes for QuantLib 1.4.1

QuantLib 1.4.1 is a compatibility release. It fixes a number of compilation errors that surfaced when using QuantLib 1.4 with Clang 3.5 and Boost 1.57. Thanks to Tim Smith for the heads-up.

If you are not using Clang, you don't need to upgrade from QuantLib 1.4 to 1.4.1.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.4

Notable changes for QuantLib 1.4

Portability

  • Boost 1.39 or later is now required. We felt this could be enforced without causing grief to virtually anyone, given that 1.39 was released back in May 2009. We don't expect many people being stuck with an earlier version. This allows one to use makeshared to create sharedptr instances, which has a number of advantages. Unfortunately, the C++03 implementation (which is still used by a number of older compiler that we're supporting) only allows a maximum of 9 constructor arguments, so we won't be able to use it everywhere.
  • Support for Visual C++ 2003 (VC++7) was dropped. The compiler is now more than 10 years old and no longer supported by Microsoft. Keeping the support is not worth the time and effort required. Anybody who is still stuck with this compiler and needs the support can fork the repository and maintain the changes.
  • Specific support for Visual C++ 2013 (VC++12) is not yet available; however, version checks in the code were relaxed so that one can import and convert the VC++11 solution without causing errors when auto-linking the generated libraries.
  • Fixed Clang warnings.
  • Use deprecated attribute of supported compilers. This replaces the QLDISABLEDEPRECATED mechanism that conditionally removes the features and causes the compiler itself to emit warnings if the features are used. The user can enable or disable the warnings by the means provided by the compiler.
  • Allow singletons to work under Visual C++ when CLR is enabled (thanks to Simon Shakeshaft).
  • Fixed compilation errors when using STLport (thanks to Marcello Pietrobon for the heads-up).

Configuration

  • Added switch to enable OpenMP-based parallelism (thanks to Joseph Wang). Currently, this is only used in a few loops in the finite-differences and tree frameworks.

Date/time

  • Added Diamond Jubilee bank holiday to UK calendar.
  • Added Royal Wedding bank holiday to UK calendar (thanks to Whit Armstrong for the heads-up).
  • Added utilities to parse and format a date with the extended format implemented in Boost.Date (thanks to Michael von den Driesch). The previous parsing utility was deprecated.
  • Added Actual/365 (No Leap) day counter (thanks to Nick Glass).
  • Updated most moving holidays for 2014.
  • Fixed a Schedule bug where a combination of backwards generation and end-of-month convention would result in missing or duplicated dates (thanks to Nicholas Manganaro for the heads-up).

Instruments

  • Fixed Delta and Gamma calculation in Ju quadratic engine (thanks to Fabien Le Floc'h).
  • Improved calculation in finite-differences Asian options when the running average is much greater than the forward value (thanks to Klaus Spanderen).
  • Fixed Theta issue for some American FDM engines (thanks to Klaus Spanderen).
  • Fix annuity computation for CMS coupons (thanks to Peter Caspers).
  • Enabled case r=0 in Barone-Adesi/Whaley approximation engine (thanks to Klaus Spanderen).
  • When building a swaption with MakeSwaption, use the fixed tenor of the underlying swap index if none is given explicitly.

Models

  • Allow for calibration of just a subset of a model's parameters. Pre-built constraint are provided for calibration of an Hull-White model while fixing the mean reversion, and for calibration of a Markov functional model while fixing the first component of the piecewise volatility. (Thanks to Peter Caspers.)
  • Allow recalculation of exercise and end dates in swaption and cap helpers when the evaluation date changes (thanks to Peter Caspers).
  • Allowed negative strikes in BlackFormula, as long as the strike plus the displacement is still positive (thanks to Peter Caspers).
  • Added calculation of implied volatility from Bachelier price in BlackFormula (thanks to Gary Kennedy).
  • Added Broadie-Kaya exact simulation schema to Heston model (thanks to Klaus Spanderen).
  • Fixed upper/lower bound calculation for internal constraint in calibrated model (thanks to Peter Caspers).

Cash flows

  • Added support for ex-coupon dates to cashflow calculations (thanks to Nick Glass). Currently, ex-coupons dates can be specified for fixed rate bonds.
  • Fixed calculation of duration and convexity when using Act/Act(ISMA) (thanks to Nick Glass).

Indexes

  • Fixed IborCoupon construction with null fixing days. The coupon was used the passed fixing days instead of the ones previously processed by the base class constructor (thanks to Lisa Ann and Gerardo Ballabio for the heads-up).
  • Add a clone() method to SwapIndex which allows to change the tenor (thanks to Peter Caspers).
  • Ignore inflation-index fixings stored at dates later than the evaluation date.
  • Added utility class for creating custom Region instances to be passed to inflation indexes.

Term structures

  • Prevent some errors when linking a null term structure to a Handle. When settings a null term structure to a Handle used as an underlying for another curve (say, a zero-spreaded curve), the latter tries to reset the jumps in the base class and fails. This error is now trapped. (Thanks to Christoph Breig for the heads-up.)
  • Fix interpolation of option dates in SwaptionVolatilityDiscrete and derived classes when evaluation date changes (thanks to Shen Hui).
  • Piecewise-spreaded curve can now choose interpolation (thanks to Mario Aleppo).

Math

  • Extended Sobol direction numbers up to 21200 dimensions with Joe Kuo 6 searching rule (thanks to Cheng Li).
  • Added class for two-dimensional integration (thanks to Klaus Spanderen).
  • Added Maddock inverse-cumulative normal distribution from Boost (thanks to Klaus Spanderen).
  • Added modified Bessel functions (thanks to Klaus Spanderen).

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

Changes and new contributions for this release were:

  • Deprecated features were removed from experimental code.
  • Added initial implementation of catastrophe bond (thanks to Grzegorz Andruszkiewicz).
  • Added Vanna/Volga pricing engine for FX barrier options. Engines were provided for both single- and double-barrier FX options. An analytic engine was also provided for double-barrier equity options (thanks to Yue Tian).
  • Added Hagan pricing engine for irregular swaptions (thanks to Andre Miemiec).
  • Added simulated-annealing optimizer (thanks to Peter Caspers).
  • Added rebated exercise class (thanks to Peter Caspers).
  • Added pricing engine for arbitrary European payoffs under the Heston model (thanks to Klaus Spanderen).
  • Added linear terminal swap rate model pricer for CMS coupons (thanks to Peter Caspers).
  • Reorganized functional Markov model. Added one-factor GSR model, and float/float swap and swaption with a number of corresponding engines. (Thanks to Peter Caspers.)
  • The Levy engine for continuous-averaging Asian option now checks that the averaging period doesn't start in the future. Also, it allows the b=0 case that would raise an exception until now. (Thanks to Klaus Spanderen.)
  • Convertible bond now updates correctly when any of its observables changes.
  • Extended generalized Hull-White model (thanks to Cavit Hafizoglu). The model now allows to choose the mapping function between short rate and state variable, and includes the case of constant parameters.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.3

Notable changes for QuantLib 1.3

Portability

  • Enabled g++ compilation in C++11 mode.
  • Added VC++11 projects (thanks to Edouard Tallent).
  • Added x64 target to VC++10 and VC++11 projects (thanks to Johannes Göttker-Schnetmann).
  • Removed most level-4 warnings in VC++ (thanks to Michael Sharpe).
  • Removed warnings in VC++ when compiling for the x64 platform (thanks to Johannes Göttker-Schnetmann).

Date/time

  • Fixed holiday for Japanese calendar (thanks to Sebastien Gurrieri).
  • Added Epiphany (introduced in 2011) to Polish calendar (thanks to katastrofa).
  • Updated South-Korean calendar for 2013 (thanks to Faycal El Karaa).
  • Updated Chinese calendar for 2012 (thanks to Cheng Li).
  • Updated calendar for 2013 for China, Hong Kong, India, Indonesia, Singapore, Taiwan and Turkey.
  • Fixed a few Mexican holidays.
  • Prevented out-of-bound access to degenerate schedule.

Instruments

  • Finite-difference Bermudan swaption engines for the G2++ and the Hull-White models (thanks to Klaus Spanderen).
  • Added analytic Heston-Hull-White pricing engine for vanilla option using the H1HW approximation (thanks to Klaus Spanderen).
  • Managed underlying start delay in Jamshidian swaption engine (thanks to Peter Caspers).

Models

  • Added calibration to GARCH model (thanks to Slava Mazur).
  • Fixed forward-looking bias in Garch11 calculation (thanks to Slava Mazur).

Cash flows

  • Use correct default for evaluation date in a few CashFlows methods (thanks to Peter Caspers).
  • Yield-based NPV calculation now uses coupon reference dates; this fixes small discrepancies when using day counters such as ISMA act/act (thanks to Henri Gough and Nick Glass).
  • Fixed start and end dates for convexity adjustment of in-arrears floating-rate coupon (thanks to Peter Caspers).

Indexes

  • Added inspector for the joint calendar used by Libor indexes.
  • Added method to clone a swap index with a different discount curve (thanks to Peter Caspers).

Term structures

  • Fixed degenerate case for ABCD volatility (thanks to Peter Caspers).
  • Relaxed extrapolation check for default-probability curves. When calculating default probabilities between two dates or times, allow the first to precede the reference date. This effectively assumes that the default probability before the reference is null, and helps in cases where a coupon protection extends a couple of days before the reference due to adjustments (for instance, when the protection starts on a Saturday and the reference is rolled to the following Monday).
  • Pass correct ATM forward rate to smile section of SwaptionVolCube2 (thanks to Peter Caspers).
  • Added exogenous discount to OptionletStripper1 (thanks to Peter Caspers).

Math

  • Added Sobol brownian-bridge random sequence generator (thanks to Klaus Spanderen).
  • Added Richardson-extrapolation utility for numerical methods (thanks to Klaus Spanderen).
  • Added differential evolution optimizer (thanks to Ralph Schreyer and Mateusz Kapturski).
  • Added special case to close()/close_enough() when either value is 0; previously, they would always return false which could be surprising (thanks to Simon Shakeshaft for the fix).
  • Fixed Gamma distribution tail (thanks to Ian Qsong).
  • Ensure that the last function call inside a solver is passed the root (thanks to Francis Duffy).
  • Implemented Lagrange boundary condition for cubic interpolation (thanks to Peter Caspers).
  • Increased precision in tail of West's bivariate cumulative normal (thanks to Fabien Le Floc'h).
  • Improved calibration of SABR interpolation by allowing different starting points (thanks to Peter Caspers).
  • Moved FFT and autocovariance implementations from experimental folder to core library.

Finite differences

  • Added time-dependent Dirichlet boundary condition (thanks to Peter Caspers).

Utilities

  • Implicit conversions of shared_ptr to bool are now explicit; they have been removed in C++11 (thanks to Scott Condit).

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

New contributions for this release were:

  • Two-asset barrier option and related engine (thanks to IMAFA/Polytech'Nice students Qingxiao Wang and Nabila Barkati).
  • ODE solver (thanks to Peter Caspers).
  • Markov functional model (thanks to Peter Caspers).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.2.1

Changes for QuantLib 1.2.1

QuantLib 1.2.1 is a bug-fix release for QuantLib 1.2.

Changes:

  • The library default is now to allow negative rates as this is happening for EUR OIS, CHF and German treasury yields, etc.
  • Fixed problem with EOM adjustment in schedule. When the end date was not adjusted, the next-to-last date could end up after the end date due to EOM adjustment. This is now checked and fixed.
  • Added notional calculation to CPI bond. This enables the user to use the full bond machinery besides NPV calculation. Thanks to Seyfullah Çetin for the heads-up and to Raso Mirko and Billy Ng for the fix.
  • Fixed bug in up-rounding (thanks to Simon Shakeshaft). When up-rounding a number with no digits after the requested precision (say, 0.86313 with 5-digits precision) the last digit of the number would be increased. This is now fixed.
  • Bicubic splines would not update their parameters correctly. This is now fixed (thanks to Fabio Ramponi).
  • Fixed extent of new-year holidays for the Russian calendar. Thanks to Kirill Shemyakin.
  • Added implementation of assertionfailedmsg function. This is required for linking with recent Boost versions. Thanks to Piter Dias.
  • Build fixes for VC++11 and for g++ in c++11 mode (thanks to Xiangyu Hong and Joao Paulo Magalhaes, respectively).
  • A number of minor bug fixes (see the Changelog for full details).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.2

Changes for QuantLib 1.2

Portability

  • Microsoft Visual C++ 2010 no longer needs to disable uBlas code.
  • QuantLib now ships with an updated specification file for building RPMs (thanks to Matt Fair).

Date/time

  • When EOM was specified, a schedule's end date was moved to the end of month even if the 'Unadjusted' convention was given. This is now fixed.
  • When a daily frequency was used, a schedule could end up containing duplicated dates. This is now fixed (thanks to Simone Medori for the bug report).
  • Added method to return truncated schedule.
  • Fixed Swedish Midsummer Eve's date (thanks to Gary Kennedy).
  • Added South Korea holidays for 2011/2012 (thanks to Charles Chongseok Hyun and Faycal El Karaa).
  • Added holidays for 2011 to China, Hong Kong, India, Indonesia, Saudi Arabia, and Taiwan calendars.
  • Added ECB maintenance dates for 2012 and 2013.
  • Greatly improved performance of business/252 day counter. The previous implementation would count the business days between two dates at each invocation. The new implementation caches dynamically the count of business days for whole months and years, so that after a while only the first and last few days are counted.

Instruments

  • The AssetSwap instrument now supports non-par repayment.
  • Added specialized class for Italian CCTEU (certificato di credito del tesoro).
  • Added CPI-linked swaps, bonds, and cap/floors.

Cash flows

  • Added CashFlows::npvbps() method to calculate NPV and BPS in a single loop to improve performance.

Indexes

  • Better detection of forecast/past fixings for inflation indexes. When an interpolated index is asked for a fixing at the beginning of a month, the fixing for the following (which would have zero weight in the interpolation) is no longer required. Also, if a fixing is loaded in the index time series, it can be used even its observation lag has not fully elapsed.

Term structures

  • Vastly improved the performance of piecewise yield curve bootstrap. Anchoring the evaluation date (see below) provides a further improvement.
  • Moved CPI-volatility interface from experimental folder to the core library.

Math

  • Added Newton 1-D solver with finite difference derivatives.
  • Improved interface for linear least-square regression (thanks to Slava Mazur).

Finite differences

  • Added TR-BDF2 scheme (thanks to Fabien Le Floc'h).
  • Moved stable parts of 2D finite-difference framework from the experimental folder to the core library.

Utilities

  • Added resetEvaluationDate() and anchorEvaluationDate() methods to enable/disable change of evaluation date at midnight, respectively. Anchoring the evaluation date also improves the performance of some calculations.

Patterns

  • Fixed possible problem in LazyObject notification logic. The previous implementation would pass obsolete information to observers that asked for data in their update() method (which is not advised, but possible). This is no longer the case.

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

New contributions for this release were:

  • Spread option and related engine (thanks to IMAFA/Polytech'Nice students Meryem Chibo and Samad Abdessadki).
  • Writer-extensible option and related engine (thanks to IMAFA/Polytech'Nice students Delphine Bouthier, Marine Casanova, and Xavier Caron).
  • Levy engine for continuous-averaging Asian options (thanks to IMAFA/Polytech'Nice students Yasmine Lahlou and Amine Samani).
  • Simple Virtual Power Plant and related finite-difference (FD) engine (thanks to Klaus Spanderen).
  • FD solver and vanilla spread engine for Kluge-Ornstein-Uhlenbeck process (thanks to Klaus Spanderen).
  • Added generic n-dimensional FD solver (thanks to Klaus Spanderen).
  • Added FD pricing engine for a simple storage option based on an exponential Ornstein Uhlenbeck process (thanks to Klaus Spanderen).
  • Added vanilla and swing option FD pricer for Kluge model (thanks to Klaus Spanderen).
  • Added FD pricing engine for a simple swing option based on the Black-Scholes model (thanks to Klaus Spanderen).

- C++
Published by lballabio almost 8 years ago

quantlib - 1.1

Changes for QuantLib 1.1

Portability

  • Added support for Microsoft Visual C++ 2010.
  • Fixed m4 macro for QuantLib detection. It now works also when asked for versions such as 1.1 (as opposed to 1.1.0).

Date/time

  • Added Russian calendar.
  • Revamped time-series iterators (thanks to Slava Mazur.) Iterators on dates and values were added, as well as C++0X-style cbegin() and cend() iterators.

Instruments

  • Added a few inspectors to zero-coupon inflation swaps.
  • Added Kirk approximation for two-asset spread options.
  • Added specialized BTP class (Italian government bonds) and related RendistatoCalculator class to help instantiation of this type of FixedRateBond.
  • Added analytic pricing engine for the piecewise-constant time-dependent Heston model.
  • Added paymentCalendar to FixedRateBond, possibly different than the one used for accrual-date calculation.

Processes

  • Added Quadratic Exponential discretization scheme for the Heston process, including martingale correction.

Indexes

  • Added inspector for discounting curve to swap index (thanks to Peter Caspers.)
  • Added exogenous discounting to all swap indexes.
  • Added SONIA index.
  • Added HICPXT indexes.

Term structures

  • Added time-based interface to inflation curves.
  • Piecewise zero-spreaded term structure can now manage spread with any compounding (thanks to Robert Philipp.)
  • FittedBondDiscountCurve now works with any BondHelpers, not only FixedRateBondHelpers.
  • Added Svensson curve-fitting method (thanks to Alessandro Roveda.)

Math

  • Added Ziggurat random-number generator (thanks to Kakhkhor Abdijalilov.)
  • Added experimental copula-based random-number generators (thanks to Hachemi Benyahia.)
  • More performant implementation of inverse cumulative distribution (thanks to Kakhkhor Abdijalilov.)
  • More performant mt19937 implementation (thanks to Kakhkhor Abdijalilov.)
  • Added more copulas (thanks to Hachemi Benyahia.) The new formulas are for Ali-Mikhail-Haq copula, Galambos copula, Husler-Reiss copula, and Plackett copula.
  • Added autocovariance calculation (thanks to Slava Mazur.)

Monte Carlo

  • Improved LSM basis system (thanks to Kakhkhor Abdijalilov.)

Utilities

  • Reworked Null class template (thanks to Kakhkhor Abdijalilov.) The new implementation avoids the need for a macro on 64-bit systems and automatically covers all floating-point and integer types.

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.

New contributions for this release were:

  • 2D finite-difference Bates engine based on the partial integro differential equation.
  • 2D finite-difference engine for Black-Scholes processes (including local volatility.)
  • Black-Scholes process with support for vega stress test (thanks to Michael Heckl.)
  • Extended Ornstein-Uhlenbeck process.
  • Margrabe option (thanks to IMAFA/Polytech'Nice students Marius Akre, Michael Benguigui, and Yanice Cherrak.)
  • Simple chooser option (thanks to IMAFA/Polytech'Nice students Clement Barret, Fakher Braham, and Mohamed Amine Sadaoui.)
  • Generalized Hull-White model (thanks to Cavit Hafizoglu.) The generalized model can take piecewise-constant parameters instead of constant ones. A matching generalized Ornstein-Uhlenbeck process was also added.
  • Variance-gamma implementation (thanks to Adrian O'Neill.) Contributed classes include a variance-gamma process and model (with data but no behavior at this time) and a couple of working engines for European options.
  • Hybrid products in the McBasket framework (thanks to Andrea Odetti.) Path pricers now take a vector of YieldTermStructures that contains the (possibly stochastic) yield curves.
  • Delta calculator for FX options (thanks to Dimitri Reiswich.)

- C++
Published by lballabio almost 8 years ago

quantlib - 1.0.1

Changes for QuantLib 1.0.1

QuantLib 1.0.1 is a bug-fix release for version 1.0.

  • Added moving holidays for 2010 to Eastern calendars.
  • The Singleton class should now work correctly when used on the .Net platform (thanks to Nathan Abbott.)
  • QuantLib now compiles with the Sun Studio compiler on the Solaris platform (thanks to Norbert Irmer for the report and for testing.)
  • Bug fix: let an IndexedCashFlow observe its index. Previously, index changes would not be propagated to the cash flow and thus to any observers of the latter. This affected zero-coupon inflation swaps.
  • Bug fix: added missing method implementations to zero-coupon inflation swaps. A couple of methods were declared but not defined.
  • Bug fix: create exercise-date vector correctly for callable bonds. Previously, the actual exercise dates were stored after a number of null dates. For most choices of day counter, this resulted in negative exercise times that were harmlessly discarded. For some day counters (e.g., ActualActual::Bond) the null dates caused an exception instead.
  • Bug fix: properly account for CDS protection-start date. During bootstrap of the default-probability curve, the protection-start date was taken into account when calculating the coupon schedule of the underlying CDS but not when calculating its value (a few days of protection could be lost.) Also, sometimes the protection-start date was compared incorrectly to the accrual-start date leading to false positives when checking requirements.
  • Bug fix: coupon pricers now properly check for the result of the dynamic_cast they perform. Previously, setting a pricer to a coupon of the wrong type would cause an access violation by dereferencing the null pointer returned by the failed cast.

- C++
Published by lballabio almost 8 years ago

quantlib - 1.0

Changes for QuantLib 1.0

Portability

  • Fixes for x64 Visual Studio compilation (thanks to Craig Miller.)
  • Enabled language extensions in Visual Studio projects.
  • Prevented make errors with older shells (thanks to Walter Eaves.)

Date/time

  • Changes to end-of-month adjustment. In a schedule, the Unadjusted convention now supersedes a non-null calendar and causes dates to roll on the unadjusted end of month (possibly a holiday.)
  • Added new date-generation rule for CDS (thanks to Jose Aparicio.)
  • Fix for CDS fair-upfront calculation (thanks to Jose Aparicio.) Previously, fair-upfront calculation required a non-null upfront to begin with. This is no longer the case.

Instruments

  • Fixed discounting of dividends on convertible-bond grid (thanks to Benoit Houzelle and Samuel Lerouge.)

Cash flows

  • A number of CashFlows methods now return a meaningful result even if the passed leg is empty.

Processes

  • Changed default discretization for Heston process. The new default (giving a better performance) is quadratic exponential with Martingale correction.

Term structures

  • Removed ambiguous parRate member functions from YieldTermStructure interface.

Examples

Added market-model example.

Experimental folder

The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases. New contributions for this release were:

  • Longstaff-Schwartz algorithm for basket products including coupon payments (thanks to Andrea Odetti;)
  • added sparse incomplete LU preconditioner for 2D finite-difference models (thanks to Ralph Schreyer.)

- C++
Published by lballabio almost 8 years ago