QuantLib

The QuantLib C++ library

OTHER License

Stars
4.8K
Committers
208

Bot releases are hidden (Show)

QuantLib - 1.5

Published by lballabio over 6 years ago

Changes for QuantLib 1.5:

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

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

Portability

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

Date/time

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

Instruments

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

Cash flows

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

Indexes

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

Term structures

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

Math

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

Lattices

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

Miscellanea

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

Examples

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

Deprecated classes

  • Removed deprecated Domain and Surface classes.

Experimental folder

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

Changes and new contributions for this release were:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.4.1

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

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

QuantLib - 1.4

Published by lballabio over 6 years ago

Notable changes for QuantLib 1.4

Portability

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

Configuration

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

Date/time

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

Instruments

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

Models

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

Cash flows

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

Indexes

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

Term structures

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

Math

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

Experimental folder

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

Changes and new contributions for this release were:

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

Published by lballabio over 6 years ago

Notable changes for QuantLib 1.3

Portability

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

Date/time

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

Instruments

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

Models

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

Cash flows

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

Indexes

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

Term structures

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

Math

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

Finite differences

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

Utilities

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

Experimental folder

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

New contributions for this release were:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.2.1

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

Changes:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.2

Portability

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

Date/time

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

Instruments

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

Cash flows

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

Indexes

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

Term structures

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

Math

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

Finite differences

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

Utilities

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

Patterns

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

Experimental folder

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

New contributions for this release were:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.1

Portability

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

Date/time

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

Instruments

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

Processes

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

Indexes

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

Term structures

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

Math

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

Monte Carlo

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

Utilities

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

Experimental folder

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

New contributions for this release were:

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.0.1

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

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

Published by lballabio over 6 years ago

Changes for QuantLib 1.0

Portability

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

Date/time

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

Instruments

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

Cash flows

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

Processes

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

Term structures

  • Removed ambiguous parRate member functions from YieldTermStructure interface.

Examples

Added market-model example.

Experimental folder

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

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