Changelog History
Page 2
-
v1.33 Changes
January 22, 2024Downloads:
🔄 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::functionandboost::bindinstead of theirstdcounterparts; thestdclasses 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
MakeOISandOISRateHelper; 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::impliedVolatilitytaking an NPV as target. - The constructor of
AmortizingFixedRateBondtaking a sinking frequency. - The constructor of
AmortizingFixedRateBondtaking a vector ofInterestRateinstances. - The constructor of
FixedRateBondtaking start date, maturity date etc. instead of a schedule. - The constructor of
FixedRateBondtaking a vector ofInterestRateinstances. - The constructor of
FloatingRateBondtaking start date, maturity date etc. instead of a schedule. - The constructor of
CPICapFloortaking a handle to an interest-rate index. - The
CPICapFloor::inflationIndexmethod. - The
infIndexdata member of theCPICapFloor::argumentsclass. - A redundant constructor of
SabrSmileSection. - The empty headers
ql/experimental/amortizingbonds/amortizingcmsratebond.hpp,ql/experimental/amortizingbonds/amortizingfixedratebond.hppandql/experimental/amortizingbonds/amortizingfloatingratebond.hpp.
- The overload of
🗄 Deprecated the constructor of
CurrencyandCurrency::Datataking a format string, and theCurrency::formatmethod.
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 #1818
- @silvergasp made their first contribution in #1807
- @PaulXiCao made their first contribution in #1825
- @Sidsky made their first contribution in #1811
- @hgv79116 made their first contribution in #1858
- @yjian012 made their first contribution in #1876
- @MoixaStrikes made their first contribution in #1846
Full Changelog : v1.32...v1.33
-
v1.32 Changes
October 20, 2023Downloads:
🔄 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 theSwaptionVolatilityDiscreteclass was renamed tocachedReferenceDate_. - 👍 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::functionandboost::bindinstead of theirstdcounterparts; starting from this release, thestdclasses 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
FixedVsFloatingSwapfor 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
redemptionsargument 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_CONSTEXPRandQL_USE_STD_UNIQUE_PTRmacros. - The
MultiCurveSensitivitiesclass. - 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_functionandcompose3functors. - The
PdeShortRate,ShoutCondition,FDShoutCondition,FDStepConditionEngineandFDEngineAdapterclasses from the old finite-differences framework. - The
dsd::inner_productfunction. - The
FDDividendEngineBase,FDDividendEngineMerton73,FDDividendEngineShiftScaleandFDDividendEnginepricing 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.hppandql/utilities/disposable.hpp.
- The
🗄 Deprecated the overload of the
withReplicationmethod in theDigitalIborLeg,DigitalCmsLegandDigitalCmsSpreadLegclasses that takes no arguments; use the other overload instead.🗄 Deprecated the
StandardFiniteDifferenceModel,StandardSystemFiniteDifferenceModelandStandardStepConditiontypedefs; define your own typedefs if needed.🗄 Deprecated the
FDVanillaEngine,FDMultiPeriodEngine,StepConditionSet,ParallelEvolverTraits,ParallelEvolverandSampledCurveclasses and theBSMTermOperatorandSampledCurveSettypedefs; use the new finite-differences framework instead.Deprecated the
QL_NULL_FUNCTIONmacro; 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.hppandql/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 #1790
Full Changelog : v1.31.1...v1.32
- Possibly breaking change: the protected
-
v1.20 Changes
October 26, 2020🔄 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::tupleinstead ofboost::tuplewhen the compiler allows it. The default is still to use the Boost implementation. The feature can be enabled by uncommenting theQL_USE_STD_TUPLEmacro inql/userconfig.hppon Visual C++ or by passing the--enable-std-tupleswitch to./configureon other systems. The--enable-std-tupleswitch 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
LogCubicandLogMixedLinearCubichiding 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
FdmOrnsteinUhlenbeckOpclass and a constructor of theSwaptionVolatilityMatrixclass.
-
v1.19 Changes
July 20, 2020🔄 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
UnitedMarsupialsfor 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::yieldmethod 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-zxxfor 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
BMAIndextaking a calendar was deprecated. - 🗄 The constructors of several interest-rate term structures taking jumps without a reference date were deprecated.
- 🗄 The
CurveDependentStepConditionclass and related typedefs were deprecated. - 🗄 The constructor of
BlackCalibrationHelpertaking 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.
-
v1.18 Changes
March 23, 2020🔄 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
- Cmake now installs headers with the correct folder hierarchy (thanks to Cheng Li).
- 🏗 The
--enable-unity-buildflag passed to configure now also causes the test suite to be built as a single source file. - 🏗 The Visual Studio projects now allow enabling unity builds as described at https://devblogs.microsoft.com/cppblog/support-for-unity-jumbo-files-in-visual-studio-2017-15-8-experimental/
Term structures
- A new
GlobalBootstrapclass can now be used withPiecewiseYieldCurveand other bootstrapped curves (thanks to Peter Caspers). It allows to produce curves close to Bloomberg's. - The experimental
SofrFutureRateHelperclass and its parentOvernightIndexFutureRateHelpercan now choose to use either compounding or averaging, in order to accommodate different conventions for 1M and 3M SOFR futures (thanks to GitHub usertani3010). - The
FraRateHelperclass 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
IterativeBootstrapclass. 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,
holidayListis now an instance method; the static version is deprecated. ThebusinessDayListmethod 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
BSMOperatorclass, the wholeOperatorFactoryclass, and the typedefCalibrationHelperwhich was used to alias theBlackCalibrationHelperclass. - 🗄 The
CalibrationHelperBaseclass is now calledCalibrationHelper. The old name remains as a typedef but is deprecated. - 🗄 The overload of
CalibratedModel::calibrateandCalibratedModel::valuetaking a vector ofBlackCalibrationHelpers are deprecated in favor of the ones taking a vector ofCalibrationHelpers. - 🗄 The static method
Calendar::holidayListis deprecated in favor of the instance method by the same name. - 🗄 The constructors of
PiecewiseDefaultCurveandPiecewiseYieldCurvetaking an accuracy parameter are deprecated in favor of passing the parameter to an instance of the bootstrap class. - 🗄 The constructors of
BondHelperand derived classes taking a boolean flag to choose between clean and dirty price are deprecated in favor of the ones taking aBond::Price::Typeargument. TheuseCleanPricemethod is also deprecated in favor ofpriceType.
🛠 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.
-
v1.17 Changes
December 03, 2019🔄 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 theBOOST_VERSIONmacro. 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::createAtParCouponsorIborCoupon::createIndexedCouponsto specify your preference. For the time being, the methods above must necessarily be called before creating any instance ofIborCouponor 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::Pricewas moved to the classBondand can now be used to specify what kind of price was passed to theBondFunctions::yieldmethod (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
FittedBondDiscountCurveclass now behave as simple evaluators (that is, they use the given paramters without performing root-solving) when themaxIterationsparameter 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
periculusandtonyzhipengzhou).
🗄 Deprecated features
- 🗄 The classes
FDEuropeanEngine,FDAmericanEngine,FDBermudanEngine,FDDividendEuropeanEngine,FDDividendEuropeanEngineShiftScale,FDDividendAmericanEngine,FDDividendAmericanEngineShiftScaleare now deprecated. They are superseded byFdBlackScholesVanillaEngine.
🛠 Thanks go also to Joel King, Kai Striega, Francis Duffy, Tom Anderson and GitHub user
lab4quantfor smaller fixes, enhancements, and bug reports. -
v1.16 Changes
August 05, 2019🔄 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
SwaptionVolatilityMatrixclass that didn't take a calendar. - ✂ Removed typedefs
GammaDistribution,ChiSquareDistribution,NonCentralChiSquareDistributionandInverseNonCentralChiSquareDistribution, deprecated in version 1.12. UseCumulativeGammaDistribution,CumulativeChiSquareDistribution,NonCentralCumulativeChiSquareDistributionandInverseNonCentralCumulativeChiSquareDistributioninstead. - ✂ Removed
Actual365NoLeapclass, deprecated in version 1.11. It was folded intoActual365Fixed.
Term structures
- Take payment days into account when calculating the nodes of a bootstrapped curve based on overnight swaps.
-
v1.15 Changes
February 19, 2019🔄 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-formatfile 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::bindand a few related classes and functions were imported into the new namespaceQuantLib::ext. This allows them to be conditionally replaced with theirstd::versions (see the "opt-in features" section below). The default is still to use the Boost implementation. Client code using theboostnamespace 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
MCAmericanBasketEngineinstance (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::businessDaysBetweenmethod 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
TimeGridclass (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_RATESmacro inql/userconfig.hppon Visual C++ or by passing the--disable-negative-ratesswitch to./configureon 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::bindand their related classes instead ofboost::functionandboost::bind. The feature can be enabled by uncommenting theQL_USE_STD_FUNCTIONmacro inql/userconfig.hppon Visual C++ or by passing the--enable-std-functionswitch to./configureon other systems. This requires using at least the C++11 standard during compilation. - 🔧 A new
./configureswitch,--enable-std-classes, was added as a shortcut for--enable-std-pointers--enable-std-unique-ptr--enable-std-function.
-
v1.14 Changes
October 01, 2018🔄 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_ptrand a few related classes and functions were imported into the new namespaceQuantLib::ext. This allows them to be conditionally replaced with theirstd::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-mathcompilation 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
CalibrationHelperBaseto 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_ptrand its related classes instead ofboost::shared_ptr. Note that, unlike its boost counterpart,std::shared_ptrdoesn't check for null pointers before access; this can lead to crashes. The feature can be enabled by uncommenting theQL_USE_STD_SHARED_PTRmacro inql/userconfig.hppon Visual C++ or by passing the--enable-std-pointersto./configureon other systems. This requires using at least the C++11 standard during compilation. - It is now possible to use
std::unique_ptrinstead ofstd::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 theQL_USE_STD_UNIQUE_PTRmacro inql/userconfig.hppon Visual C++ or by passing the--enable-std-unique-ptrto./configureon other systems.
🛠 Thanks go also to Sam Danbury, Barry Devlin, Roland Kapl, and GitHub user todatamining for smaller fixes, enhancements, and bug reports.
-
v1.13 Changes
May 24, 2018🔄 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
ForwardRateAgreementinstance 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::processmethod (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.