
Notable changes for QuantLib 1.4:
=================================

A detailed list of changes is available in ChangeLog.txt.

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.
