QuantLib

The QuantLib C++ library

OTHER License

Stars
4.8K
Committers
208

Bot releases are hidden (Show)

QuantLib - 1.17

Published by lballabio almost 5 years ago

Changes for QuantLib 1.17:

QuantLib 1.17 includes 30 pull requests from several contributors.

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

Portability

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

Configuration

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

Build

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

Instruments

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

Pricing engines

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

Term structures

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

Date/time

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

Deprecated features

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

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

QuantLib - 1.16

Published by lballabio about 5 years ago

Changes for QuantLib 1.16:

QuantLib 1.16 includes 34 pull requests from several contributors.

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

Portability

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

Configuration

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

Pricing engines

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

Cash flows

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

Date/time

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

Deprecated features

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

Term structures

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

Published by lballabio over 5 years ago

Changes for QuantLib 1.15:

QuantLib 1.15 includes 32 pull requests from several contributors.

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

Portability

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

Models

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

Pricing engines

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

Term structures

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

Indexes

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

Cash flows

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

Date/time

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

Math

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

Examples

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

Deprecated features

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

New opt-in features

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

Published by lballabio about 6 years ago

Changes for QuantLib 1.14:

QuantLib 1.14 includes 40 pull requests from several contributors.

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

Portability

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

Instruments and pricing engines

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

Cash flows and interest rates

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

Models

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

Finite differences

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

Term structures

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

Date/time

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

Math

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

New opt-in features

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

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

QuantLib - 1.13

Published by lballabio over 6 years ago

Changes for QuantLib 1.13:

QuantLib 1.13 includes 42 pull requests from several contributors.

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

Portability

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

Instruments and pricing engines

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

Cash flows and interest rates

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

Models

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

Finite differences

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

Date/time

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

Math

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

Test suite

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

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

QuantLib - 1.12.1

Published by lballabio over 6 years ago

Changes for QuantLib 1.12.1:

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

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

The library code is unchanged from version 1.12.

QuantLib - 1.12

Published by lballabio over 6 years ago

Changes for QuantLib 1.12:

QuantLib 1.12 includes 54 pull requests from several contributors.

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

Portability

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

Instruments and pricing engines

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

Cash flows

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

Models

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

Term structures

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

Date/time

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

Math

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

Deprecated features

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

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

QuantLib - 1.11

Published by lballabio over 6 years ago

Changes for QuantLib 1.11:

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

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

Portability

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

Instruments and pricing engines

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

Cash flows

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

Models

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

Indexes

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

Term structures

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

Date/time

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

Math

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

Build

  • Added configure switch to enable unity build.

Test suite

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

Deprecated features

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.10.1:

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.10:

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

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

Portability

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

Instruments and pricing engines

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

Models

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

Interest rates

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

Inflation

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

Volatility

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

Date/time

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

Math

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

Examples

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

Deprecated features

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

Possibly breaking changes

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

     Handle<YieldTermStructure> forecast_curve;
     Euribor6M index = forecast_curve;
    
QuantLib - 1.9.2

Published by lballabio over 6 years ago

Changes for QuantLib 1.9.2:

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.9.1:

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.9:

QuantLib 1.9 includes 27 pull requests from several contributors.

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

Portability

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

Interest rates

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

Volatility

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

Instruments

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

Date/time

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

New opt-in features

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

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

Experimental folder

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

Changes and new contributions for this release were:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.8.1:

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.8

QuantLib 1.8 includes 45 pull requests from several contributors.

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

Portability

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

Interest rates

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

Volatility

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

Instruments

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

Models

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

Currencies

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

Monte Carlo

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

Date/time

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

Math

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

Deprecated features

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

Test suite

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

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

or

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

(Thanks to Peter Caspers.)

New opt-in features

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

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

Experimental folder

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

Changes and new contributions for this release were:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.7.1

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.7:

QuantLib 1.7 includes over 50 pull requests from several contributors.

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

Interest rates

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

Inflation

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

Volatility

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

Instruments

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

Models

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

Monte Carlo

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

Settings

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

Date/time

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

Math

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

New opt-in features

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.6.2:

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

The library code did not change.

QuantLib - 1.6.1

Published by lballabio over 6 years ago

Changes for QuantLib 1.6.1

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

It is otherwise the same as version 1.6.

QuantLib - 1.6

Published by lballabio over 6 years ago

Changes for QuantLib 1.6:

QuantLib 1.6 includes 65 pull requests from several contributors.

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

Portability

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

Date/time

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

Instruments

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

Models

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

Cash flows

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

Indexes

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

Term structures

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

Volatility

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

Math

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

Miscellanea

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

Deprecated features

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

Experimental folder

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

Changes and new contributions for this release were:

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