QuantLib

The QuantLib C++ library

OTHER License

Stars
4.8K
Committers
208

Bot releases are visible (Hide)

QuantLib - 1.33 Latest Release

Published by lballabio 9 months ago

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

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

QuantLib - 1.33 release candidate

Published by lballabio 10 months ago

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.

QuantLib - 1.32

Published by lballabio about 1 year ago

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

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

QuantLib - 1.32 release candidate 1

Published by lballabio about 1 year ago

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.

QuantLib - 1.31.1

Published by lballabio about 1 year ago

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

QuantLib - 1.31

Published by lballabio over 1 year ago

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

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

QuantLib - 1.30

Published by lballabio over 1 year ago

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

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

QuantLib - 1.29

Published by lballabio almost 2 years ago

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

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

QuantLib - 1.28

Published by lballabio almost 2 years ago

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

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

QuantLib - 1.27.1

Published by lballabio about 2 years ago

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

QuantLib - 1.27

Published by lballabio about 2 years ago

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

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

QuantLib - 1.26

Published by lballabio over 2 years ago

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

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

QuantLib - 1.25

Published by lballabio almost 3 years ago

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

QuantLib - 1.24

Published by lballabio about 3 years ago

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

QuantLib - 1.23

Published by lballabio over 3 years ago

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.

QuantLib - 1.22

Published by lballabio over 3 years ago

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.

QuantLib - 1.21

Published by lballabio over 3 years ago

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.

QuantLib - 1.20

Published by lballabio almost 4 years ago

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.
QuantLib - 1.19

Published by lballabio over 4 years ago

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.
QuantLib - 1.18

Published by lballabio over 4 years ago

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.