The QuantLib C++ library
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.
sessionId
function. Future releases will use the built-in language support for thread-local variables.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.--enable-disposable
and --enable-std-unique-ptr
configure switches.AmericanCondition
and FDAmericanCondition
classes;OneFactorOperator
class;io::to_integer
function;ArrayProxy
and MatrixProxy
classes.QL_NOEXCEPT
and QL_CONSTEXPR
macros.QL_NULL_INTEGER
and QL_NULL_REAL
macros.PdeShortRate
class;ShoutCondition
and FDShoutCondition
classes;FDDividendEngineBase
, FDDividendEngineMerton73
, FDDividendEngineShiftScale
and FDDividendEngine
classes;FDStepConditionEngine
and FDEngineAdapter
classes.ql/math/functional.hpp
header.MultiCurveSensitivities
class.inner_product
function.Thanks go also to Ryan Russell (@ryanrussell) for documentation fixes.
Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.26...QuantLib-v1.27
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.
--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.QuantLib-x64-mt-s
instead of QuantLib-mt-s-x64
) so that the pragma in ql/auto_link.hpp
works.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).laggedFixing
method to CPI
structure which provides interpolation of inflation index fixings (@lballabio).CPICoupon
and CPICashFlow
classes now take into account the correct dates and observation lag for interpolation (@lballabio).BondForward
class that generalizes the existing FixedRateBondForward
to any kind of bond (thanks to @marcin-rybacki).TreeSwaptionEngine
mispricing when adjusting the instrument schedule to a near exercise date (thanks to @ralfkonrad).ForwardRateAgreement
class now works correctly without an explicit discount curve (@lballabio).InterpolatedZeroInflationCurve
are no longer adjusted automatically to the beginning of their inflation period (@lballabio).MCDiscreteAveragingAsianEngine
class, deprecated in version 1.21.LsmBasisSystem::PolynomType
typedef, now renamed to PolynomialType
; MakeMCAmericanEngine::withPolynomOrder
was also deprecated and renamed to withPolynomialOrder
.ZeroInflationCashFlow
constructor taking an unused calendar and business-day convention.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.CPICashFlow
constructor taking a precalculated fixing date and a frequency.Observer::set_type
and Observable::set_type
typedefs.Curve
class.LexicographicalView
class.Composite
class.DriftTermStructure
class.Thanks go also to @mgroncki, @sweemer and @FloridSleeves for smaller fixes, enhancements and bug reports.
Full Changelog: https://github.com/lballabio/QuantLib/compare/QuantLib-v1.25...QuantLib-v1.26
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.
QuantLibConfig.cmake
file that allows other CMake projects to find and use QuantLib (thanks to @sweemer).SubPeriodsCoupon
class (thanks to @marcin-rybacki).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).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).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
.SwaptionVolCube1
class (thanks to @w31ha0).QuantExt
project (thanks to @OleBueker).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.
WulinYongDoubleBarrierEngine
to SuoWangDoubleBarrierEngine
(thanks to @aditya113141 for the fix and @xuruilong100 for the heads-up).indexIsInterpolated
boolean argument.ForwardRateAgreement
class that used to be inherited from Forward
.SofrFutureRateHelper
class.WulinYongDoubleBarrierEngine
alias for SuoWangDoubleBarrierEngine
.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.
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.
cmake
invocation and adds the required Boost libraries accordingly.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.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.ThirdWednesdayInclusive
date-generation rule that also adjusts start and end dates (thanks to @w31ha0).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.nominalTermStructure
method and the corresponding data member in inflation term structures. Any object needing the nominal term structure should have it passed explicitly.termStructure_
data member in BlackCalibrationHelper
. It you're inheriting from BlackCalibrationHelper
and need it, declare it in your derived class.createAtParCoupons
, createIndexedCoupons
and usingAtParCoupons
methods of IborCoupon
, now moved to a new IborCoupon::Settings
singleton (thanks to @pkovacs).conversionType
and baseCurrency
static data members of Money
, now moved to a new Money::Settings
singleton (thanks to @pkovacs).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.
QuantLib-1.23.tar.gz QuantLib-1.23.zip
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.
-std=c++11
flag is now added automatically when needed. This applies to both configure
and cmake
(thanks to Leander Schulten).Period
, InterestRate
and InterestRateIndex
classes are now visualized more clearly in the Visual Studio debugger (thanks to Francois Botha).ZeroInflationCashFlow
class, used in zero-coupon inflation swaps (thanks to Ralf Konrad).qiubill
for the heads-up).Type
enumeration defined in several swap classes was moved to their base Swap
class.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.
QuantLib-1.22.tar.gz QuantLib-1.22.zip
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.
Date
and Array
classes are now visualized more clearly in the Visual Studio debugger (thanks to Francois Botha).SubPeriodCoupon
class (thanks to Marcin Rybacki). The class was moved out of the ql/experimental
folder and its interface can now be considered stable.bachhani
).hasHistoricalFixing
inspector to Index
class to check if the fixing for a given past date is available (thanks to Ralf Konrad).OvernightIndexFutures
class. The class was moved out of the ql/experimental
folder and its interface can now be considered stable.Observable
class in the thread-safe case (thanks to Klaus Spanderen).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.FDDividendShoutEngine
class.AmericanCondition
class, the OneFactorOperator
typedef, and the FDAmericanCondition
class.Thanks go also to Francis Duffy and Cay Oest for smaller fixes, enhancements and bug reports.
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.
InterestRate
object (thanks to Piter Dias).phil-zxx
for the heads-up).Thanks go also to Francois Botha, Peter Caspers, Ralf Konrad, Matthias Siemering, Klaus Spanderen and Joseph Wang for smaller fixes, enhancements and bug reports.
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.
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.)LogCubic
and LogMixedLinearCubic
hiding a few default parameters (thanks to Andrea Maffezzoli).CarrieMY
).fayce66
).martinbrose
).FdmOrnsteinUhlenbeckOp
class and a constructor of the SwaptionVolatilityMatrix
class.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.
UnitedMarsupials
for the heads-up).Bond::yield
method can now specify a guess and whether the passed price is clean or dirty (thanks to Francois Botha).phil-zxx
for the heads-up).BMAIndex
taking a calendar was deprecated.CurveDependentStepCondition
class and related typedefs were deprecated.BlackCalibrationHelper
taking an interest-rate structure was deprecated.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.
--enable-unity-build
flag passed to configure now also causes the test suite to be built as a single source file.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.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
).FraRateHelper
class has new constructors that take IMM start / end offsets (thanks to Peter Caspers).IterativeBootstrap
class. The accuracy parameter was also moved to the same class; passing it to the curve constructor is now deprecated.fayce66
).holidayList
is now an instance method; the static version is deprecated. The businessDayList
method was also added. (Thanks to Piotr Siejda.)BSMOperator
class, the whole OperatorFactory
class, and the typedef CalibrationHelper
which was used to alias the BlackCalibrationHelper
class.CalibrationHelperBase
class is now called CalibrationHelper
. The old name remains as a typedef but is deprecated.CalibratedModel::calibrate
and CalibratedModel::value
taking a vector of BlackCalibrationHelper
s are deprecated in favor of the ones taking a vector of CalibrationHelper
s.Calendar::holidayList
is deprecated in favor of the instance method by the same name.PiecewiseDefaultCurve
and PiecewiseYieldCurve
taking an accuracy parameter are deprecated in favor of passing the parameter to an instance of the bootstrap class.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.