Skip to content

1.2

Compare
Choose a tag to compare
@lballabio lballabio released this 01 Mar 09:23
· 17326 commits to master since this release

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).