diff --git a/Announce.txt b/Announce.txt index d7dbf41342..7f629097a7 100644 --- a/Announce.txt +++ b/Announce.txt @@ -2,13 +2,13 @@ QuantLib is a cross-platform, free/open-source quantitative finance C++ library for modeling, pricing, trading, and risk management in real-life. -Version 1.1 has been released and is available for download at +Version 1.3 has been released and is available for download at . Please log any problems you have with this release in the SourceForge bug tracker at -specifying that you're using QuantLib 1.1. +specifying that you're using QuantLib 1.3. The QuantLib group diff --git a/CLI/ReadMe.txt b/CLI/ReadMe.txt new file mode 100644 index 0000000000..56b88577c1 --- /dev/null +++ b/CLI/ReadMe.txt @@ -0,0 +1,16 @@ +see https://sourceforge.net/mailarchive/message.php?msg_id=29716902. + +and + +http://connect.microsoft.com/VisualStudio/feedback/details/336844/static-variable-in-native-method-causes-exception-c0020001-during-process-exit + + +As a workaround: + +copy africa.hpp/cpp; america.hpp/cpp; asia.hpp/cpp; europe.hpp/cpp; and oceania.hpp/cpp +to ql/currencies folder. + +copy singleton.hpp to ql/patterns folder. + +rebuild QuantLib. + diff --git a/CLI/africa.hpp b/CLI/africa.hpp new file mode 100644 index 0000000000..2e029d70f5 --- /dev/null +++ b/CLI/africa.hpp @@ -0,0 +1,51 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005 StatPro Italia srl + Copyright (c) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file africa.hpp + \brief African currencies + + Data from http://fx.sauder.ubc.ca/currency_table.html + and http://www.thefinancials.com/vortex/CurrencyFormats.html +*/ + +#ifndef quantlib_african_currencies_hpp +#define quantlib_african_currencies_hpp + +#include + +namespace QuantLib { + + //! South-African rand + /*! The ISO three-letter code is ZAR; the numeric code is 710. + It is divided into 100 cents. + + \ingroup currencies + */ + class ZARCurrency : public Currency { + public: + ZARCurrency(); + protected: + static Data zarData_; + }; + +} + + +#endif diff --git a/CLI/america.cpp b/CLI/america.cpp new file mode 100644 index 0000000000..2570a8f696 --- /dev/null +++ b/CLI/america.cpp @@ -0,0 +1,141 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005, 2008 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + namespace { + + struct null_deleter { + void operator()(void const *) const { + } + }; + + } + + Currency::Data ARSCurrency::arsData_("Argentinian peso", "ARS", 32, + "", "", 100, + Rounding(), + "%2% %1$.2f"); + + Currency::Data BRLCurrency::brlData_("Brazilian real", "BRL", 986, + "R$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data CADCurrency::cadData_("Canadian dollar", "CAD", 124, + "Can$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data CLPCurrency::clpData_("Chilean peso", "CLP", 152, + "Ch$", "", 100, + Rounding(), + "%3% %1$.0f"); + + Currency::Data COPCurrency::copData_("Colombian peso", "COP", 170, + "Col$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data MXNCurrency::mxnData_("Mexican peso", "MXN", 484, + "Mex$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data PEHCurrency::pehData_("Peruvian sol", "PEH", 999, + "S./", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data PEICurrency::peiData_("Peruvian inti", "PEI", 998, + "I/.", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data PENCurrency::penData_("Peruvian nuevo sol", "PEN", 604, + "S/.", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data TTDCurrency::ttdData_("Trinidad & Tobago dollar", "TTD", 780, + "TT$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data USDCurrency::usdData_("U.S. dollar", "USD", 840, + "$", "\xA2", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data VEBCurrency::vebData_("Venezuelan bolivar", "VEB", 862, + "Bs", "", 100, + Rounding(), + "%3% %1$.2f"); + + ARSCurrency::ARSCurrency() { + data_ = boost::shared_ptr(&arsData_, null_deleter()); + } + + BRLCurrency::BRLCurrency() { + data_ = boost::shared_ptr(&brlData_, null_deleter()); + } + + CADCurrency::CADCurrency() { + data_ = boost::shared_ptr(&cadData_, null_deleter()); + } + + CLPCurrency::CLPCurrency() { + data_ = boost::shared_ptr(&clpData_, null_deleter()); + } + + COPCurrency::COPCurrency() { + data_ = boost::shared_ptr(&copData_, null_deleter()); + } + + MXNCurrency::MXNCurrency() { + data_ = boost::shared_ptr(&mxnData_, null_deleter()); + } + + PEHCurrency::PEHCurrency() { + data_ = boost::shared_ptr(&pehData_, null_deleter()); + } + + PEICurrency::PEICurrency() { + data_ = boost::shared_ptr(&peiData_, null_deleter()); + } + + PENCurrency::PENCurrency() { + data_ = boost::shared_ptr(&penData_, null_deleter()); + } + + TTDCurrency::TTDCurrency() { + data_ = boost::shared_ptr(&ttdData_, null_deleter()); + } + + USDCurrency::USDCurrency() { + data_ = boost::shared_ptr(&usdData_, null_deleter()); + } + + VEBCurrency::VEBCurrency() { + data_ = boost::shared_ptr(&vebData_, null_deleter()); + } +} diff --git a/CLI/america.hpp b/CLI/america.hpp new file mode 100644 index 0000000000..a499ac14b0 --- /dev/null +++ b/CLI/america.hpp @@ -0,0 +1,200 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005, 2008 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file america.hpp + \brief American currencies + + Data from http://fx.sauder.ubc.ca/currency_table.html + and http://www.thefinancials.com/vortex/CurrencyFormats.html +*/ + +#ifndef quantlib_american_currencies_hpp +#define quantlib_american_currencies_hpp + +#include + +namespace QuantLib { + + //! Argentinian peso + /*! The ISO three-letter code is ARS; the numeric code is 32. + It is divided in 100 centavos. + + \ingroup currencies + */ + class ARSCurrency : public Currency { + public: + ARSCurrency(); + protected: + static Data arsData_; + }; + + //! Brazilian real + /*! The ISO three-letter code is BRL; the numeric code is 986. + It is divided in 100 centavos. + + \ingroup currencies + */ + class BRLCurrency : public Currency { + public: + BRLCurrency(); + protected: + static Data brlData_; + }; + + //! Canadian dollar + /*! The ISO three-letter code is CAD; the numeric code is 124. + It is divided into 100 cents. + + \ingroup currencies + */ + class CADCurrency : public Currency { + public: + CADCurrency(); + protected: + static Data cadData_; + }; + + //! Chilean peso + /*! The ISO three-letter code is CLP; the numeric code is 152. + It is divided in 100 centavos. + + \ingroup currencies + */ + class CLPCurrency : public Currency { + public: + CLPCurrency(); + protected: + static Data clpData_; + }; + + //! Colombian peso + /*! The ISO three-letter code is COP; the numeric code is 170. + It is divided in 100 centavos. + + \ingroup currencies + */ + class COPCurrency : public Currency { + public: + COPCurrency(); + protected: + static Data copData_; + }; + + //! Mexican peso + /*! The ISO three-letter code is MXN; the numeric code is 484. + It is divided in 100 centavos. + + \ingroup currencies + */ + class MXNCurrency : public Currency { + public: + MXNCurrency(); + protected: + static Data mxnData_; + }; + + //! Peruvian nuevo sol + /*! The ISO three-letter code is PEN; the numeric code is 604. + It is divided in 100 centimos. + + \ingroup currencies + */ + class PENCurrency : public Currency { + public: + PENCurrency(); + protected: + static Data penData_; + }; + + //! Peruvian inti + /*! The ISO three-letter code was PEI. + It was divided in 100 centimos. A numeric code is not available; + as per ISO 3166-1, we assign 998 as a user-defined code. + + Obsoleted by the nuevo sol since July 1991. + + \ingroup currencies + */ + class PEICurrency : public Currency { + public: + PEICurrency(); + protected: + static Data peiData_; + }; + + //! Peruvian sol + /*! The ISO three-letter code was PEH. A numeric code is not available; + as per ISO 3166-1, we assign 999 as a user-defined code. + It was divided in 100 centavos. + + Obsoleted by the inti since February 1985. + + \ingroup currencies + */ + class PEHCurrency : public Currency { + public: + PEHCurrency(); + protected: + static Data pehData_; + }; + + //! Trinidad & Tobago dollar + /*! The ISO three-letter code is TTD; the numeric code is 780. + It is divided in 100 cents. + + \ingroup currencies + */ + class TTDCurrency : public Currency { + public: + TTDCurrency(); + protected: + static Data ttdData_; + }; + + //! U.S. dollar + /*! The ISO three-letter code is USD; the numeric code is 840. + It is divided in 100 cents. + + \ingroup currencies + */ + class USDCurrency : public Currency { + public: + USDCurrency(); + protected: + static Data usdData_; + }; + + //! Venezuelan bolivar + /*! The ISO three-letter code is VEB; the numeric code is 862. + It is divided in 100 centimos. + + \ingroup currencies + */ + class VEBCurrency : public Currency { + public: + VEBCurrency(); + protected: + static Data vebData_; + }; + +} + + +#endif diff --git a/CLI/asia.cpp b/CLI/asia.cpp new file mode 100644 index 0000000000..a26a6c33ee --- /dev/null +++ b/CLI/asia.cpp @@ -0,0 +1,178 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005, 2008 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + namespace { + + struct null_deleter { + void operator()(void const *) const { + } + }; + + } + + Currency::Data BDTCurrency::bdtData_("Bangladesh taka", "BDT", 50, + "Bt", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data CNYCurrency::cnyData_("Chinese yuan", "CNY", 156, + "Y", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data HKDCurrency::hkdData_("Honk Kong dollar", "HKD", 344, + "HK$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data ILSCurrency::ilsData_("Israeli shekel", "ILS", 376, + "NIS", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data INRCurrency::inrData_("Indian rupee", "INR", 356, + "Rs", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data IQDCurrency::iqdData_("Iraqi dinar", "IQD", 368, + "ID", "", 1000, + Rounding(), + "%2% %1$.3f"); + + Currency::Data IRRCurrency::irrData_("Iranian rial", "IRR", 364, + "Rls", "", 1, + Rounding(), + "%3% %1$.2f"); + + Currency::Data JPYCurrency::jpyData_("Japanese yen", "JPY", 392, + "\xA5", "", 100, + Rounding(), + "%3% %1$.0f"); + + Currency::Data KRWCurrency::krwData_("South-Korean won", "KRW", 410, + "W", "", 100, + Rounding(), + "%3% %1$.0f"); + + Currency::Data KWDCurrency::kwdData_("Kuwaiti dinar", "KWD", 414, + "KD", "", 1000, + Rounding(), + "%3% %1$.3f"); + + Currency::Data NPRCurrency::nprData_("Nepal rupee", "NPR", 524, + "NRs", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data PKRCurrency::pkrData_("Pakistani rupee", "PKR", 586, + "Rs", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data SARCurrency::sarData_("Saudi riyal", "SAR", 682, + "SRls", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data SGDCurrency::sgdData_("Singapore dollar", "SGD", 702, + "S$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data THBCurrency::thbData_("Thai baht", "THB", 764, + "Bht", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data TWDCurrency::twdData_("Taiwan dollar", "TWD", 901, + "NT$", "", 100, + Rounding(), + "%3% %1$.2f"); + + BDTCurrency::BDTCurrency() { + data_ = boost::shared_ptr(&bdtData_, null_deleter()); + } + + CNYCurrency::CNYCurrency() { + data_ = boost::shared_ptr(&cnyData_, null_deleter()); + } + + HKDCurrency::HKDCurrency() { + data_ = boost::shared_ptr(&hkdData_, null_deleter()); + } + + ILSCurrency::ILSCurrency() { + data_ = boost::shared_ptr(&ilsData_, null_deleter()); + } + + INRCurrency::INRCurrency() { + data_ = boost::shared_ptr(&inrData_, null_deleter()); + } + + IQDCurrency::IQDCurrency() { + data_ = boost::shared_ptr(&iqdData_, null_deleter()); + } + + IRRCurrency::IRRCurrency() { + data_ = boost::shared_ptr(&irrData_, null_deleter()); + } + + JPYCurrency::JPYCurrency() { + data_ = boost::shared_ptr(&jpyData_, null_deleter()); + } + + KRWCurrency::KRWCurrency() { + data_ = boost::shared_ptr(&krwData_, null_deleter()); + } + + KWDCurrency::KWDCurrency() { + data_ = boost::shared_ptr(&kwdData_, null_deleter()); + } + + NPRCurrency::NPRCurrency() { + data_ = boost::shared_ptr(&nprData_, null_deleter()); + } + + PKRCurrency::PKRCurrency() { + data_ = boost::shared_ptr(&pkrData_, null_deleter()); + } + + SARCurrency::SARCurrency() { + data_ = boost::shared_ptr(&sarData_, null_deleter()); + } + + SGDCurrency::SGDCurrency() { + data_ = boost::shared_ptr(&sgdData_, null_deleter()); + } + + THBCurrency::THBCurrency() { + data_ = boost::shared_ptr(&thbData_, null_deleter()); + } + + TWDCurrency::TWDCurrency() { + data_ = boost::shared_ptr(&twdData_, null_deleter()); + } + +} diff --git a/CLI/asia.hpp b/CLI/asia.hpp new file mode 100644 index 0000000000..b737848f05 --- /dev/null +++ b/CLI/asia.hpp @@ -0,0 +1,244 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file asia.hpp + \brief Asian currencies + + Data from http://fx.sauder.ubc.ca/currency_table.html + and http://www.thefinancials.com/vortex/CurrencyFormats.html +*/ + +#ifndef quantlib_asian_currencies_hpp +#define quantlib_asian_currencies_hpp + +#include + +namespace QuantLib { + + //! Bangladesh taka + /*! The ISO three-letter code is BDT; the numeric code is 50. + It is divided in 100 paisa. + + \ingroup currencies + */ + class BDTCurrency : public Currency { + public: + BDTCurrency(); + protected: + static Data bdtData_; + }; + + //! Chinese yuan + /*! The ISO three-letter code is CNY; the numeric code is 156. + It is divided in 100 fen. + + \ingroup currencies + */ + class CNYCurrency : public Currency { + public: + CNYCurrency(); + protected: + static Data cnyData_; + }; + + //! Honk Kong dollar + /*! The ISO three-letter code is HKD; the numeric code is 344. + It is divided in 100 cents. + + \ingroup currencies + */ + class HKDCurrency : public Currency { + public: + HKDCurrency(); + protected: + static Data hkdData_; + }; + + //! Israeli shekel + /*! The ISO three-letter code is ILS; the numeric code is 376. + It is divided in 100 agorot. + + \ingroup currencies + */ + class ILSCurrency : public Currency { + public: + ILSCurrency(); + protected: + static Data ilsData_; + }; + + //! Indian rupee + /*! The ISO three-letter code is INR; the numeric code is 356. + It is divided in 100 paise. + + \ingroup currencies + */ + class INRCurrency : public Currency { + public: + INRCurrency(); + protected: + static Data inrData_; + }; + + //! Iraqi dinar + /*! The ISO three-letter code is IQD; the numeric code is 368. + It is divided in 1000 fils. + + \ingroup currencies + */ + class IQDCurrency : public Currency { + public: + IQDCurrency(); + protected: + static Data iqdData_; + }; + + //! Iranian rial + /*! The ISO three-letter code is IRR; the numeric code is 364. + It has no subdivisions. + + \ingroup currencies + */ + class IRRCurrency : public Currency { + public: + IRRCurrency(); + protected: + static Data irrData_; + }; + + //! Japanese yen + /*! The ISO three-letter code is JPY; the numeric code is 392. + It is divided into 100 sen. + + \ingroup currencies + */ + class JPYCurrency : public Currency { + public: + JPYCurrency(); + protected: + static Data jpyData_; + }; + + //! South-Korean won + /*! The ISO three-letter code is KRW; the numeric code is 410. + It is divided in 100 chon. + + \ingroup currencies + */ + class KRWCurrency : public Currency { + public: + KRWCurrency(); + protected: + static Data krwData_; + }; + + //! Kuwaiti dinar + /*! The ISO three-letter code is KWD; the numeric code is 414. + It is divided in 1000 fils. + + \ingroup currencies + */ + class KWDCurrency : public Currency { + public: + KWDCurrency(); + protected: + static Data kwdData_; + }; + + //! Nepal rupee + /*! The ISO three-letter code is NPR; the numeric code is 524. + It is divided in 100 paise. + + \ingroup currencies + */ + class NPRCurrency : public Currency { + public: + NPRCurrency(); + protected: + static Data nprData_; + }; + + //! Pakistani rupee + /*! The ISO three-letter code is PKR; the numeric code is 586. + It is divided in 100 paisa. + + \ingroup currencies + */ + class PKRCurrency : public Currency { + public: + PKRCurrency(); + protected: + static Data pkrData_; + }; + + //! Saudi riyal + /*! The ISO three-letter code is SAR; the numeric code is 682. + It is divided in 100 halalat. + + \ingroup currencies + */ + class SARCurrency : public Currency { + public: + SARCurrency(); + protected: + static Data sarData_; + }; + + //! %Singapore dollar + /*! The ISO three-letter code is SGD; the numeric code is 702. + It is divided in 100 cents. + + \ingroup currencies + */ + class SGDCurrency : public Currency { + public: + SGDCurrency(); + protected: + static Data sgdData_; + }; + + //! Thai baht + /*! The ISO three-letter code is THB; the numeric code is 764. + It is divided in 100 stang. + + \ingroup currencies + */ + class THBCurrency : public Currency { + public: + THBCurrency(); + protected: + static Data thbData_; + }; + + //! %Taiwan dollar + /*! The ISO three-letter code is TWD; the numeric code is 901. + It is divided in 100 cents. + + \ingroup currencies + */ + class TWDCurrency : public Currency { + public: + TWDCurrency(); + protected: + static Data twdData_; + }; +} + +#endif diff --git a/CLI/europe.cpp b/CLI/europe.cpp new file mode 100644 index 0000000000..7533797b57 --- /dev/null +++ b/CLI/europe.cpp @@ -0,0 +1,365 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005, 2006 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + namespace { + + struct null_deleter { + void operator()(void const *) const { + } + }; + + } + + Currency::Data BGLCurrency::bglData_("Bulgarian lev", "BGL", 100, + "lv", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data BYRCurrency::byrData_("Belarussian ruble", "BYR", 974, + "BR", "", 1, + Rounding(), + "%2% %1$.0f"); + + Currency::Data CHFCurrency::chfData_("Swiss franc", "CHF", 756, + "SwF", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data CYPCurrency::cypData_("Cyprus pound", "CYP", 196, + "\xA3" "C", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data CZKCurrency::czkData_("Czech koruna", "CZK", 203, + "Kc", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data DKKCurrency::dkkData_("Danish krone", "DKK", 208, + "Dkr", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data EEKCurrency::eekData_("Estonian kroon", "EEK", 233, + "KR", "", 100, + Rounding(), + "%1$.2f %2%"); + + Currency::Data EURCurrency::eurData_("European Euro", "EUR", 978, + "", "", 100, + ClosestRounding(2), + "%2% %1$.2f"); + + Currency::Data GBPCurrency::gbpData_("British pound sterling", "GBP", 826, + "\xA3", "p", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data HUFCurrency::hufData_("Hungarian forint", "HUF", 348, + "Ft", "", 1, + Rounding(), + "%1$.0f %3%"); + + Currency::Data ISKCurrency::iskData_("Iceland krona", "ISK", 352, + "IKr", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data LTLCurrency::ltlData_("Lithuanian litas", "LTL", 440, + "Lt", "", 100, + Rounding(), + "%1$.2f %3%"); + + + Currency::Data LVLCurrency::lvlData_("Latvian lat", "LVL", 428, + "Ls", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data MTLCurrency::mtlData_("Maltese lira", "MTL", 470, + "Lm", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data NOKCurrency::nokData_("Norwegian krone", "NOK", 578, + "NKr", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data PLNCurrency::plnData_("Polish zloty", "PLN", 985, + "zl", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data ROLCurrency::rolData_("Romanian leu", "ROL", 642, + "L", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data RONCurrency::ronData_("Romanian new leu", + "RON", 946, + "L", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data SEKCurrency::sekData_("Swedish krona", "SEK", 752, + "kr", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data SITCurrency::sitData_("Slovenian tolar", "SIT", 705, + "SlT", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data SKKCurrency::skkData_("Slovak koruna", "SKK", 703, + "Sk", "", 100, + Rounding(), + "%1$.2f %3%"); + + Currency::Data TRLCurrency::trlData_("Turkish lira", "TRL", 792, + "TL", "", 100, + Rounding(), + "%1$.0f %3%"); + + Currency::Data TRYCurrency::tryData_("New Turkish lira", "TRY", 949, + "YTL", "", 100, + Rounding(), + "%1$.2f %3%"); + + + Currency::Data ATSCurrency::atsData_("Austrian shilling", "ATS", 40, + "", "", 100, + Rounding(), + "%2% %1$.2f", + EURCurrency()); + + Currency::Data BEFCurrency::befData_("Belgian franc", "BEF", 56, + "", "", 1, + Rounding(), + "%2% %1$.0f", + EURCurrency()); + + Currency::Data DEMCurrency::demData_("Deutsche mark", "DEM", 276, + "DM", "", 100, + Rounding(), + "%1$.2f %3%", + EURCurrency()); + + Currency::Data ESPCurrency::espData_("Spanish peseta", "ESP", 724, + "Pta", "", 100, + Rounding(), + "%1$.0f %3%", + EURCurrency()); + + Currency::Data FIMCurrency::fimData_("Finnish markka", "FIM", 246, + "mk", "", 100, + Rounding(), + "%1$.2f %3%", + EURCurrency()); + + Currency::Data FRFCurrency::frfData_("French franc", "FRF", 250, + "", "", 100, + Rounding(), + "%1$.2f %2%", + EURCurrency()); + + Currency::Data GRDCurrency::grdData_("Greek drachma", "GRD", 300, + "", "", 100, + Rounding(), + "%1$.2f %2%", + EURCurrency()); + + Currency::Data IEPCurrency::iepData_("Irish punt", "IEP", 372, + "", "", 100, + Rounding(), + "%2% %1$.2f", + EURCurrency()); + + Currency::Data ITLCurrency::itlData_("Italian lira", "ITL", 380, + "L", "", 1, + Rounding(), + "%3% %1$.0f", + EURCurrency()); + + Currency::Data LUFCurrency::lufData_("Luxembourg franc", "LUF", 442, + "F", "", 100, + Rounding(), + "%1$.0f %3%", + EURCurrency()); + + Currency::Data NLGCurrency::nlgData_("Dutch guilder", "NLG", 528, + "f", "", 100, + Rounding(), + "%3% %1$.2f", + EURCurrency()); + + Currency::Data PTECurrency::pteData_("Portuguese escudo", "PTE", 620, + "Esc", "", 100, + Rounding(), + "%1$.0f %3%", + EURCurrency()); + + BGLCurrency::BGLCurrency() { + data_ = boost::shared_ptr(&bglData_, null_deleter()); + } + + BYRCurrency::BYRCurrency() { + data_ = boost::shared_ptr(&byrData_, null_deleter()); + } + + CHFCurrency::CHFCurrency() { + data_ = boost::shared_ptr(&chfData_, null_deleter()); + } + + CYPCurrency::CYPCurrency() { + data_ = boost::shared_ptr(&cypData_, null_deleter()); + } + + CZKCurrency::CZKCurrency() { + data_ = boost::shared_ptr(&czkData_, null_deleter()); + } + + DKKCurrency::DKKCurrency() { + data_ = boost::shared_ptr(&dkkData_, null_deleter()); + } + + EEKCurrency::EEKCurrency() { + data_ = boost::shared_ptr(&eekData_, null_deleter()); + } + + EURCurrency::EURCurrency() { + data_ = boost::shared_ptr(&eurData_, null_deleter()); + } + + GBPCurrency::GBPCurrency() { + data_ = boost::shared_ptr(&gbpData_, null_deleter()); + } + + HUFCurrency::HUFCurrency() { + data_ = boost::shared_ptr(&hufData_, null_deleter()); + } + + ISKCurrency::ISKCurrency() { + data_ = boost::shared_ptr(&iskData_, null_deleter()); + } + + LTLCurrency::LTLCurrency() { + data_ = boost::shared_ptr(<lData_, null_deleter()); + } + + LVLCurrency::LVLCurrency() { + data_ = boost::shared_ptr(&lvlData_, null_deleter()); + } + + MTLCurrency::MTLCurrency() { + data_ = boost::shared_ptr(&mtlData_, null_deleter()); + } + + NOKCurrency::NOKCurrency() { + data_ = boost::shared_ptr(&nokData_, null_deleter()); + } + + PLNCurrency::PLNCurrency() { + data_ = boost::shared_ptr(&plnData_, null_deleter()); + } + + ROLCurrency::ROLCurrency() { + data_ = boost::shared_ptr(&rolData_, null_deleter()); + } + + RONCurrency::RONCurrency() { + data_ = boost::shared_ptr(&ronData_, null_deleter()); + } + + SEKCurrency::SEKCurrency() { + data_ = boost::shared_ptr(&sekData_, null_deleter()); + } + + SITCurrency::SITCurrency() { + data_ = boost::shared_ptr(&sitData_, null_deleter()); + } + + SKKCurrency::SKKCurrency() { + data_ = boost::shared_ptr(&skkData_, null_deleter()); + } + + TRLCurrency::TRLCurrency() { + data_ = boost::shared_ptr(&trlData_, null_deleter()); + } + + TRYCurrency::TRYCurrency() { + data_ = boost::shared_ptr(&tryData_, null_deleter()); + } + + ATSCurrency::ATSCurrency() { + data_ = boost::shared_ptr(&atsData_, null_deleter()); + } + + BEFCurrency::BEFCurrency() { + data_ = boost::shared_ptr(&befData_, null_deleter()); + } + + DEMCurrency::DEMCurrency() { + data_ = boost::shared_ptr(&demData_, null_deleter()); + } + + ESPCurrency::ESPCurrency() { + data_ = boost::shared_ptr(&espData_, null_deleter()); + } + + FIMCurrency::FIMCurrency() { + data_ = boost::shared_ptr(&fimData_, null_deleter()); + } + + FRFCurrency::FRFCurrency() { + data_ = boost::shared_ptr(&frfData_, null_deleter()); + } + + GRDCurrency::GRDCurrency() { + data_ = boost::shared_ptr(&grdData_, null_deleter()); + } + + IEPCurrency::IEPCurrency() { + data_ = boost::shared_ptr(&iepData_, null_deleter()); + } + + ITLCurrency::ITLCurrency() { + data_ = boost::shared_ptr(&itlData_, null_deleter()); + } + + LUFCurrency::LUFCurrency() { + data_ = boost::shared_ptr(&lufData_, null_deleter()); + } + + NLGCurrency::NLGCurrency() { + data_ = boost::shared_ptr(&nlgData_, null_deleter()); + } + + PTECurrency::PTECurrency() { + data_ = boost::shared_ptr(&pteData_, null_deleter()); + } + +} + diff --git a/CLI/europe.hpp b/CLI/europe.hpp new file mode 100644 index 0000000000..bd72e1c14d --- /dev/null +++ b/CLI/europe.hpp @@ -0,0 +1,522 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005, 2006 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file europe.hpp + \brief European currencies + + Data from http://fx.sauder.ubc.ca/currency_table.html + and http://www.thefinancials.com/vortex/CurrencyFormats.html +*/ + +#ifndef quantlib_european_currencies_hpp +#define quantlib_european_currencies_hpp + +#include + +namespace QuantLib { + + //! Bulgarian lev + /*! The ISO three-letter code is BGL; the numeric code is 100. + It is divided in 100 stotinki. + + \ingroup currencies + */ + class BGLCurrency : public Currency { + public: + BGLCurrency(); + protected: + static Data bglData_; + }; + + //! Belarussian ruble + /*! The ISO three-letter code is BYR; the numeric code is 974. + It has no subdivisions. + + \ingroup currencies + */ + class BYRCurrency : public Currency { + public: + BYRCurrency(); + protected: + static Data byrData_; + }; + + //! Swiss franc + /*! The ISO three-letter code is CHF; the numeric code is 756. + It is divided into 100 cents. + + \ingroup currencies + */ + class CHFCurrency : public Currency { + public: + CHFCurrency(); + protected: + static Data chfData_; + }; + + //! Cyprus pound + /*! The ISO three-letter code is CYP; the numeric code is 196. + It is divided in 100 cents. + + \ingroup currencies + */ + class CYPCurrency : public Currency { + public: + CYPCurrency(); + protected: + static Data cypData_; + }; + + //! Czech koruna + /*! The ISO three-letter code is CZK; the numeric code is 203. + It is divided in 100 haleru. + + \ingroup currencies + */ + class CZKCurrency : public Currency { + public: + CZKCurrency(); + protected: + static Data czkData_; + }; + + //! Danish krone + /*! The ISO three-letter code is DKK; the numeric code is 208. + It is divided in 100 øre. + + \ingroup currencies + */ + class DKKCurrency : public Currency { + public: + DKKCurrency(); + protected: + static Data dkkData_; + }; + + //! Estonian kroon + /*! The ISO three-letter code is EEK; the numeric code is 233. + It is divided in 100 senti. + + \ingroup currencies + */ + class EEKCurrency : public Currency { + public: + EEKCurrency(); + protected: + static Data eekData_; + }; + + //! European Euro + /*! The ISO three-letter code is EUR; the numeric code is 978. + It is divided into 100 cents. + + \ingroup currencies + */ + class EURCurrency : public Currency { + public: + EURCurrency(); + protected: + static Data eurData_; + }; + + //! British pound sterling + /*! The ISO three-letter code is GBP; the numeric code is 826. + It is divided into 100 pence. + + \ingroup currencies + */ + class GBPCurrency : public Currency { + public: + GBPCurrency(); + protected: + static Data gbpData_; + }; + + //! Hungarian forint + /*! The ISO three-letter code is HUF; the numeric code is 348. + It has no subdivisions. + + \ingroup currencies + */ + class HUFCurrency : public Currency { + public: + HUFCurrency(); + protected: + static Data hufData_; + }; + + //! Icelandic krona + /*! The ISO three-letter code is ISK; the numeric code is 352. + It is divided in 100 aurar. + + \ingroup currencies + */ + class ISKCurrency : public Currency { + public: + ISKCurrency(); + protected: + static Data iskData_; + }; + + //! Lithuanian litas + /*! The ISO three-letter code is LTL; the numeric code is 440. + It is divided in 100 centu. + + \ingroup currencies + */ + class LTLCurrency : public Currency { + public: + LTLCurrency(); + protected: + static Data ltlData_; + }; + + //! Latvian lat + /*! The ISO three-letter code is LVL; the numeric code is 428. + It is divided in 100 santims. + + \ingroup currencies + */ + class LVLCurrency : public Currency { + public: + LVLCurrency(); + protected: + static Data lvlData_; + }; + + //! Maltese lira + /*! The ISO three-letter code is MTL; the numeric code is 470. + It is divided in 100 cents. + + \ingroup currencies + */ + class MTLCurrency : public Currency { + public: + MTLCurrency(); + protected: + static Data mtlData_; + }; + + //! Norwegian krone + /*! The ISO three-letter code is NOK; the numeric code is 578. + It is divided in 100 øre. + + \ingroup currencies + */ + class NOKCurrency : public Currency { + public: + NOKCurrency(); + protected: + static Data nokData_; + }; + + //! Polish zloty + /*! The ISO three-letter code is PLN; the numeric code is 985. + It is divided in 100 groszy. + + \ingroup currencies + */ + class PLNCurrency : public Currency { + public: + PLNCurrency(); + protected: + static Data plnData_; + }; + + //! Romanian leu + /*! The ISO three-letter code was ROL; the numeric code was 642. + It was divided in 100 bani. + + Obsoleted by the new leu since July 2005. + + \ingroup currencies + */ + class ROLCurrency : public Currency { + public: + ROLCurrency(); + protected: + static Data rolData_; + }; + + //! Romanian new leu + /*! The ISO three-letter code is RON; the numeric code is 946. + It is divided in 100 bani. + + \ingroup currencies + */ + class RONCurrency : public Currency { + public: + RONCurrency(); + protected: + static Data ronData_; + }; + + //! Swedish krona + /*! The ISO three-letter code is SEK; the numeric code is 752. + It is divided in 100 öre. + + \ingroup currencies + */ + class SEKCurrency : public Currency { + public: + SEKCurrency(); + protected: + static Data sekData_; + }; + + //! Slovenian tolar + /*! The ISO three-letter code is SIT; the numeric code is 705. + It is divided in 100 stotinov. + + \ingroup currencies + */ + class SITCurrency : public Currency { + public: + SITCurrency(); + protected: + static Data sitData_; + }; + + //! Slovak koruna + /*! The ISO three-letter code is SKK; the numeric code is 703. + It is divided in 100 halierov. + + \ingroup currencies + */ + class SKKCurrency : public Currency { + public: + SKKCurrency(); + protected: + static Data skkData_; + }; + + //! Turkish lira + /*! The ISO three-letter code was TRL; the numeric code was 792. + It was divided in 100 kurus. + + Obsoleted by the new Turkish lira since 2005. + + \ingroup currencies + */ + class TRLCurrency : public Currency { + public: + TRLCurrency(); + protected: + static Data trlData_; + }; + + //! New Turkish lira + /*! The ISO three-letter code is TRY; the numeric code is 949. + It is divided in 100 new kurus. + + \ingroup currencies + */ + class TRYCurrency : public Currency { + public: + TRYCurrency(); + protected: + static Data tryData_; + }; + + // currencies obsoleted by Euro + + //! Austrian shilling + /*! The ISO three-letter code was ATS; the numeric code was 40. + It was divided in 100 groschen. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class ATSCurrency : public Currency { + public: + ATSCurrency(); + protected: + static Data atsData_; + }; + + //! Belgian franc + /*! The ISO three-letter code was BEF; the numeric code was 56. + It had no subdivisions. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class BEFCurrency : public Currency { + public: + BEFCurrency(); + protected: + static Data befData_; + }; + + //! Deutsche mark + /*! The ISO three-letter code was DEM; the numeric code was 276. + It was divided into 100 pfennig. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class DEMCurrency : public Currency { + public: + DEMCurrency(); + protected: + static Data demData_; + }; + + //! Spanish peseta + /*! The ISO three-letter code was ESP; the numeric code was 724. + It was divided in 100 centimos. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class ESPCurrency : public Currency { + public: + ESPCurrency(); + protected: + static Data espData_; + }; + + //! Finnish markka + /*! The ISO three-letter code was FIM; the numeric code was 246. + It was divided in 100 penniä. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class FIMCurrency : public Currency { + public: + FIMCurrency(); + protected: + static Data fimData_; + }; + + //! French franc + /*! The ISO three-letter code was FRF; the numeric code was 250. + It was divided in 100 centimes. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class FRFCurrency : public Currency { + public: + FRFCurrency(); + protected: + static Data frfData_; + }; + + //! Greek drachma + /*! The ISO three-letter code was GRD; the numeric code was 300. + It was divided in 100 lepta. + + Obsoleted by the Euro since 2001. + + \ingroup currencies + */ + class GRDCurrency : public Currency { + public: + GRDCurrency(); + protected: + static Data grdData_; + }; + + //! Irish punt + /*! The ISO three-letter code was IEP; the numeric code was 372. + It was divided in 100 pence. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class IEPCurrency : public Currency { + public: + IEPCurrency(); + protected: + static Data iepData_; + }; + + //! Italian lira + /*! The ISO three-letter code was ITL; the numeric code was 380. + It had no subdivisions. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class ITLCurrency : public Currency { + public: + ITLCurrency(); + protected: + static Data itlData_; + }; + + //! Luxembourg franc + /*! The ISO three-letter code was LUF; the numeric code was 442. + It was divided in 100 centimes. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class LUFCurrency : public Currency { + public: + LUFCurrency(); + protected: + static Data lufData_; + }; + + //! Dutch guilder + /*! The ISO three-letter code was NLG; the numeric code was 528. + It was divided in 100 cents. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class NLGCurrency : public Currency { + public: + NLGCurrency(); + protected: + static Data nlgData_; + }; + + //! Portuguese escudo + /*! The ISO three-letter code was PTE; the numeric code was 620. + It was divided in 100 centavos. + + Obsoleted by the Euro since 1999. + + \ingroup currencies + */ + class PTECurrency : public Currency { + public: + PTECurrency(); + protected: + static Data pteData_; + }; + +} + +#endif diff --git a/CLI/oceania.cpp b/CLI/oceania.cpp new file mode 100644 index 0000000000..6ed6ae60e8 --- /dev/null +++ b/CLI/oceania.cpp @@ -0,0 +1,52 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005 StatPro Italia srl + Copyright (C) 2012 Simon Shakeshaft + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + namespace { + + struct null_deleter { + void operator()(void const *) const { + } + }; + + } + + Currency::Data AUDCurrency::audData_("Australian dollar", "AUD", 36, + "A$", "", 100, + Rounding(), + "%3% %1$.2f"); + + Currency::Data NZDCurrency::nzdData_("New Zealand dollar", "NZD", 554, + "NZ$", "", 100, + Rounding(), + "%3% %1$.2f"); + + AUDCurrency::AUDCurrency() { + data_ = boost::shared_ptr(&audData_, null_deleter()); + } + + NZDCurrency::NZDCurrency() { + data_ = boost::shared_ptr(&nzdData_, null_deleter()); + } + +} \ No newline at end of file diff --git a/CLI/oceania.hpp b/CLI/oceania.hpp new file mode 100644 index 0000000000..60f85f4868 --- /dev/null +++ b/CLI/oceania.hpp @@ -0,0 +1,63 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file oceania.hpp + \brief Oceanian currencies + + Data from http://fx.sauder.ubc.ca/currency_table.html + and http://www.thefinancials.com/vortex/CurrencyFormats.html +*/ + +#ifndef quantlib_oceanian_currencies_hpp +#define quantlib_oceanian_currencies_hpp + +#include + +namespace QuantLib { + + //! Australian dollar + /*! The ISO three-letter code is AUD; the numeric code is 36. + It is divided into 100 cents. + + \ingroup currencies + */ + class AUDCurrency : public Currency { + public: + AUDCurrency(); + protected: + static Data audData_; + }; + + //! New Zealand dollar + /*! The ISO three-letter code is NZD; the numeric code is 554. + It is divided in 100 cents. + + \ingroup currencies + */ + class NZDCurrency : public Currency { + public: + NZDCurrency(); + protected: + static Data nzdData_; + }; + +} + + +#endif diff --git a/CLI/singleton.hpp b/CLI/singleton.hpp new file mode 100644 index 0000000000..a40469a94f --- /dev/null +++ b/CLI/singleton.hpp @@ -0,0 +1,117 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2004, 2005, 2007 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file singleton.hpp + \brief basic support for the singleton pattern +*/ + +#ifndef quantlib_singleton_hpp +#define quantlib_singleton_hpp + +#include +#include +#if defined(QL_PATCH_MSVC71) + #pragma unmanaged +#elif defined(QL_PATCH_MSVC) + #pragma managed(push, off) +#endif +#include +#if defined(QL_PATCH_MSVC71) + #pragma managed +#elif defined(QL_PATCH_MSVC) + #pragma managed(pop) +#endif +#include + +namespace QuantLib { + + #if defined(QL_ENABLE_SESSIONS) + // definition must be provided by the user + Integer sessionId(); + #endif + + // this is required on VC++ (with a slightly different syntax depending + // on the compiler version) when CLR support is enabled + #if defined(QL_PATCH_MSVC71) + #pragma unmanaged + #elif defined(QL_PATCH_MSVC) + #pragma managed(push, off) + #endif + + //! Basic support for the singleton pattern. + /*! The typical use of this class is: + \code + class Foo : public Singleton { + friend class Singleton; + private: + Foo() {} + public: + ... + }; + \endcode + which, albeit sub-optimal, frees one from the concerns of + creating and managing the unique instance and can serve later + as a single implemementation point should synchronization + features be added. + + \ingroup patterns + */ + template + class Singleton : private boost::noncopyable { + private: + //! the unique instance + static std::map > instances_; + public: + //! access to the unique instance + static T& instance(); + protected: + Singleton() {} + }; + + // static member definition + template + std::map > Singleton::instances_; + + // template definitions + + template + T& Singleton::instance() { + //static std::map > instances_; + #if defined(QL_ENABLE_SESSIONS) + Integer id = sessionId(); + #else + Integer id = 0; + #endif + boost::shared_ptr& instance = instances_[id]; + if (!instance) + instance = boost::shared_ptr(new T); + return *instance; + } + + // reverts the change above + #if defined(QL_PATCH_MSVC71) + #pragma managed + #elif defined(QL_PATCH_MSVC) + #pragma managed(pop) + #endif + +} + + +#endif diff --git a/ChangeLog.txt b/ChangeLog.txt index 99ad4b3c7d..0133f94570 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,1406 +1,5581 @@ -2010-04-16 13:27 Luigi Ballabio +2012-09-04 15:31 Luigi Ballabio - * [r17251] ql/Makefile.am, ql/quantlib.hpp: + * [r18332] ql/cashflows/conundrumpricer.cpp, + ql/cashflows/couponpricer.cpp: - Amendment of revision 17249: fixed name of newly-added file in - Makefile. - -2010-04-16 12:24 Luigi Ballabio - - * [r17250] Contributors.txt, News.txt, QuantLib.dev, - QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, - ql/Makefile.am, ql/config.sun.hpp, ql/instruments/makecapfloor.cpp, - ql/instruments/makeyoyinflationcapfloor.cpp, ql/qldefines.hpp, - ql/termstructures/inflation/seasonality.cpp: - - Bug fix: QuantLib now compiles with Sun Studio on Solaris. - - Unlike gcc and VC++, Sun Studio does not make math functions - available - in the global namespace when including the header. Now we - added - a few using directives for them, thus reproducing the other - compilers' - bad behavior. Not extremely clean, but it sure beats hunting the - sources - for all instances of unqualified math functions before each release. - - Other minor fixes include reordering a couple of expressions so that - they're more palatable to Sun Studio (for which v.end(), where v is - a std::vector, is not an lvalue) and adding the std:: qualification - to a function call. + Prevented division by zero in floating-rate coupons. - Thanks to Norbert Irmer for the report and for testing the changes. + This could happen in degenerate cases where the accrual time + is null, which now raise a proper exception. + Another solution might be to turn the calculations around and + calculate the price in terms of the rate, which would remove + the division altogether. -2010-04-16 12:24 Luigi Ballabio +2012-09-04 12:36 Luigi Ballabio - * [r17249] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, - QuantLib_vc9.vcproj, acinclude.m4, configure.ac, ql/Makefile.am, - ql/config.ansi.hpp, ql/config.mingw.hpp, ql/config.msvc.hpp, - ql/mathconstants.hpp, ql/qldefines.hpp, ql/quantlib.hpp: + * [r18331] test-suite/bonds.cpp: - Update: unified treatment of missing math constants. - - Previously, the presence of needed constants such as M_PI was - checked - in ./configure as well as in several compiler-specific configuration - files (sometimes without even including the header first.) - It is now checked in a single header file. + Removed unused variable. -2010-04-16 12:21 Luigi Ballabio +2012-09-04 12:36 Luigi Ballabio - * [r17248] ql/instruments/forwardvanillaoption.hpp, - ql/pricingengines/forward/forwardengine.hpp: - - Bug fix: moved method definition to correct header file. + * [r18330] LICENSE.TXT: - Although ForwardOptionArguments was declared in the header - forwardvanillaoption.hpp, its validate method was defined in - forwardengine.hpp. The definition is now in the correct file. - Thanks to Norbert Irmer for the bug report. + Updated copyright years -2010-04-16 12:20 Luigi Ballabio +2012-09-03 15:32 Ferdinando Ametrano - * [r17247] ql/experimental/credit/defaultevent.cpp, - ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, - ql/experimental/finitedifferences/fdmhestonsolver.cpp: + * [r18329] ql/termstructures/yield/oisratehelper.cpp: - Bug fix: corrected wrong constructor signatures in cpp files. - - A few constructors were declared as taking doubles and defined as - taking const doubles. Strangely enough, neither gcc nor VC++ had - anything to say about that. - Thanks to Norbert Irmer for the bug report. + ooops, removed double withDiscountingTermStructure -2010-04-13 08:50 Luigi Ballabio +2012-09-03 15:25 Ferdinando Ametrano - * [r17244] Contributors.txt, News.txt, - ql/cashflows/conundrumpricer.cpp, ql/cashflows/couponpricer.cpp, - ql/cashflows/inflationcouponpricer.cpp, - ql/cashflows/rangeaccrual.cpp, - ql/experimental/coupons/subperiodcoupons.cpp, - test-suite/cashflows.cpp, test-suite/cashflows.hpp: - - Bug fix: checked dynamic_cast result to preven access violation. + * [r18328] ql/termstructures/yield/oisratehelper.cpp, + ql/termstructures/yield/oisratehelper.hpp: - Regression test added. - Thanks to Francesco Perissin for the bug report. + exposed exogenous discounting for OIS. Thanks to Roland Lichters -2010-04-09 16:07 Luigi Ballabio +2012-09-03 13:53 Luigi Ballabio - * [r17242] test-suite/creditdefaultswap.cpp: + * [r18327] ql/math/matrixutilities/symmetricschurdecomposition.cpp: - Test fix: ensure that today's date is a business day. + Fix for VC11 build (thanks to Xiangyu Hong). - Thanks to Gary Kennedy for reporting the issue. + And besides, it's a better use of make_pair anyway. -2010-04-09 13:19 Luigi Ballabio +2012-09-03 13:53 Luigi Ballabio - * [r17241] News.txt, - ql/termstructures/credit/defaultprobabilityhelpers.cpp, - test-suite/defaultprobabilitycurves.cpp: + * [r18326] ql/experimental/math/autocovariance.hpp, + test-suite/cdo.cpp, test-suite/fastfouriertransform.cpp: - Bug fix: properly account for protection-start date. + Build fixes for gcc 4.7 in C++11 mode. - Previously, the protection-start date was taken into account when - calculating the CDS coupon schedule, but not when calculating its - value (a few days of protection could be lost.) + Thanks to Klaus Spanderen and Joao Paulo Magalhaes. -2010-04-09 13:17 Luigi Ballabio +2012-09-03 13:52 Luigi Ballabio - * [r17240] ql/instruments/creditdefaultswap.cpp: + * [r18325] test-suite/Makefile.am: - Bug fix: comparison between protection start and accrual start was - incorrect. - -2010-04-09 13:15 Luigi Ballabio - - * [r17239] test-suite/defaultprobabilitycurves.cpp: + Build fix for MinGW (thanks to Bojan Nikolic). - Test fix: correct schedule calculation for the repriced CDS. - - Thanks to Kevin Kim for reporting the issue. + External libraries are better added to the LDADD variable instead + of LDFLAGS. Doing so puts them at the end of the command line, + which is less error-prone. -2010-04-07 13:12 Luigi Ballabio +2012-09-03 11:12 Ferdinando Ametrano - * [r17238] Announce.txt, configure.ac, ql/version.hpp: + * [r18323] ql/models/marketmodels/models/abcdvol.cpp, + ql/models/marketmodels/models/flatvol.cpp: - Increased version number to 1.0.1. + fixed bug for evolution times finer than correlation times. Thanks + to Peter Caspers -2010-04-07 08:02 Luigi Ballabio +2012-09-03 11:05 Ferdinando Ametrano - * [r17237] ChangeLog.txt, News.txt: + * [r18322] ql/models/marketmodels/models/abcdvol.cpp, + ql/models/marketmodels/models/flatvol.cpp: - Updated ChangeLog and News. + improved efficiency and readability -2010-04-06 13:38 Luigi Ballabio +2012-09-03 10:19 Ferdinando Ametrano - * [r17236] ql/patterns/singleton.hpp: + * [r18321] ql/models/marketmodels/models/abcdvol.cpp, + ql/models/marketmodels/models/flatvol.cpp: - Fix: manage Singleton correctly in .Net (thanks to Nathan Abbott.) + - improved readability + - removed unused vector in flatvol.cpp -2010-03-08 08:59 Luigi Ballabio +2012-09-03 10:17 Ferdinando Ametrano - * [r17212] ql/experimental/callablebonds/callablebond.cpp: - - Bug fix: create exercise-date vector correctly. + * [r18320] ql/models/marketmodels/evolutiondescription.hpp: - 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 simply discarded. For some - (e.g., ActualActual::Bond) it resulted in an exception instead. + fixed description (thanks to Peter Caspers) -2010-03-08 08:57 Luigi Ballabio +2012-08-31 13:16 Luigi Ballabio - * [r17211] ql/time/calendars/china.cpp, ql/time/calendars/china.hpp, - ql/time/calendars/hongkong.cpp, ql/time/calendars/hongkong.hpp, - ql/time/calendars/india.cpp, ql/time/calendars/india.hpp, - ql/time/calendars/indonesia.cpp, ql/time/calendars/indonesia.hpp, - ql/time/calendars/singapore.cpp, ql/time/calendars/singapore.hpp, - ql/time/calendars/southkorea.cpp, ql/time/calendars/taiwan.cpp, - ql/time/calendars/taiwan.hpp, ql/time/calendars/turkey.cpp, - ql/time/calendars/turkey.hpp: + * [r18319] configure.ac: - Update: added 2010 moving holidays for Eastern calendars. + Punctuation fixes. -2010-03-01 09:32 Luigi Ballabio +2012-08-31 13:16 Luigi Ballabio - * [r17180] ql/instruments/zerocouponinflationswap.cpp, - ql/instruments/zerocouponinflationswap.hpp: + * [r18318] configure.ac, ql/userconfig.hpp: - Bug fix: added missing method implementations. + Negative rates are now enabled by default also on Linux. -2010-03-01 09:32 Luigi Ballabio +2012-08-31 13:16 Luigi Ballabio - * [r17179] ql/cashflows/indexedcashflow.hpp: - - Bug fix: let an IndexedCashFlow observe its index. + * [r18317] ql/math/solvers1d/brent.hpp, test-suite/solvers.cpp, + test-suite/solvers.hpp: - 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. + Don't discard guess in Brent solver (thanks to Sebastian Poloczek). -2010-02-24 11:22 Luigi Ballabio +2012-08-31 13:15 Luigi Ballabio - * [r17170] Docs/Makefile.am: - + * [r18316] Announce.txt, configure.ac, ql/version.hpp: + Increased version number to 1.2.1 -2010-02-24 11:10 Luigi Ballabio +2012-08-30 13:26 Ferdinando Ametrano - * [r17167] Docs/images/QL-small.jpg, Docs/images/QL-title.jpg, - Docs/images/QL.bmp, Docs/images/QL.jpg, Docs/images/favicon.ico, - Docs/quantlibheader.html, Docs/quantlibheaderonline.html: + * [r18315] ql/pricingengines/bond/bondfunctions.cpp, + test-suite/bonds.cpp, test-suite/bonds.hpp: - Replaced unlicensed font in logo. + fixed bug: atm was wrong if non-coupon cashflows were included. + Unit test added. -2010-02-23 15:08 Luigi Ballabio +2012-08-29 14:03 Ferdinando Ametrano - * [r17153] ChangeLog.txt: + * [r18314] ql/cashflows/cashflows.cpp: - Updated ChangeLogs. + fixed bug: atm was wrong if non-coupon cashflows were included -2010-02-23 14:33 Luigi Ballabio +2012-08-29 13:59 Ferdinando Ametrano - * [r17148] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp, - ql/pricingengines/bond/bondfunctions.cpp, - ql/pricingengines/bond/bondfunctions.hpp: + * [r18313] ql/instruments/bond.cpp: - Backported revision 17145 from trunk. - - fixed bug in the previousAmount and previousRate functions; - - switched to reverse iterator signature for previousXXX functions. -2010-02-23 14:33 Luigi Ballabio +2012-07-31 14:11 Ferdinando Ametrano - * [r17147] ql/pricingengines/bond/bondfunctions.cpp: + * [r18305] ql/userconfig.hpp, test-suite/piecewiseyieldcurve.cpp: - Backported revision 17144 from trunk. - - Removed tradability requirement for next/previous inspectors. + defaulted to allow negative rates (define QL_NEGATIVE_RATES) as this + is happening for EUR OIS, CHF and German treasury yields, etc. -2010-02-23 14:33 Luigi Ballabio +2012-07-12 10:29 Luigi Ballabio - * [r17146] ql/instruments/bond.cpp: + * [r18297] ql/errors.cpp: - Backported revision 17143 from trunk. + Added implementation of assertion_failed_msg function. - Fixed "null maturity date" wrong behavior. + This is required for linking with recent Boost versions. + Thanks to Piter Dias. -2010-02-17 15:32 Luigi Ballabio +2012-07-05 15:30 Ferdinando Ametrano - * [r17115] ChangeLog.txt: + * [r18294] ql/patterns/observable.hpp: - Updated ChangeLog + added unregisterWithAll method -2010-02-17 15:09 Luigi Ballabio +2012-07-04 15:10 Ferdinando Ametrano - * [r17114] ql/cashflows/cashflows.cpp: - - Backported revision 17112 from trunk. + * [r18290] ql/cashflows/cashflows.cpp: - Cash flows on the same date should be aggregated in the return - value of CashFlows::nextCashFlowAmount and previous CashFlowAmount. + relaxed constrains -2010-02-10 09:09 Luigi Ballabio +2012-06-26 14:08 Luigi Ballabio - * [r17087] Examples/MarketModels/MarketModels.cpp: + * [r18276] ql/time/calendars/russia.cpp, ql/time/calendars/russia.hpp: - Added sessionId() implementation (thanks to Nathan Abbott.) + Fixed extent of new-year holidays for the Russian calendar. - The function is required when QL_ENABLE_SESSIONS is defined. + Thanks to Kirill Shemyakin. -2010-02-10 09:09 Luigi Ballabio +2012-05-18 15:48 Ferdinando Ametrano - * [r17086] Announce.txt, configure.ac, ql/version.hpp: + * [r18264] ql/instruments/bonds/btp.hpp: - Increased version number to 1.0. + rounded accrued interest as per market convention -2010-02-03 13:42 Ferdinando Ametrano +2012-05-18 15:46 Ferdinando Ametrano - * [r17060] ql/instruments/makeois.cpp: + * [r18263] ql/instruments/assetswap.cpp, ql/time/schedule.cpp: - fixed bug + added check -2010-02-02 16:44 Luigi Ballabio +2012-05-15 12:21 Luigi Ballabio - * [r17058] ql/termstructures/inflation/inflationhelpers.cpp, - ql/termstructures/inflation/inflationhelpers.hpp: + * [r18262] ql/math/interpolations/bicubicsplineinterpolation.hpp, + test-suite/interpolations.cpp, test-suite/interpolations.hpp: - Correctly pass the arguments as const references. - -2010-01-29 15:17 Luigi Ballabio - - * [r17056] ql/instruments/zerocouponinflationswap.cpp, - ql/instruments/zerocouponinflationswap.hpp: + Bicubic splines would not update their parameters correctly. - Passing argument by const reference. + Thanks to Fabio Ramponi for the fix. -2010-01-27 18:37 Ferdinando Ametrano +2012-05-14 14:35 Luigi Ballabio - * [r17051] ql/instruments/makeois.cpp: + * [r18261] ql/models/model.hpp: - fixed bug: standard EONIA OIS swap EOM convention is not enforced - for tenor longer than 2Y, and it was poorly enforced for shorter - tenor - -2010-01-27 17:53 Ferdinando Ametrano - - * [r17050] ql/termstructures/yield/oisratehelper.cpp: + Let base class use virtual inheritance from Observer. - fixed indentation + Thanks to Peter Caspers for the heads-up. -2010-01-27 13:00 Luigi Ballabio +2012-05-14 10:16 Luigi Ballabio - * [r17048] Announce.txt, configure.ac, ql/version.hpp: + * [r18260] ql/cashflows/overnightindexedcoupon.cpp: - Increased version number to 1.0b3. + Prevented out-of-bound access (thanks to Andre Miemiec). -2010-01-27 12:58 Luigi Ballabio +2012-05-04 06:54 Luigi Ballabio - * [r17047] ql/instruments/bond.cpp: + * [r18259] ql/math/rounding.cpp, test-suite/rounding.cpp: - Added guards against division by null notional. - -2010-01-27 12:58 Luigi Ballabio - - * [r17046] ql/math/distributions/normaldistribution.cpp: + Fixed bug in up-rounding (thanks to Simon Shakeshaft). - Fixed indentation. + 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. -2010-01-26 11:52 Ferdinando Ametrano +2012-04-27 13:20 Luigi Ballabio - * [r17041] - ql/termstructures/volatility/optionlet/spreadedoptionletvol.hpp: + * [r18258] test-suite/interpolations.cpp: - forwarded missing virtual method + Increased tolerance. -2010-01-22 10:12 Luigi Ballabio +2012-04-18 09:04 Luigi Ballabio - * [r17026] Readme.txt: + * [r18255] ql/math/optimization/problem.hpp: - Updated ReadMe. + Added warning to class documentation. -2010-01-22 10:11 Luigi Ballabio +2012-04-17 10:26 Luigi Ballabio - * [r17025] ql/models/marketmodels/products/multiproductcomposite.cpp: + * [r18250] ql/prices.cpp: - Backported revision 17024 from trunk. + Prevented switch from falling through (thanks to Simon Shakeshaft). -2010-01-21 13:56 Luigi Ballabio +2012-04-17 08:26 Luigi Ballabio - * [r17020] ChangeLog.txt, Docs/pages/history.docs, News.txt: + * [r18249] ql/instruments/bond.hpp, ql/instruments/bonds/cpibond.cpp, + test-suite/Makefile.am, test-suite/inflationcpibond.cpp, + test-suite/inflationcpibond.hpp, test-suite/inflationcpiswap.cpp, + test-suite/quantlibtestsuite.cpp, test-suite/testsuite.dev, + test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/testsuite_vc9.vcproj: - Updated ChangeLog and News - -2010-01-14 11:45 Luigi Ballabio - - * [r17011] man/BermudanSwaption.1, man/Bonds.1, man/CDS.1, - man/CallableBonds.1, man/ConvertibleBonds.1, man/DiscreteHedging.1, - man/EquityOption.1, man/FRA.1, man/FittedBondCurve.1, - man/Makefile.am, man/MarketModels.1, man/Replication.1, man/Repo.1, - man/SwapValuation.1: + Added notional calculation to CPI bond. - Backported revision 17004 from trunk. + 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. -2010-01-14 11:44 Luigi Ballabio +2012-03-28 12:47 Luigi Ballabio - * [r17010] - ql/experimental/finitedifferences/fdmhestonvariancemesher.cpp: + * [r18248] ql/time/schedule.cpp, test-suite/schedule.cpp, + test-suite/schedule.hpp: - Backported revisions 17008/17009 from trunk. + 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. -2010-01-13 12:37 Ferdinando Ametrano +2012-03-14 11:29 Luigi Ballabio - * [r16997] QuantLib.dev: + * [r18242] ql/math/solver1d.hpp: - updated version number + Fixed initialization of 1-D solver. -2010-01-13 11:54 Luigi Ballabio +2012-03-12 12:08 Luigi Ballabio - * [r16996] Announce.txt, configure.ac, ql/version.hpp: + * [r18241] Docs/pages/config.docs: - Increased version number to 1.0b2. + Removed documentation for obsolete flag -2010-01-12 11:31 Luigi Ballabio +2012-03-06 09:38 Luigi Ballabio - * [r16992] - ql/models/marketmodels/callability/swapforwardbasissystem.hpp: + * [r18236] Docs/pages/history.docs: - Fixed include guard (thanks to Leibniz777.) + Updated release dates -2010-01-08 15:53 Luigi Ballabio +2012-03-05 15:28 Luigi Ballabio - * [r16991] ChangeLog.txt: + * [r18233] News.txt: - Disabled keyword substitution. + Last-minute doc fix -2010-01-08 15:01 Luigi Ballabio +2012-02-22 11:39 Luigi Ballabio - * [r16990] ql/processes/hybridhestonhullwhiteprocess.cpp: + * [r18221] Contributors.txt, Docs/pages/authors.docs, + Docs/pages/history.docs, News.txt: - Backported revision 16989 from trunk. + Updated news and contributor list. -2010-01-07 17:21 Luigi Ballabio +2012-02-22 11:39 Luigi Ballabio - * [r16988] Examples/MarketModels/Makefile.am: + * [r18220] Makefile.am: - Added projects for MarketModels example to distributed tarball. + Added RPM spec file to distributed tarball. -2010-01-07 14:05 Luigi Ballabio +2012-02-22 10:35 Luigi Ballabio - * [r16985] test-suite/testsuite_vc9.vcproj: + * [r18219] ChangeLog.txt: - reset warning level back to regular level 3 and re-enabled - 4512,4511,4505 warnings + Updated ChangeLog. -2010-01-07 13:47 Ferdinando Ametrano +2012-02-22 09:14 Luigi Ballabio - * [r16984] QuantLib_vc9.vcproj: + * [r18218] Docs/pages/index.docs, Docs/quantlib.css, + Docs/quantlib.doxy: - reset warning level back to regular level 3 and re-enabled - 4512,4511,4505 warnings + Updated CSS for new doxygen version. -2010-01-07 11:07 Luigi Ballabio +2012-02-15 12:00 Luigi Ballabio - * [r16983] ql/termstructures/inflation/seasonality.cpp, - ql/termstructures/inflation/seasonality.hpp, - ql/termstructures/inflationtermstructure.cpp: + * [r18213] ql/cashflows/cashflows.cpp: - Replaced raw pointers with references in Seasonality interface. + Added default value for settlement date. - This might make it easier to use with shared pointers. + This was already done in the other functions. + Thanks to Peter Caspers for the heads-up. -2010-01-07 11:07 Luigi Ballabio +2012-02-13 17:21 Luigi Ballabio - * [r16982] ql/experimental/inflation/yoycapfloortermpricesurface.hpp, - ql/experimental/inflation/yoyinflationoptionletvolatilitystructure2.hpp, - ql/indexes/inflationindex.cpp, ql/indexes/inflationindex.hpp: + * [r18211] ql/instruments/bond.cpp: - Avoided a few more warnings on VC9. + Fixed expiration check. - The inflation-index fixings should eventually take care of their - boolean argument, but that can wait. The issue was documented. + The check now uses the passed settlement date instead of + today's one. - The other warnings were due to unused arguments in inherited - interfaces or to the compiler being unable to follow a loop logic. - The code was correct. + Thanks to Dagur Gunnarsson for the heads-up. -2009-12-30 16:28 Luigi Ballabio +2012-02-09 13:58 Luigi Ballabio - * [r16975] ql/experimental/convertiblebonds/tflattice.hpp: + * [r18210] test-suite/blackdeltacalculator.cpp, + test-suite/swingoption.cpp, test-suite/timeseries.cpp: - Fixed parameter types. - - The function definition used a different typedef. + Fixed a few miscellaneous warnings -2009-12-30 13:16 Luigi Ballabio +2012-02-09 13:58 Luigi Ballabio - * [r16966] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp, - ql/pricingengines/bond/bondfunctions.cpp, - ql/pricingengines/bond/bondfunctions.hpp: - - Reverted revision 16952. + * [r18209] ql/experimental/inflation/cpicapfloortermpricesurface.cpp, + ql/indexes/interestrateindex.cpp, ql/instruments/cpiswap.cpp, + ql/termstructure.cpp, ql/termstructures/inflationtermstructure.cpp: - We don't need to introduce this on the 1.0 branch. + Fixed initialization order -2009-12-29 11:31 Ferdinando Ametrano +2012-02-09 13:56 Luigi Ballabio - * [r16952] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp, - ql/pricingengines/bond/bondfunctions.cpp, - ql/pricingengines/bond/bondfunctions.hpp: + * [r18208] Examples/MarketModels/MarketModels.cpp, + ql/cashflows/cpicoupon.cpp, ql/cashflows/yoyinflationcoupon.cpp, + ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp, + ql/experimental/commodities/energybasisswap.cpp, + ql/experimental/commodities/energyvanillaswap.cpp, + ql/experimental/credit/basket.cpp, + ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.cpp, + ql/experimental/inflation/interpolatedyoyoptionletstripper.hpp, + ql/experimental/variancegamma/fftengine.cpp, + ql/experimental/varianceoption/integralhestonvarianceoptionengine.cpp, + ql/instruments/inflationcapfloor.cpp, + ql/math/optimization/linesearchbasedmethod.cpp, + ql/math/optimization/spherecylinder.cpp, + ql/models/shortrate/calibrationhelpers/swaptionhelper.cpp, + ql/pricingengines/credit/integralcdsengine.cpp, + ql/pricingengines/inflation/inflationcapfloorengines.cpp, + ql/termstructures/inflation/inflationhelpers.cpp, + ql/termstructures/yield/fittedbonddiscountcurve.cpp, + test-suite/assetswap.cpp, test-suite/blackdeltacalculator.cpp, + test-suite/cashflows.cpp, test-suite/compoundoption.cpp, + test-suite/inflationcapfloor.cpp, + test-suite/inflationcapflooredcoupon.cpp, + test-suite/inflationcpiswap.cpp, test-suite/inflationvolatility.cpp, + test-suite/margrabeoption.cpp, test-suite/swaption.cpp, + test-suite/volatilitymodels.cpp: - exposed accrualDays interface + Removed unused variables -2009-12-29 11:24 Ferdinando Ametrano +2012-02-08 16:09 Ferdinando Ametrano - * [r16951] ql/cashflows/coupon.cpp, ql/cashflows/coupon.hpp: + * [r18206] ql/pricingengines/blackformula.cpp: - fixed return value + extended error message -2009-12-29 11:24 Luigi Ballabio +2012-02-07 18:55 Ferdinando Ametrano - * [r16950] - ql/experimental/inflation/interpolatedyoyoptionletstripper.hpp: + * [r18205] ql/pricingengines/blackformula.cpp: - Fixed initialization order. + improved error message -2009-12-28 15:14 Luigi Ballabio +2012-02-07 18:52 Ferdinando Ametrano - * [r16947] test-suite/interpolations.cpp: + * [r18204] ql/pricingengines/blackformula.cpp, + ql/pricingengines/blackformula.hpp: - Fixed test-case output. + exploited put-call parity in order + 1) to check for solution existence + 2) to always solve for out-of-the-money options which have greater + vega and are numerically more robust to implied vol calculations -2009-12-28 15:14 Luigi Ballabio +2012-02-06 09:42 Ferdinando Ametrano - * [r16946] - ql/experimental/finitedifferences/sparseilupreconditioner.cpp, - ql/experimental/mcbasket/adaptedpathpayoff.cpp, - ql/experimental/mcbasket/pathmultiassetoption.hpp, - ql/models/marketmodels/curvestates/lmmcurvestate.cpp, - ql/models/marketmodels/curvestates/lmmcurvestate.hpp, - ql/models/marketmodels/proxygreekengine.cpp: + * [r18198] ql/patterns/lazyobject.hpp: - Fixed hard tabs and other whitespace. + added Luca Billi's comment about preventing infinite recursion -2009-12-28 15:14 Luigi Ballabio +2012-02-03 15:01 Ferdinando Ametrano - * [r16945] Docs/pages/license.docs, LICENSE.TXT: + * [r18195] ql/cashflow.cpp: - Updated list of copyright holders. + performance improvement -2009-12-28 15:14 Luigi Ballabio +2012-01-31 16:11 Ferdinando Ametrano - * [r16944] - ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.hpp: + * [r18194] ql/settings.hpp: - Reordeded inclusions. + ooops... fixed typo -2009-12-28 10:48 Luigi Ballabio +2012-01-31 15:56 Ferdinando Ametrano - * [r16942] Examples/MarketModels/MarketModels.cpp, - Examples/MarketModels/MarketModels.dev, - Examples/MarketModels/MarketModels_vc7.vcproj, - Examples/MarketModels/MarketModels_vc8.vcproj, - Examples/MarketModels/MarketModels_vc9.vcproj, - ql/experimental/finitedifferences/sparseilupreconditioner.hpp, - ql/experimental/mcbasket/adaptedpathpayoff.cpp, - ql/experimental/mcbasket/adaptedpathpayoff.hpp, - ql/experimental/mcbasket/longstaffschwartzmultipathpricer.cpp, - ql/experimental/mcbasket/longstaffschwartzmultipathpricer.hpp, - ql/experimental/mcbasket/mcamericanpathengine.hpp, - ql/experimental/mcbasket/mclongstaffschwartzpathengine.hpp, - ql/models/marketmodels/callability/swapforwardbasissystem.cpp, - ql/models/marketmodels/callability/swapforwardbasissystem.hpp, - ql/models/marketmodels/evolvers/lognormalfwdrateiballand.cpp, - ql/models/marketmodels/evolvers/lognormalfwdrateiballand.hpp, - ql/models/marketmodels/products/multistep/multistepinversefloater.cpp, - ql/models/marketmodels/products/multistep/multistepinversefloater.hpp, - ql/models/marketmodels/products/multistep/multisteppathwisewrapper.cpp, - ql/models/marketmodels/products/multistep/multisteppathwisewrapper.hpp, - ql/models/marketmodels/products/pathwise/pathwiseproductcallspecified.cpp, - ql/models/marketmodels/products/pathwise/pathwiseproductcallspecified.hpp, - ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.cpp, - ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.hpp, - ql/models/marketmodels/products/pathwise/pathwiseproductinversefloater.cpp, - ql/models/marketmodels/products/pathwise/pathwiseproductinversefloater.hpp, - ql/models/marketmodels/products/pathwise/pathwiseproductswap.cpp, - ql/models/marketmodels/products/pathwise/pathwiseproductswap.hpp: + * [r18193] ql/event.cpp, + ql/pricingengines/bond/discountingbondengine.cpp, + ql/pricingengines/capfloor/analyticcapfloorengine.cpp, + ql/pricingengines/swap/discountingswapengine.cpp, ql/settings.cpp, + ql/settings.hpp, test-suite/cashflows.cpp: - Fixed svn properties. + renamed includeReferenceDateCashFlows as includeReferenceDateEvents -2009-12-24 12:15 Luigi Ballabio +2012-01-31 15:43 Ferdinando Ametrano - * [r16939] ql/pricingengines/credit/integralcdsengine.cpp, - ql/pricingengines/credit/midpointcdsengine.cpp, - test-suite/creditdefaultswap.cpp: - - Fix for CDS fair-upfront calculation (thanks to Jose Aparicio.) + * [r18192] ql/event.cpp: - Previously, fair-upfront calculation required a non-null upfront - to begin with. This is no longer the case. + cleaned up variable name -2009-12-24 12:15 Luigi Ballabio +2012-01-31 14:25 Luigi Ballabio - * [r16938] ql/time/dategenerationrule.cpp, - ql/time/dategenerationrule.hpp, ql/time/schedule.cpp: + * [r18191] ql/time/schedule.cpp, test-suite/schedule.cpp, + test-suite/schedule.hpp: - Added new date-generation rule for CDS (thanks to Jose Aparicio.) - - With the new rule, the Schedule constructor computes the correct - start date as per Big Bang conventions. + Don't adjust end date to EOM if Unadjusted convention is given. -2009-12-22 15:17 Luigi Ballabio +2012-01-26 14:23 Ferdinando Ametrano - * [r16931] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, - QuantLib_vc9.vcproj, configure.ac, ql/experimental/Makefile.am, - ql/experimental/all.hpp, ql/experimental/exoticoptions, - ql/experimental/exoticoptions/Makefile.am, - ql/experimental/exoticoptions/all.hpp, - ql/experimental/exoticoptions/everestoption.cpp, - ql/experimental/exoticoptions/everestoption.hpp, - ql/experimental/exoticoptions/himalayaoption.cpp, - ql/experimental/exoticoptions/himalayaoption.hpp, - ql/experimental/exoticoptions/mceverestengine.cpp, - ql/experimental/exoticoptions/mceverestengine.hpp, - ql/experimental/exoticoptions/mchimalayaengine.cpp, - ql/experimental/exoticoptions/mchimalayaengine.hpp, - ql/experimental/exoticoptions/mcpagodaengine.cpp, - ql/experimental/exoticoptions/mcpagodaengine.hpp, - ql/experimental/exoticoptions/pagodaoption.cpp, - ql/experimental/exoticoptions/pagodaoption.hpp, - ql/instruments/Makefile.am, ql/instruments/all.hpp, - ql/instruments/everestoption.cpp, ql/instruments/everestoption.hpp, - ql/instruments/himalayaoption.cpp, - ql/instruments/himalayaoption.hpp, ql/instruments/pagodaoption.cpp, - ql/instruments/pagodaoption.hpp, - ql/pricingengines/basket/Makefile.am, - ql/pricingengines/basket/all.hpp, - ql/pricingengines/basket/mceverestengine.cpp, - ql/pricingengines/basket/mceverestengine.hpp, - ql/pricingengines/basket/mchimalayaengine.cpp, - ql/pricingengines/basket/mchimalayaengine.hpp, - ql/pricingengines/basket/mcpagodaengine.cpp, - ql/pricingengines/basket/mcpagodaengine.hpp, - test-suite/everestoption.cpp, test-suite/himalayaoption.cpp, - test-suite/pagodaoption.cpp: + * [r18189] ql/math/randomnumbers/inversecumulativersg.hpp: - Moved a few exotic options to experimental tree. + fixed comment -2009-12-22 10:09 Luigi Ballabio +2012-01-26 13:28 Luigi Ballabio - * [r16930] ql/processes/hestonprocess.hpp: + * [r18188] ql/config.msvc.hpp, + ql/math/matrixutilities/sparseilupreconditioner.cpp: - Changed default discretization for Heston process. + Backported uBlas fix for VC10. - The new default (giving a better performance) is quadratic - exponential with Martingale correction. + VC10 now builds cleanly with uBlas enabled. -2009-12-21 12:11 Luigi Ballabio +2012-01-17 10:54 Luigi Ballabio - * [r16923] ql/time/schedule.cpp: + * [r18181] ql/time/schedule.cpp, test-suite/Makefile.am, + test-suite/quantlibtestsuite.cpp, test-suite/schedule.cpp, + test-suite/schedule.hpp, test-suite/testsuite.dev, + test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/testsuite_vc9.vcproj: - Changes to end-of-month adjustment. + Check for duplicate dates in schedule. - The logic was made more explicit. Also, the Unadjusted convention - now supersedes a non-null calendar. - -2009-12-21 12:10 Luigi Ballabio - - * [r16922] ql/termstructures/interpolatedcurve.hpp: + When using daily frequency, consecutive dates might be + adjusted to the same business day resulting in duplicates. + This is now prevented. - Added missing return statement. + Thanks to Simone Medori for reporting the problem. -2009-12-17 12:58 Luigi Ballabio +2012-01-10 15:30 Ferdinando Ametrano - * [r16921] ql/processes/hestonprocess.cpp, - ql/processes/hestonprocess.hpp, test-suite/hestonmodel.cpp: + * [r18158] ql/instruments/assetswap.cpp: - Backported revisions 16863 and 16865 to 1.0.x branch. + fixed bug. + For the inquiring minds: Rev18001 tried to fix a bug about + payer/receiver not taken into account for par asset swap, but it did + it with the wrong sign and introduced a bug in the market asset + swap; Rev18012 fixed the former, this commit the latter. I know i + should have setup the unit-test before... I'll do it! -2009-12-17 12:57 Luigi Ballabio +2011-12-28 10:23 Luigi Ballabio - * [r16920] ql/cashflows/indexedcashflow.cpp, - ql/cashflows/indexedcashflow.hpp, - ql/instruments/zerocouponinflationswap.cpp: + * [r18148] ql/pricingengines/bond/discountingbondengine.cpp: - Ported revision 16918 to 1.0.x branch. + Avoid repeated NPV calculation if possible (thanks to Stephen Wong). -2009-12-16 15:29 Ferdinando Ametrano +2011-12-20 17:30 Luigi Ballabio - * [r16919] Examples/FittedBondCurve/FittedBondCurve.cpp: + * [r18140] ql/cashflows/cashflows.cpp: - fixed keyDates calculation when - bondSettlementDays!=curveSettlementDays - -2009-12-16 12:34 Ferdinando Ametrano - - * [r16917] Examples/FittedBondCurve/FittedBondCurve.cpp: + Keep curve extrapolation settings during z-spread finding. - cosmetic changes + Thanks to Barbados for the heads-up. -2009-12-16 12:32 Ferdinando Ametrano +2011-12-19 15:41 Ferdinando Ametrano - * [r16916] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18136] ql/patterns/lazyobject.hpp: - generalized yield calculation removing dependency from FixedBond + - fixed bug in the update method: non-lazy observers received + obsolete data because of calculated_ being still false + - improved unfreeze method to avoid multiple useless notifications + (we could/should avoiding all notifications if we didn't lose any + change, but for this a status variable should be introduced) -2009-12-16 11:53 Ferdinando Ametrano +2011-12-18 20:05 Klaus Spanderen - * [r16915] Examples/FittedBondCurve/FittedBondCurve.cpp: + * [r18135] test-suite/vpp.cpp: - - parametrized different DayCounter (bond, yield, curve) - - fixed rolling today calculation - - improved yield/duration price shift calculation + fixed test suite (removed todaysDate) -2009-12-16 11:51 Ferdinando Ametrano +2011-12-15 17:19 Luigi Ballabio - * [r16914] ql/pricingengines/bond/bondfunctions.cpp: + * [r18133] ql/time/calendars/sweden.cpp, ql/time/calendars/sweden.hpp: - enriched error message + Fixed Swedish Midsummer Eve's date (thanks to Gary Kennedy). -2009-12-16 10:57 Ferdinando Ametrano +2011-12-15 17:19 Luigi Ballabio - * [r16913] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18132] test-suite/vpp.cpp: - used bond settlement date instead of the curve reference date where - needed + Cleaned up test-suite output. -2009-12-16 10:50 Ferdinando Ametrano +2011-12-15 17:19 Luigi Ballabio - * [r16912] ql/termstructures/yield/fittedbonddiscountcurve.cpp, - ql/termstructures/yield/fittedbonddiscountcurve.hpp: + * [r18131] test-suite/inflationcpiswap.cpp: - added check for bondSettlementDate >= curveReferenceDate + Added missing copyright notice. -2009-12-16 10:22 Ferdinando Ametrano +2011-12-15 17:19 Luigi Ballabio - * [r16911] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18130] ql/cashflows/cpicouponpricer.cpp, + ql/cashflows/cpicouponpricer.hpp, + ql/experimental/exoticoptions/kirkspreadoptionengine.cpp, + ql/experimental/exoticoptions/kirkspreadoptionengine.hpp, + ql/experimental/inflation/cpicapfloortermpricesurface.cpp, + ql/experimental/inflation/cpicapfloortermpricesurface.hpp, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.cpp, + ql/indexes/swapindex.cpp, ql/indexes/swapindex.hpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.hpp, + test-suite/inflationcpicapfloor.hpp, + test-suite/inflationcpiswap.hpp, test-suite/quantlibtestsuite.cpp, + test-suite/swingoption.cpp, test-suite/swingoption.hpp: - - fixed yield calculation on the bond settlement date instaed of the - curve reference date - - checked isTradable instead of isExpired + Replaced hard tabs with spaces. -2009-12-15 18:44 Ferdinando Ametrano +2011-12-15 17:18 Luigi Ballabio - * [r16910] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18129] Docs/pages/license.docs, LICENSE.TXT: - renamed variable, avoided push_back + Updated list of copyright holders. -2009-12-15 18:15 Ferdinando Ametrano +2011-12-15 17:18 Luigi Ballabio - * [r16909] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18128] ql/experimental/processes/klugeextouprocess.cpp: - removed unused variable, avoided useless cashflow vector copy + Fixed copyright notice -2009-12-15 17:53 Ferdinando Ametrano +2011-12-15 17:18 Luigi Ballabio - * [r16908] ql/termstructures/yield/fittedbonddiscountcurve.cpp, - ql/termstructures/yield/fittedbonddiscountcurve.hpp: + * [r18127] + ql/experimental/finitedifferences/fdmexpextouinnervaluecalculator.hpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmklugeextouop.hpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.hpp, + ql/methods/finitedifferences/meshers/fdmsimpleprocess1dmesher.hpp: - inlined functions, renamed variables, enriched error messages + Enforced self-consistency of header files. -2009-12-15 17:20 Ferdinando Ametrano +2011-12-01 10:19 Luigi Ballabio - * [r16907] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18125] - improved performance avoiding useless cashflow vector copy and model - price vector allocation + Release branch for QuantLib 1.2.x -2009-12-15 14:55 Ferdinando Ametrano +2011-11-14 15:51 Ferdinando Ametrano - * [r16906] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18107] ql/pricingengines/swaption/blackswaptionengine.cpp: - minimized clean price error instead of dirty price error + fixed bug -2009-12-15 14:42 Ferdinando Ametrano +2011-11-10 11:19 Luigi Ballabio - * [r16905] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18104] ql/time/calendars/southkorea.cpp, + ql/time/calendars/southkorea.hpp: + + Added South Korea holidays for 2011/2012. - fixed bug: TermStructure's DayCounter must be used in order to - discount bonds' cashflows + Thanks to Charles Chongseok Hyun and Faycal El Karaa. -2009-12-15 09:23 Luigi Ballabio +2011-11-08 09:36 Ferdinando Ametrano - * [r16902] ql/termstructures/yield/ratehelpers.cpp: - - Don't store the original index to avoid circular references. + * [r18103] ql/instruments/bonds/floatingratebond.cpp, + ql/instruments/bonds/floatingratebond.hpp: - Spurious notifications during bootstrap are avoided by having - the copied index unregister with the term structure handle. + explicit variable name -2009-12-14 15:26 Luigi Ballabio +2011-11-05 14:11 Klaus Spanderen - * [r16901] ql/termstructures/yield/ratehelpers.cpp: + * [r18102] ql/methods/montecarlo/multipathgenerator.hpp: - Fixed registration issues. - - Registering a helper with its cloned index would cause a curve to - notify itself during bootstrap. + remove local copy of the time grid -2009-12-14 15:00 Luigi Ballabio +2011-11-05 14:09 Klaus Spanderen - * [r16900] ql/termstructures/yield/ratehelpers.cpp: + * [r18101] ql/termstructures/iterativebootstrap.hpp: - Reverted revision 16896. + fixed order of initialization -2009-12-14 14:50 Ferdinando Ametrano +2011-11-04 18:03 Ferdinando Ametrano - * [r16899] ql/termstructures/yield/bondhelpers.cpp, - ql/termstructures/yield/bondhelpers.hpp: + * [r18100] ql/instruments/bonds/btp.cpp, ql/instruments/bonds/btp.hpp: - - fixed bug in BondHelper (missing Bond copy) - - getting ready to get rid of FixedRateBondHelper::fixedRateBond() - method, so that FittedBondDiscountCurve can be used with any bond + enabled forward coupon calculation for CCTEU -2009-12-14 14:50 Ferdinando Ametrano +2011-11-02 16:03 Luigi Ballabio - * [r16898] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18082] ql/utilities/vectors.hpp, + test-suite/writerextensibleoption.cpp: - "fixed" commented out code + Avoided type-conversion warnings on VC++10 -2009-12-14 14:44 Ferdinando Ametrano +2011-11-02 16:02 Luigi Ballabio - * [r16897] ql/indexes/swapindex.hpp: + * [r18081] ql/config.msvc.hpp: - added inspector + Prevented auto-linking of Boost libraries -2009-12-14 14:31 Ferdinando Ametrano +2011-11-02 10:04 Luigi Ballabio - * [r16896] ql/termstructures/yield/ratehelpers.cpp: + * [r18080] ql/config.msvc.hpp: + + Unknown Microsoft compilers no longer cause an error. - - partially reverted Rev16893 and Rev16895 for SwapHelper, since - they broke the testsuite. Under investigation... + Now, a compiler with a version number higher than the latest + known no longer raises an error. It might not work, but we + give it a try anyway in the hope that it does work. -2009-12-14 10:08 Ferdinando Ametrano +2011-10-27 14:55 Luigi Ballabio - * [r16895] ql/termstructures/yield/ratehelpers.cpp: + * [r18067] ql/cashflows/cpicoupon.cpp, ql/cashflows/cpicoupon.hpp, + ql/cashflows/cpicouponpricer.cpp, ql/cashflows/cpicouponpricer.hpp, + ql/experimental/finitedifferences/fdextoujumpvanillaengine.cpp, + ql/experimental/finitedifferences/fdextoujumpvanillaengine.hpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp, + ql/experimental/finitedifferences/fdmexpextouinnervaluecalculator.hpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.cpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.hpp, + ql/experimental/finitedifferences/fdmextoujumpmodelinnervalue.hpp, + ql/experimental/finitedifferences/fdmextoujumpop.cpp, + ql/experimental/finitedifferences/fdmextoujumpop.hpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.cpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmklugeextouop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.hpp, + ql/experimental/finitedifferences/fdmklugeextousolver.hpp, + ql/experimental/finitedifferences/fdmsimple2dextousolver.hpp, + ql/experimental/finitedifferences/fdmsimple3dextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmspreadpayoffinnervalue.hpp, + ql/experimental/finitedifferences/fdmvppstepcondition.cpp, + ql/experimental/finitedifferences/fdmvppstepcondition.hpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.hpp, + ql/experimental/finitedifferences/fdsimpleklugeextouvppengine.cpp, + ql/experimental/finitedifferences/fdsimpleklugeextouvppengine.hpp, + ql/experimental/finitedifferences/vanillavppoption.cpp, + ql/experimental/finitedifferences/vanillavppoption.hpp, + ql/experimental/inflation/cpicapfloorengines.cpp, + ql/experimental/inflation/cpicapfloorengines.hpp, + ql/experimental/inflation/cpicapfloortermpricesurface.cpp, + ql/experimental/inflation/cpicapfloortermpricesurface.hpp, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.cpp, + ql/experimental/processes/extouwithjumpsprocess.cpp, + ql/experimental/processes/extouwithjumpsprocess.hpp, + ql/experimental/processes/gemanroncoroniprocess.cpp, + ql/experimental/processes/gemanroncoroniprocess.hpp, + ql/experimental/processes/klugeextouprocess.cpp, + ql/experimental/processes/klugeextouprocess.hpp, + ql/instruments/bonds/cpibond.cpp, ql/instruments/bonds/cpibond.hpp, + ql/instruments/cpicapfloor.cpp, ql/instruments/cpicapfloor.hpp, + ql/instruments/cpiswap.cpp, ql/instruments/cpiswap.hpp, + ql/instruments/dividendbarrieroption.cpp, + ql/instruments/dividendbarrieroption.hpp, + ql/instruments/vanillastorageoption.hpp, + ql/instruments/vanillaswingoption.cpp, + ql/instruments/vanillaswingoption.hpp, + ql/math/generallinearleastsquares.hpp, + ql/math/matrixutilities/bicgstab.cpp, + ql/math/matrixutilities/bicgstab.hpp, + ql/math/matrixutilities/sparseilupreconditioner.cpp, + ql/math/matrixutilities/sparseilupreconditioner.hpp, + ql/methods/finitedifferences/meshers/Makefile.am, + ql/methods/finitedifferences/meshers/all.hpp, + ql/methods/finitedifferences/meshers/concentrating1dmesher.cpp, + ql/methods/finitedifferences/meshers/concentrating1dmesher.hpp, + ql/methods/finitedifferences/meshers/exponentialjump1dmesher.cpp, + ql/methods/finitedifferences/meshers/exponentialjump1dmesher.hpp, + ql/methods/finitedifferences/meshers/fdm1dmesher.hpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmesher.cpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmesher.hpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmultistrikemesher.cpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmultistrikemesher.hpp, + ql/methods/finitedifferences/meshers/fdmhestonvariancemesher.cpp, + ql/methods/finitedifferences/meshers/fdmhestonvariancemesher.hpp, + ql/methods/finitedifferences/meshers/fdmmesher.hpp, + ql/methods/finitedifferences/meshers/fdmmeshercomposite.cpp, + ql/methods/finitedifferences/meshers/fdmmeshercomposite.hpp, + ql/methods/finitedifferences/meshers/fdmsimpleprocess1dmesher.cpp, + ql/methods/finitedifferences/meshers/fdmsimpleprocess1dmesher.hpp, + ql/methods/finitedifferences/meshers/uniform1dmesher.hpp, + ql/methods/finitedifferences/meshers/uniformgridmesher.cpp, + ql/methods/finitedifferences/meshers/uniformgridmesher.hpp, + ql/methods/finitedifferences/operators/Makefile.am, + ql/methods/finitedifferences/operators/all.hpp, + ql/methods/finitedifferences/operators/fdm2dblackscholesop.cpp, + ql/methods/finitedifferences/operators/fdm2dblackscholesop.hpp, + ql/methods/finitedifferences/operators/fdmbatesop.cpp, + ql/methods/finitedifferences/operators/fdmbatesop.hpp, + ql/methods/finitedifferences/operators/fdmblackscholesop.cpp, + ql/methods/finitedifferences/operators/fdmblackscholesop.hpp, + ql/methods/finitedifferences/operators/fdmhestonhullwhiteop.cpp, + ql/methods/finitedifferences/operators/fdmhestonhullwhiteop.hpp, + ql/methods/finitedifferences/operators/fdmhestonop.cpp, + ql/methods/finitedifferences/operators/fdmhestonop.hpp, + ql/methods/finitedifferences/operators/fdmlinearop.hpp, + ql/methods/finitedifferences/operators/fdmlinearopcomposite.hpp, + ql/methods/finitedifferences/operators/fdmlinearopiterator.hpp, + ql/methods/finitedifferences/operators/fdmlinearoplayout.cpp, + ql/methods/finitedifferences/operators/fdmlinearoplayout.hpp, + ql/methods/finitedifferences/operators/firstderivativeop.cpp, + ql/methods/finitedifferences/operators/firstderivativeop.hpp, + ql/methods/finitedifferences/operators/ninepointlinearop.cpp, + ql/methods/finitedifferences/operators/ninepointlinearop.hpp, + ql/methods/finitedifferences/operators/secondderivativeop.cpp, + ql/methods/finitedifferences/operators/secondderivativeop.hpp, + ql/methods/finitedifferences/operators/secondordermixedderivativeop.cpp, + ql/methods/finitedifferences/operators/secondordermixedderivativeop.hpp, + ql/methods/finitedifferences/operators/triplebandlinearop.cpp, + ql/methods/finitedifferences/operators/triplebandlinearop.hpp, + ql/methods/finitedifferences/schemes/Makefile.am, + ql/methods/finitedifferences/schemes/all.hpp, + ql/methods/finitedifferences/schemes/craigsneydscheme.cpp, + ql/methods/finitedifferences/schemes/craigsneydscheme.hpp, + ql/methods/finitedifferences/schemes/douglasscheme.cpp, + ql/methods/finitedifferences/schemes/douglasscheme.hpp, + ql/methods/finitedifferences/schemes/expliciteulerscheme.cpp, + ql/methods/finitedifferences/schemes/expliciteulerscheme.hpp, + ql/methods/finitedifferences/schemes/hundsdorferscheme.cpp, + ql/methods/finitedifferences/schemes/hundsdorferscheme.hpp, + ql/methods/finitedifferences/schemes/impliciteulerscheme.cpp, + ql/methods/finitedifferences/schemes/impliciteulerscheme.hpp, + ql/methods/finitedifferences/schemes/modifiedcraigsneydscheme.cpp, + ql/methods/finitedifferences/schemes/modifiedcraigsneydscheme.hpp, + ql/methods/finitedifferences/solvers/Makefile.am, + ql/methods/finitedifferences/solvers/all.hpp, + ql/methods/finitedifferences/solvers/fdm2dblackscholessolver.cpp, + ql/methods/finitedifferences/solvers/fdm2dblackscholessolver.hpp, + ql/methods/finitedifferences/solvers/fdm2dimsolver.cpp, + ql/methods/finitedifferences/solvers/fdm2dimsolver.hpp, + ql/methods/finitedifferences/solvers/fdm3dimsolver.cpp, + ql/methods/finitedifferences/solvers/fdm3dimsolver.hpp, + ql/methods/finitedifferences/solvers/fdmbackwardsolver.cpp, + ql/methods/finitedifferences/solvers/fdmbackwardsolver.hpp, + ql/methods/finitedifferences/solvers/fdmbatessolver.cpp, + ql/methods/finitedifferences/solvers/fdmbatessolver.hpp, + ql/methods/finitedifferences/solvers/fdmblackscholessolver.cpp, + ql/methods/finitedifferences/solvers/fdmblackscholessolver.hpp, + ql/methods/finitedifferences/solvers/fdmhestonhullwhitesolver.cpp, + ql/methods/finitedifferences/solvers/fdmhestonhullwhitesolver.hpp, + ql/methods/finitedifferences/solvers/fdmhestonsolver.cpp, + ql/methods/finitedifferences/solvers/fdmhestonsolver.hpp, + ql/methods/finitedifferences/solvers/fdmndimsolver.hpp, + ql/methods/finitedifferences/solvers/fdmsimple2dbssolver.cpp, + ql/methods/finitedifferences/solvers/fdmsimple2dbssolver.hpp, + ql/methods/finitedifferences/solvers/fdmsolverdesc.hpp, + ql/methods/finitedifferences/stepconditions/Makefile.am, + ql/methods/finitedifferences/stepconditions/all.hpp, + ql/methods/finitedifferences/stepconditions/fdmamericanstepcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmamericanstepcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmarithmeticaveragecondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmarithmeticaveragecondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmbermudanstepcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmbermudanstepcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmsimplestoragecondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmsimplestoragecondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmsimpleswingcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmsimpleswingcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmsnapshotcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmsnapshotcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmstepconditioncomposite.cpp, + ql/methods/finitedifferences/stepconditions/fdmstepconditioncomposite.hpp, + ql/methods/finitedifferences/utilities/Makefile.am, + ql/methods/finitedifferences/utilities/all.hpp, + ql/methods/finitedifferences/utilities/fdmdirichletboundary.cpp, + ql/methods/finitedifferences/utilities/fdmdirichletboundary.hpp, + ql/methods/finitedifferences/utilities/fdmdividendhandler.cpp, + ql/methods/finitedifferences/utilities/fdmdividendhandler.hpp, + ql/methods/finitedifferences/utilities/fdminnervaluecalculator.cpp, + ql/methods/finitedifferences/utilities/fdminnervaluecalculator.hpp, + ql/methods/finitedifferences/utilities/fdmquantohelper.cpp, + ql/methods/finitedifferences/utilities/fdmquantohelper.hpp, + ql/pricingengines/asian/fdblackscholesasianengine.cpp, + ql/pricingengines/asian/fdblackscholesasianengine.hpp, + ql/pricingengines/barrier/fdblackscholesbarrierengine.cpp, + ql/pricingengines/barrier/fdblackscholesbarrierengine.hpp, + ql/pricingengines/barrier/fdblackscholesrebateengine.cpp, + ql/pricingengines/barrier/fdblackscholesrebateengine.hpp, + ql/pricingengines/barrier/fdhestonbarrierengine.cpp, + ql/pricingengines/barrier/fdhestonbarrierengine.hpp, + ql/pricingengines/barrier/fdhestonrebateengine.cpp, + ql/pricingengines/barrier/fdhestonrebateengine.hpp, + ql/pricingengines/basket/fd2dblackscholesvanillaengine.cpp, + ql/pricingengines/basket/fd2dblackscholesvanillaengine.hpp, + ql/pricingengines/vanilla/fdbatesvanillaengine.cpp, + ql/pricingengines/vanilla/fdbatesvanillaengine.hpp, + ql/pricingengines/vanilla/fdblackscholesvanillaengine.cpp, + ql/pricingengines/vanilla/fdblackscholesvanillaengine.hpp, + ql/pricingengines/vanilla/fdhestonhullwhitevanillaengine.cpp, + ql/pricingengines/vanilla/fdhestonhullwhitevanillaengine.hpp, + ql/pricingengines/vanilla/fdhestonvanillaengine.cpp, + ql/pricingengines/vanilla/fdhestonvanillaengine.hpp, + ql/pricingengines/vanilla/fdsimplebsswingengine.cpp, + ql/pricingengines/vanilla/fdsimplebsswingengine.hpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.cpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.hpp, + test-suite/inflationcpicapfloor.cpp, + test-suite/inflationcpicapfloor.hpp, + test-suite/inflationcpiswap.cpp, test-suite/inflationcpiswap.hpp, + test-suite/swingoption.cpp, test-suite/swingoption.hpp, + test-suite/vpp.cpp, test-suite/vpp.hpp: - removed leftover + Fixed svn properties -2009-12-14 09:49 Ferdinando Ametrano +2011-10-27 12:52 Luigi Ballabio - * [r16894] ql/math/interpolations/sabrinterpolation.hpp: + * [r18065] ql/indexes/inflationindex.cpp, + ql/indexes/inflationindex.hpp, test-suite/inflation.cpp: - more reasonable default value + 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. -2009-12-14 09:46 Ferdinando Ametrano +2011-10-27 12:51 Luigi Ballabio - * [r16893] ql/termstructures/yield/ratehelpers.cpp: + * [r18061] ql/instruments/bond.cpp, ql/instruments/bond.hpp: - - fixed bug (keeping copy of original IborIndex could lead to - infinite recursion if the curve is later assigned to that index) - - improved error messages - - added comments + Added startDate() inspector to Bond class. -2009-12-14 09:15 Luigi Ballabio +2011-10-27 12:51 Luigi Ballabio - * [r16892] ql/termstructure.cpp: + * [r18060] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/time/daycounters/Makefile.am, + ql/time/daycounters/business252.cpp, + ql/time/daycounters/business252.hpp, test-suite/daycounters.cpp: - Removed early check. + Improved performance of business/252 day counter. - On the one hand, it was calling virtual methods from the base-class - constructor, which often doesn't do what one intended. On the other - hand, it might have prevented building an instance of a class that - could have fixed calendar and settlement days later on. + The naive implementation would count the business days + between two dates at each invocation. This one 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. This improves the performance + dramatically. -2009-12-11 17:06 Luigi Ballabio +2011-10-25 12:41 Luigi Ballabio - * [r16891] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, - QuantLib_vc9.vcproj, configure.ac, ql/experimental/Makefile.am, - ql/experimental/all.hpp, ql/experimental/convertiblebonds, - ql/experimental/convertiblebonds/Makefile.am, - ql/experimental/convertiblebonds/all.hpp, - ql/experimental/convertiblebonds/binomialconvertibleengine.hpp, - ql/experimental/convertiblebonds/convertiblebond.cpp, - ql/experimental/convertiblebonds/convertiblebond.hpp, - ql/experimental/convertiblebonds/discretizedconvertible.cpp, - ql/experimental/convertiblebonds/discretizedconvertible.hpp, - ql/experimental/convertiblebonds/tflattice.hpp, - ql/instruments/bonds/Makefile.am, ql/instruments/bonds/all.hpp, - ql/instruments/bonds/convertiblebond.cpp, - ql/instruments/bonds/convertiblebond.hpp, - ql/methods/lattices/Makefile.am, ql/methods/lattices/all.hpp, - ql/methods/lattices/tflattice.hpp, ql/pricingengines/Makefile.am, - ql/pricingengines/all.hpp, ql/pricingengines/hybrid, - test-suite/convertiblebonds.cpp: + * [r18058] ql/indexes/iborindex.hpp: + + Moved forecastFixing(Date,Date,Time) overload to private section. - Moved ConvertibleBond to experimental tree. + When used with cached dates, this overload can give quite a + performance boost to coupon calculations (see IborCoupon) + but is potentially misleading: by passing the wrong dates, + one can ask a 6-months index for a 1-year fixing. - The current implementation using an inner option class should - be reviewed. + For that reason, we're making this method private and + we're declaring the IborCoupon class (which uses it) as a + friend. -2009-12-11 11:20 Luigi Ballabio +2011-10-24 09:10 Luigi Ballabio - * [r16890] Contributors.txt, Docs/pages/authors.docs, - ql/pricingengines/hybrid/discretizedconvertible.cpp: + * [r18057] ql/instruments/bonds/cpibond.cpp, + ql/instruments/bonds/cpibond.hpp, ql/instruments/cpiswap.cpp, + ql/instruments/cpiswap.hpp, test-suite/inflationcpiswap.cpp: - Fixed discounting of dividends on convertible-bond grid. + Changed class-name capitalization. - Thanks to Benoit Houzelle and Samuel Lerouge. + The change makes the names of CPISwap and CPIBond consistent + with other class names. -2009-12-10 18:55 Ferdinando Ametrano +2011-10-24 09:10 Luigi Ballabio - * [r16889] ql/termstructures/yield/fittedbonddiscountcurve.cpp: + * [r18056] ql/cashflows/cpicoupon.cpp, ql/cashflows/cpicoupon.hpp, + ql/experimental/inflation/cpicapfloorengines.cpp, + ql/experimental/inflation/cpicapfloorengines.hpp, + ql/instruments/bonds/cpibond.cpp, ql/instruments/bonds/cpibond.hpp, + ql/instruments/cpicapfloor.cpp, ql/instruments/cpicapfloor.hpp, + ql/instruments/cpiswap.cpp, ql/instruments/cpiswap.hpp, + test-suite/inflationcpicapfloor.cpp, + test-suite/inflationcpiswap.cpp: - cleaned up code avoiding InterestRate constructor - -2009-12-09 18:41 Ferdinando Ametrano - - * [r16883] ., ql/experimental/credit/issuer.cpp, - ql/experimental/credit/issuer.hpp, - ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, - ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, - ql/pricingengines/basket/mceuropeanbasketengine.cpp, - ql/pricingengines/basket/mceuropeanbasketengine.hpp: + Hard tab/whitespace cleanup. - merged r116727 through r16882 of quantlib/branches/R000909-branch - into quantlib/branches/R01000x-branch respecting ancestry + This was put in a separate commit to avoid confusing diffs. -2009-12-09 17:11 Ferdinando Ametrano +2011-10-24 09:09 Luigi Ballabio - * [r16882] ql/time/schedule.cpp: + * [r18055] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, ql/cashflows/Makefile.am, + ql/cashflows/all.hpp, ql/cashflows/baseindexedcashflow.cpp, + ql/cashflows/baseindexedcashflow.hpp, ql/cashflows/cpicoupon.cpp, + ql/cashflows/cpicoupon.hpp, + ql/experimental/inflation/cpicapfloorengines.cpp, + ql/instruments/bonds/cpibond.cpp, ql/instruments/bonds/cpibond.hpp, + ql/instruments/cpicapfloor.cpp, ql/instruments/cpicapfloor.hpp, + ql/instruments/cpiswap.cpp, ql/instruments/cpiswap.hpp, + test-suite/inflationcpicapfloor.cpp, + test-suite/inflationcpiswap.cpp: - avoided warning + Renamed BaseIndexedCashFlow to less generic CPICashFlow. + + The cash flow is currently pretty much tied to CPI instruments, + so I'd make this clear. We'll need another use case to be able + to generalize. + + Also, the name was somewhat confusing. It was meant to convey + the idea of base date and base level, but instead it suggested + that it was a base class for indexed cash flows. -2009-12-09 15:40 Luigi Ballabio +2011-10-24 09:09 Luigi Ballabio - * [r16881] Examples/BermudanSwaption/BermudanSwaption.cpp, - Examples/Bonds/Bonds.cpp, Examples/CDS/CDS.cpp, - Examples/CallableBonds/CallableBonds.cpp, - Examples/ConvertibleBonds/ConvertibleBonds.cpp, - Examples/DiscreteHedging/DiscreteHedging.cpp, - Examples/EquityOption/EquityOption.cpp, Examples/FRA/FRA.cpp, - Examples/FittedBondCurve/FittedBondCurve.cpp, - Examples/MarketModels/MarketModels.cpp, - Examples/Replication/Replication.cpp, Examples/Repo/Repo.cpp, - Examples/Swap/swapvaluation.cpp: + * [r18054] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/inflation/Makefile.am, + ql/experimental/inflation/all.hpp, + ql/experimental/inflation/cpicapfloorengines.cpp, + ql/experimental/inflation/cpicapfloorengines.hpp, + ql/pricingengines/inflation/Makefile.am, + ql/pricingengines/inflation/all.hpp, + ql/pricingengines/inflation/cpicapfloorengines.cpp, + ql/pricingengines/inflation/cpicapfloorengines.hpp, + test-suite/inflationcpicapfloor.cpp: - Write error messages to cerr instead of cout. + Moved CPI cap-floor engine to experimental. + + It depends on an experimental price structure. Also, I'd like to + understand better if we want this to really be an engine, since + it doesn't actually calculate---it interpolates known prices. + Of course, it's possible I'm just being picky. -2009-12-09 14:06 Luigi Ballabio +2011-10-24 09:08 Luigi Ballabio - * [r16880] - ql/experimental/commodities/unitofmeasureconversionmanager.cpp: + * [r18053] ql/cashflows/cpicoupon.hpp: - Fixed inverted conversion factors and removed redundant conversions. + Removed unnecessary inclusion. -2009-12-09 14:02 Luigi Ballabio +2011-10-24 09:08 Luigi Ballabio - * [r16879] ql/experimental/commodities/unitofmeasureconversion.cpp, - ql/experimental/commodities/unitofmeasureconversion.hpp: + * [r18052] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/termstructures/volatility/inflation/Makefile.am, + ql/termstructures/volatility/inflation/all.hpp, + ql/termstructures/volatility/inflation/constantcpivolatility.cpp, + ql/termstructures/volatility/inflation/constantcpivolatility.hpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.cpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.hpp: - Fixed conversions between commodity quantities. + Moved constant CPI-volatility structure to its own file. - Fixes included removing overly aggressive caching, setting the - right units to converted quantities, and reporting the correct - conversion factor for derived rates. + It was previously in the same file as its abstract base class. -2009-12-09 13:58 Luigi Ballabio +2011-10-24 09:01 Luigi Ballabio - * [r16878] - ql/experimental/commodities/unitofmeasureconversionmanager.cpp, - ql/experimental/commodities/unitofmeasureconversionmanager.hpp: + * [r18051] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/cashflows/cpicouponpricer.cpp, ql/cashflows/cpicouponpricer.hpp, + ql/experimental/inflation/Makefile.am, + ql/experimental/inflation/all.hpp, + ql/experimental/inflation/cpioptionletvolatilitystructure.cpp, + ql/experimental/inflation/cpioptionletvolatilitystructure.hpp, + ql/termstructures/volatility/inflation/Makefile.am, + ql/termstructures/volatility/inflation/all.hpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.cpp, + ql/termstructures/volatility/inflation/cpivolatilitystructure.hpp: - Reworked and simplified unit-conversion manager. + Moved CPI-volatility interface to core library. - This class was originally cloned from the exchange-rate manager, but - it doesn't need all the stuff it copied. The unnecessary parts have - been trimmed. - Also, the smart lookup should work now. + This was required for CPI coupons to be allowed into core, + along with the instruments depending on them (CPI swap, bond...) + The interface of both coupons and volatility makes sense---it is + based on the corresponding interest-rate entities---so I think + it's ok to stabilize it. -2009-12-09 11:05 Luigi Ballabio +2011-10-23 20:33 Klaus Spanderen - * [r16877] ql/methods/lattices/tflattice.hpp: + * [r18050] test-suite/vpp.cpp: - Fixed access to data members inherited from template base class. + added VPP Longstaff-Schartz Monte-Carlo test case -2009-12-08 17:33 Ferdinando Ametrano +2011-10-18 10:46 Luigi Ballabio - * [r16872] ql/pricingengines/swap/discountingswapengine.cpp: + * [r18047] ql/cashflows/couponpricer.cpp: + + Added the possibility to mark experimental inclusion as internal. - added try-catch block in order to enrich error message + For instance, in the case market in this changeset, the inclusion + is made to allow visitation of the experimental coupons; but this + doesn't affect exposed interfaces, so it is safe to leave it. -2009-12-08 17:17 Ferdinando Ametrano +2011-10-17 16:15 Luigi Ballabio - * [r16869] ql/termstructure.cpp: + * [r18045] + ql/experimental/finitedifferences/fdmexpextouinnervaluecalculator.hpp: - oops... fixed name clashing + Included qldefines.hpp -2009-12-08 16:35 Ferdinando Ametrano +2011-10-14 11:35 Luigi Ballabio - * [r16868] ql/termstructure.cpp: + * [r18041] acinclude.m4: - fixed bug (settlementDays must be accessed though inspector) and one - initialization + Avoid warnings in newer autoconf versions. -2009-12-08 16:34 Ferdinando Ametrano +2011-10-12 16:18 Ferdinando Ametrano - * [r16867] ql/termstructure.hpp: + * [r18034] ql/termstructures/yield/ratehelpers.cpp, + ql/termstructures/yield/ratehelpers.hpp: - added check + inlined few functions and replicated comments to improve readability -2009-12-03 18:17 Ferdinando Ametrano +2011-10-12 16:17 Ferdinando Ametrano - * [r16862] - ql/experimental/inflation/interpolatedyoyoptionletstripper.hpp, - ql/experimental/inflation/piecewiseyoyoptionletvolatility.hpp, - ql/termstructures/credit/probabilitytraits.hpp: + * [r18033] ql/instruments/assetswap.cpp, ql/instruments/assetswap.hpp: - - improved formatting - - muted unreferenced formal parameters + renamed payFixedRate as payBondCoupon, since the Bond could be + whatever kind -2009-12-03 16:15 Ferdinando Ametrano +2011-10-12 11:33 Luigi Ballabio - * [r16861] ql/models/marketmodels/utilities.cpp: + * [r18032] + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp:, + ql/experimental/finitedifferences/fdhestonbarrierengine.hpp:: - avoided warning + Removed other leftovers -2009-12-03 16:14 Ferdinando Ametrano +2011-10-11 19:22 Luigi Ballabio - * [r16860] ql/instruments/bonds/convertiblebond.cpp, - ql/instruments/bonds/convertiblebond.hpp: + * [r18031] ., QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, configure.ac, ql, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/bicgstab.cpp, + ql/experimental/finitedifferences/bicgstab.hpp, + ql/experimental/finitedifferences/concentrating1dmesher.cpp, + ql/experimental/finitedifferences/concentrating1dmesher.hpp, + ql/experimental/finitedifferences/craigsneydscheme.cpp, + ql/experimental/finitedifferences/craigsneydscheme.hpp, + ql/experimental/finitedifferences/dividendbarrieroption.cpp, + ql/experimental/finitedifferences/dividendbarrieroption.hpp, + ql/experimental/finitedifferences/douglasscheme.cpp, + ql/experimental/finitedifferences/douglasscheme.hpp, + ql/experimental/finitedifferences/expliciteulerscheme.cpp, + ql/experimental/finitedifferences/expliciteulerscheme.hpp, + ql/experimental/finitedifferences/exponentialjump1dmesher.cpp, + ql/experimental/finitedifferences/exponentialjump1dmesher.hpp, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.cpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.hpp, + ql/experimental/finitedifferences/fdblackscholesasianengine.cpp, + ql/experimental/finitedifferences/fdblackscholesasianengine.hpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.cpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.hpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.cpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.hpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdextoujumpvanillaengine.cpp, + ql/experimental/finitedifferences/fdextoujumpvanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp:, + ql/experimental/finitedifferences/fdhestonbarrierengine.hpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.hpp:, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonrebateengine.cpp, + ql/experimental/finitedifferences/fdhestonrebateengine.hpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.hpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp, + ql/experimental/finitedifferences/fdm1dmesher.hpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.cpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.cpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.hpp, + ql/experimental/finitedifferences/fdm2dimsolver.cpp, + ql/experimental/finitedifferences/fdm2dimsolver.hpp, + ql/experimental/finitedifferences/fdm3dimsolver.cpp, + ql/experimental/finitedifferences/fdm3dimsolver.hpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.cpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.hpp, + ql/experimental/finitedifferences/fdmarithmeticaveragecondition.cpp, + ql/experimental/finitedifferences/fdmarithmeticaveragecondition.hpp, + ql/experimental/finitedifferences/fdmbackwardsolver.cpp, + ql/experimental/finitedifferences/fdmbackwardsolver.hpp, + ql/experimental/finitedifferences/fdmbatesop.cpp, + ql/experimental/finitedifferences/fdmbatesop.hpp, + ql/experimental/finitedifferences/fdmbatessolver.cpp, + ql/experimental/finitedifferences/fdmbatessolver.hpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.cpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.hpp, + ql/experimental/finitedifferences/fdmblackscholesmesher.cpp, + ql/experimental/finitedifferences/fdmblackscholesmesher.hpp, + ql/experimental/finitedifferences/fdmblackscholesmultistrikemesher.cpp, + ql/experimental/finitedifferences/fdmblackscholesmultistrikemesher.hpp, + ql/experimental/finitedifferences/fdmblackscholesop.cpp, + ql/experimental/finitedifferences/fdmblackscholesop.hpp, + ql/experimental/finitedifferences/fdmblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmdirichletboundary.cpp, + ql/experimental/finitedifferences/fdmdirichletboundary.hpp, + ql/experimental/finitedifferences/fdmdividendhandler.cpp, + ql/experimental/finitedifferences/fdmdividendhandler.hpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.cpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.hpp, + ql/experimental/finitedifferences/fdmextoujumpmodelinnervalue.hpp, + ql/experimental/finitedifferences/fdmextoujumpop.cpp, + ql/experimental/finitedifferences/fdmextoujumpop.hpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.cpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmhestonhullwhiteop.cpp, + ql/experimental/finitedifferences/fdmhestonhullwhiteop.hpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.hpp, + ql/experimental/finitedifferences/fdmhestonop.cpp, + ql/experimental/finitedifferences/fdmhestonop.hpp, + ql/experimental/finitedifferences/fdmhestonsolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.hpp, + ql/experimental/finitedifferences/fdmhestonvariancemesher.cpp, + ql/experimental/finitedifferences/fdmhestonvariancemesher.hpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.cpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.hpp, + ql/experimental/finitedifferences/fdmklugeextouop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.hpp, + ql/experimental/finitedifferences/fdmklugeextousolver.hpp, + ql/experimental/finitedifferences/fdmlinearop.hpp, + ql/experimental/finitedifferences/fdmlinearopcomposite.hpp, + ql/experimental/finitedifferences/fdmlinearopiterator.hpp, + ql/experimental/finitedifferences/fdmlinearoplayout.cpp, + ql/experimental/finitedifferences/fdmlinearoplayout.hpp, + ql/experimental/finitedifferences/fdmmesher.hpp, + ql/experimental/finitedifferences/fdmmeshercomposite.cpp, + ql/experimental/finitedifferences/fdmmeshercomposite.hpp, + ql/experimental/finitedifferences/fdmndimsolver.hpp, + ql/experimental/finitedifferences/fdmquantohelper.cpp, + ql/experimental/finitedifferences/fdmquantohelper.hpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.cpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.hpp, + ql/experimental/finitedifferences/fdmsimple2dextousolver.hpp, + ql/experimental/finitedifferences/fdmsimple3dextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmsimpleprocess1dmesher.cpp, + ql/experimental/finitedifferences/fdmsimpleprocess1dmesher.hpp, + ql/experimental/finitedifferences/fdmsimplestoragecondition.cpp, + ql/experimental/finitedifferences/fdmsimplestoragecondition.hpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.hpp, + ql/experimental/finitedifferences/fdmsnapshotcondition.cpp, + ql/experimental/finitedifferences/fdmsnapshotcondition.hpp, + ql/experimental/finitedifferences/fdmsolverdesc.hpp, + ql/experimental/finitedifferences/fdmspreadpayoffinnervalue.hpp, + ql/experimental/finitedifferences/fdmstepconditioncomposite.cpp, + ql/experimental/finitedifferences/fdmstepconditioncomposite.hpp, + ql/experimental/finitedifferences/fdmvppstepcondition.cpp, + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp, + ql/experimental/finitedifferences/fdsimplebsswingengine.hpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.hpp, + ql/experimental/finitedifferences/fdsimpleklugeextouvppengine.cpp, + ql/experimental/finitedifferences/fdsimpleklugeextouvppengine.hpp, + ql/experimental/finitedifferences/firstderivativeop.cpp, + ql/experimental/finitedifferences/firstderivativeop.hpp, + ql/experimental/finitedifferences/hundsdorferscheme.cpp, + ql/experimental/finitedifferences/hundsdorferscheme.hpp, + ql/experimental/finitedifferences/impliciteulerscheme.cpp, + ql/experimental/finitedifferences/impliciteulerscheme.hpp, + ql/experimental/finitedifferences/modifiedcraigsneydscheme.cpp, + ql/experimental/finitedifferences/modifiedcraigsneydscheme.hpp, + ql/experimental/finitedifferences/ninepointlinearop.cpp, + ql/experimental/finitedifferences/ninepointlinearop.hpp, + ql/experimental/finitedifferences/secondderivativeop.cpp, + ql/experimental/finitedifferences/secondderivativeop.hpp, + ql/experimental/finitedifferences/secondordermixedderivativeop.cpp, + ql/experimental/finitedifferences/secondordermixedderivativeop.hpp, + ql/experimental/finitedifferences/sparseilupreconditioner.cpp, + ql/experimental/finitedifferences/sparseilupreconditioner.hpp, + ql/experimental/finitedifferences/triplebandlinearop.cpp, + ql/experimental/finitedifferences/triplebandlinearop.hpp, + ql/experimental/finitedifferences/uniform1dmesher.hpp, + ql/experimental/finitedifferences/uniformgridmesher.cpp, + ql/experimental/finitedifferences/uniformgridmesher.hpp, + ql/instruments/Makefile.am, ql/instruments/all.hpp, + ql/instruments/dividendbarrieroption.cpp, + ql/instruments/dividendbarrieroption.hpp, + ql/math/matrixutilities/Makefile.am, + ql/math/matrixutilities/all.hpp, + ql/math/matrixutilities/bicgstab.cpp, + ql/math/matrixutilities/bicgstab.hpp, + ql/math/matrixutilities/sparseilupreconditioner.cpp, + ql/math/matrixutilities/sparseilupreconditioner.hpp, + ql/methods/finitedifferences/Makefile.am, + ql/methods/finitedifferences/all.hpp, + ql/methods/finitedifferences/meshers, + ql/methods/finitedifferences/meshers/Makefile.am, + ql/methods/finitedifferences/meshers/all.hpp, + ql/methods/finitedifferences/meshers/concentrating1dmesher.cpp, + ql/methods/finitedifferences/meshers/concentrating1dmesher.hpp, + ql/methods/finitedifferences/meshers/exponentialjump1dmesher.cpp, + ql/methods/finitedifferences/meshers/exponentialjump1dmesher.hpp, + ql/methods/finitedifferences/meshers/fdm1dmesher.hpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmesher.cpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmesher.hpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmultistrikemesher.cpp, + ql/methods/finitedifferences/meshers/fdmblackscholesmultistrikemesher.hpp, + ql/methods/finitedifferences/meshers/fdmhestonvariancemesher.cpp, + ql/methods/finitedifferences/meshers/fdmhestonvariancemesher.hpp, + ql/methods/finitedifferences/meshers/fdmmesher.hpp, + ql/methods/finitedifferences/meshers/fdmmeshercomposite.cpp, + ql/methods/finitedifferences/meshers/fdmmeshercomposite.hpp, + ql/methods/finitedifferences/meshers/fdmsimpleprocess1dmesher.cpp, + ql/methods/finitedifferences/meshers/fdmsimpleprocess1dmesher.hpp, + ql/methods/finitedifferences/meshers/uniform1dmesher.hpp, + ql/methods/finitedifferences/meshers/uniformgridmesher.cpp, + ql/methods/finitedifferences/meshers/uniformgridmesher.hpp, + ql/methods/finitedifferences/operators, + ql/methods/finitedifferences/operators/Makefile.am, + ql/methods/finitedifferences/operators/all.hpp, + ql/methods/finitedifferences/operators/fdm2dblackscholesop.cpp, + ql/methods/finitedifferences/operators/fdm2dblackscholesop.hpp, + ql/methods/finitedifferences/operators/fdmbatesop.cpp, + ql/methods/finitedifferences/operators/fdmbatesop.hpp, + ql/methods/finitedifferences/operators/fdmblackscholesop.cpp, + ql/methods/finitedifferences/operators/fdmblackscholesop.hpp, + ql/methods/finitedifferences/operators/fdmhestonhullwhiteop.cpp, + ql/methods/finitedifferences/operators/fdmhestonhullwhiteop.hpp, + ql/methods/finitedifferences/operators/fdmhestonop.cpp, + ql/methods/finitedifferences/operators/fdmhestonop.hpp, + ql/methods/finitedifferences/operators/fdmlinearop.hpp, + ql/methods/finitedifferences/operators/fdmlinearopcomposite.hpp, + ql/methods/finitedifferences/operators/fdmlinearopiterator.hpp, + ql/methods/finitedifferences/operators/fdmlinearoplayout.cpp, + ql/methods/finitedifferences/operators/fdmlinearoplayout.hpp, + ql/methods/finitedifferences/operators/firstderivativeop.cpp, + ql/methods/finitedifferences/operators/firstderivativeop.hpp, + ql/methods/finitedifferences/operators/ninepointlinearop.cpp, + ql/methods/finitedifferences/operators/ninepointlinearop.hpp, + ql/methods/finitedifferences/operators/secondderivativeop.cpp, + ql/methods/finitedifferences/operators/secondderivativeop.hpp, + ql/methods/finitedifferences/operators/secondordermixedderivativeop.cpp, + ql/methods/finitedifferences/operators/secondordermixedderivativeop.hpp, + ql/methods/finitedifferences/operators/triplebandlinearop.cpp, + ql/methods/finitedifferences/operators/triplebandlinearop.hpp, + ql/methods/finitedifferences/schemes, + ql/methods/finitedifferences/schemes/Makefile.am, + ql/methods/finitedifferences/schemes/all.hpp, + ql/methods/finitedifferences/schemes/craigsneydscheme.cpp, + ql/methods/finitedifferences/schemes/craigsneydscheme.hpp, + ql/methods/finitedifferences/schemes/douglasscheme.cpp, + ql/methods/finitedifferences/schemes/douglasscheme.hpp, + ql/methods/finitedifferences/schemes/expliciteulerscheme.cpp, + ql/methods/finitedifferences/schemes/expliciteulerscheme.hpp, + ql/methods/finitedifferences/schemes/hundsdorferscheme.cpp, + ql/methods/finitedifferences/schemes/hundsdorferscheme.hpp, + ql/methods/finitedifferences/schemes/impliciteulerscheme.cpp, + ql/methods/finitedifferences/schemes/impliciteulerscheme.hpp, + ql/methods/finitedifferences/schemes/modifiedcraigsneydscheme.cpp, + ql/methods/finitedifferences/schemes/modifiedcraigsneydscheme.hpp, + ql/methods/finitedifferences/solvers, + ql/methods/finitedifferences/solvers/Makefile.am, + ql/methods/finitedifferences/solvers/all.hpp, + ql/methods/finitedifferences/solvers/fdm2dblackscholessolver.cpp, + ql/methods/finitedifferences/solvers/fdm2dblackscholessolver.hpp, + ql/methods/finitedifferences/solvers/fdm2dimsolver.cpp, + ql/methods/finitedifferences/solvers/fdm2dimsolver.hpp, + ql/methods/finitedifferences/solvers/fdm3dimsolver.cpp, + ql/methods/finitedifferences/solvers/fdm3dimsolver.hpp, + ql/methods/finitedifferences/solvers/fdmbackwardsolver.cpp, + ql/methods/finitedifferences/solvers/fdmbackwardsolver.hpp, + ql/methods/finitedifferences/solvers/fdmbatessolver.cpp, + ql/methods/finitedifferences/solvers/fdmbatessolver.hpp, + ql/methods/finitedifferences/solvers/fdmblackscholessolver.cpp, + ql/methods/finitedifferences/solvers/fdmblackscholessolver.hpp, + ql/methods/finitedifferences/solvers/fdmhestonhullwhitesolver.cpp, + ql/methods/finitedifferences/solvers/fdmhestonhullwhitesolver.hpp, + ql/methods/finitedifferences/solvers/fdmhestonsolver.cpp, + ql/methods/finitedifferences/solvers/fdmhestonsolver.hpp, + ql/methods/finitedifferences/solvers/fdmndimsolver.hpp, + ql/methods/finitedifferences/solvers/fdmsimple2dbssolver.cpp, + ql/methods/finitedifferences/solvers/fdmsimple2dbssolver.hpp, + ql/methods/finitedifferences/solvers/fdmsolverdesc.hpp, + ql/methods/finitedifferences/stepconditions, + ql/methods/finitedifferences/stepconditions/Makefile.am, + ql/methods/finitedifferences/stepconditions/all.hpp, + ql/methods/finitedifferences/stepconditions/fdmamericanstepcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmamericanstepcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmarithmeticaveragecondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmarithmeticaveragecondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmbermudanstepcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmbermudanstepcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmsimplestoragecondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmsimplestoragecondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmsimpleswingcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmsimpleswingcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmsnapshotcondition.cpp, + ql/methods/finitedifferences/stepconditions/fdmsnapshotcondition.hpp, + ql/methods/finitedifferences/stepconditions/fdmstepconditioncomposite.cpp, + ql/methods/finitedifferences/stepconditions/fdmstepconditioncomposite.hpp, + ql/methods/finitedifferences/utilities, + ql/methods/finitedifferences/utilities/Makefile.am, + ql/methods/finitedifferences/utilities/all.hpp, + ql/methods/finitedifferences/utilities/fdmdirichletboundary.cpp, + ql/methods/finitedifferences/utilities/fdmdirichletboundary.hpp, + ql/methods/finitedifferences/utilities/fdmdividendhandler.cpp, + ql/methods/finitedifferences/utilities/fdmdividendhandler.hpp, + ql/methods/finitedifferences/utilities/fdminnervaluecalculator.cpp, + ql/methods/finitedifferences/utilities/fdminnervaluecalculator.hpp, + ql/methods/finitedifferences/utilities/fdmquantohelper.cpp, + ql/methods/finitedifferences/utilities/fdmquantohelper.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/asian/Makefile.am, + ql/pricingengines/asian/all.hpp, + ql/pricingengines/asian/fdblackscholesasianengine.cpp, + ql/pricingengines/asian/fdblackscholesasianengine.hpp, + ql/pricingengines/barrier/Makefile.am, + ql/pricingengines/barrier/all.hpp, + ql/pricingengines/barrier/fdblackscholesbarrierengine.cpp, + ql/pricingengines/barrier/fdblackscholesbarrierengine.hpp, + ql/pricingengines/barrier/fdblackscholesrebateengine.cpp, + ql/pricingengines/barrier/fdblackscholesrebateengine.hpp, + ql/pricingengines/barrier/fdhestonbarrierengine.cpp, + ql/pricingengines/barrier/fdhestonbarrierengine.hpp, + ql/pricingengines/barrier/fdhestonrebateengine.cpp, + ql/pricingengines/barrier/fdhestonrebateengine.hpp, + ql/pricingengines/basket/Makefile.am, + ql/pricingengines/basket/all.hpp, + ql/pricingengines/basket/fd2dblackscholesvanillaengine.cpp, + ql/pricingengines/basket/fd2dblackscholesvanillaengine.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/pricingengines/vanilla/Makefile.am, + ql/pricingengines/vanilla/all.hpp, + ql/pricingengines/vanilla/fdbatesvanillaengine.cpp, + ql/pricingengines/vanilla/fdbatesvanillaengine.hpp, + ql/pricingengines/vanilla/fdblackscholesvanillaengine.cpp, + ql/pricingengines/vanilla/fdblackscholesvanillaengine.hpp, + ql/pricingengines/vanilla/fdhestonhullwhitevanillaengine.cpp, + ql/pricingengines/vanilla/fdhestonhullwhitevanillaengine.hpp, + ql/pricingengines/vanilla/fdhestonvanillaengine.cpp, + ql/pricingengines/vanilla/fdhestonvanillaengine.hpp, + ql/pricingengines/vanilla/fdsimplebsswingengine.cpp, + ql/pricingengines/vanilla/fdsimplebsswingengine.hpp, + ql/processes/defaultable.hpp, test-suite, + test-suite/asianoptions.cpp, test-suite/barrieroption.cpp, + test-suite/basketoption.cpp, test-suite/batesmodel.cpp, + test-suite/europeanoption.cpp, test-suite/fdheston.cpp, + test-suite/fdmlinearop.cpp, test-suite/hestonmodel.cpp, + test-suite/hybridhestonhullwhiteprocess.cpp, + test-suite/swingoption.cpp, test-suite/testsuite.dev, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/vpp.cpp: - removed unused parameter in base class private constructor - -2009-12-03 15:44 Ferdinando Ametrano - - * [r16859] ql/methods/lattices/bsmlattice.hpp, - ql/methods/lattices/tflattice.hpp: + Moved stable parts of 2D finite-difference framework to core + library. - declared BlackScholesLattice's data members as protected instead of - private, avoiding duplication in TsiveriotisFernandesLattice. Also - moved few inspectors from TsiveriotisFernandesLattice to - BlackScholesLattice + More recent parts remain in experimental. + Merge of the fd2migration branch. -2009-12-03 14:38 Ferdinando Ametrano +2011-10-08 23:24 Klaus Spanderen - * [r16858] ql/experimental/commodities/unitofmeasureconversion.cpp, - ql/experimental/commodities/unitofmeasureconversionmanager.cpp, - ql/experimental/commodities/unitofmeasureconversionmanager.hpp: + * [r18021] test-suite/vpp.cpp: - - fixed (probable) bug in UnitOfMeasureConversion - - consolidated UnitOfMeasureConversionManager::directLookup and - UnitOfMeasureConversionManager::smartLookup into - UnitOfMeasureConversionManager::lookupImpl, enabling smartLookup - which might now work because of the UnitOfMeasureConversion bug fix + relax test case -2009-12-03 14:16 Ferdinando Ametrano +2011-10-08 15:33 Klaus Spanderen - * [r16857] ql/experimental/commodities/unitofmeasureconversion.cpp: + * [r18019] ql/experimental/finitedifferences/bicgstab.cpp: - fixed formatting + test -2009-12-03 14:12 Ferdinando Ametrano +2011-10-06 14:03 Ferdinando Ametrano - * [r16856] ql/experimental/commodities/unitofmeasureconversion.hpp, - ql/experimental/commodities/unitofmeasureconversionmanager.hpp: + * [r18016] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp: - fixed formatting + added nominal inspector -2009-12-03 11:06 Ferdinando Ametrano +2011-10-06 13:29 Ferdinando Ametrano - * [r16855] ql/experimental/credit/onefactorcopula.hpp, - ql/experimental/credit/syntheticcdoengines.hpp: + * [r18015] ql/termstructures/yieldtermstructure.cpp: - muted unreferenced formal parameters + allowed unsorted and expired jumps -2009-12-03 10:59 Luigi Ballabio +2011-10-06 13:28 Ferdinando Ametrano - * [r16854] ql/experimental/credit/distribution.cpp, - ql/experimental/credit/distribution.hpp, - ql/experimental/credit/riskyassetswap.cpp, - ql/experimental/credit/riskybond.cpp, - ql/experimental/credit/riskybond.hpp, - ql/experimental/credit/syntheticcdoengines.hpp, test-suite/cdo.cpp: + * [r18014] test-suite/vpp.cpp: - Backported revision 16852 from trunk. - -2009-12-02 09:29 Luigi Ballabio - - * [r16850] ql/instruments/bonds/convertiblebond.cpp, - ql/math/randomnumbers/lecuyeruniformrng.cpp: - Removed a couple more warnings. -2009-12-01 14:36 Luigi Ballabio +2011-10-06 13:25 Ferdinando Ametrano - * [r16849] ql/cashflows/cashflows.cpp: + * [r18012] ql/instruments/assetswap.cpp: - Relaxed requirements for a number of CashFlows methods. - - The functions interested by this change can return a meaningful - result even if the leg is empty (e.g., NPV = 0.) + fixed bug -2009-12-01 13:44 Luigi Ballabio +2011-10-03 16:18 Luigi Ballabio - * [r16844] quantlib-config.in: + * [r18011] QuantLib.spec.in: - Report correct library name. + More tweaks for the RPM specs (thanks to Matt Fair). -2009-12-01 13:44 Luigi Ballabio +2011-10-01 11:13 Klaus Spanderen - * [r16843] ql/experimental/mcbasket/mcamericanpathengine.hpp: + * [r18009] ql/math/statistics/generalstatistics.hpp: - Enforced self-consistency of header files. + add reserve method -2009-12-01 13:44 Luigi Ballabio +2011-09-16 17:16 Ferdinando Ametrano - * [r16842] ql/termstructures/yield/discountcurve.hpp, - ql/termstructures/yield/forwardcurve.hpp, - ql/termstructures/yield/zerocurve.hpp: + * [r18002] ql/instruments/assetswap.cpp, ql/instruments/assetswap.hpp: - Fixed calls to modified private functions. + introduced gearing in asset swap -2009-11-30 09:54 Ferdinando Ametrano +2011-09-16 16:19 Ferdinando Ametrano - * [r16841] ql/experimental/callablebonds/callablebond.cpp, - ql/experimental/callablebonds/callablebond.hpp: + * [r18001] ql/instruments/assetswap.cpp: - removed unused parameters + fixed humongous bug -2009-11-30 09:46 Ferdinando Ametrano +2011-09-16 15:28 Ferdinando Ametrano - * [r16840] - ql/experimental/finitedifferences/fdmamericanstepcondition.cpp, - ql/experimental/finitedifferences/fdmamericanstepcondition.hpp, - ql/experimental/finitedifferences/fdmdirichletboundary.cpp, - ql/experimental/finitedifferences/fdmdirichletboundary.hpp, - ql/pricingengines/vanilla/analytichestonengine.cpp, - ql/pricingengines/vanilla/analytichestonengine.hpp, - ql/pricingengines/vanilla/analytichestonhullwhiteengine.cpp, - ql/pricingengines/vanilla/analytichestonhullwhiteengine.hpp: + * [r18000] ql/instruments/assetswap.cpp, ql/instruments/assetswap.hpp: - muted unreferenced formal parameters (equivalent to Rev16389) + added fair non-par repayment calculation -2009-11-27 16:41 Ferdinando Ametrano +2011-09-16 15:25 Ferdinando Ametrano - * [r16838] ql/pricingengines/vanilla/analyticgjrgarchengine.cpp: + * [r17999] ql/instruments/swap.cpp, ql/instruments/swap.hpp, + ql/pricingengines/swap/discountingswapengine.cpp: - cleaner if else constructs + added endDiscounts for fair end payment calculations -2009-11-27 16:40 Ferdinando Ametrano +2011-09-16 11:44 Ferdinando Ametrano - * [r16837] ql/math/optimization/bfgs.cpp, - ql/math/optimization/bfgs.hpp, - ql/math/optimization/conjugategradient.cpp, - ql/math/optimization/conjugategradient.hpp, - ql/math/optimization/linesearchbasedmethod.cpp, - ql/math/optimization/linesearchbasedmethod.hpp, - ql/math/optimization/steepestdescent.cpp, - ql/math/optimization/steepestdescent.hpp: + * [r17997] ql/processes/ornsteinuhlenbeckprocess.cpp, + ql/processes/ornsteinuhlenbeckprocess.hpp: - declared getUpdatedDirection as protected and removed unused - parameter from its signature + improved formatting -2009-11-27 12:03 Ferdinando Ametrano +2011-09-16 11:42 Ferdinando Ametrano - * [r16833] test-suite/extendedtrees.cpp: + * [r17996] ql/instruments/assetswap.cpp, ql/instruments/assetswap.hpp: - removed unused parameter + added new AssetSwap constructor with non-par repayment -2009-11-27 12:00 Ferdinando Ametrano +2011-09-15 17:47 Ferdinando Ametrano - * [r16832] ql/termstructures/credit/interpolatedhazardratecurve.hpp: + * [r17994] test-suite/bin: - removed unused input variables from private member function + ignored pdb files -2009-11-27 11:59 Ferdinando Ametrano +2011-09-15 17:46 Ferdinando Ametrano - * [r16831] ql/models/marketmodels/models/capletcoterminalperiodic.cpp: + * [r17992] ql/stochasticprocess.hpp: - muted unreferenced formal parameter + changed formatting -2009-11-27 11:47 Ferdinando Ametrano +2011-09-15 17:45 Ferdinando Ametrano - * [r16830] test-suite/inflationcapfloor.cpp, - test-suite/inflationcapflooredcoupon.cpp: + * [r17991] ql/termstructures/volatility/swaption/swaptionvolcube2.hpp: - avoided warning + added comment -2009-11-27 11:44 Ferdinando Ametrano +2011-09-15 12:46 Luigi Ballabio - * [r16829] ql/methods/lattices/tflattice.hpp: + * [r17988] ql/time/calendars/china.cpp, ql/time/calendars/china.hpp, + ql/time/calendars/hongkong.cpp, ql/time/calendars/hongkong.hpp, + ql/time/calendars/india.cpp, ql/time/calendars/india.hpp, + ql/time/calendars/indonesia.cpp, ql/time/calendars/indonesia.hpp, + ql/time/calendars/saudiarabia.cpp, + ql/time/calendars/saudiarabia.hpp, ql/time/calendars/taiwan.cpp, + ql/time/calendars/taiwan.hpp: - improved formatting + Added moving holidays for 2011. -2009-11-27 11:37 Ferdinando Ametrano +2011-09-15 08:16 Luigi Ballabio - * [r16828] ql/models/marketmodels/pathwisediscounter.cpp: + * [r17986] ql/cashflows/baseindexedcashflow.hpp, + ql/cashflows/cpicoupon.hpp, ql/cashflows/cpicouponpricer.hpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.hpp, + ql/experimental/finitedifferences/fdmextoujumpmodelinnervalue.hpp, + ql/experimental/finitedifferences/fdmklugeextousolver.hpp, + ql/experimental/finitedifferences/fdmspreadpayoffinnervalue.hpp, + ql/experimental/finitedifferences/fdmvppstepcondition.hpp, + ql/experimental/inflation/cpioptionletvolatilitystructure.hpp, + ql/experimental/processes/extouwithjumpsprocess.hpp, + ql/experimental/processes/gemanroncoroniprocess.hpp, + ql/math/solvers1d/finitedifferencenewtonsafe.hpp: - fixed typo + Documentation fixes. -2009-11-27 11:35 Ferdinando Ametrano +2011-09-14 16:39 Luigi Ballabio - * [r16827] ql/math/interpolations/convexmonotoneinterpolation.hpp, - ql/math/interpolations/kernelinterpolation.hpp: + * [r17984] QuantLib.spec.in: - muted useless unreferenced formal parameters + Removed old files from RPM spec. -2009-11-27 11:33 Ferdinando Ametrano +2011-09-14 13:57 Luigi Ballabio - * [r16826] - ql/experimental/inflation/yoyinflationoptionletvolatilitystructure2.hpp: + * [r17981] QuantLib.spec.in, configure.ac: - improved formatting + Fixed generation of RPM spec file (thanks to Matt Fair). -2009-11-27 10:52 Ferdinando Ametrano +2011-09-02 08:47 Klaus Spanderen - * [r16825] ql/models/marketmodels/models/capletcoterminalperiodic.cpp, - ql/models/marketmodels/models/capletcoterminalperiodic.hpp, - ql/models/marketmodels/pathwisediscounter.cpp, - ql/models/marketmodels/pathwisediscounter.hpp, - ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.cpp, - ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.hpp: + * [r17938] test-suite/vpp.cpp: - muted unreferenced formal parameters + corrected wrong expectation value -2009-11-25 18:18 Ferdinando Ametrano +2011-08-18 10:43 Luigi Ballabio - * [r16821] test-suite/hybridhestonhullwhiteprocess.cpp: + * [r17936] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/exoticoptions/Makefile.am, + ql/experimental/exoticoptions/all.hpp, + ql/experimental/exoticoptions/kirkspreadoptionengine.cpp, + ql/experimental/exoticoptions/kirkspreadoptionengine.hpp, + ql/experimental/exoticoptions/spreadoption.hpp, + test-suite/Makefile.am, test-suite/quantlibtestsuite.cpp, + test-suite/spreadoption.cpp, test-suite/spreadoption.hpp, + test-suite/testsuite.dev, test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/testsuite_vc9.vcproj: - avoided warning + Added experimental spread option and related engine. + + Thanks to IMAFA students Meryem Chibo and Samad Abdessadki. -2009-11-25 17:10 Luigi Ballabio +2011-08-18 10:38 Luigi Ballabio - * [r16820] Examples/MarketModels: + * [r17935] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/exoticoptions/Makefile.am, + ql/experimental/exoticoptions/all.hpp, + ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.cpp, + ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.hpp, + ql/experimental/exoticoptions/writerextensibleoption.cpp, + ql/experimental/exoticoptions/writerextensibleoption.hpp, + test-suite/Makefile.am, test-suite/quantlibtestsuite.cpp, + test-suite/testsuite.dev, test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/testsuite_vc9.vcproj, + test-suite/writerextensibleoption.cpp, + test-suite/writerextensibleoption.hpp: + + Added experimental writer-extensible option and related engine. - Updated svn:ignore property. + Thanks to IMAFA students Delphine Bouthier, Marine Casanova, + and Xavier Caron. -2009-11-25 17:07 Luigi Ballabio +2011-08-18 10:37 Luigi Ballabio - * [r16819] Examples/MarketModels/MarketModels.dev: + * [r17934] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/exoticoptions/Makefile.am, + ql/experimental/exoticoptions/all.hpp, + ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.cpp, + ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.hpp, + test-suite/asianoptions.cpp, test-suite/asianoptions.hpp: + + Added experimental Levy engine for continuous-averaging Asian + options. - Added Dev-C++ project for market-model example. + Thanks to IMAFA students Yasmine Lahlou and Amine Samani. -2009-11-25 16:52 Luigi Ballabio +2011-08-12 20:47 Klaus Spanderen - * [r16818] Examples/MarketModels/MarketModels_vc7.vcproj, - QuantLib_vc7.sln: + * [r17933] QuantLib_vc10.vcxproj, QuantLib_vc10.vcxproj.filters, + test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters, test-suite/vpp.cpp: - Added market-model example to VC7 solution. + vcxproj catch-up -2009-11-25 16:46 Luigi Ballabio +2011-08-12 10:32 Luigi Ballabio - * [r16817] Examples/MarketModels/MarketModels_vc8.vcproj, - QuantLib_vc8.sln: + * [r17930] + ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp: - Added market-model example to VC8 solution. + Added missing inclusion -2009-11-25 16:19 Luigi Ballabio +2011-08-08 12:50 Ferdinando Ametrano - * [r16816] Examples/BermudanSwaption/BermudanSwaption_vc7.vcproj, - Examples/Bonds/Bonds_vc7.vcproj, Examples/CDS/CDS_vc7.vcproj, - Examples/CallableBonds/CallableBonds_vc7.vcproj, - Examples/ConvertibleBonds/ConvertibleBonds_vc7.vcproj, - Examples/DiscreteHedging/DiscreteHedging_vc7.vcproj, - Examples/EquityOption/EquityOption_vc7.vcproj, - Examples/FRA/FRA_vc7.vcproj, - Examples/FittedBondCurve/FittedBondCurve_vc7.vcproj, - Examples/Replication/Replication_vc7.vcproj, - Examples/Repo/Repo_vc7.vcproj, Examples/Swap/Swap_vc7.vcproj: + * [r17922] QuantLib_vc9.vcproj: - Increased compilation-memory limit. + VC9 catching up -2009-11-25 16:12 Luigi Ballabio +2011-08-08 12:46 Ferdinando Ametrano - * [r16815] QuantLib_vc7.vcproj, QuantLib_vc8.vcproj: + * [r17921] QuantLib_vc9.vcproj, test-suite/testsuite_vc9.vcproj: - Removed FileConfiguration sections. + VC9 catching up -2009-11-25 14:51 Luigi Ballabio +2011-08-07 20:45 Klaus Spanderen - * [r16814] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, - QuantLib_vc9.vcproj: + * [r17920] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp, + ql/experimental/finitedifferences/fdmexpextouinnervaluecalculator.hpp, + ql/experimental/finitedifferences/fdmklugeextouop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.hpp, + ql/experimental/finitedifferences/fdmklugeextousolver.cpp, + ql/experimental/finitedifferences/fdmklugeextousolver.hpp, + ql/experimental/finitedifferences/fdmklugeextouspreadinnervalue.hpp, + ql/experimental/finitedifferences/fdmspreadpayoffinnervalue.hpp, + ql/experimental/finitedifferences/fdmvppstepcondition.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.cpp, + ql/experimental/finitedifferences/fdsimpleklugeextouvppengine.cpp, + ql/experimental/finitedifferences/fdsimpleklugeextouvppengine.hpp, + ql/experimental/finitedifferences/ninepointlinearop.cpp, + ql/experimental/finitedifferences/vanillavppoption.cpp, + ql/experimental/finitedifferences/vanillavppoption.hpp, + ql/experimental/processes/Makefile.am, + ql/experimental/processes/all.hpp, + ql/experimental/processes/klugeextouprocess.cpp, + ql/experimental/processes/klugeextouprocess.hpp, + ql/instruments/Makefile.am, ql/instruments/vanillaswingoption.cpp, + ql/instruments/vanillaswingoption.hpp, test-suite/Makefile.am, + test-suite/quantlibtestsuite.cpp, test-suite/swingoption.cpp, + test-suite/swingoption.hpp, test-suite/vpp.cpp, test-suite/vpp.hpp: - Updated VC++ and Dev-C++ projects. + added finite difference engine for simple vpp's -2009-11-25 13:51 Luigi Ballabio +2011-08-02 12:25 Luigi Ballabio - * [r16813] Examples/FittedBondCurve/FittedBondCurve.cpp: + * [r17917] ql/instruments/makeswaption.cpp: - Fix for missing parRate method. + Added missing method implementation (thanks to Leon Sit.) -2009-11-25 13:51 Luigi Ballabio +2011-08-01 12:36 Luigi Ballabio - * [r16812] Examples/MarketModels/MarketModels.cpp: + * [r17916] ql/termstructures/yield/nonlinearfittingmethods.cpp, + ql/termstructures/yield/nonlinearfittingmethods.hpp: - Cleaned up inclusions. + Fixed Svensson fitting formula. - auto_link is now only included with VC++. - marketmodels/all.hpp replaces a few dozens of inclusions. + Thanks to Wasi (whoever that is) and Rahul Kanchi. -2009-11-25 13:50 Luigi Ballabio +2011-08-01 11:23 Ferdinando Ametrano - * [r16811] Examples/Makefile.am, Examples/MarketModels/Makefile.am, - configure.ac: + * [r17915] ql/experimental/finitedifferences/fdmbatesop.cpp: - Added market-model example to autotools build. + cleaned up code -2009-11-25 13:50 Luigi Ballabio +2011-08-01 11:18 Ferdinando Ametrano - * [r16810] ql/models/marketmodels/products/pathwise/Makefile.am, - ql/models/marketmodels/products/pathwise/all.hpp: + * [r17914] ql/handle.hpp: - Added missing files to autotools build. + deprecated unsafe constructor -2009-11-25 13:50 Luigi Ballabio +2011-08-01 11:17 Ferdinando Ametrano - * [r16809] ql/time/daycounters/actualactual.cpp: + * [r17913] ql/experimental/finitedifferences/fdmbatesop.cpp, + ql/experimental/finitedifferences/fdmbatesop.hpp: - Rewritten loop. + cleaned up code + +2011-08-01 10:26 Ferdinando Ametrano + + * [r17912] ql/pricingengines/swap/discountingswapengine.cpp: - The for (;;) avoids having to introduce an exit flag, and at the - same time might be more palatable than the do while (true) for VC++. + avoided useless try/catch -2009-11-25 11:33 Ferdinando Ametrano +2011-07-21 09:54 Ferdinando Ametrano - * [r16808] ql/math/matrixutilities/tapcorrelations.cpp, - ql/math/matrixutilities/tapcorrelations.hpp: + * [r17907] ql/instruments/bonds/btp.cpp, ql/instruments/bonds/btp.hpp: - removed unreferenced formal parameters (first pass) + added CCTEU and slimmer BTP constructor -2009-11-25 11:31 Ferdinando Ametrano +2011-07-20 11:17 Ferdinando Ametrano - * [r16807] ql/cashflows/rangeaccrual.cpp, - ql/cashflows/rangeaccrual.hpp: + * [r17905] ql/instruments/assetswap.cpp, ql/instruments/assetswap.hpp: + - removed unreferenced formal parameters from private function members -2009-11-25 11:13 Ferdinando Ametrano +2011-07-20 11:16 Ferdinando Ametrano - * [r16806] ql/math/matrixutilities/getcovariance.cpp, - ql/math/matrixutilities/getcovariance.hpp: + * [r17904] ql/instruments/assetswap.cpp: - removed unused (and unwanted) input parameter + removed redundant include -2009-11-25 11:08 Ferdinando Ametrano +2011-07-20 10:47 Ferdinando Ametrano - * [r16805] ql/termstructures/yieldtermstructure.cpp, - ql/termstructures/yieldtermstructure.hpp: + * [r17903] ql/instruments/assetswap.cpp: - removed ambiguous parRate member functions - Their implementations were flawed: the freq parameter was present - even where it didn't make sense, and it was not used where it made - sense). We have decided not to fix them, and have opted to remove - them: their little theoretical appeal is overwhelmed by their - misleading usage as swap proxy + added few using std:: and boost:: directives -2009-11-24 18:07 Ferdinando Ametrano +2011-07-20 10:46 Ferdinando Ametrano - * [r16803] Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj, - Examples/Bonds/Bonds_vc9.vcproj, Examples/CDS/CDS_vc9.vcproj, - Examples/CallableBonds/CallableBonds_vc9.vcproj, - Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj, - Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj, - Examples/EquityOption/EquityOption_vc9.vcproj, - Examples/FRA/FRA_vc9.vcproj, - Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj, - Examples/MarketModels/MarketModels_vc9.vcproj, - Examples/Replication/Replication_vc9.vcproj, - Examples/Repo/Repo_vc9.vcproj, Examples/Swap/Swap_vc9.vcproj: + * [r17902] ql/instruments/assetswap.hpp: - removed useless disabling of warning 4819 + removed useless include (if needed by some platform/compiler please + remove the alternative forward declaration) -2009-11-24 18:00 Ferdinando Ametrano +2011-07-20 09:32 Luigi Ballabio - * [r16802] QuantLib_vc9.vcproj: + * [r17901] ql/termstructures/inflationtermstructure.hpp: - temporary change (will be reverted before release): - WarningLevel="4" - DisableSpecificWarnings="4512;4511;4505" + Moved data members back to protected section. - this will help the lint activity in the next weeks + If QL_DISABLE_DEPRECATED is defined, they're private instead. -2009-11-24 17:56 Ferdinando Ametrano +2011-07-19 14:48 Luigi Ballabio - * [r16801] ql/time/daycounters/actualactual.cpp, - test-suite/testsuite_vc9.vcproj: + * [r17895] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/methods/finitedifferences/Makefile.am, + ql/methods/finitedifferences/all.hpp, + ql/methods/finitedifferences/trbdf2.hpp: - avoided warning + Added TR-BDF2 finite-difference scheme (thanks to Fabien Le Floc'h.) -2009-11-24 17:21 Ferdinando Ametrano +2011-07-18 09:37 Luigi Ballabio - * [r16800] ql/math/statistics/sequencestatistics.hpp: + * [r17892] ql/time/schedule.cpp, ql/time/schedule.hpp: - avoided warning + Replaced overloaded constructor with factory method. -2009-11-24 16:33 Luigi Ballabio +2011-07-14 16:49 Ferdinando Ametrano - * [r16799] ql/experimental/Makefile.am, ql/experimental/all.hpp, - ql/legacy/Makefile.am, ql/legacy/all.hpp, ql/methods/Makefile.am, - ql/methods/all.hpp: - - Prevented errors with older shells (thanks to Walter Eaves.) + * [r17889] QuantLib_vc10.vcxproj, test-suite/testsuite_vc10.vcxproj: - Older bash versions balk at running a for-loop with an empty list - (which happens when generating all.hpp if there's no other header - files in the directory.) The problem is prevented by manually - removing the for-loop on a per-directory basis. + - enabled debug information in release configurations + - moved pdb files near their executables for easier (user) retrieval + - added /OPT:REF to eliminate functions and/or data never referenced + from binaries -2009-11-24 16:32 Luigi Ballabio +2011-07-14 14:57 Ferdinando Ametrano - * [r16798] Bugs.txt: + * [r17886] ql/time/schedule.cpp, ql/time/schedule.hpp: - Removed reference to legacy class. + added truncated Schedule constructor (and removed unused private + data member) -2009-11-24 16:32 Luigi Ballabio +2011-07-13 08:08 Ferdinando Ametrano - * [r16797] ql/math/distributions/poissondistribution.hpp: + * [r17884] QuantLib_vc10.vcxproj, QuantLib_vc10.vcxproj.filters, + QuantLib_vc9.vcproj: - Documentation fix (thanks to Jose Aparicio.) + VC9 and VC10 catching up -2009-11-24 16:32 Luigi Ballabio +2011-07-13 07:58 Ferdinando Ametrano - * [r16796] Examples/BermudanSwaption/BermudanSwaption_vc7.vcproj, - Examples/Bonds/Bonds_vc7.vcproj, Examples/CDS/CDS_vc7.vcproj, - Examples/CallableBonds/CallableBonds_vc7.vcproj, - Examples/ConvertibleBonds/ConvertibleBonds_vc7.vcproj, - Examples/DiscreteHedging/DiscreteHedging_vc7.vcproj, - Examples/EquityOption/EquityOption_vc7.vcproj, - Examples/FRA/FRA_vc7.vcproj, - Examples/FittedBondCurve/FittedBondCurve_vc7.vcproj, - Examples/Replication/Replication_vc7.vcproj, - Examples/Repo/Repo_vc7.vcproj, Examples/Swap/Swap_vc7.vcproj, - QuantLib_vc7.vcproj: + * [r17883] test-suite/testsuite_vc9.vcproj: - Enabled language extensions in VC7 projects. + added /OPT:REF to eliminate functions and/or data never referenced + from binaries -2009-11-24 16:31 Luigi Ballabio +2011-07-12 20:44 Klaus Spanderen - * [r16795] Announce.txt, configure.ac, ql/version.hpp: + * [r17882] test-suite/swingoption.cpp, test-suite/swingoption.hpp: - Increased version number. + added vpp step condition and test case to calculate the intrinsic + value -2009-11-24 16:31 Luigi Ballabio +2011-07-12 20:43 Klaus Spanderen - * [r16794] Examples/BermudanSwaption/BermudanSwaption.dev, - Examples/Bonds/Bonds.dev, Examples/CDS/CDS.dev, + * [r17881] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdm1dmesher.hpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.cpp, + ql/experimental/finitedifferences/fdm2dimsolver.cpp, + ql/experimental/finitedifferences/fdm3dimsolver.cpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.cpp, + ql/experimental/finitedifferences/fdmarithmeticaveragecondition.cpp, + ql/experimental/finitedifferences/fdmbatesop.cpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.cpp, + ql/experimental/finitedifferences/fdmblackscholesop.cpp, + ql/experimental/finitedifferences/fdmblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmdividendhandler.cpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.cpp, + ql/experimental/finitedifferences/fdmextoujumpop.cpp, + ql/experimental/finitedifferences/fdmhestonhullwhiteop.cpp, + ql/experimental/finitedifferences/fdmhestonop.cpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.cpp, + ql/experimental/finitedifferences/fdmmesher.hpp, + ql/experimental/finitedifferences/fdmmeshercomposite.cpp, + ql/experimental/finitedifferences/fdmmeshercomposite.hpp, + ql/experimental/finitedifferences/fdmndimsolver.hpp, + ql/experimental/finitedifferences/fdmsimplestoragecondition.cpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdmvppstepcondition.cpp, + ql/experimental/finitedifferences/fdmvppstepcondition.hpp, + ql/experimental/finitedifferences/firstderivativeop.cpp, + ql/experimental/finitedifferences/ninepointlinearop.cpp, + ql/experimental/finitedifferences/ninepointlinearop.hpp, + ql/experimental/finitedifferences/secondderivativeop.cpp, + ql/experimental/finitedifferences/secondordermixedderivativeop.cpp, + ql/experimental/finitedifferences/triplebandlinearop.cpp, + ql/experimental/finitedifferences/uniformgridmesher.cpp: + + added vpp step condition and test case to calculate the intrinsic + value + +2011-07-12 17:31 Ferdinando Ametrano + + * [r17880] test-suite/testsuite_vc9.vcproj: + + moved pdb files near their executables for easier (user) retrieval + (the compiler knows their location anyway...) + +2011-07-12 17:07 Ferdinando Ametrano + + * [r17879] Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj, + Examples/Bonds/Bonds_vc9.vcproj, Examples/CDS/CDS_vc9.vcproj, + Examples/CallableBonds/CallableBonds_vc9.vcproj, + Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj, + Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj, + Examples/EquityOption/EquityOption_vc9.vcproj, + Examples/FRA/FRA_vc9.vcproj, + Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj, + Examples/MarketModels/MarketModels_vc9.vcproj, + Examples/Replication/Replication_vc9.vcproj, + Examples/Repo/Repo_vc9.vcproj, Examples/Swap/Swap_vc9.vcproj, + QuantLib_vc9.vcproj, test-suite/testsuite_vc9.vcproj: + + (re-)enabled debug information in release configurations. + This is the default for in VC++ 2008 new projects, does not increase + the exe/xll file in a significant way, allows for (some debugging + and) profiling, does not disable optimizations. I've used these + settings to profile with with GlowCode 8.0 + For further informations see: + http://stackoverflow.com/questions/218226/visual-c-2008-release-build-contains-debug-information + http://stackoverflow.com/questions/6363991/visual-studio-debug-information-in-release-build + http://msdn.microsoft.com/en-us/library/xe4t6fc1(v=vs.80).aspx + +2011-07-12 15:20 Ferdinando Ametrano + + * [r17878] QuantLib_vc10.vcxproj.filters, + test-suite/testsuite_vc10.vcxproj.filters: + + no idea what these are, but since they are in the repository... + +2011-07-12 14:35 Ferdinando Ametrano + + * [r17876] ql/termstructures/iterativebootstrap.hpp, + ql/termstructures/yield/bootstraptraits.hpp: + + renamed variable + +2011-07-12 14:13 Ferdinando Ametrano + + * [r17875] + ql/experimental/inflation/piecewiseyoyoptionletvolatility.hpp, + ql/termstructures/credit/probabilitytraits.hpp, + ql/termstructures/inflation/inflationtraits.hpp, + ql/termstructures/iterativebootstrap.hpp, + ql/termstructures/localbootstrap.hpp, + ql/termstructures/yield/bootstraptraits.hpp: + + added index of first alive helper to Traits::guess, + Traits::minValueAfter, and Traits::maxValueAfter. + This allows helpers access in order to possibly improve + guess/max/min efficiency + +2011-07-12 13:02 Ferdinando Ametrano + + * [r17874] ql/termstructures/iterativebootstrap.hpp: + + removed wrong check + +2011-07-12 12:49 Ferdinando Ametrano + + * [r17873] ql/termstructures/bootstraperror.hpp, + ql/termstructures/iterativebootstrap.hpp: + + - moved BootstrapError instantiation out of for loop in initialize + method + - cleaned up code + - added inspector to BootstrapError + +2011-07-11 16:14 Luigi Ballabio + + * [r17872] ql/experimental/volatility/interestratevolsurface.hpp: + + Removed ambiguity. + +2011-07-11 15:15 Ferdinando Ametrano + + * [r17871] ql/experimental/volatility/blackatmvolcurve.cpp, + ql/experimental/volatility/blackatmvolcurve.hpp, + ql/experimental/volatility/blackvolsurface.cpp, + ql/experimental/volatility/blackvolsurface.hpp, + ql/experimental/volatility/equityfxvolsurface.cpp, + ql/experimental/volatility/equityfxvolsurface.hpp, + ql/experimental/volatility/interestratevolsurface.cpp, + ql/experimental/volatility/interestratevolsurface.hpp, + ql/termstructure.hpp, + ql/termstructures/volatility/capfloor/capfloortermvolatilitystructure.cpp, + ql/termstructures/volatility/capfloor/capfloortermvolatilitystructure.hpp, + ql/termstructures/volatility/equityfx/blackvoltermstructure.cpp, + ql/termstructures/volatility/equityfx/blackvoltermstructure.hpp, + ql/termstructures/volatility/equityfx/localvolcurve.hpp, + ql/termstructures/volatility/equityfx/localvolsurface.cpp, + ql/termstructures/volatility/equityfx/localvoltermstructure.cpp, + ql/termstructures/volatility/equityfx/localvoltermstructure.hpp, + ql/termstructures/volatility/optionlet/optionletvolatilitystructure.cpp, + ql/termstructures/volatility/optionlet/optionletvolatilitystructure.hpp, + ql/termstructures/volatility/swaption/spreadedswaptionvol.cpp, + ql/termstructures/volatility/swaption/swaptionvolstructure.cpp, + ql/termstructures/volatility/swaption/swaptionvolstructure.hpp, + ql/termstructures/voltermstructure.cpp, + ql/termstructures/voltermstructure.hpp: + + deprecated privateness of TermStructure::calendar_ to avoid direct + access to what was meant to be accessed through virtual inspector + +2011-07-11 11:43 Luigi Ballabio + + * [r17870] ql/settings.cpp, ql/settings.hpp, ql/userconfig.hpp: + + Added methods to enable/disable change of evaluation date at + midnight. + + The corresponding define was removed. + +2011-07-11 09:36 Ferdinando Ametrano + + * [r17868] ql/experimental/inflation/cpicapfloortermpricesurface.hpp, + ql/experimental/inflation/yoycapfloortermpricesurface.hpp, + ql/termstructures/inflation/interpolatedzeroinflationcurve.hpp, + ql/termstructures/inflationtermstructure.cpp, + ql/termstructures/inflationtermstructure.hpp: + + made private those data members which are meant to be accessed + through virtual inspectors + +2011-07-11 08:52 Ferdinando Ametrano + + * [r17867] ql/instruments/assetswap.cpp, ql/instruments/assetswap.hpp: + + added floatingLegNPV inspector + +2011-07-11 08:23 Ferdinando Ametrano + + * [r17866] ql/time/ecb.cpp: + + added ECB maintenance dates for 2012 and 2013 + +2011-07-07 16:32 Ferdinando Ametrano + + * [r17865] QuantLib_vc10.vcxproj: + + VC10 catching up + +2011-07-07 15:17 Ferdinando Ametrano + + * [r17864] ql/cashflows/couponpricer.cpp, + ql/cashflows/couponpricer.hpp: + + cached coupon.index() pointer in private data member + +2011-07-07 15:02 Ferdinando Ametrano + + * [r17863] ql/cashflows/couponpricer.cpp, + ql/cashflows/couponpricer.hpp: + + - cached accrualPeriod in protected data member + - inlined few functions + - removed useless Settings::instance().evaluationDate() call and + avoided double cast in BlackIborCouponPricer::initialize() + +2011-07-07 12:58 Ferdinando Ametrano + + * [r17862] ql/indexes/iborindex.hpp: + + using name() accessor instead of protected (now private) name_ data + member + +2011-07-07 12:57 Ferdinando Ametrano + + * [r17861] ql/indexes/inflationindex.cpp, + ql/indexes/inflationindex.hpp: + + added documentation, inlined few methods, cached name string in + private data member + +2011-07-07 12:53 Ferdinando Ametrano + + * [r17860] ql/indexes/bmaindex.cpp, ql/indexes/bmaindex.hpp: + + fixed bug introduced in Rev17842: name() and fixingCalendar() are + virtual and name_ and fixingCalendar_ data member should not be + accessed directly. + +2011-07-07 12:52 Ferdinando Ametrano + + * [r17859] ql/indexes/interestrateindex.cpp, + ql/indexes/interestrateindex.hpp: + + - fixed bug introduced in Rev17842: name() and fixingCalendar() are + virtual and name_ and fixingCalendar_ data member should not be + accessed directly. + - inlined few functions + - + +2011-07-07 10:32 Ferdinando Ametrano + + * [r17858] ql/indexes/inflationindex.cpp: + + used Index::timeSeries() method + +2011-07-06 17:03 Ferdinando Ametrano + + * [r17857] ql/cashflows/iborcoupon.cpp: + + changed formatting + +2011-07-06 16:07 Ferdinando Ametrano + + * [r17856] ql/userconfig.hpp: + + fixed default configuration + +2011-07-06 15:49 Ferdinando Ametrano + + * [r17854] ql/settings.cpp, ql/settings.hpp, ql/userconfig.hpp: + + - inlined few Settings methods + - introduced new define for compile-time parametrization of + sticky/floating Settings evaluation date + +2011-07-06 11:01 Luigi Ballabio + + * [r17853] ql/termstructures/inflation/Makefile.am, + ql/termstructures/inflation/all.hpp: + + Added missing file to Makefile (thanks to Hong Yu.) + +2011-07-06 09:44 Ferdinando Ametrano + + * [r17852] ql/cashflows/iborcoupon.cpp, ql/cashflows/iborcoupon.hpp, + ql/indexes/iborindex.cpp, ql/indexes/iborindex.hpp, + ql/indexes/interestrateindex.cpp, ql/indexes/interestrateindex.hpp: + + - added public InterestRateIndex::pastFixing to encapsulate + TimeSeries access + - promoted InterestRateIndex::forecastFixing from protected to + public status + - added specialized public IborIndex::forecastFixing(Date, Date, + Time) overload to avoid date/time (re)calculation + - exploited the above points in a more efficient and much cleaner + IborCoupon::indexFixing() implementation which takes into account + par coupon needs and also avoid date/time recalculations + + If anyone prefers to keep pastFixing and forecastFixing protected, + it should be enough to declare IborCoupon friend of IborIndex + +2011-07-06 09:14 Ferdinando Ametrano + + * [r17851] ql/cashflows/averagebmacoupon.cpp: + + cleaned up code + +2011-07-06 09:13 Ferdinando Ametrano + + * [r17850] ql/indexes/bmaindex.hpp: + + + +2011-07-05 15:31 Ferdinando Ametrano + + * [r17849] test-suite/operators.cpp, test-suite/operators.hpp: + + + +2011-07-05 15:30 Ferdinando Ametrano + + * [r17848] ql/math/interpolations/cubicinterpolation.hpp, + ql/methods/finitedifferences/mixedscheme.hpp, + ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp, + test-suite/operators.cpp, test-suite/operators.hpp: + + - settled for the following signature: + void solveFor(const Array& rhs, + Array& result) const; + - added unit test + +2011-07-05 13:19 Ferdinando Ametrano + + * [r17847] QuantLib_vc9.vcproj: + + added missing files + +2011-07-05 13:19 Ferdinando Ametrano + + * [r17846] ql/cashflows/iborcoupon.cpp: + + fixed typo + +2011-07-05 13:12 Ferdinando Ametrano + + * [r17845] test-suite/quantlibtestsuite.cpp: + + added define indicators + +2011-07-05 13:03 Ferdinando Ametrano + + * [r17844] test-suite/assetswap.cpp: + + replaced BOOT_ERROR with BOOST_FAIL + +2011-07-05 13:02 Ferdinando Ametrano + + * [r17843] test-suite/inflationcpiswap.cpp: + + changed formatting + +2011-07-05 10:43 Ferdinando Ametrano + + * [r17842] ql/indexes/interestrateindex.cpp, + ql/indexes/interestrateindex.hpp: + + - inlined few methods + - moved name_ string composition at constructor time + +2011-07-05 10:41 Ferdinando Ametrano + + * [r17841] ql/cashflows/iborcoupon.cpp: + + added enforceTodaysHistoricFixings + +2011-07-04 18:36 Ferdinando Ametrano + + * [r17840] ql/math/interpolations/cubicinterpolation.hpp, + ql/methods/finitedifferences/mixedscheme.hpp, + ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + avoided useless Array allocation using new solveFor2 method + +2011-07-04 18:33 Ferdinando Ametrano + + * [r17839] ql/cashflows/cashflows.cpp: + + pointer dereferenced just once + +2011-07-04 18:31 Ferdinando Ametrano + + * [r17838] ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + removed early wrong check: TridiagonalOperator is also used in a + direct way, not just to be inverted... + +2011-07-04 17:37 Ferdinando Ametrano + + * [r17837] ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + fixed typo and improved error message + +2011-07-04 17:19 Ferdinando Ametrano + + * [r17836] ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + added + - check for initialized TridiagonalOperator + - earlier check that !close(diagonal[0], 0.0) + +2011-07-04 15:47 Ferdinando Ametrano + + * [r17835] ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + avoided temporary allocation in solveFor + +2011-07-04 14:37 Ferdinando Ametrano + + * [r17834] ql/methods/finitedifferences/tridiagonaloperator.cpp: + + + +2011-07-04 14:27 Ferdinando Ametrano + + * [r17833] ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + changed formatting + +2011-07-04 14:11 Ferdinando Ametrano + + * [r17832] ql/methods/finitedifferences/tridiagonaloperator.cpp, + ql/methods/finitedifferences/tridiagonaloperator.hpp: + + - added constness to isTimeDependent inspector + - cleaned up code + +2011-07-04 13:43 Ferdinando Ametrano + + * [r17831] ql/math/interpolations/cubicinterpolation.hpp: + + improved code in update() method avoiding allocations and redundant + initializations (moved to construction time) + +2011-07-03 15:31 Klaus Spanderen + + * [r17830] ql/experimental/finitedifferences/fdmklugeextousolver.cpp: + + improved default value + +2011-07-02 14:30 Klaus Spanderen + + * [r17829] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp, + ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.cpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.hpp, + ql/experimental/finitedifferences/fdmklugeextousolver.cpp, + ql/experimental/finitedifferences/fdmklugeextousolver.hpp, + ql/experimental/finitedifferences/fdmklugeextouspreadinnervalue.hpp, + ql/experimental/finitedifferences/fdmndimsolver.hpp, + test-suite/swingoption.cpp, test-suite/swingoption.hpp: + + added FDM solver and vanilla spread enngine for + Kluge-Ornstein-Uhlenbeck process + +2011-07-01 07:45 Luigi Ballabio + + * [r17828] ql/patterns/observable.hpp: + + Removed eyesore + +2011-06-30 12:54 Ferdinando Ametrano + + * [r17827] ql/patterns/observable.hpp: + + cleaned up code and changed unregister return value to Size in + accord with underlying std::set behavior + +2011-06-30 10:11 Ferdinando Ametrano + + * [r17826] ql/termstructures/credit/probabilitytraits.hpp, + ql/termstructures/inflation/inflationtraits.hpp, + ql/termstructures/inflation/piecewiseyoyinflationcurve.hpp, + ql/termstructures/inflation/piecewisezeroinflationcurve.hpp, + ql/termstructures/yield/bootstraptraits.hpp: + + improved min max bracketing + +2011-06-29 18:48 Ferdinando Ametrano + + * [r17825] ql/termstructures/iterativebootstrap.hpp: + + moved solver construction out of calculate method + +2011-06-29 18:17 Ferdinando Ametrano + + * [r17824] + ql/experimental/inflation/piecewiseyoyoptionletvolatility.hpp: + + added comments + +2011-06-29 18:01 Ferdinando Ametrano + + * [r17823] + ql/experimental/inflation/piecewiseyoyoptionletvolatility.hpp, + ql/termstructures/credit/probabilitytraits.hpp, + ql/termstructures/inflation/piecewiseyoyinflationcurve.hpp, + ql/termstructures/inflation/piecewisezeroinflationcurve.hpp, + ql/termstructures/iterativebootstrap.hpp, + ql/termstructures/localbootstrap.hpp, + ql/termstructures/yield/bootstraptraits.hpp: + + - changed guess signature to allow for a more compact and clear + iterative bootstrap algorithm + - changed signature of minValueAfter and maxValueAfter to include + the curve pointer and validData information: this will allow more + effective bracketing + +2011-06-29 17:50 Ferdinando Ametrano + + * [r17822] ql/experimental/inflation/yoycapfloortermpricesurface.hpp: + + fixed inclusions to avoid unnecessary dependencies + +2011-06-29 17:47 Ferdinando Ametrano + + * [r17821] ql/experimental/inflation/yoycapfloortermpricesurface.hpp: + + fixed inclusions to avoid unnecessary dependencies + +2011-06-29 17:45 Ferdinando Ametrano + + * [r17820] ql/experimental/inflation/yoycapfloortermpricesurface.cpp, + ql/experimental/inflation/yoycapfloortermpricesurface.hpp: + + fixed inclusions to avoid unnecessary dependencies + +2011-06-29 13:15 Ferdinando Ametrano + + * [r17818] QuantLib_vc9.vcproj: + + VC9 catching up with new added files + +2011-06-27 21:34 Klaus Spanderen + + * [r17815] test-suite/swingoption.cpp: + + fixed reference result + +2011-06-27 19:58 Klaus Spanderen + + * [r17814] test-suite/fdmlinearop.cpp: + + added generic n-dimensional finite difference solver + +2011-06-27 19:57 Klaus Spanderen + + * [r17813] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdm2dimsolver.cpp, + ql/experimental/finitedifferences/fdm2dimsolver.hpp, + ql/experimental/finitedifferences/fdm3dimsolver.cpp, + ql/experimental/finitedifferences/fdm3dimsolver.hpp, + ql/experimental/finitedifferences/fdmextoujumpop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.cpp, + ql/experimental/finitedifferences/fdmklugeextouop.hpp, + ql/experimental/finitedifferences/fdmndimsolver.hpp: + + added generic n-dimensional finite difference solver + +2011-06-23 19:33 Klaus Spanderen + + * [r17812] ql/methods/montecarlo/brownianbridge.hpp: + + added more inspectors + +2011-06-14 13:55 Ferdinando Ametrano + + * [r17811] QuantLib_vc8.vcproj, test-suite/testsuite_vc8.vcproj: + + added missing files (mmm... I'm almost sure I already did this, I'm + puzzled as to why/when they got lost) + +2011-06-13 18:51 Ferdinando Ametrano + + * [r17810] ql/termstructures/iterativebootstrap.hpp: + + added help variable (which will be used much more later...) + +2011-06-13 18:39 Ferdinando Ametrano + + * [r17809] ql/termstructures/iterativebootstrap.hpp: + + adjust guess taking into account its proximity to max or min + +2011-06-13 18:36 Ferdinando Ametrano + + * [r17808] + ql/experimental/inflation/piecewiseyoyoptionletvolatility.hpp, + ql/termstructures/credit/probabilitytraits.hpp, + ql/termstructures/inflation/piecewiseyoyinflationcurve.hpp, + ql/termstructures/inflation/piecewisezeroinflationcurve.hpp, + ql/termstructures/yield/bootstraptraits.hpp: + + removed leftovers + +2011-06-13 18:19 Ferdinando Ametrano + + * [r17807] + ql/termstructures/inflation/interpolatedyoyinflationcurve.hpp, + ql/termstructures/inflation/interpolatedzeroinflationcurve.hpp: + + added missing data methods + +2011-06-13 15:37 Ferdinando Ametrano + + * [r17806] ql/termstructures/iterativebootstrap.hpp: + + fixed bug + +2011-06-13 12:17 Klaus Spanderen + + * [r17805] + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp: + + added missing forward declaration + +2011-06-11 21:34 Klaus Spanderen + + * [r17804] + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.cpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.hpp, + ql/experimental/finitedifferences/fdmsimpleprocess1dmesher.cpp, + ql/experimental/finitedifferences/fdmsimpleprocess1dmesher.hpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp: + + added last maturity day to swing engine + +2011-06-10 16:28 Ferdinando Ametrano + + * [r17803] ql/cashflows/iborcoupon.cpp, ql/cashflows/iborcoupon.hpp: + + cached index name for performance gain + +2011-06-10 15:21 Ferdinando Ametrano + + * [r17801] ql/pricingengines/swap/discountingswapengine.cpp: + + switched to simultaneous npv+bps calculation + +2011-06-10 15:16 Ferdinando Ametrano + + * [r17800] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp: + + added simultaneous npv + bps computation for performance gain + +2011-06-10 14:18 Ferdinando Ametrano + + * [r17799] ql/methods/montecarlo/brownianbridge.hpp: + + removed useless include + +2011-06-10 14:15 Ferdinando Ametrano + + * [r17798] ql/cashflows/iborcoupon.cpp, ql/cashflows/iborcoupon.hpp: + + removed TimeSeries reference from constructor + +2011-06-10 08:06 Ferdinando Ametrano + + * [r17796] ql/patterns/observable.hpp: + + added return value to register methods + +2011-06-09 16:29 Ferdinando Ametrano + + * [r17795] ql/instruments/assetswap.cpp, ql/instruments/swap.cpp, + ql/instruments/swap.hpp, + ql/pricingengines/swap/discountingswapengine.cpp, + ql/pricingengines/swap/discountingswapengine.hpp: + + upgraded npvDateDiscount and startDiscounts result status from + additional to regular, in order to remove + DiscountingSwapEngine::calculate's inefficiency + +2011-06-09 15:52 Ferdinando Ametrano + + * [r17794] ql/cashflows/iborcoupon.cpp: + + handled QL_USE_INDEXED_COUPON and isInArrears properly + +2011-06-09 15:05 Ferdinando Ametrano + + * [r17793] ql/cashflows/iborcoupon.cpp, ql/cashflows/iborcoupon.hpp: + + optimized code avoiding useless recalculation of non-mutable data + +2011-06-08 16:50 Ferdinando Ametrano + + * [r17791] ql/termstructures/iterativebootstrap.hpp: + + improved code in calculate method: + - avoided previousData allocation + - avoided redundant initialization + - used FiniteDifferenceNewtonSafe if a good guess is available + +2011-06-08 15:46 Ferdinando Ametrano + + * [r17790] test-suite/overnightindexedswap.cpp: + + lowered tolerance and improved error message + +2011-06-08 14:40 Ferdinando Ametrano + + * [r17789] ql/termstructures/yield/piecewiseyieldcurve.hpp, + test-suite/piecewiseyieldcurve.cpp: + + fixed observers' notification bug (and associated buggy logic test) + +2011-06-07 16:38 Ferdinando Ametrano + + * [r17788] ql/patterns/observable.hpp: + + replaced list with set to ensure unique elements + +2011-06-07 16:36 Ferdinando Ametrano + + * [r17787] ql/patterns/lazyobject.hpp: + + + +2011-06-07 16:03 Ferdinando Ametrano + + * [r17786] ql/indexes/swapindex.cpp, ql/indexes/swapindex.hpp: + + added caching mechanism to avoid endless recalculation of underlying + swap in some real-time environment configuration + +2011-06-07 16:01 Ferdinando Ametrano + + * [r17785] ql/termstructures/yield/bootstraptraits.hpp: + + parametrized max rate + +2011-06-07 15:14 Ferdinando Ametrano + + * [r17784] ql/termstructures/iterativebootstrap.hpp: + + reverted back to Brent solver (FiniteDifferenceNewtonSafe needs some + more work) and cleaned up code + +2011-06-07 14:23 Ferdinando Ametrano + + * [r17783] ql/termstructure.hpp: + + moved updated_ from private to protected + +2011-06-07 13:21 Ferdinando Ametrano + + * [r17782] + ql/experimental/finitedifferences/fdmstepconditioncomposite.cpp: + + fixed header inclusion + +2011-06-07 12:36 Ferdinando Ametrano + + * [r17781] + ql/experimental/finitedifferences/fdmstepconditioncomposite.hpp: + + fixed header inclusion + +2011-06-07 12:21 Ferdinando Ametrano + + * [r17780] ql/termstructures/iterativebootstrap.hpp: + + removed leftover + +2011-06-07 10:24 Ferdinando Ametrano + + * [r17779] ql/models/calibrationhelper.hpp: + + added explicit include file + +2011-06-06 16:52 Ferdinando Ametrano + + * [r17778] ql/math/solvers1d/finitedifferencenewtonsafe.hpp: + + fixed typo + +2011-06-06 16:48 Ferdinando Ametrano + + * [r17777] ql/termstructures/iterativebootstrap.hpp: + + adopted FiniteDifferenceNewtonSafe instead of Brent to optimize + curve recalculation + +2011-06-06 16:45 Ferdinando Ametrano + + * [r17776] + ql/experimental/inflation/interpolatedyoyoptionletstripper.hpp: + + + +2011-06-06 16:24 Ferdinando Ametrano + + * [r17775] QuantLib_vc9.vcproj, ql/math/solvers1d/Makefile.am: + + catching up with new file + +2011-06-06 16:22 Ferdinando Ametrano + + * [r17774] ql/math/solvers1d/all.hpp, + ql/math/solvers1d/finitedifferencenewtonsafe.hpp: + + added safe (bracketed) Newton 1-D solver with finite difference + derivatives + +2011-06-06 11:02 Ferdinando Ametrano + + * [r17773] ql/termstructures/iterativebootstrap.hpp: + + avoided vector allocation inside for loop + +2011-06-06 10:54 Ferdinando Ametrano + + * [r17772] ql/experimental/inflation/yoycapfloortermpricesurface.hpp, + test-suite/inflationvolatility.cpp: + + + +2011-06-03 22:31 Klaus Spanderen + + * [r17771] ql/experimental/finitedifferences/fdm2dimsolver.cpp, + ql/experimental/finitedifferences/fdm3dimsolver.cpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.cpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.cpp, + ql/experimental/finitedifferences/fdmblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmextoujumpmodelinnervalue.hpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.cpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.hpp, + ql/experimental/finitedifferences/fdmsimplestoragecondition.cpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.cpp, + ql/instruments/vanillaswingoption.hpp, test-suite/fdmlinearop.cpp, + test-suite/swingoption.cpp: + + changed granularity of swing exercise + +2011-06-01 15:11 Ferdinando Ametrano + + * [r17770] QuantLib_vc10.vcxproj, QuantLib_vc10.vcxproj.filters, + test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters: + + updated files + +2011-06-01 15:08 Ferdinando Ametrano + + * [r17769] ql/experimental/inflation/cpicapfloortermpricesurface.hpp: + + fixed warning + +2011-06-01 12:19 Ferdinando Ametrano + + * [r17768] test-suite/inflationcpiswap.cpp: + + avoided warning + +2011-05-31 17:29 Ferdinando Ametrano + + * [r17767] test-suite/swingoption.cpp: + + fixed warning + +2011-05-31 17:29 Ferdinando Ametrano + + * [r17766] + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp: + + fixed error + +2011-05-31 17:28 Ferdinando Ametrano + + * [r17765] QuantLib_vc9.vcproj, test-suite/testsuite_vc9.vcproj: + + added missing files + +2011-05-31 16:12 Ferdinando Ametrano + + * [r17760] ., ChangeLog.txt, Docs/pages/history.docs, + Docs/pages/license.docs, LICENSE.TXT, News.txt, QuantLib.dev, + QuantLib_vc10.vcxproj, QuantLib_vc10.vcxproj.filters, + QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, ql, + ql/cashflows/simplecashflow.hpp, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/experimental/credit/riskybond.cpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.hpp, + ql/experimental/math/claytoncopularng.hpp, + ql/experimental/math/farliegumbelmorgensterncopularng.hpp, + ql/experimental/math/frankcopularng.hpp, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.cpp, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.hpp, + ql/experimental/shortrate/generalizedhullwhite.cpp, + ql/experimental/shortrate/generalizedornsteinuhlenbeckprocess.cpp, + ql/experimental/shortrate/generalizedornsteinuhlenbeckprocess.hpp, + ql/experimental/variancegamma/fftengine.hpp, + ql/experimental/variancegamma/variancegammamodel.cpp, + ql/experimental/variancegamma/variancegammamodel.hpp, + ql/indexes/ibor/Makefile.am, ql/indexes/ibor/all.hpp, + ql/indexes/ibor/sonia.cpp, ql/indexes/ibor/sonia.hpp, + ql/indexes/swap/chfliborswap.cpp, ql/indexes/swap/chfliborswap.hpp, + ql/indexes/swap/gbpliborswap.cpp, ql/indexes/swap/gbpliborswap.hpp, + ql/indexes/swap/jpyliborswap.cpp, ql/indexes/swap/jpyliborswap.hpp, + ql/indexes/swap/usdliborswap.cpp, ql/indexes/swap/usdliborswap.hpp, + ql/instruments/bond.cpp, ql/instruments/makevanillaswap.cpp, + ql/math/array.hpp, ql/math/interpolations/cubicinterpolation.hpp, + ql/math/matrix.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateiballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateiballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/termstructures/yield/ratehelpers.cpp, + ql/termstructures/yield/ratehelpers.hpp, ql/userconfig.hpp, + ql/utilities/dataformatters.cpp, test-suite, + test-suite/cashflows.cpp, test-suite/commodityunitofmeasure.cpp, + test-suite/inflation.cpp, test-suite/inflation.hpp, + test-suite/testsuite.dev, test-suite/timeseries.cpp: + + Merged revisions 1-HEAD of + https://quantlib.svn.sourceforge.net/svnroot/quantlib/branches/R01010x-branch + into C:\Projects\QuantLib\trunk, respecting ancestry + +2011-05-30 20:48 Klaus Spanderen + + * [r17757] ql/experimental/processes/gemanroncoroniprocess.cpp, + ql/experimental/processes/gemanroncoroniprocess.hpp: + + removed tabs + +2011-05-29 00:20 Klaus Spanderen + + * [r17748] + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp: + + allow negative payoff in swing condition + +2011-05-29 00:20 Klaus Spanderen + + * [r17747] ql/experimental/processes/extouwithjumpsprocess.hpp: + + removed latex syntax error + +2011-05-24 12:09 Luigi Ballabio + + * [r17741] Docs/quantlib.css: + + Added rule for new css class + +2011-05-22 06:32 Klaus Spanderen + + * [r17738] + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp, + ql/instruments/vanillaswingoption.hpp, test-suite/swingoption.cpp: + + added min/maxExerciseRights to SwingOption + +2011-05-18 20:33 Klaus Spanderen + + * [r17734] test-suite/swingoption.cpp: + + improve test case on upper bound for swing option prices based on + Monte-Carlo + +2011-05-18 11:43 Klaus Spanderen + + * [r17733] test-suite/swingoption.cpp: + + add test case on upper bound for swing option prices based on + Monte-Carlo + +2011-04-18 08:38 Ferdinando Ametrano + + * [r17717] ql/time/ecb.cpp: + + removed useless namespace + +2011-04-18 08:38 Ferdinando Ametrano + + * [r17716] ql/quotes/impliedstddevquote.cpp: + + removed useless namespace + +2011-04-16 14:21 Klaus Spanderen + + * [r17714] test-suite/quantlibbenchmark.cpp: + + corrected papi comment + +2011-03-27 19:20 Klaus Spanderen + + * [r17679] test-suite/quantlibbenchmark.cpp: + + added new benchmark result + +2011-03-09 22:40 Klaus Spanderen + + * [r17670] test-suite/swingoption.cpp: + + fixed bug in SwingOption (VanillaStorageOption) test case + +2011-02-26 13:59 Klaus Spanderen + + * [r17636] ql/cashflows/cpicoupon.hpp, + test-suite/inflationcpiswap.cpp: + + avoid g++ warnings + +2011-02-23 17:38 Luigi Ballabio + + * [r17632] ql/cashflows/baseindexedcashflow.hpp, + ql/instruments/bonds/cpibond.hpp, ql/instruments/cpicapfloor.hpp, + ql/instruments/cpiswap.hpp: + + Fixed forward declarations (thanks to Bojan Nikolic.) + +2011-02-08 20:19 Klaus Spanderen + + * [r17615] + ql/experimental/finitedifferences/fdsimpleextoustorageengine.cpp, + test-suite/swingoption.cpp: + + removed ugly printf statements + +2011-02-06 10:10 Klaus Spanderen + + * [r17614] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.cpp, + ql/experimental/finitedifferences/fdmextendedornsteinuhlenbeckop.hpp, + ql/experimental/finitedifferences/fdmsimple2dextousolver.hpp, + ql/experimental/finitedifferences/fdmsimplestoragecondition.cpp, + ql/experimental/finitedifferences/fdmsimplestoragecondition.hpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoustorageengine.hpp, + ql/instruments/Makefile.am, ql/instruments/all.hpp, + ql/instruments/vanillastorageoption.hpp, test-suite/swingoption.cpp, + test-suite/swingoption.hpp: + + added fdm pricing engine for a simple storage option based on a + exponential Ornstein Uhlenbeck process + +2011-02-06 10:07 Klaus Spanderen + + * [r17613] ql/experimental/finitedifferences/fdm2dimsolver.cpp, + ql/experimental/finitedifferences/fdm3dimsolver.cpp, + ql/experimental/finitedifferences/fdmextoujumpop.cpp, + ql/experimental/finitedifferences/fdmextoujumpop.hpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp: + + minor code clean-up + +2011-01-29 14:57 Klaus Spanderen + + * [r17607] + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.cpp, + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.hpp, + ql/math/Makefile.am, ql/math/all.hpp, + ql/math/generallinearleastsquares.hpp, + ql/math/linearleastsquaresregression.hpp, + ql/methods/montecarlo/longstaffschwartzpathpricer.hpp: + + removed useless template parameter from LinearLeastSquaresRegression + +2011-01-25 15:50 Klaus Spanderen + + * [r17593] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/exponentialjump1dmesher.cpp, + ql/experimental/finitedifferences/exponentialjump1dmesher.hpp, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.cpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.hpp, + ql/experimental/finitedifferences/fdblackscholesasianengine.cpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.cpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.cpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdextoujumpvanillaengine.cpp, + ql/experimental/finitedifferences/fdextoujumpvanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonrebateengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.cpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.hpp, + ql/experimental/finitedifferences/fdm2dimsolver.cpp, + ql/experimental/finitedifferences/fdm2dimsolver.hpp, + ql/experimental/finitedifferences/fdm3dimsolver.cpp, + ql/experimental/finitedifferences/fdm3dimsolver.hpp, + ql/experimental/finitedifferences/fdmbatesop.cpp, + ql/experimental/finitedifferences/fdmbatessolver.cpp, + ql/experimental/finitedifferences/fdmbatessolver.hpp, + ql/experimental/finitedifferences/fdmblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmextoujumpmodelinnervalue.hpp, + ql/experimental/finitedifferences/fdmextoujumpop.cpp, + ql/experimental/finitedifferences/fdmextoujumpop.hpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.cpp, + ql/experimental/finitedifferences/fdmextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.hpp, + ql/experimental/finitedifferences/fdmhestonlikesolverfactory.cpp, + ql/experimental/finitedifferences/fdmhestonlikesolverfactory.hpp, + ql/experimental/finitedifferences/fdmhestonsolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.hpp, + ql/experimental/finitedifferences/fdmhullwhitemesher.cpp, + ql/experimental/finitedifferences/fdmhullwhitemesher.hpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.hpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.cpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.hpp, + ql/experimental/finitedifferences/fdmsimple3dextoujumpsolver.hpp, + ql/experimental/finitedifferences/fdmsimpleprocess1dmesher.cpp, + ql/experimental/finitedifferences/fdmsimpleprocess1dmesher.hpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.hpp, + ql/experimental/finitedifferences/fdmsolverdesc.hpp, + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.cpp, + ql/experimental/finitedifferences/fdsimpleextoujumpswingengine.hpp, + ql/experimental/processes/Makefile.am, + ql/experimental/processes/all.hpp, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.cpp, + ql/experimental/processes/extouwithjumpsprocess.cpp, + ql/experimental/processes/extouwithjumpsprocess.hpp, + ql/experimental/processes/gemanroncoroniprocess.cpp, + ql/experimental/processes/gemanroncoroniprocess.hpp, + test-suite/Makefile.am, test-suite/fdmlinearop.cpp, + test-suite/quantlibtestsuite.cpp, test-suite/swingoption.cpp, + test-suite/swingoption.hpp: + + added vanilla and swing option finite difference pricer for Kluge + model (plus further refactoring of the multi dimensinal finite + difference code) + +2011-01-25 15:45 Klaus Spanderen + + * [r17592] test-suite/hybridhestonhullwhiteprocess.cpp: + + include delta and gamma values to test case + +2011-01-25 12:56 Klaus Spanderen + + * [r17591] test-suite/batesmodel.cpp: + + corrected typo + +2011-01-25 12:22 Luigi Ballabio + + * [r17586] Announce.txt, configure.ac, ql/version.hpp: + + Increased version number to 1.2. + +2011-01-25 12:21 Luigi Ballabio + + * [r17585] Examples/EquityOption/EquityOption.cpp: + + Added semi-analytic Heston and Bates methods to example. + +2011-01-16 18:39 Chris Kenyon + + * [r17580] ql/cashflows/Makefile.am, ql/cashflows/all.hpp, + ql/cashflows/baseindexedcashflow.cpp, + ql/cashflows/baseindexedcashflow.hpp, ql/cashflows/cpicoupon.cpp, + ql/cashflows/cpicoupon.hpp, ql/cashflows/cpicouponpricer.cpp, + ql/cashflows/cpicouponpricer.hpp, + ql/experimental/inflation/Makefile.am, + ql/experimental/inflation/all.hpp, + ql/experimental/inflation/cpicapfloortermpricesurface.cpp, + ql/experimental/inflation/cpicapfloortermpricesurface.hpp, + ql/experimental/inflation/cpioptionletvolatilitystructure.cpp, + ql/experimental/inflation/cpioptionletvolatilitystructure.hpp, + ql/instruments/Makefile.am, ql/instruments/all.hpp, + ql/instruments/bonds/Makefile.am, ql/instruments/bonds/all.hpp, + ql/instruments/bonds/cpibond.cpp, ql/instruments/bonds/cpibond.hpp, + ql/instruments/cpicapfloor.cpp, ql/instruments/cpicapfloor.hpp, + ql/instruments/cpiswap.cpp, ql/instruments/cpiswap.hpp, + ql/pricingengines/inflation/Makefile.am, + ql/pricingengines/inflation/all.hpp, + ql/pricingengines/inflation/cpicapfloorengines.cpp, + ql/pricingengines/inflation/cpicapfloorengines.hpp, + test-suite/Makefile.am, test-suite/inflationcpicapfloor.cpp, + test-suite/inflationcpicapfloor.hpp, + test-suite/inflationcpiswap.cpp, test-suite/inflationcpiswap.hpp, + test-suite/quantlibtestsuite.cpp: + + New inflation functionality: CPI-linked swaps, bonds, and + cap/floors. These complement the existing year-on-year inflation + functionality. N.B. capped and floored coupons/pricers are not + implemented TODO. The tests check, carefully, for consistency, + especially w.r.t. already-existing zero coupon inflation indexed + swap Instruments. + +2011-01-11 03:10 Mark Joshi + + * [r17571] ql/models/marketmodels/pathwiseaccountingengine.cpp: + + fixed size of deflator and derivates vector + +2010-12-29 08:53 Klaus Spanderen + + * [r17569] + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.cpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp, + ql/experimental/finitedifferences/fdhestonrebateengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdmstepconditioncomposite.cpp, + ql/experimental/finitedifferences/fdmstepconditioncomposite.hpp: + + FDM code refactoring (removed redundant code): new step condition + composite constructor + +2010-12-28 14:55 Klaus Spanderen + + * [r17568] ql/math/linearleastsquaresregression.hpp: + + removed swap method from LinearLeastSquaresRegression + +2010-12-28 12:57 Klaus Spanderen + + * [r17567] ql/math/linearleastsquaresregression.hpp, + test-suite/linearleastsquaresregression.cpp: + + added template constructors plus redesign (thanks to Slava Mazur) + +2010-12-26 20:05 Klaus Spanderen + + * [r17566] ql/experimental/finitedifferences/fdmblackscholesop.cpp, + ql/experimental/finitedifferences/firstderivativeop.cpp, + ql/experimental/finitedifferences/secondderivativeop.cpp, + ql/experimental/finitedifferences/triplebandlinearop.cpp, + ql/experimental/finitedifferences/triplebandlinearop.hpp: + + clean-up include order + +2010-12-20 07:16 Klaus Spanderen + + * [r17561] ql/pricingengines/vanilla/batesengine.hpp: + + fixed misleading comment + +2010-12-19 00:44 Klaus Spanderen + + * [r17560] test-suite/quantlibbenchmark.cpp: + + fix visual studio compile bug + +2010-12-18 17:18 Klaus Spanderen + + * [r17559] + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp: + + fixed vs 10 bug + +2010-12-16 10:25 Klaus Spanderen + + * [r17557] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.cpp, + ql/experimental/finitedifferences/fdmsimpleswingcondition.hpp, + ql/experimental/finitedifferences/fdsimplebsswingengine.cpp, + ql/experimental/finitedifferences/fdsimplebsswingengine.hpp, + ql/instruments/Makefile.am, ql/instruments/all.hpp, + ql/instruments/vanillaswingoption.hpp: + + added finite difference pricing engine for a simple swing option + based on the BS model. + +2010-12-14 13:12 Klaus Spanderen + + * [r17548] + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.hpp, + ql/experimental/finitedifferences/fdblackscholesasianengine.hpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.hpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.hpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.hpp, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonrebateengine.hpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmbackwardsolver.cpp, + ql/experimental/finitedifferences/fdmbackwardsolver.hpp, + ql/experimental/finitedifferences/fdmbatessolver.hpp, + ql/experimental/finitedifferences/fdmblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.hpp, + ql/experimental/finitedifferences/fdmhestonsolver.hpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.hpp, + test-suite/barrieroption.cpp, test-suite/europeanoption.cpp, + test-suite/fdheston.cpp, test-suite/fdmlinearop.cpp, + test-suite/hybridhestonhullwhiteprocess.cpp: + + removed static data member of FdmSchemeDesc to avoid initialization + hassle + +2010-12-13 17:01 Ferdinando Ametrano + + * [r17547] test-suite/hybridhestonhullwhiteprocess.cpp: + + expanded error message + +2010-12-12 10:31 Klaus Spanderen + + * [r17546] ql/models/marketmodels/pathwiseaccountingengine.cpp: + + removed obsolete #include + +2010-12-12 10:23 Klaus Spanderen + + * [r17545] test-suite/quantlibbenchmark.cpp: + + added Heston model calibration + +2010-12-12 10:15 Klaus Spanderen + + * [r17544] test-suite/quantlibbenchmark.cpp: + + removed obsolete benchmark + +2010-12-12 09:39 Klaus Spanderen + + * [r17543] ql/experimental/finitedifferences/fdmsimple2dbssolver.cpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.hpp: + + removed obsolete typedef + +2010-12-10 10:49 Luigi Ballabio + + * [r17541] Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj, + Examples/Bonds/Bonds_vc10.vcxproj, Examples/CDS/CDS_vc10.vcxproj, + Examples/CallableBonds/CallableBonds_vc10.vcxproj, + Examples/ConvertibleBonds/ConvertibleBonds_vc10.vcxproj, + Examples/DiscreteHedging/DiscreteHedging_vc10.vcxproj, + Examples/EquityOption/EquityOption_vc10.vcxproj, + Examples/FRA/FRA_vc10.vcxproj, + Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj, + Examples/MarketModels/MarketModels_vc10.vcxproj, + Examples/Replication/Replication_vc10.vcxproj, + Examples/Repo/Repo_vc10.vcxproj, Examples/Swap/Swap_vc10.vcxproj, + QuantLib_vc10.sln, QuantLib_vc10.vcxproj, man/MarketModels.1, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.cpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.cpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.cpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmbatesop.cpp, + ql/experimental/finitedifferences/fdmbatesop.hpp, + ql/experimental/finitedifferences/fdmbatessolver.cpp, + ql/experimental/finitedifferences/fdmbatessolver.hpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.cpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.hpp, + ql/experimental/finitedifferences/fdmhestonlikesolverfactory.cpp, + ql/experimental/finitedifferences/fdmhestonlikesolverfactory.hpp, + ql/models/equity/piecewisetimedependenthestonmodel.cpp, + ql/models/equity/piecewisetimedependenthestonmodel.hpp, + ql/models/marketmodels/products/multistep/multisteptarn.cpp, + ql/models/marketmodels/products/multistep/multisteptarn.hpp, + ql/pricingengines/basket/kirkengine.cpp, + ql/pricingengines/basket/kirkengine.hpp, + ql/pricingengines/vanilla/analyticptdhestonengine.cpp, + ql/pricingengines/vanilla/analyticptdhestonengine.hpp, + test-suite/testsuite_vc10.vcxproj: + + Fixed SVN properties + +2010-12-03 16:38 Luigi Ballabio + + * [r17533] ql/termstructures/volatility/swaption/swaptionvolcube.cpp: + + If available, use discounting curve when creating indexes. + + Thanks to Peter Caspers. + +2010-12-03 16:38 Luigi Ballabio + + * [r17532] Contributors.txt, Docs/pages/authors.docs, + ql/indexes/swapindex.cpp, ql/indexes/swapindex.hpp: + + Added inspector for discounting curve (thanks to Peter Caspers.) + +2010-12-02 17:31 Ferdinando Ametrano + + * [r17531] ql/instruments/assetswap.cpp: + + fixed default floatingDayCounter handling + +2010-12-02 11:52 Luigi Ballabio + + * [r17529] ql/termstructures/volatility/sabr.cpp: + + Replaced previous formula with simpler Taylor expansion. + + The new formula is more easily verifiable and yields values + which are not noticeably different. + + Thanks to Eduardo Alonso for the contribution. + +2010-12-02 11:52 Luigi Ballabio + + * [r17528] ql/experimental/finitedifferences/all.hpp: + + Updated all.hpp file. + +2010-12-01 17:14 Luigi Ballabio + + * [r17527] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj: + + Updated Windows projects. + +2010-11-30 17:30 Klaus Spanderen + + * [r17526] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/fdbatesvanillaengine.cpp, + ql/experimental/finitedifferences/fdbatesvanillaengine.hpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.cpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.cpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp, + ql/experimental/finitedifferences/fdhestonrebateengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdmbatesop.cpp, + ql/experimental/finitedifferences/fdmbatesop.hpp, + ql/experimental/finitedifferences/fdmbatessolver.cpp, + ql/experimental/finitedifferences/fdmbatessolver.hpp, + ql/experimental/finitedifferences/fdmdirichletboundary.cpp, + ql/experimental/finitedifferences/fdmdirichletboundary.hpp, + ql/experimental/finitedifferences/fdmhestonlikesolverfactory.cpp, + ql/experimental/finitedifferences/fdmhestonlikesolverfactory.hpp, + ql/experimental/finitedifferences/fdmhestonop.cpp, + ql/experimental/finitedifferences/fdmhestonop.hpp, + ql/experimental/finitedifferences/fdmhestonsolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.hpp, + ql/models/equity/batesmodel.cpp, ql/models/equity/batesmodel.hpp, + test-suite/batesmodel.cpp, test-suite/fdmlinearop.cpp: + + added Bates engine based on the partial integro differential + equation. + +2010-11-30 16:45 Klaus Spanderen + + * [r17525] ql/math/linearleastsquaresregression.hpp, + test-suite/linearleastsquaresregression.cpp: + + fixed bug in multi dim linear regression object + +2010-11-30 10:26 Luigi Ballabio + + * [r17524] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/Makefile.am, ql/experimental/math/Makefile.am, + ql/experimental/math/all.hpp, ql/experimental/math/zigguratrng.cpp, + ql/experimental/math/zigguratrng.hpp: + + Added Ziggurat RNG (thanks to Kakhkhor Abdijalilov.) + +2010-11-29 14:58 Luigi Ballabio + + * [r17519] ql/experimental/convertiblebonds/convertiblebond.cpp: + + Added check on callability dates. + +2010-11-29 14:56 Luigi Ballabio + + * [r17518] ql/pricingengines/latticeshortratemodelengine.hpp, + ql/pricingengines/swaption/treeswaptionengine.cpp, + ql/pricingengines/swaption/treeswaptionengine.hpp: + + Added constructor taking a Handle to a model. + +2010-11-29 14:56 Luigi Ballabio + + * [r17517] ql/instruments/zerocouponinflationswap.cpp, + ql/instruments/zerocouponinflationswap.hpp: + + Added more inspectors for swap data. + +2010-11-29 14:56 Luigi Ballabio + + * [r17516] ql/termstructures/inflationtermstructure.cpp, + ql/termstructures/inflationtermstructure.hpp: + + Added public Time-based interface. + +2010-11-29 14:55 Luigi Ballabio + + * [r17515] ql/indexes/inflation/euhicp.hpp: + + Added HICPXT indexes. + +2010-11-29 14:55 Luigi Ballabio + + * [r17514] ql/termstructures/volatility/optionlet/all.hpp: + + Regenerated all.hpp file with ordered headers. + +2010-11-29 14:55 Luigi Ballabio + + * [r17513] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/time/calendars/Makefile.am, ql/time/calendars/all.hpp, + ql/time/calendars/russia.cpp, ql/time/calendars/russia.hpp: + + Added Russian calendar. + +2010-11-28 18:19 Klaus Spanderen + + * [r17512] ql/pricingengines/vanilla/batesengine.cpp: + + code formatting + +2010-11-23 15:00 Luigi Ballabio + + * [r17509] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj: + + Updated Windows projects. + +2010-11-23 15:00 Luigi Ballabio + + * [r17508] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp: + + Added missing file to Makefile. + +2010-11-23 10:07 Luigi Ballabio + + * [r17507] + ql/termstructures/inflation/interpolatedzeroinflationcurve.hpp: + + Pass arguments to base-class constructor in the correct order. + + Thanks to Leon Sit for the heads-up. + +2010-11-23 10:07 Luigi Ballabio + + * [r17506] ql/math/interpolations/multicubicspline.hpp: + + Removed illegal mutable qualifier from references. + + Thanks to Leon Sit for the heads-up. + +2010-11-23 10:07 Luigi Ballabio + + * [r17505] ql/experimental/credit/recursivecdoengine.hpp, + ql/math/matrixutilities/factorreduction.cpp, + ql/math/matrixutilities/factorreduction.hpp: + + Pass matrix by copy to avoid modifying the input. + + This also solves a problem with passing a temporary as an lvalue. + +2010-11-23 10:06 Luigi Ballabio + + * [r17504] ql/experimental/credit/recursivecdoengine.hpp: + + Avoided forbidden conversion between handles to different types. + + Thanks to Leon Sit for the heads-up. + +2010-11-22 15:10 Luigi Ballabio + + * [r17500] Contributors.txt, Docs/pages/authors.docs: + + Exported IborCoupon pricers (thanks to Lluis Pujol Bajador.) + +2010-11-22 11:28 Klaus Spanderen + + * [r17495] + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmbackwardsolver.hpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.hpp, + test-suite/barrieroption.cpp, test-suite/europeanoption.cpp, + test-suite/fdheston.cpp, + test-suite/hybridhestonhullwhiteprocess.cpp: + + code refactoring: introduced FdmSchemeDesc to shorten the parameter + lists + +2010-11-22 11:26 Klaus Spanderen + + * [r17494] + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.cpp: + + code refactoring: introduced FdmSchemeDesc to shorten the parameter + lists + +2010-11-22 11:24 Klaus Spanderen + + * [r17493] + ql/experimental/finitedifferences/fdblackscholesasianengine.cpp, + ql/experimental/finitedifferences/fdblackscholesasianengine.hpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.cpp, + ql/experimental/finitedifferences/fdblackscholesbarrierengine.hpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.cpp, + ql/experimental/finitedifferences/fdblackscholesrebateengine.hpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.cpp, + ql/experimental/finitedifferences/fdhestonbarrierengine.hpp, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.hpp, + ql/experimental/finitedifferences/fdhestonrebateengine.cpp, + ql/experimental/finitedifferences/fdhestonrebateengine.hpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmbackwardsolver.cpp, + ql/experimental/finitedifferences/fdmblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmblackscholessolver.hpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.hpp, + ql/experimental/finitedifferences/fdmhestonsolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.hpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.cpp, + test-suite/fdmlinearop.cpp: + + code refactoring: introduced FdmSchemeDesc to shorten the parameter + lists + +2010-11-22 11:11 Luigi Ballabio + + * [r17492] ql/experimental/variancegamma/fftengine.cpp, + ql/experimental/variancegamma/fftengine.hpp, + test-suite/variancegamma.cpp: + + Cleaned up types in vanilla-option FFT engine (thanks to Adrian + O'Neill.) + +2010-11-22 10:03 Luigi Ballabio + + * [r17490] + ql/experimental/processes/extendedornsteinuhlenbeckprocess.cpp: + + Removed namespace ambiguity in VC++10 + +2010-11-21 17:08 Klaus Spanderen + + * [r17489] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fd2dblackscholesvanillaengine.hpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.cpp, + ql/experimental/finitedifferences/fdm2dblackscholesop.hpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.cpp, + ql/experimental/finitedifferences/fdm2dblackscholessolver.hpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.cpp, + ql/experimental/finitedifferences/fdminnervaluecalculator.hpp, + test-suite/basketoption.cpp: + + added 2 dimensional finite difference engine for Black-Scholes + processes (incl. local vol). + +2010-11-21 16:59 Klaus Spanderen + + * [r17488] + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.cpp: + + removed useless include + +2010-11-21 16:56 Klaus Spanderen + + * [r17487] + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.hpp: + + removed useless include + +2010-11-19 16:23 Luigi Ballabio + + * [r17486] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj: + + Updated VC++ and Dev-C++ projects. + +2010-11-19 15:53 Luigi Ballabio + + * [r17485] ql/math/randomnumbers/knuthuniformrng.cpp, + ql/math/randomnumbers/knuthuniformrng.hpp: + + Knuth RNG is now safely copyable (thanks to Slava Mazur.) + +2010-11-19 14:56 Luigi Ballabio + + * [r17484] ql/experimental/processes/Makefile.am, + ql/experimental/processes/all.hpp, + ql/experimental/processes/vegastressedblackscholesprocess.cpp, + ql/experimental/processes/vegastressedblackscholesprocess.hpp: + + Added experimental Black-Scholes process with support for vega + stress test. + + Thanks to Michael Heckl for the contribution. + +2010-11-19 14:56 Luigi Ballabio + + * [r17483] ql/pricingengines/basket/all.hpp: + + Updated all.hpp file + +2010-11-18 16:18 Klaus Spanderen + + * [r17482] ql/experimental/finitedifferences/fdmblackscholesop.cpp, + ql/experimental/finitedifferences/fdmblackscholesop.hpp, + ql/experimental/finitedifferences/fdmblackscholessolver.cpp, + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.hpp, + ql/experimental/finitedifferences/fdmsimple2dbssolver.cpp, + ql/experimental/finitedifferences/fdmstepconditioncomposite.cpp, + ql/experimental/finitedifferences/fdmstepconditioncomposite.hpp: + + fdm code clean-up + +2010-11-17 11:29 Ferdinando Ametrano + + * [r17481] QuantLib_vc9.vcproj: + + VC9 catching up + +2010-11-17 10:21 Ferdinando Ametrano + + * [r17480] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite, + test-suite/inflation.cpp: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-11-16 17:11 Klaus Spanderen + + * [r17479] test-suite/basketoption.cpp: + + narrow interface of KirkEngine towards BlackProcess (pricing of + spread options on futures) + +2010-11-16 17:05 Klaus Spanderen + + * [r17478] ql/pricingengines/basket/kirkengine.cpp, + ql/pricingengines/basket/kirkengine.hpp, + test-suite/basketoption.cpp: + + narrow interface of KirkEngine towards BlackProcess (pricing of + spread options on futures) + +2010-11-16 13:11 Klaus Spanderen + + * [r17477] ql/instruments/basketoption.hpp, + ql/pricingengines/basket/Makefile.am, + ql/pricingengines/basket/kirkengine.cpp, + ql/pricingengines/basket/kirkengine.hpp, + test-suite/basketoption.cpp: + + added Kirk approximation for two asset spread options + +2010-11-14 14:04 Chris Kenyon + + * [r17476] ql/termstructures/inflationtermstructure.cpp, + test-suite/inflation.cpp, test-suite/inflation.hpp: + + Fix for InflationPeriod bug (thanks to Niall O'Sullivan) and new + test. + +2010-11-13 01:15 Klaus Spanderen + + * [r17474] + ql/experimental/finitedifferences/fdmhestonvariancemesher.cpp: + + set v_min to zero + +2010-11-13 01:12 Klaus Spanderen + + * [r17473] ql/math/integrals/gaussianquadratures.hpp: + + externalize weights for test purpose + +2010-11-13 01:11 Klaus Spanderen + + * [r17472] + ql/models/marketmodels/browniangenerators/sobolbrowniangenerator.cpp, + ql/models/marketmodels/browniangenerators/sobolbrowniangenerator.hpp: + + added test interface + +2010-11-04 09:15 Klaus Spanderen + + * [r17470] ql/math/matrixutilities/svd.cpp, + ql/math/matrixutilities/svd.hpp: + + zeroing very small w(i)'s in forSolve + +2010-11-03 10:57 Luigi Ballabio + + * [r17469] ql/math/matrixutilities/svd.cpp, + ql/math/matrixutilities/svd.hpp: + + Added constness to SVD methods. + + This fixes a compilation error in Longstaff-Schwartz implementation + where such methods were called on a const SVD instance. + +2010-11-02 22:11 Klaus Spanderen + + * [r17465] ql/math/linearleastsquaresregression.hpp: + + patch zeroing of small w(i)'s + +2010-10-28 10:27 Klaus Spanderen + + * [r17456] ql/experimental/finitedifferences/Makefile.am, + ql/experimental/finitedifferences/all.hpp, + ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonhullwhitevanillaengine.cpp, + ql/experimental/finitedifferences/fdhestonvanillaengine.cpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.cpp, + ql/experimental/finitedifferences/fdmbermudanstepcondition.hpp: + + added bermudan exercise to multidimensional FD framework + +2010-10-26 09:12 Luigi Ballabio + + * [r17451] QuantLib.dev, QuantLib_vc10.vcxproj, + QuantLib_vc10.vcxproj.filters, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, test-suite/testsuite.dev: + + Updated Windows projects. + +2010-10-26 09:12 Luigi Ballabio + + * [r17450] ql/experimental/coupons/Makefile.am, + ql/experimental/coupons/all.hpp: + + Added untracked files to autotools build. + +2010-10-25 09:09 Luigi Ballabio + + * [r17448] ql/experimental/processes/all.hpp: + + Updated all.hpp with new files. + +2010-10-23 10:53 Klaus Spanderen + + * [r17447] ql/experimental/processes/Makefile.am, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.cpp, + ql/experimental/processes/extendedornsteinuhlenbeckprocess.hpp: + + added extended Ornstein-Uhlenbeck process + +2010-10-22 12:34 Ferdinando Ametrano + + * [r17440] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-10-22 10:14 Luigi Ballabio + + * [r17439] ql/experimental/risk/sensitivityanalysis.cpp, + ql/patterns/lazyobject.hpp, + ql/termstructures/iterativebootstrap.hpp, + test-suite/convertiblebonds.cpp: + + Reverted recent exception-related changes. + + Note that for sensitivityanalysis.cpp, I did not entirely revert + the changes, since the original code included the slicing 'throw e' + construct. That might have been the source of some reported loss + of messages. + +2010-10-21 16:23 Ferdinando Ametrano + + * [r17437] test-suite/convertiblebonds.cpp: + + catch all exceptions + +2010-10-21 16:14 Ferdinando Ametrano + + * [r17436] ql/experimental/risk/sensitivityanalysis.cpp: + + catch all exceptions + +2010-10-21 16:14 Ferdinando Ametrano + + * [r17435] ql/patterns/lazyobject.hpp, + ql/termstructures/iterativebootstrap.hpp: + + added specialized handling of std::exception + +2010-10-21 15:28 Luigi Ballabio + + * [r17434] ql/timeseries.hpp, test-suite/timeseries.cpp, + test-suite/timeseries.hpp: + + 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. + +2010-10-19 08:38 Luigi Ballabio + + * [r17432] Examples/BermudanSwaption/Makefile.am, + Examples/Bonds/Makefile.am, Examples/CDS/Makefile.am, + Examples/CallableBonds/Makefile.am, + Examples/ConvertibleBonds/Makefile.am, + Examples/DiscreteHedging/Makefile.am, + Examples/EquityOption/Makefile.am, Examples/FRA/Makefile.am, + Examples/FittedBondCurve/Makefile.am, + Examples/MarketModels/Makefile.am, Examples/Replication/Makefile.am, + Examples/Repo/Makefile.am, Examples/Swap/Makefile.am, Makefile.am, + test-suite/Makefile.am: + + Added VC++10 files to distributed tarballs. + +2010-10-19 08:38 Luigi Ballabio + + * [r17431] ql/math/distributions/normaldistribution.cpp: + + Better recover for inverse cumulative in case of numerical error. + + Previously, operator() would check if the passed value were close + to 0 or 1 due to numerical error; but in that case, it set them to + 0 or 1 which led to a math exception. Now, the largest positive and + negative numbers are returned instead. + +2010-10-19 08:37 Luigi Ballabio + + * [r17430] ql/math/distributions/normaldistribution.cpp, + ql/math/distributions/normaldistribution.hpp: + + More performant inverse cumulative (thanks to Kakhkhor Abdijalilov.) + + Also, a static standard_value method was added which returns the + distribution value for null mean and unit standard deviation. + +2010-10-19 08:37 Luigi Ballabio + + * [r17429] ql/math/randomnumbers/mt19937uniformrng.cpp, + ql/math/randomnumbers/mt19937uniformrng.hpp: + + More performant mt19937 implementation (thanks to Kakhkhor + Abdijalilov.) + +2010-10-18 15:16 Luigi Ballabio + + * [r17428] ., Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj, + Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj.filters, + Examples/Bonds/Bonds_vc10.vcxproj, + Examples/Bonds/Bonds_vc10.vcxproj.filters, + Examples/CDS/CDS_vc10.vcxproj, + Examples/CDS/CDS_vc10.vcxproj.filters, + Examples/CallableBonds/CallableBonds.cpp, + Examples/CallableBonds/CallableBonds_vc10.vcxproj, + Examples/CallableBonds/CallableBonds_vc10.vcxproj.filters, + Examples/ConvertibleBonds/ConvertibleBonds_vc10.vcxproj, + Examples/ConvertibleBonds/ConvertibleBonds_vc10.vcxproj.filters, + Examples/DiscreteHedging/DiscreteHedging_vc10.vcxproj, + Examples/DiscreteHedging/DiscreteHedging_vc10.vcxproj.filters, + Examples/EquityOption/EquityOption_vc10.vcxproj, + Examples/EquityOption/EquityOption_vc10.vcxproj.filters, + Examples/FRA/FRA_vc10.vcxproj, + Examples/FRA/FRA_vc10.vcxproj.filters, + Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj, + Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj.filters, + Examples/MarketModels/MarketModels_vc10.vcxproj, + Examples/MarketModels/MarketModels_vc10.vcxproj.filters, + Examples/Replication/Replication_vc10.vcxproj, + Examples/Replication/Replication_vc10.vcxproj.filters, + Examples/Repo/Repo_vc10.vcxproj, + Examples/Repo/Repo_vc10.vcxproj.filters, + Examples/Swap/Swap_vc10.vcxproj, + Examples/Swap/Swap_vc10.vcxproj.filters, QuantLib_vc10.sln, + QuantLib_vc10.vcxproj, QuantLib_vc10.vcxproj.filters, + ql/auto_link.hpp, ql/config.msvc.hpp, + ql/experimental/finitedifferences/sparseilupreconditioner.cpp, + ql/experimental/finitedifferences/sparseilupreconditioner.hpp, + ql/pricingengines/vanilla/analytichestonengine.cpp, + test-suite/inflationvolatility.cpp, test-suite/nthtodefault.cpp, + test-suite/testsuite_vc10.vcxproj, + test-suite/testsuite_vc10.vcxproj.filters: + + Added support for VC++2010 to the core library. + + The support is still incomplete. On the one hand, not all warnings + were removed. + On the other hand, VC10 doesn't compile parts of Boost::uBLAS 1.44. + For the time + being, QL_NO_UBLAS_SUPPORT was defined in config.msvc.hpp (which + disables a few + methods and classes.) The define should be removed once everything + works. + +2010-10-06 13:09 Luigi Ballabio + + * [r17417] ql/experimental/math/Makefile.am, + ql/experimental/math/all.hpp, + ql/experimental/math/claytoncopularng.hpp, + ql/experimental/math/farliegumbelmorgensterncopularng.hpp, + ql/experimental/math/frankcopularng.hpp: + + Added experimental copula-based RNGs (thanks to Hachemi Benyahia.) + +2010-10-06 10:43 Ferdinando Ametrano + + * [r17415] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-09-30 16:14 Ferdinando Ametrano + + * [r17412] ql/instruments/overnightindexedswap.cpp, + ql/instruments/overnightindexedswap.hpp: + + enabled amortizing OIS + +2010-09-30 09:37 Luigi Ballabio + + * [r17411] ql/math/array.hpp: + + Added size_type typedef to Array (thanks to Kim Tang.) + +2010-09-29 20:46 Klaus Spanderen + + * [r17410] test-suite/hybridhestonhullwhiteprocess.cpp: + + fixed default parameter + +2010-09-29 12:50 Luigi Ballabio + + * [r17409] Contributors.txt, Docs/pages/authors.docs, + ql/experimental/commodities/unitofmeasureconversionmanager.hpp, + test-suite/Makefile.am, test-suite/commodityunitofmeasure.cpp, + test-suite/commodityunitofmeasure.hpp, + test-suite/quantlibtestsuite.cpp, test-suite/testsuite_vc7.vcproj, + test-suite/testsuite_vc8.vcproj, test-suite/testsuite_vc9.vcproj: + + Added a few tests for unit of measures (thanks to Manas Bhatt.) + +2010-09-29 09:21 Ferdinando Ametrano + + * [r17408] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-09-28 15:03 Luigi Ballabio + + * [r17402] ql/termstructures/volatility/swaption/swaptionvolcube.cpp: + + Fixed registration of observables in SwaptionVolCube. + + Thanks to Selene Makarios. + +2010-09-28 15:03 Luigi Ballabio + + * [r17401] ql/pricingengines/vanilla/fdbermudanengine.hpp, + ql/pricingengines/vanilla/fddividendengine.hpp, + ql/pricingengines/vanilla/fdmultiperiodengine.hpp: + + Fixed arguments order in FdMultiPeriodEngine. + + Client code will still compile. + +2010-09-21 15:59 Luigi Ballabio + + * [r17400] ql/pricingengines/vanilla/fdbermudanengine.hpp, + ql/pricingengines/vanilla/fddividendengine.hpp, + ql/pricingengines/vanilla/fdmultiperiodengine.hpp, + test-suite/dividendoption.cpp: + + Fixed passing of arguments to FDMultiPeriodEngine (thanks to Selene + Makarios.) + + FDMultiPeriodEngine class was taking and passing the number of + time steps and grid points in the wrong order (the order of the + parameters in the signature is opposite to that in all other FD + classes. For backward compatibility, this was not changed.) + A couple of dividend-option tests now require more time steps to + pass. + +2010-09-17 15:22 Ferdinando Ametrano + + * [r17394] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-09-17 12:56 Ferdinando Ametrano + + * [r17393] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-09-16 14:28 Ferdinando Ametrano + + * [r17387] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-09-16 13:54 Ferdinando Ametrano + + * [r17384] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-09-14 14:52 Luigi Ballabio + + * [r17377] ql/experimental/risk/sensitivityanalysis.cpp, + ql/experimental/risk/sensitivityanalysis.hpp: + + Reordered parameters. + + According to gcc, a temporary cannot be a default value for + a non-const reference. I suppose a temporary is not an lvalue. + Anyway, the default value was removed and the parameter was + moved upwards. + +2010-09-14 14:51 Luigi Ballabio + + * [r17376] + ql/experimental/commodities/unitofmeasureconversionmanager.hpp: + + Prevented initialization of singleton class instances. + +2010-09-14 14:51 Luigi Ballabio + + * [r17375] ql/methods/montecarlo/longstaffschwartzpathpricer.hpp: + + Avoided multiple allocations (thanks to Kakhkhor Abdijalilov.) + +2010-09-14 14:51 Luigi Ballabio + + * [r17374] QuantLib_vc7.vcproj, ql/instruments/bonds/all.hpp: + + Added new files to all.hpp and VC7 project. + +2010-09-14 14:51 Luigi Ballabio + + * [r17373] Contributors.txt, Docs/pages/authors.docs, + ql/termstructures/yield/piecewisezerospreadedtermstructure.hpp: + + Manage spread with any compounding (thanks to Robert Philipp.) + +2010-09-14 14:50 Luigi Ballabio + + * [r17372] Docs/pages/authors.docs: + + Formatted the contributors list as one name per line. + + This makes it easier to perform diffs, and still gives nice HTML + output as the browsers ignore line breaks. + +2010-09-14 14:50 Luigi Ballabio + + * [r17371] ql/models/marketmodels/products/multistep/all.hpp: + + Updated all.hpp header with new files. + +2010-09-14 14:50 Luigi Ballabio + + * [r17370] ql/utilities/null.hpp: + + 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. + +2010-09-13 16:27 Ferdinando Ametrano + + * [r17367] ql/experimental/risk/sensitivityanalysis.cpp, + ql/experimental/risk/sensitivityanalysis.hpp: + + added Quote sensitivities. The function approach will be + incorporated in a more efficient class based approach later + +2010-09-13 16:24 Ferdinando Ametrano + + * [r17365] ql/instruments/bonds/btp.cpp, ql/instruments/bonds/btp.hpp: + + - fixed RendistatoCalculator bug + - added inspectors + - implemented minor improvements + +2010-09-09 12:41 Ferdinando Ametrano + + * [r17363] ql/instruments/bonds/Makefile.am: + + - added specialized BTP class to help instantiation of this type of + FixedRateBond + - added RendistatoCalculator class + +2010-09-09 11:36 Ferdinando Ametrano + + * [r17362] QuantLib_vc8.vcproj, QuantLib_vc9.vcproj: + + VC8/9 catching up + +2010-09-09 09:45 Ferdinando Ametrano + + * [r17360] QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/instruments/bonds/btp.cpp, ql/instruments/bonds/btp.hpp: + + - added specialized BTP class to help instantiation of this type of + FixedRateBond + - added RendistatoCalculator class + +2010-08-29 17:57 Klaus Spanderen + + * [r17356] ql/pricingengines/vanilla/analyticptdhestonengine.cpp: + + fixed index access + +2010-08-28 10:47 Klaus Spanderen + + * [r17355] ql/models/marketmodels/products/multistep/Makefile.am: + + + +2010-08-26 11:15 Ferdinando Ametrano + + * [r17354] ql/time/schedule.cpp, ql/time/schedule.hpp: + + relaxed constraint on effectiveDate. + Note: as of today there are 2 optionletstripper tests failing: they + are failing independently from this commit + +2010-08-25 03:12 Mark Joshi + + * [r17353] + ql/models/marketmodels/products/multistep/multisteptarn.cpp, + ql/models/marketmodels/products/multistep/multisteptarn.hpp: + + added TARN + +2010-08-02 10:44 Ferdinando Ametrano + + * [r17349] ql/time/schedule.cpp: + + fixed (rare) duplicated date case, generated by endofmonth + adjustment of near dates when the last period is very short + +2010-07-27 03:31 Mark Joshi + + * [r17332] ql/models/marketmodels/evolvers/marketmodelvolprocess.hpp, + ql/models/marketmodels/pathwiseaccountingengine.cpp, + ql/models/marketmodels/pathwiseaccountingengine.hpp, + ql/models/marketmodels/pathwisegreeks/ratepseudorootjacobian.cpp, + ql/models/marketmodels/products/multistep/multistepratchet.cpp, + ql/models/marketmodels/products/multistep/multistepratchet.hpp: + + cleaning up + +2010-07-12 16:36 Luigi Ballabio + + * [r17331] ql/math/randomnumbers/randomsequencegenerator.hpp: + + Improved documentation (thanks to Kakhkhor Abdijalilov.) + +2010-07-12 16:36 Luigi Ballabio + + * [r17330] ql/methods/montecarlo/longstaffschwartzpathpricer.hpp: + + Improvements for Longstaff-Schwarz path pricer. + + - cleaner loop code; + - release memory after calibration. + + Thanks to Kakhkhor Abdijalilov. + +2010-07-12 16:36 Luigi Ballabio + + * [r17329] + ql/termstructures/volatility/capfloor/capfloortermvolcurve.hpp: + + Inherit privately from boost::noncopyable (thanks to Kakhkhor + Abdijalilov.) + +2010-07-12 16:35 Luigi Ballabio + + * [r17328] Contributors.txt, Docs/pages/authors.docs, ql/timegrid.cpp: + + Reserved correct number of elements (thanks to Kakhkhor + Abdijalilov.) + +2010-07-12 16:35 Luigi Ballabio + + * [r17327] ql/models/equity/all.hpp, + ql/pricingengines/vanilla/all.hpp: + + Updated all.hpp files. + +2010-07-01 09:07 Ferdinando Ametrano + + * [r17326] Examples/FittedBondCurve/FittedBondCurve.cpp, + ql/termstructures/yield/fittedbonddiscountcurve.cpp, + ql/termstructures/yield/fittedbonddiscountcurve.hpp: + + - provided (deprecated) FittedBondDiscountCurve backward compatible + constructors + - avoided usage of these deprecated constructors in the + FittedBondCurve example + +2010-06-30 17:36 Ferdinando Ametrano + + * [r17325] ql/experimental/coupons/proxyibor.cpp, + ql/experimental/coupons/proxyibor.hpp: + + exported ProxyIbor + +2010-06-30 15:55 Ferdinando Ametrano + + * [r17324] QuantLib_vc8.vcproj: + + VC8 catching up + +2010-06-30 15:51 Ferdinando Ametrano + + * [r17323] ql/experimental/coupons/proxyibor.cpp, + ql/experimental/coupons/proxyibor.hpp: + + added ProxyIbor, whose fixing is gearing_ * + iborIndex_->fixing(fixingDate) * spread_ + +2010-06-30 15:17 Ferdinando Ametrano + + * [r17321] QuantLib_vc9.vcproj: + + added new files + +2010-06-30 15:15 Ferdinando Ametrano + + * [r17320] ql/termstructures/yield/fittedbonddiscountcurve.cpp, + ql/termstructures/yield/fittedbonddiscountcurve.hpp: + + generalized to BondHelpers instead of FixedRateBondHelpers + +2010-06-30 15:06 Ferdinando Ametrano + + * [r17319] ql/indexes/iborindex.hpp: + + fixed documentation + +2010-06-28 16:07 Luigi Ballabio + + * [r17318] ql/cashflow.hpp, ql/time/schedule.hpp: + + Added a few bits of documentation (thanks to Tawanda Gwena.) + +2010-06-28 16:06 Luigi Ballabio + + * [r17317] Docs/Makefile.am, Docs/quantlib.doxy: + + Upgraded to Doxygen 1.7.1. + +2010-06-28 16:06 Luigi Ballabio + + * [r17316] Docs/pages/history.docs, + ql/experimental/commodities/commoditycashflow.hpp, + ql/experimental/commodities/energycommodity.hpp, + ql/experimental/exoticoptions/simplechooseroption.hpp: + + Fixed a few Doxygen warnings. + +2010-06-26 10:46 Klaus Spanderen + + * [r17315] ql/models/equity/Makefile.am, + ql/models/equity/piecewisetimedependenthestonmodel.cpp, + ql/models/equity/piecewisetimedependenthestonmodel.hpp, + ql/pricingengines/vanilla/Makefile.am, + ql/pricingengines/vanilla/analyticptdhestonengine.cpp, + ql/pricingengines/vanilla/analyticptdhestonengine.hpp, + test-suite/hestonmodel.cpp, test-suite/hestonmodel.hpp: + + added analytic pricing engine for the piecewise constant time + dependent heston model (incl. calibration model) + +2010-06-09 09:28 Ferdinando Ametrano + + * [r17314] ql/math/solver1d.hpp, ql/math/solvers1d/bisection.hpp, + ql/math/solvers1d/brent.hpp, ql/math/solvers1d/falseposition.hpp, + ql/math/solvers1d/newton.hpp, ql/math/solvers1d/newtonsafe.hpp, + ql/math/solvers1d/ridder.hpp, ql/math/solvers1d/secant.hpp: + + using close(x, y) instead of x==y + +2010-06-08 09:01 Ferdinando Ametrano + + * [r17310] ql/math/solvers1d/bisection.hpp, + ql/math/solvers1d/falseposition.hpp, ql/math/solvers1d/newton.hpp, + ql/math/solvers1d/newtonsafe.hpp: + + minor changes + +2010-06-08 08:58 Ferdinando Ametrano + + * [r17309] ql/instruments/makevanillaswap.cpp: + + + +2010-06-07 12:55 Luigi Ballabio + + * [r17306] Docs/Makefile.am, Makefile.am: + + Cleaned up a bit doc generation. + + The basepath is no longer passed from the top-level makefile. + The online docs are generated in a folder named after the library + version. + +2010-05-29 10:03 Klaus Spanderen + + * [r17305] ql/experimental/fx/blackdeltacalculator.cpp, + ql/experimental/fx/deltavolquote.cpp, + ql/experimental/fx/deltavolquote.hpp: + + changed order of member variable initialization + +2010-05-18 22:02 Klaus Spanderen + + * [r17298] ql/methods/montecarlo/lsmbasissystem.cpp, + ql/methods/montecarlo/lsmbasissystem.hpp: + + improved LSM basis system (thanks to Kakhkhor Abdijalilov) + +2010-05-13 22:39 Klaus Spanderen + + * [r17297] ql/methods/montecarlo/lsmbasissystem.cpp: + + fixed equal_with bug + +2010-04-26 16:04 Ferdinando Ametrano + + * [r17271] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, ql/instruments/makeois.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-04-22 17:21 Ferdinando Ametrano + + * [r17269] ql/termstructures/iterativebootstrap.hpp: + + ooops... fixed bug + +2010-04-22 16:45 Ferdinando Ametrano + + * [r17268] ql/termstructures/iterativebootstrap.hpp: + + skipped expired instruments without throwing exception + +2010-04-22 16:35 Ferdinando Ametrano + + * [r17267] ql/termstructures/iterativebootstrap.hpp: + + + +2010-04-22 13:39 Ferdinando Ametrano + + * [r17266] ql/termstructures/iterativebootstrap.hpp: + + - added specific expired instrument exception. Nicer skipping of + expired instruments will be added later + - avoided recreation of internal vectors + +2010-04-21 15:35 Luigi Ballabio + + * [r17265] quantlib.m4: + + Fixed m4 macro for QuantLib detection. + + It now works also when asked for versions such as 1.1 (as opposed + to 1.1.0). The macro was somewhat simplified in the process. + +2010-04-20 18:07 Ferdinando Ametrano + + * [r17260] ., ChangeLog.txt, ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-04-19 10:09 Luigi Ballabio + + * [r17256] QuantLib.dev: + + Manually merged changes from 1.0.x branch. + +2010-04-19 09:41 Ferdinando Ametrano + + * [r17255] ., Contributors.txt, News.txt, QuantLib_vc7.vcproj, + QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, acinclude.m4, + configure.ac, ql, ql/Makefile.am, ql/config.ansi.hpp, + ql/config.mingw.hpp, ql/config.msvc.hpp, ql/config.sun.hpp, + ql/experimental/credit/defaultevent.cpp, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/instruments/forwardvanillaoption.hpp, + ql/instruments/makecapfloor.cpp, + ql/instruments/makeyoyinflationcapfloor.cpp, ql/mathconstants.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/pricingengines/forward/forwardengine.hpp, ql/qldefines.hpp, + ql/termstructures/inflation/seasonality.cpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-04-13 09:23 Ferdinando Ametrano + + * [r17245] ., ChangeLog.txt, Contributors.txt, News.txt, ql, + ql/cashflows/conundrumpricer.cpp, ql/cashflows/couponpricer.cpp, + ql/cashflows/inflationcouponpricer.cpp, + ql/cashflows/rangeaccrual.cpp, + ql/experimental/callablebonds/callablebond.cpp, + ql/experimental/coupons/subperiodcoupons.cpp, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/instruments/creditdefaultswap.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/patterns/singleton.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/termstructures/credit/defaultprobabilityhelpers.cpp, + ql/time/calendars/china.cpp, ql/time/calendars/china.hpp, + ql/time/calendars/hongkong.cpp, ql/time/calendars/hongkong.hpp, + ql/time/calendars/india.cpp, ql/time/calendars/india.hpp, + ql/time/calendars/indonesia.cpp, ql/time/calendars/indonesia.hpp, + ql/time/calendars/singapore.cpp, ql/time/calendars/singapore.hpp, + ql/time/calendars/southkorea.cpp, ql/time/calendars/taiwan.cpp, + ql/time/calendars/taiwan.hpp, ql/time/calendars/turkey.cpp, + ql/time/calendars/turkey.hpp, test-suite, test-suite/cashflows.cpp, + test-suite/cashflows.hpp, test-suite/creditdefaultswap.cpp, + test-suite/defaultprobabilitycurves.cpp: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-04-12 19:08 Klaus Spanderen + + * [r17243] + ql/experimental/finitedifferences/fdmhestonhullwhitesolver.cpp, + ql/experimental/finitedifferences/fdmhestonsolver.cpp: + + corrected constructor definition + +2010-03-29 12:48 Ferdinando Ametrano + + * [r17232] + ql/termstructures/volatility/optionlet/strippedoptionletadapter.cpp: + + + +2010-03-19 08:34 Luigi Ballabio + + * [r17230] test-suite/testsuite.dev: + + Removed obsolete include directory. + +2010-03-19 08:34 Luigi Ballabio + + * [r17229] Contributors.txt, Docs/pages/authors.docs, QuantLib.dev, + QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/exoticoptions/Makefile.am, + ql/experimental/exoticoptions/all.hpp, + ql/experimental/exoticoptions/analyticamericanmargrabeengine.cpp, + ql/experimental/exoticoptions/analyticamericanmargrabeengine.hpp, + ql/experimental/exoticoptions/analyticeuropeanmargrabeengine.cpp, + ql/experimental/exoticoptions/analyticeuropeanmargrabeengine.hpp, + ql/experimental/exoticoptions/margrabeoption.cpp, + ql/experimental/exoticoptions/margrabeoption.hpp, + test-suite/Makefile.am, test-suite/margrabeoption.cpp, + test-suite/margrabeoption.hpp, test-suite/quantlibtestsuite.cpp, + test-suite/testsuite.dev, test-suite/testsuite_vc7.vcproj, + test-suite/testsuite_vc8.vcproj, test-suite/testsuite_vc9.vcproj: + + Added experimental Margrabe option. + + Thanks to IMAFA/Polytech'Nice students Marius Akre, Michael + Benguigui, + and Yanice Cherrak. + +2010-03-19 08:33 Luigi Ballabio + + * [r17228] Contributors.txt, Docs/pages/authors.docs, QuantLib.dev, + QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/experimental/exoticoptions/Makefile.am, + ql/experimental/exoticoptions/all.hpp, + ql/experimental/exoticoptions/analyticsimplechooserengine.cpp, + ql/experimental/exoticoptions/analyticsimplechooserengine.hpp, + ql/experimental/exoticoptions/simplechooseroption.cpp, + ql/experimental/exoticoptions/simplechooseroption.hpp, + test-suite/Makefile.am, test-suite/chooseroption.cpp, + test-suite/chooseroption.hpp, test-suite/quantlibtestsuite.cpp, + test-suite/testsuite.dev, test-suite/testsuite_vc7.vcproj, + test-suite/testsuite_vc8.vcproj, test-suite/testsuite_vc9.vcproj: + + Added experimental simple chooser option. + + Thanks to IMAFA/Polytech'Nice students Clement Barret, Fakher + Braham, + and Mohamed Amine Sadaoui. + +2010-03-18 12:11 Luigi Ballabio + + * [r17227] Contributors.txt, Docs/pages/authors.docs: + + Acknowledged forgotten contributor. + +2010-03-16 13:37 Luigi Ballabio + + * [r17226] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, + QuantLib_vc9.vcproj, configure.ac, ql/experimental/Makefile.am, + ql/experimental/all.hpp, ql/experimental/shortrate, + ql/experimental/shortrate/Makefile.am, + ql/experimental/shortrate/all.hpp, + ql/experimental/shortrate/generalizedhullwhite.cpp, + ql/experimental/shortrate/generalizedhullwhite.hpp, + ql/experimental/shortrate/generalizedornsteinuhlenbeckprocess.cpp, + ql/experimental/shortrate/generalizedornsteinuhlenbeckprocess.hpp: + + Added experimental 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. + +2010-03-16 13:19 Luigi Ballabio + + * [r17225] ql/math/optimization/levenbergmarquardt.cpp: + + Added precondition checks before calling external optimization + routine. + +2010-03-16 12:30 Luigi Ballabio + + * [r17224] ql/models/parameter.hpp: + + Allowed optional constraint in piecewise-constant parameter. + +2010-03-15 16:19 Luigi Ballabio + + * [r17222] Examples/BermudanSwaption/BermudanSwaption_vc7.vcproj, + Examples/BermudanSwaption/BermudanSwaption_vc8.vcproj, + Examples/Bonds/Bonds_vc7.vcproj, Examples/Bonds/Bonds_vc8.vcproj, + Examples/CDS/CDS_vc7.vcproj, Examples/CDS/CDS_vc8.vcproj, + Examples/CallableBonds/CallableBonds_vc7.vcproj, + Examples/CallableBonds/CallableBonds_vc8.vcproj, + Examples/ConvertibleBonds/ConvertibleBonds_vc7.vcproj, + Examples/ConvertibleBonds/ConvertibleBonds_vc8.vcproj, + Examples/DiscreteHedging/DiscreteHedging_vc7.vcproj, + Examples/DiscreteHedging/DiscreteHedging_vc8.vcproj, + Examples/EquityOption/EquityOption_vc7.vcproj, + Examples/EquityOption/EquityOption_vc8.vcproj, + Examples/FRA/FRA_vc7.vcproj, Examples/FRA/FRA_vc8.vcproj, + Examples/FittedBondCurve/FittedBondCurve_vc7.vcproj, + Examples/FittedBondCurve/FittedBondCurve_vc8.vcproj, + Examples/MarketModels/MarketModels_vc7.vcproj, + Examples/MarketModels/MarketModels_vc8.vcproj, + Examples/Replication/Replication_vc7.vcproj, + Examples/Replication/Replication_vc8.vcproj, + Examples/Repo/Repo_vc7.vcproj, Examples/Repo/Repo_vc8.vcproj, + Examples/Swap/Swap_vc7.vcproj, Examples/Swap/Swap_vc8.vcproj, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj: + + Removed FileConfiguration sections from projects. + +2010-03-12 16:21 Luigi Ballabio + + * [r17221] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, + QuantLib_vc9.vcproj, configure.ac, ql/experimental/Makefile.am, + ql/experimental/all.hpp, ql/experimental/variancegamma, + ql/experimental/variancegamma/Makefile.am, + ql/experimental/variancegamma/all.hpp, + ql/experimental/variancegamma/analyticvariancegammaengine.cpp, + ql/experimental/variancegamma/analyticvariancegammaengine.hpp, + ql/experimental/variancegamma/fftengine.cpp, + ql/experimental/variancegamma/fftengine.hpp, + ql/experimental/variancegamma/fftvanillaengine.cpp, + ql/experimental/variancegamma/fftvanillaengine.hpp, + ql/experimental/variancegamma/fftvariancegammaengine.cpp, + ql/experimental/variancegamma/fftvariancegammaengine.hpp, + ql/experimental/variancegamma/variancegammamodel.cpp, + ql/experimental/variancegamma/variancegammamodel.hpp, + ql/experimental/variancegamma/variancegammaprocess.cpp, + ql/experimental/variancegamma/variancegammaprocess.hpp, + test-suite/Makefile.am, test-suite/europeanoption.cpp, + test-suite/europeanoption.hpp, test-suite/quantlibtestsuite.cpp, + test-suite/testsuite.dev, test-suite/testsuite_vc7.vcproj, + test-suite/testsuite_vc8.vcproj, test-suite/testsuite_vc9.vcproj, + test-suite/variancegamma.cpp, test-suite/variancegamma.hpp: + + Added experimental variance-gamma classes (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. + +2010-03-12 14:47 Luigi Ballabio + + * [r17220] ql/experimental/fx: + + Added svn:ignore property. + +2010-03-09 15:42 Luigi Ballabio + + * [r17218] + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.cpp, + ql/experimental/mcbasket/mcpathbasketengine.cpp, + ql/experimental/mcbasket/pathpayoff.hpp: + + Fixes for McBasket Longstaff-Schwartz (thanks to Andrea Odetti.) + + - arrays did not initialise their entries; this is now fixed. + - changed behaviour when there are not ITM paths to run the + least-squares regression; in that case, we never exercise. + - conditional exercise is now enabled. If on a path, exercise is + not allowed, leave the states empty. Alternatively, one could + set an exercise value to -DBL_MAX. + - canExercise was not honoured at maturity during pricing. + +2010-03-09 15:41 Luigi Ballabio + + * [r17217] ql/experimental/mcbasket/adaptedpathpayoff.cpp, + ql/experimental/mcbasket/adaptedpathpayoff.hpp, + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.cpp, + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.hpp, + ql/experimental/mcbasket/mcamericanpathengine.hpp, + ql/experimental/mcbasket/mcpathbasketengine.cpp, + ql/experimental/mcbasket/mcpathbasketengine.hpp, + ql/experimental/mcbasket/pathpayoff.hpp: + + Allow 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. + +2010-03-09 13:56 Luigi Ballabio + + * [r17216] ql/experimental/mcbasket/mcamericanpathengine.hpp, + ql/experimental/mcbasket/mclongstaffschwartzpathengine.hpp, + ql/experimental/mcbasket/mcpathbasketengine.hpp: + + Added arguments similar to the other engines (thanks to Andrea + Odetti.) + + Control variate and time steps per year are now supported. + +2010-03-09 08:27 Luigi Ballabio + + * [r17215] ql/math/copulas/alimikhailhaqcopula.hpp, + ql/math/copulas/claytoncopula.hpp, + ql/math/copulas/farliegumbelmorgensterncopula.hpp, + ql/math/copulas/frankcopula.hpp, ql/math/copulas/galamboscopula.hpp, + ql/math/copulas/gaussiancopula.hpp, + ql/math/copulas/gumbelcopula.hpp, + ql/math/copulas/huslerreisscopula.hpp, + ql/math/copulas/independentcopula.hpp, + ql/math/copulas/marshallolkincopula.hpp, + ql/math/copulas/maxcopula.hpp, ql/math/copulas/mincopula.hpp, + ql/math/copulas/plackettcopula.hpp: + + Added classes to HTML docs. + +2010-03-09 08:26 Luigi Ballabio + + * [r17214] Contributors.txt, Docs/pages/authors.docs, QuantLib.dev, + QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/math/copulas/Makefile.am, + ql/math/copulas/alimikhailhaqcopula.cpp, + ql/math/copulas/alimikhailhaqcopula.hpp, ql/math/copulas/all.hpp, + ql/math/copulas/galamboscopula.cpp, + ql/math/copulas/galamboscopula.hpp, + ql/math/copulas/huslerreisscopula.cpp, + ql/math/copulas/huslerreisscopula.hpp, + ql/math/copulas/plackettcopula.cpp, + ql/math/copulas/plackettcopula.hpp: + + Added more copulas (thanks to Hachemi Benyahia.) + + The new formulas are for Ali-Mikhail-Haq copula, Galambos copula, + Husler-Reiss copula, and Plackett copula. + +2010-03-05 16:05 Luigi Ballabio + + * [r17210] Examples/FittedBondCurve/FittedBondCurve.cpp: + + Formatted output and comments. + +2010-03-05 16:05 Luigi Ballabio + + * [r17209] Contributors.txt, Docs/pages/authors.docs, + Examples/FittedBondCurve/FittedBondCurve.cpp, + ql/termstructures/yield/nonlinearfittingmethods.cpp, + ql/termstructures/yield/nonlinearfittingmethods.hpp: + + Added Svensson curve-fitting method (thanks to Alessandro Roveda.) + +2010-03-03 16:46 Luigi Ballabio + + * [r17207] ql/indexes/indexmanager.cpp: + + Cleaner deletion of histories from IndexManager. + + Previously, cleanHistory(name) and cleanHistories() would replace + the existing time series with an empty one. Now, the relevant + histories are actually deleted from the underlying map. + +2010-03-03 11:56 Ferdinando Ametrano + + * [r17206] + ql/termstructures/volatility/optionlet/optionletstripper.hpp, + ql/termstructures/volatility/optionlet/optionletstripper1.hpp, + ql/termstructures/volatility/optionlet/optionletstripper2.hpp: + + - added documentation + - made OptionletStripper constructor protected + +2010-03-03 11:32 Ferdinando Ametrano + + * [r17205] + ql/termstructures/volatility/optionlet/optionletstripper2.cpp, + ql/termstructures/volatility/optionlet/optionletstripper2.hpp: + + optimized calculation + +2010-03-03 11:12 Ferdinando Ametrano + + * [r17204] + ql/termstructures/volatility/capfloor/capfloortermvolcurve.hpp, + ql/termstructures/volatility/capfloor/capfloortermvolsurface.hpp: + + + +2010-03-03 11:11 Ferdinando Ametrano + + * [r17203] + ql/termstructures/volatility/optionlet/optionletstripper2.cpp: + + reordered computations. The atm calculation is wrong and should be + fixed + +2010-03-03 08:36 Luigi Ballabio + + * [r17202] Docs/quantlib.css: + + Sync with the main site css. + +2010-03-03 08:35 Luigi Ballabio + + * [r17200] Docs/images/QL-title.jpg: + + Better antialiasing. + +2010-03-02 19:35 Ferdinando Ametrano + + * [r17198] ., ql, ql/cashflows/indexedcashflow.hpp, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/instruments/zerocouponinflationswap.cpp, + ql/instruments/zerocouponinflationswap.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-03-02 19:23 Ferdinando Ametrano + + * [r17197] ql/instruments/makecapfloor.cpp: + + temporary patch to get the correct ATM when discounting is different + from forwarding + +2010-03-02 18:11 Ferdinando Ametrano + + * [r17190] ql/pricingengines/capfloor/blackcapfloorengine.cpp, + ql/pricingengines/capfloor/blackcapfloorengine.hpp, + ql/pricingengines/swaption/blackswaptionengine.cpp, + ql/pricingengines/swaption/blackswaptionengine.hpp: + + renamed variables and added comments + +2010-03-02 17:55 Ferdinando Ametrano + + * [r17189] ql/instruments/makevanillaswap.cpp, + ql/instruments/makevanillaswap.hpp: + + - added withPricingEngine method (similar to the one already + available for MakeCapFloor and MakeSwaption + - fixed ATM calculation bug + +2010-03-02 16:10 Ferdinando Ametrano + + * [r17186] ql/instruments/capfloor.hpp: + + improved formatting + +2010-03-02 16:09 Ferdinando Ametrano + + * [r17185] ql/instruments/capfloor.cpp, ql/instruments/swaption.cpp: + + commented out useless calculate() calls. If I'm missing their + usefulness, please un-comment them back in documenting their + rationale + +2010-03-01 19:13 Ferdinando Ametrano + + * [r17184] ql/instruments/makecapfloor.hpp: + + + +2010-03-01 15:44 Ferdinando Ametrano + + * [r17183] ql/instruments/payoffs.hpp: + + made base-class constructors protected + +2010-03-01 15:43 Ferdinando Ametrano + + * [r17182] ql/pricingengines/blackcalculator.cpp, + ql/pricingengines/blackcalculator.hpp, + ql/pricingengines/blackscholescalculator.cpp, + ql/pricingengines/blackscholescalculator.hpp: + + added simpler constructors and inlined few methods + +2010-02-26 09:37 Ferdinando Ametrano + + * [r17176] ql/math/interpolations/mixedinterpolation.hpp: + + avoided VC9 warning + +2010-02-24 11:58 Ferdinando Ametrano + + * [r17173] ., ChangeLog.txt, Docs/Makefile.am, + Docs/images/QL-small.jpg, Docs/images/QL-title.jpg, + Docs/images/QL.bmp, Docs/images/QL.jpg, Docs/images/favicon.ico, + Docs/quantlibheader.html, Docs/quantlibheaderonline.html, ql, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-02-23 17:03 Ferdinando Ametrano + + * [r17160] QuantLib_vc7.vcproj: + + VC7 catching up + +2010-02-23 16:37 Ferdinando Ametrano + + * [r17159] QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + ql/cashflows/Makefile.am, ql/cashflows/simplecashflow.cpp, + ql/cashflows/simplecashflow.hpp: + + required non-null date and amount in SimpleCashFlow constructor + +2010-02-23 12:03 Ferdinando Ametrano + + * [r17145] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp, + ql/pricingengines/bond/bondfunctions.cpp, + ql/pricingengines/bond/bondfunctions.hpp: + + - fixed bug in the previousAmount and previousRate functions + - switched to reverse iterator signature for previousXXX functions + +2010-02-22 17:54 Ferdinando Ametrano + + * [r17144] ql/pricingengines/bond/bondfunctions.cpp: + + removed tradability requirement for next/previous inspectors + +2010-02-22 17:34 Ferdinando Ametrano + + * [r17143] ql/instruments/bond.cpp: + + fixed "null maturity date" wrong behavior + +2010-02-22 15:06 Ferdinando Ametrano + + * [r17139] ql/pricingengines/bond/discountingbondengine.cpp: + + avoided usage of CashFlows::NPV default values + +2010-02-21 17:17 Klaus Spanderen + + * [r17135] test-suite/hybridhestonhullwhiteprocess.cpp, + test-suite/hybridhestonhullwhiteprocess.hpp: + + added new test cases for hybrid Heston-Hull-White model + +2010-02-19 15:57 Ferdinando Ametrano + + * [r17134] ql/time/schedule.cpp: + + added tolerance for firstDate==effectiveDate and + nextToLastDate==terminationDate + +2010-02-19 15:21 Ferdinando Ametrano + + * [r17132] ql/instruments/bonds/fixedratebond.hpp: + + added comments + +2010-02-19 14:49 Ferdinando Ametrano + + * [r17129] ql/cashflows/fixedratecoupon.cpp, + ql/cashflows/fixedratecoupon.hpp, + ql/instruments/bonds/fixedratebond.cpp, + ql/instruments/bonds/fixedratebond.hpp: + + added paymentCalendar to FixedRateBond, a possibly different + calendar than the one used for schedule (accrual dates) calculation + +2010-02-19 11:36 Ferdinando Ametrano + + * [r17128] ql/cashflows/cashflows.cpp: + + ugly unreasonable patch, help would be appreciated + +2010-02-18 16:10 Ferdinando Ametrano + + * [r17121] ., ChangeLog.txt, ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/userconfig.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-02-18 10:53 Ferdinando Ametrano + + * [r17118] ql/cashflows/fixedratecoupon.cpp: + + + +2010-02-17 14:26 Ferdinando Ametrano + + * [r17113] ql/cashflows/cmscoupon.cpp, ql/cashflows/cmscoupon.hpp, + ql/cashflows/digitalcmscoupon.cpp, + ql/cashflows/digitalcmscoupon.hpp, + ql/cashflows/digitaliborcoupon.cpp, + ql/cashflows/digitaliborcoupon.hpp, + ql/cashflows/fixedratecoupon.cpp, ql/cashflows/fixedratecoupon.hpp, + ql/cashflows/iborcoupon.cpp, ql/cashflows/iborcoupon.hpp, + ql/cashflows/rangeaccrual.cpp, ql/cashflows/rangeaccrual.hpp: + + reverted Rev17107 + +2010-02-17 13:38 Ferdinando Ametrano + + * [r17112] ql/cashflows/cashflows.cpp: + + fixed bug (maybe worth porting on 1.0 branch too) + +2010-02-17 09:36 Luigi Ballabio + + * [r17110] ql/math/interpolations/mixedinterpolation.hpp: + + Avoided g++ error. + + I have no idea what VC9 complains about, but the 'this->' is + required by the C++ standard. + +2010-02-17 08:23 Ferdinando Ametrano + + * [r17109] ql/math/interpolations/mixedinterpolation.hpp: + + avoided VC9 warning + +2010-02-17 08:23 Ferdinando Ametrano + + * [r17108] ql/cashflows/cmscoupon.cpp, + ql/cashflows/digitalcmscoupon.cpp, + ql/cashflows/digitaliborcoupon.cpp, + ql/cashflows/fixedratecoupon.cpp, ql/cashflows/iborcoupon.cpp, + ql/cashflows/rangeaccrual.cpp: + + fixed bug + +2010-02-16 19:20 Ferdinando Ametrano + + * [r17107] ql/cashflows/cmscoupon.cpp, ql/cashflows/cmscoupon.hpp, + ql/cashflows/digitalcmscoupon.cpp, + ql/cashflows/digitalcmscoupon.hpp, + ql/cashflows/digitaliborcoupon.cpp, + ql/cashflows/digitaliborcoupon.hpp, + ql/cashflows/fixedratecoupon.cpp, ql/cashflows/fixedratecoupon.hpp, + ql/cashflows/iborcoupon.cpp, ql/cashflows/iborcoupon.hpp, + ql/cashflows/rangeaccrual.cpp, ql/cashflows/rangeaccrual.hpp: + + added XXX::operator boost::shared_ptr() const + +2010-02-16 19:10 Ferdinando Ametrano + + * [r17106] ql/pricingengines/bond/bondfunctions.cpp, + ql/pricingengines/bond/bondfunctions.hpp: + + added more Coupon inspectors + +2010-02-16 19:09 Ferdinando Ametrano + + * [r17105] ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp: + + added more Coupon inspectors + +2010-02-16 19:06 Ferdinando Ametrano + + * [r17104] ql/instruments/makevanillaswap.hpp: + + + +2010-02-12 15:44 Luigi Ballabio + + * [r17098] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, + QuantLib_vc9.vcproj, configure.ac, ql/experimental/Makefile.am, + ql/experimental/all.hpp, ql/experimental/fx, + ql/experimental/fx/Makefile.am, ql/experimental/fx/all.hpp, + ql/experimental/fx/blackdeltacalculator.cpp, + ql/experimental/fx/blackdeltacalculator.hpp, + ql/experimental/fx/deltavolquote.cpp, + ql/experimental/fx/deltavolquote.hpp, test-suite/Makefile.am, + test-suite/blackdeltacalculator.cpp, + test-suite/blackdeltacalculator.hpp, + test-suite/quantlibtestsuite.cpp, test-suite/testsuite.dev, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/testsuite_vc9.vcproj: + + Added experimental delta calculator (thanks to Dimitri Reiswich.) + +2010-02-11 11:31 Luigi Ballabio + + * [r17095] Announce.txt, configure.ac, ql/version.hpp: + + Increased version number to 1.1. + +2010-02-10 14:03 Ferdinando Ametrano + + * [r17088] ., Announce.txt, Examples/MarketModels/MarketModels.cpp, + configure.ac, ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, ql/version.hpp, + test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-02-09 16:53 Luigi Ballabio + + * [r17085] ql/math/interpolations/Makefile.am, + ql/math/interpolations/all.hpp: + + Added new file to autotools build. + +2010-02-09 16:52 Luigi Ballabio + + * [r17084] ql/math/interpolations/mixedinterpolation.hpp: + + Fixed access to data members of template base class. + +2010-02-09 16:47 Ferdinando Ametrano + + * [r17083] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-02-09 09:40 Ferdinando Ametrano + + * [r17075] QuantLib_vc9.vcproj, + ql/math/interpolations/mixedinterpolation.hpp: + + added MixedInterpolation + +2010-02-08 10:50 Ferdinando Ametrano + + * [r17069] ql/instruments/assetswap.cpp: + + added comments + +2010-02-08 10:47 Ferdinando Ametrano + + * [r17068] ql/math/interpolations/loginterpolation.hpp: + + formatting + +2010-02-04 09:54 Ferdinando Ametrano + + * [r17064] Examples/Swap/swapvaluation.cpp: + + removed spurious commit + +2010-02-03 16:54 Ferdinando Ametrano + + * [r17061] ., Examples/Swap/swapvaluation.cpp, ql, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, ql/instruments/makeois.cpp, + ql/instruments/zerocouponinflationswap.cpp, + ql/instruments/zerocouponinflationswap.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/termstructures/inflation/inflationhelpers.cpp, + ql/termstructures/inflation/inflationhelpers.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-01-31 10:13 Klaus Spanderen + + * [r17057] test-suite/quantlibbenchmark.cpp: + + updated mflop values, use PAPI_flops + +2010-01-29 13:45 Luigi Ballabio + + * [r17055] ql/experimental/inflation/polynomial2Dspline.hpp: + + Renamed helper namespace. + +2010-01-29 13:44 Luigi Ballabio + + * [r17054] QuantLib.dev, QuantLib_vc7.vcproj, QuantLib_vc8.vcproj, + QuantLib_vc9.vcproj, ql/experimental/math/Makefile.am, + ql/experimental/math/all.hpp, + ql/experimental/math/autocovariance.hpp, test-suite/Makefile.am, + test-suite/autocovariances.cpp, test-suite/autocovariances.hpp, + test-suite/quantlibtestsuite.cpp, test-suite/testsuite.dev, + test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, + test-suite/testsuite_vc9.vcproj: + + Added autocovariance calculation (thanks to Slava Mazur.) + +2010-01-28 09:17 Ferdinando Ametrano + + * [r17053] ., Announce.txt, configure.ac, ql, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, ql/instruments/bond.cpp, + ql/instruments/makeois.cpp, + ql/math/distributions/normaldistribution.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/termstructures/yield/oisratehelper.cpp, ql/version.hpp, + test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-01-26 14:08 Ferdinando Ametrano + + * [r17043] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/termstructures/volatility/optionlet/spreadedoptionletvol.hpp, + test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-01-26 11:50 Ferdinando Ametrano + + * [r17040] + ql/termstructures/volatility/optionlet/optionletvolatilitystructure.hpp, + ql/termstructures/volatility/optionlet/spreadedoptionletvol.cpp: + + added OptionletVolatilityStructure default constructor + +2010-01-26 11:47 Ferdinando Ametrano + + * [r17039] ql/termstructures/yield/forwardspreadedtermstructure.hpp: + + fixed comment + +2010-01-25 14:13 Luigi Ballabio + + * [r17037] man/MarketModels.1: + + Ported changes from 1.0.x branch. + +2010-01-25 11:44 Ferdinando Ametrano + + * [r17034] ., ChangeLog.txt, Docs/pages/history.docs, News.txt, + Readme.txt, ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/experimental/finitedifferences/fdmhestonvariancemesher.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/models/marketmodels/products/multiproductcomposite.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged branches/R01000x-branch into trunk, respecting ancestry + +2010-01-24 13:41 Klaus Spanderen + + * [r17030] ql/pricingengines/vanilla/analytichestonengine.cpp, + ql/pricingengines/vanilla/analytichestonengine.hpp: + + removed obsolete code (thanks to Toyin for the hint) + +2010-01-22 04:00 Mark Joshi + + * [r17024] ql/models/marketmodels/products/multiproductcomposite.cpp: + + bug fix for multproductcomposite + +2010-01-14 00:16 Klaus Spanderen + + * [r17009] + ql/experimental/finitedifferences/fdmhestonvariancemesher.cpp: + + ensure monotony of pGrid + +2010-01-13 23:33 Klaus Spanderen + + * [r17008] + ql/experimental/finitedifferences/fdmhestonvariancemesher.cpp: + + ensure monotony of pGrid + +2010-01-13 18:13 Ferdinando Ametrano + + * [r17007] ., ql, ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, test-suite: + + merged up to r17006 of branches/R01000x-branch into trunk, + respecting ancestry + +2010-01-13 17:52 Dirk Eddelbuettel + + * [r17004] man/BermudanSwaption.1, man/Bonds.1, man/CDS.1, + man/CallableBonds.1, man/ConvertibleBonds.1, man/DiscreteHedging.1, + man/EquityOption.1, man/FRA.1, man/FittedBondCurve.1, + man/Makefile.am, man/MarketModels.1, man/Replication.1, man/Repo.1, + man/SwapValuation.1: + + added man/MarketModels.1, updated man/Makefile.am, updated See Also + for other man/*1. + +2010-01-13 17:38 Ferdinando Ametrano + + * [r17000] ., Announce.txt, ChangeLog.txt, + Examples/MarketModels/Makefile.am, QuantLib.dev, configure.ac, ql, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/models/marketmodels/callability/swapforwardbasissystem.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/processes/hybridhestonhullwhiteprocess.cpp, ql/version.hpp, + test-suite: + + merged up to r16999 of branches/R01000x-branch into trunk, + respecting ancestry + +2010-01-07 22:17 Klaus Spanderen + + * [r16989] ql/processes/hybridhestonhullwhiteprocess.cpp: + + use "full truncation" scheme for the variance process + +2010-01-07 16:59 Ferdinando Ametrano + + * [r16987] ., QuantLib_vc9.vcproj, ql, ql/cashflows/cashflows.cpp, + ql/experimental/convertiblebonds/tflattice.hpp, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/experimental/inflation/yoycapfloortermpricesurface.hpp, + ql/experimental/inflation/yoyinflationoptionletvolatilitystructure2.hpp, + ql/indexes/inflationindex.cpp, ql/indexes/inflationindex.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/termstructures/inflation/seasonality.cpp, + ql/termstructures/inflation/seasonality.hpp, + ql/termstructures/inflationtermstructure.cpp, test-suite, + test-suite/testsuite_vc9.vcproj: + + + +2010-01-04 15:18 Klaus Spanderen + + * [r16981] test-suite/fdmlinearop.cpp: + + BiCGstab test case now includes sparse ILU preconditioner + +2009-12-30 11:02 Ferdinando Ametrano + + * [r16961] ., Announce.txt, Bugs.txt, Contributors.txt, + Docs/pages/authors.docs, Docs/pages/license.docs, LICENSE.TXT, + QuantLib.dev, QuantLib_vc7.sln, QuantLib_vc7.vcproj, + QuantLib_vc8.sln, QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, + configure.ac, quantlib-config.in, test-suite, test-suite/cdo.cpp, + test-suite/convertiblebonds.cpp, test-suite/creditdefaultswap.cpp, + test-suite/everestoption.cpp, test-suite/extendedtrees.cpp, + test-suite/hestonmodel.cpp, test-suite/himalayaoption.cpp, + test-suite/hybridhestonhullwhiteprocess.cpp, + test-suite/inflationcapfloor.cpp, + test-suite/inflationcapflooredcoupon.cpp, + test-suite/interpolations.cpp, test-suite/pagodaoption.cpp, + test-suite/testsuite.dev, test-suite/testsuite_vc7.vcproj, + test-suite/testsuite_vc8.vcproj, test-suite/testsuite_vc9.vcproj: + + merged changeset up to Rev16952 from branches/R01000x-branch to + trunk + +2009-12-30 11:00 Ferdinando Ametrano + + * [r16960] Examples/BermudanSwaption/BermudanSwaption.cpp, + Examples/BermudanSwaption/BermudanSwaption.dev, + Examples/BermudanSwaption/BermudanSwaption_vc7.vcproj, + Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj, + Examples/Bonds/Bonds.cpp, Examples/Bonds/Bonds.dev, + Examples/Bonds/Bonds_vc7.vcproj, Examples/Bonds/Bonds_vc9.vcproj, + Examples/CDS/CDS.cpp, Examples/CDS/CDS.dev, + Examples/CDS/CDS_vc7.vcproj, Examples/CDS/CDS_vc9.vcproj, + Examples/CallableBonds/CallableBonds.cpp, Examples/CallableBonds/CallableBonds.dev, + Examples/CallableBonds/CallableBonds_vc7.vcproj, + Examples/CallableBonds/CallableBonds_vc9.vcproj, + Examples/ConvertibleBonds/ConvertibleBonds.cpp, Examples/ConvertibleBonds/ConvertibleBonds.dev, + Examples/ConvertibleBonds/ConvertibleBonds_vc7.vcproj, + Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj, + Examples/DiscreteHedging/DiscreteHedging.cpp, Examples/DiscreteHedging/DiscreteHedging.dev, - Examples/EquityOption/EquityOption.dev, Examples/FRA/FRA.dev, + Examples/DiscreteHedging/DiscreteHedging_vc7.vcproj, + Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj, + Examples/EquityOption/EquityOption.cpp, + Examples/EquityOption/EquityOption.dev, + Examples/EquityOption/EquityOption_vc7.vcproj, + Examples/EquityOption/EquityOption_vc9.vcproj, Examples/FRA/FRA.cpp, + Examples/FRA/FRA.dev, Examples/FRA/FRA_vc7.vcproj, + Examples/FRA/FRA_vc9.vcproj, + Examples/FittedBondCurve/FittedBondCurve.cpp, Examples/FittedBondCurve/FittedBondCurve.dev, - Examples/Replication/Replication.dev, Examples/Repo/Repo.dev, - Examples/Swap/Swap.dev, QuantLib.dev, QuantLib_vc7.vcproj, - QuantLib_vc8.vcproj, QuantLib_vc9.vcproj, ql/Makefile.am, - ql/auto_link.hpp, test-suite/testsuite.dev, - test-suite/testsuite_vc7.vcproj, test-suite/testsuite_vc8.vcproj, - test-suite/testsuite_vc9.vcproj: + Examples/FittedBondCurve/FittedBondCurve_vc7.vcproj, + Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj, + Examples/Makefile.am, Examples/MarketModels, + Examples/MarketModels/Makefile.am, + Examples/MarketModels/MarketModels.cpp, + Examples/MarketModels/MarketModels.dev, + Examples/MarketModels/MarketModels_vc7.vcproj, + Examples/MarketModels/MarketModels_vc8.vcproj, + Examples/MarketModels/MarketModels_vc9.vcproj, + Examples/Replication/Replication.cpp, + Examples/Replication/Replication.dev, + Examples/Replication/Replication_vc7.vcproj, + Examples/Replication/Replication_vc9.vcproj, Examples/Repo/Repo.cpp, + Examples/Repo/Repo.dev, Examples/Repo/Repo_vc7.vcproj, + Examples/Repo/Repo_vc9.vcproj, Examples/Swap/Swap.dev, + Examples/Swap/Swap_vc7.vcproj, Examples/Swap/Swap_vc9.vcproj, + Examples/Swap/swapvaluation.cpp: + + merged changeset up to Rev16952 from branches/R01000x-branch to + trunk + +2009-12-30 10:57 Ferdinando Ametrano + + * [r16959] ql, ql/Makefile.am, ql/auto_link.hpp, + ql/cashflows/cashflows.cpp, ql/cashflows/cashflows.hpp, + ql/cashflows/coupon.cpp, ql/cashflows/coupon.hpp, + ql/cashflows/indexedcashflow.cpp, ql/cashflows/indexedcashflow.hpp, + ql/cashflows/rangeaccrual.cpp, ql/cashflows/rangeaccrual.hpp, + ql/experimental/Makefile.am, ql/experimental/all.hpp, + ql/experimental/callablebonds/callablebond.cpp, + ql/experimental/callablebonds/callablebond.hpp, + ql/experimental/commodities/unitofmeasureconversion.cpp, + ql/experimental/commodities/unitofmeasureconversion.hpp, + ql/experimental/commodities/unitofmeasureconversionmanager.cpp, + ql/experimental/commodities/unitofmeasureconversionmanager.hpp, + ql/experimental/convertiblebonds, + ql/experimental/convertiblebonds/Makefile.am, + ql/experimental/convertiblebonds/all.hpp, + ql/experimental/convertiblebonds/binomialconvertibleengine.hpp, + ql/experimental/convertiblebonds/convertiblebond.cpp, + ql/experimental/convertiblebonds/convertiblebond.hpp, + ql/experimental/convertiblebonds/discretizedconvertible.cpp, + ql/experimental/convertiblebonds/discretizedconvertible.hpp, + ql/experimental/convertiblebonds/tflattice.hpp, + ql/experimental/credit/issuer.cpp, + ql/experimental/credit/issuer.hpp, + ql/experimental/credit/onefactorcopula.hpp, + ql/experimental/credit/syntheticcdoengines.hpp, + ql/experimental/exoticoptions, + ql/experimental/exoticoptions/Makefile.am, + ql/experimental/exoticoptions/all.hpp, + ql/experimental/exoticoptions/everestoption.cpp, + ql/experimental/exoticoptions/everestoption.hpp, + ql/experimental/exoticoptions/himalayaoption.cpp, + ql/experimental/exoticoptions/himalayaoption.hpp, + ql/experimental/exoticoptions/mceverestengine.cpp, + ql/experimental/exoticoptions/mceverestengine.hpp, + ql/experimental/exoticoptions/mchimalayaengine.cpp, + ql/experimental/exoticoptions/mchimalayaengine.hpp, + ql/experimental/exoticoptions/mcpagodaengine.cpp, + ql/experimental/exoticoptions/mcpagodaengine.hpp, + ql/experimental/exoticoptions/pagodaoption.cpp, + ql/experimental/exoticoptions/pagodaoption.hpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.cpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.hpp, + ql/experimental/finitedifferences/fdmdirichletboundary.cpp, + ql/experimental/finitedifferences/fdmdirichletboundary.hpp, + ql/experimental/finitedifferences/sparseilupreconditioner.cpp, + ql/experimental/finitedifferences/sparseilupreconditioner.hpp, + ql/experimental/inflation/interpolatedyoyoptionletstripper.hpp, + ql/experimental/inflation/piecewiseyoyoptionletvolatility.hpp, + ql/experimental/inflation/yoyinflationoptionletvolatilitystructure2.hpp, + ql/experimental/mcbasket/adaptedpathpayoff.cpp, + ql/experimental/mcbasket/adaptedpathpayoff.hpp, + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.cpp, + ql/experimental/mcbasket/longstaffschwartzmultipathpricer.hpp, + ql/experimental/mcbasket/mcamericanpathengine.hpp, + ql/experimental/mcbasket/mclongstaffschwartzpathengine.hpp, + ql/experimental/mcbasket/pathmultiassetoption.hpp, + ql/indexes/swapindex.hpp, ql/instruments/Makefile.am, + ql/instruments/all.hpp, ql/instruments/bonds/Makefile.am, + ql/instruments/bonds/all.hpp, + ql/instruments/bonds/convertiblebond.cpp, + ql/instruments/bonds/convertiblebond.hpp, + ql/instruments/everestoption.cpp, ql/instruments/everestoption.hpp, + ql/instruments/himalayaoption.cpp, + ql/instruments/himalayaoption.hpp, ql/instruments/pagodaoption.cpp, + ql/instruments/pagodaoption.hpp, + ql/instruments/zerocouponinflationswap.cpp, ql/legacy/Makefile.am, + ql/legacy/all.hpp, ql/math/distributions/poissondistribution.hpp, + ql/math/interpolations/convexmonotoneinterpolation.hpp, + ql/math/interpolations/kernelinterpolation.hpp, + ql/math/interpolations/sabrinterpolation.hpp, + ql/math/matrixutilities/getcovariance.cpp, + ql/math/matrixutilities/getcovariance.hpp, + ql/math/matrixutilities/tapcorrelations.cpp, + ql/math/matrixutilities/tapcorrelations.hpp, + ql/math/optimization/bfgs.cpp, ql/math/optimization/bfgs.hpp, + ql/math/optimization/conjugategradient.cpp, + ql/math/optimization/conjugategradient.hpp, + ql/math/optimization/linesearchbasedmethod.cpp, + ql/math/optimization/linesearchbasedmethod.hpp, + ql/math/optimization/steepestdescent.cpp, + ql/math/optimization/steepestdescent.hpp, + ql/math/randomnumbers/lecuyeruniformrng.cpp, ql/methods/Makefile.am, + ql/methods/all.hpp, ql/methods/lattices/Makefile.am, + ql/methods/lattices/all.hpp, ql/methods/lattices/bsmlattice.hpp, + ql/methods/lattices/tflattice.hpp, + ql/models/marketmodels/callability/swapforwardbasissystem.cpp, + ql/models/marketmodels/callability/swapforwardbasissystem.hpp, + ql/models/marketmodels/curvestates/lmmcurvestate.cpp, + ql/models/marketmodels/curvestates/lmmcurvestate.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateballand.hpp, + ql/models/marketmodels/evolvers/lognormalfwdrateiballand.cpp, + ql/models/marketmodels/evolvers/lognormalfwdrateiballand.hpp, + ql/models/marketmodels/models/capletcoterminalperiodic.cpp, + ql/models/marketmodels/models/capletcoterminalperiodic.hpp, + ql/models/marketmodels/pathwisediscounter.cpp, + ql/models/marketmodels/pathwisediscounter.hpp, + ql/models/marketmodels/products/multistep/multistepinversefloater.cpp, + ql/models/marketmodels/products/multistep/multistepinversefloater.hpp, + ql/models/marketmodels/products/multistep/multisteppathwisewrapper.cpp, + ql/models/marketmodels/products/multistep/multisteppathwisewrapper.hpp, + ql/models/marketmodels/products/pathwise/Makefile.am, + ql/models/marketmodels/products/pathwise/all.hpp, + ql/models/marketmodels/products/pathwise/pathwiseproductcallspecified.cpp, + ql/models/marketmodels/products/pathwise/pathwiseproductcallspecified.hpp, + ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.cpp, + ql/models/marketmodels/products/pathwise/pathwiseproductcashrebate.hpp, + ql/models/marketmodels/products/pathwise/pathwiseproductinversefloater.cpp, + ql/models/marketmodels/products/pathwise/pathwiseproductinversefloater.hpp, + ql/models/marketmodels/products/pathwise/pathwiseproductswap.cpp, + ql/models/marketmodels/products/pathwise/pathwiseproductswap.hpp, + ql/models/marketmodels/proxygreekengine.cpp, + ql/models/marketmodels/utilities.cpp, ql/pricingengines/Makefile.am, + ql/pricingengines/all.hpp, ql/pricingengines/basket/Makefile.am, + ql/pricingengines/basket/all.hpp, + ql/pricingengines/basket/mceuropeanbasketengine.cpp, + ql/pricingengines/basket/mceuropeanbasketengine.hpp, + ql/pricingengines/basket/mceverestengine.cpp, + ql/pricingengines/basket/mceverestengine.hpp, + ql/pricingengines/basket/mchimalayaengine.cpp, + ql/pricingengines/basket/mchimalayaengine.hpp, + ql/pricingengines/basket/mcpagodaengine.cpp, + ql/pricingengines/basket/mcpagodaengine.hpp, + ql/pricingengines/bond/bondfunctions.cpp, + ql/pricingengines/bond/bondfunctions.hpp, + ql/pricingengines/credit/integralcdsengine.cpp, + ql/pricingengines/credit/midpointcdsengine.cpp, + ql/pricingengines/hybrid, + ql/pricingengines/swap/discountingswapengine.cpp, + ql/pricingengines/vanilla/analyticgjrgarchengine.cpp, + ql/pricingengines/vanilla/analytichestonengine.cpp, + ql/pricingengines/vanilla/analytichestonengine.hpp, + ql/pricingengines/vanilla/analytichestonhullwhiteengine.cpp, + ql/pricingengines/vanilla/analytichestonhullwhiteengine.hpp, + ql/processes/hestonprocess.cpp, ql/processes/hestonprocess.hpp, + ql/quotes/compositequote.hpp, ql/termstructure.cpp, + ql/termstructure.hpp, + ql/termstructures/credit/interpolatedhazardratecurve.hpp, + ql/termstructures/credit/probabilitytraits.hpp, + ql/termstructures/interpolatedcurve.hpp, + ql/termstructures/yield/bondhelpers.cpp, + ql/termstructures/yield/bondhelpers.hpp, + ql/termstructures/yield/discountcurve.hpp, + ql/termstructures/yield/fittedbonddiscountcurve.cpp, + ql/termstructures/yield/fittedbonddiscountcurve.hpp, + ql/termstructures/yield/forwardcurve.hpp, + ql/termstructures/yield/ratehelpers.cpp, + ql/termstructures/yield/zerocurve.hpp, + ql/termstructures/yieldtermstructure.cpp, + ql/termstructures/yieldtermstructure.hpp, + ql/time/dategenerationrule.cpp, ql/time/dategenerationrule.hpp, + ql/time/daycounters/actualactual.cpp, ql/time/schedule.cpp, + ql/version.hpp: + + merged changeset up to Rev16952 from branches/R01000x-branch to + trunk + +2009-12-28 13:25 Klaus Spanderen + + * [r16943] ql/processes/hestonprocess.cpp: + + avoid underrun problem in conjunction with the error function + +2009-12-06 10:49 Klaus Spanderen + + * [r16865] test-suite/hestonmodel.cpp: + + speed-up Heston test cases by using QE-M discretization + +2009-12-05 14:16 Roland Lichters + + * [r16864] ql/experimental/credit/syntheticcdoengines.hpp: + + reverted clean up of MidPointCDOEngine + +2009-12-03 20:15 Klaus Spanderen + + * [r16863] ql/processes/hestonprocess.cpp, + ql/processes/hestonprocess.hpp: - Removed version number from built output. + added Quadratic Exponential discretization scheme for the Heston + process incl. martingale correction + +2009-12-02 16:22 Roland Lichters + + * [r16852] ql/experimental/credit/distribution.cpp, + ql/experimental/credit/distribution.hpp, + ql/experimental/credit/riskyassetswap.cpp, + ql/experimental/credit/riskybond.cpp, + ql/experimental/credit/riskybond.hpp, + ql/experimental/credit/syntheticcdoengines.hpp: + + fixed Nando's lint warnings + +2009-11-27 20:22 Klaus Spanderen + + * [r16839] + ql/experimental/finitedifferences/fdmamericanstepcondition.cpp, + ql/experimental/finitedifferences/fdmamericanstepcondition.hpp, + ql/experimental/finitedifferences/fdmdirichletboundary.cpp, + ql/experimental/finitedifferences/fdmdirichletboundary.hpp, + ql/pricingengines/vanilla/analytichestonhullwhiteengine.cpp, + ql/pricingengines/vanilla/analytichestonhullwhiteengine.hpp: - The idea is that, due to backward compatibility, one should be - able to just drop the new library in place of the old one without - having to change the link argument. True, this already kind of - happened with symbolic links and auto_link, but let's make it - even more explicit. + fixed lint warnings (using Nando's alternative 1) -2009-11-24 14:36 Luigi Ballabio +2009-11-25 02:59 Mark Joshi - * [r16793] + * [r16804] ql/math/statistics/sequencestatistics.hpp: - Created branch for 1.0.x releases. + fixed x64 warning 2009-11-24 11:33 Ferdinando Ametrano diff --git a/Contributors.txt b/Contributors.txt index 47687c01c1..d506e27e72 100644 --- a/Contributors.txt +++ b/Contributors.txt @@ -2,12 +2,15 @@ We gratefully acknowledge contributions from: Nathan Abbott +Samad Abdessadki +Kakhkhor Abdijalilov Xavier Abulker Toyin Akin Marius Akre Mario Aleppo Jose Aparicio Sercan Atalik +Lluis Pujol Bajador Clément Barret Christopher Baus Thomas Becker @@ -16,15 +19,21 @@ Adolfo Benin Hachemi Benyahia Luca Berardi Sylvain Bertrand +Manas Bhatt David Binderman Theo Boafo +Delphine Bouthier Fakher Braham Joe Byers +Xavier Caron +Marine Casanova +Peter Caspers Antoine Cellerier Yee Man Chan Aurelien Chanudet Yiping Chen Yanice Cherrak +Meryem Chibo Warren Chou Jon Davidson Daniele De Francesco @@ -35,6 +44,7 @@ Cristina Duminuco Dirk Eddelbuettel Bernd Engelmann Giorgio Facchinetti +Matt Fair Paul Farrington Lorella Fatone Luca Ferraro @@ -50,11 +60,13 @@ Florent Grenier Cavit Hafizoglu Michael Heckl Laurent Hoffmann +Xiangyu Hong Benoît Houzelle Frank Hövermann Charles Chongseok Hyun Simon Ibbotson Norbert Irmer +Rahul Kanchi Tomoya Kawanishi Gary Kennedy Matt Knox @@ -63,19 +75,25 @@ Silakhdar Krikeb Yan Kuang Allen Kuo Paul Laderoute +Yasmine Lahlou +Fabien Le Floc'h James Lee Samuel Lerouge Gang Liang Robert Lopez André Louw +Joao Paulo Magalhaes John Maiden Katiuscia Manzoni Francesca Mariani Slava Mazur Enrico Michelotti +Andre Miemiec +Raso Mirko Radu Mondescu Bart Mosley Tiziano Müller +Billy Ng Bojan Nikolic Jean Nkeng Adrian O'Neill @@ -85,8 +103,10 @@ Guillaume Pealat Gilbert Peffer Walter Penschke Francesco Perissin +Robert Philipp Adrien Pinatton Gianni Piolanti +Sebastian Poloczek Mario Pucci J. Erik Radmall Fabio Ramponi @@ -95,13 +115,17 @@ Dimitri Reiswich Sadruddin Rejeb Alessandro Roveda Mohamed Amine Sadaoui +Amine Samani Alpha Sanou Toure Tamas Sashalmi Peter Schmitteckert Ralph Schreyer David Schwartz +Simon Shakeshaft +Kirill Shemyakin Eugene Shevkoplyas Enrico Sirola +Leon Sit Maxim Sokolov Niels Elken Sønderby Andreas Spengler @@ -109,6 +133,7 @@ Roland Stamm Marco Tarenghi François du Vignaud Charles Whitmore +Stephen Wong Bernd Johannes Wuebben Sun Xiuxin Jeff Yu diff --git a/Docs/Makefile.am b/Docs/Makefile.am index 88d3f6e160..cb68f6e5d2 100644 --- a/Docs/Makefile.am +++ b/Docs/Makefile.am @@ -14,6 +14,8 @@ DOXYGEN_CUSTOM := quantlib.css print.css \ DOXYGEN_INPUT := $(shell find ${top_srcdir} -name *.hpp) \ $(wildcard pages/*.docs) +BASEPATH = @abs_top_srcdir@ + %.gz: % rm -f $@ gzip --best $< @@ -56,16 +58,18 @@ docs-online: .time-stamp-online -e "s/SHOW_FILES = YES/SHOW_FILES = NO/" \ -e "s/INCLUDE_GRAPH = YES/INCLUDE_GRAPH = NO/" \ -e "s/SEARCHENGINE = NO/SEARCHENGINE = YES/" \ - -e "s/HTML_OUTPUT = html/HTML_OUTPUT = html-online/" \ + -e "s/SERVER_BASED_SEARCH = NO/SERVER_BASED_SEARCH = YES/" \ + -e "s/HTML_OUTPUT = html/HTML_OUTPUT = reference-$(VERSION)/" \ -e "s|ql_basepath|${BASEPATH}/|" \ -e "s|ql_version|$(VERSION)|" \ quantlib.doxy > .quantlib.doxy $(DOXYGEN) .quantlib.doxy rm -f .quantlib.doxy - rm -f html-online/*.md5 - cp -f images/*.jpg html-online - cp -f images/*.png html-online - cp -f images/*.ico html-online + rm -f reference-$(VERSION)/*.md5 + rm -f reference-$(VERSION)/*.map + cp -f images/*.jpg reference-$(VERSION) + cp -f images/*.png reference-$(VERSION) + cp -f images/*.ico reference-$(VERSION) touch .time-stamp-online docs-man: .time-stamp-man @@ -83,7 +87,8 @@ docs-man-dist: docs-man docs-clean: rm -Rf man - rm -Rf html-online html + rm -Rf html + rm -Rf reference-* rm -f .time-stamp* diff --git a/Docs/pages/authors.docs b/Docs/pages/authors.docs index d1542b89e6..d2cba02f62 100644 --- a/Docs/pages/authors.docs +++ b/Docs/pages/authors.docs @@ -30,7 +30,7 @@ - Dirk Eddelbuettel - Neil Firth, Mathematical Institute, University of Oxford - Nicola Jean, StatPro Italia srl - - Chris Kenyon + - Chris Kenyon - Roland Lichters - Marco Marchioro, StatPro Italia srl - Klaus Spanderen @@ -38,36 +38,144 @@ \section contributors Contributors - We gratefully acknowledge contributions from Nathan Abbott, Xavier - Abulker, Toyin Akin, Marius Akre, Mario Aleppo, Jose Aparicio, - Sercan Atalik, Clément Barret, Christopher Baus, Thomas - Becker, Michaël Benguigui, HAdolfo Benin, achemi Benyahia, - Luca Berardi, Sylvain Bertrand, David Binderman, Theo Boafo, - Fakher Braham, Joe Byers, Antoine Cellerier, Yee Man Chan, - Aurelien Chanudet, Yiping Chen, Yanice Cherrak, Warren Chou, Jon - Davidson, Daniele De Francesco, Frédéric Degraeve, - Piero Del Boca, Piter Dias, Cristina Duminuco, Dirk Eddelbuettel, - Bernd Engelmann, Giorgio Facchinetti, Paul Farrington, Lorella - Fatone, Luca Ferraro, Chiara Fornarola, Silvia Frasson, Andreas - Gaida, Matteo Gallivanoni, Roman Gitlin, Marek Glowacki, Richard - Gomes, Richard Gould, Florent Grenier, Cavit Hafizoglu, Michael - Heckl, Laurent Hoffmann, Benoît Houzelle, Frank - Hövermann, Charles Chongseok Hyun, Simon Ibbotson, Tomoya - Kawanishi, Gary Kennedy, Matt Knox, Andrew Kolesnikov, Silakhdar - Krikeb, Yan Kuang, Allen Kuo, Paul Laderoute, James Lee, Samuel - Lerouge, Gang Liang, Robert Lopez, André Louw, John Maiden, - Katiuscia Manzoni, Francesca Mariani, Slava Mazur, Enrico - Michelotti, Radu Mondescu, Bart Mosley, Tiziano Müller, Bojan - Nikolic, Jean Nkeng, Adrian O'Neill, Andrea Odetti, Mike Parker, - Guillaume Pealat, Gilbert Peffer, Walter Penschke, Adrien - Pinatton, Gianni Piolanti, Mario Pucci, J. Erik Radmall, Fabio - Ramponi, Maria Cristina Recchioni, Dimitri Reiswich, Sadruddin - Rejeb, Alessandro Roveda, Mohamed Amine Sadaoui, Alpha Sanou - Toure, Tamas Sashalmi, Peter Schmitteckert, Ralph Schreyer, David - Schwartz, Eugene Shevkoplyas, Enrico Sirola, Maxim Sokolov, Niels - Elken Sønderby, Andreas Spengler, Roland Stamm, Marco - Tarenghi, François du Vignaud, Charles Whitmore, Bernd - Johannes Wuebben, Sun Xiuxin, Jeff Yu, and Francesco Zirilli. + We gratefully acknowledge contributions from + Nathan Abbott, + Samad Abdessadki, + Kakhkhor Abdijalilov, + Xavier Abulker, + Toyin Akin, + Marius Akre, + Mario Aleppo, + Jose Aparicio, + Sercan Atalik, + Lluis Pujol Bajador, + Clément Barret, + Christopher Baus, + Thomas Becker, + Michaël Benguigui, + Adolfo Benin, + Hachemi Benyahia, + Luca Berardi, + Sylvain Bertrand, + Manas Bhatt, + David Binderman, + Theo Boafo, + Delphine Bouthier, + Fakher Braham, + Joe Byers, + Xavier Caron, + Marine Casanova, + Peter Caspers, + Antoine Cellerier, + Yee Man Chan, + Aurelien Chanudet, + Yiping Chen, + Yanice Cherrak, + Meryem Chibo, + Warren Chou, + Jon Davidson, + Daniele De Francesco, + Frédéric Degraeve, + Piero Del Boca, + Piter Dias, + Cristina Duminuco, + Dirk Eddelbuettel, + Bernd Engelmann, + Giorgio Facchinetti, + Matt Fair, + Paul Farrington, + Lorella Fatone, + Luca Ferraro, + Chiara Fornarola, + Silvia Frasson, + Andreas Gaida, + Matteo Gallivanoni, + Roman Gitlin, + Marek Glowacki, + Richard Gomes, + Richard Gould, + Florent Grenier, + Cavit Hafizoglu, + Michael Heckl, + Laurent Hoffmann, + Xiangyu Hong, + Benoît Houzelle, + Frank Hövermann, + Charles Chongseok Hyun, + Simon Ibbotson, + Norbert Irmer, + Rahul Kanchi, + Tomoya Kawanishi, + Gary Kennedy, + Matt Knox, + Andrew Kolesnikov, + Silakhdar Krikeb, + Yan Kuang, + Allen Kuo, + Paul Laderoute, + Yasmine Lahlou, + Fabien Le Floc'h, + James Lee, + Samuel Lerouge, + Gang Liang, + Robert Lopez, + André Louw, + Joao Paulo Magalhaes, + John Maiden, + Katiuscia Manzoni, + Francesca Mariani, + Slava Mazur, + Enrico Michelotti, + Andre Miemiec, + Raso Mirko, + Radu Mondescu, + Bart Mosley, + Tiziano Müller, + Billy Ng, + Bojan Nikolic, + Jean Nkeng, + Adrian O'Neill, + Andrea Odetti, + Mike Parker, + Guillaume Pealat, + Gilbert Peffer, + Walter Penschke, + Francesco Perissin, + Robert Philipp, + Adrien Pinatton, + Gianni Piolanti, + Sebastian Poloczek, + Mario Pucci, + J. Erik Radmall, + Fabio Ramponi, + Maria Cristina Recchioni, + Dimitri Reiswich, + Sadruddin Rejeb, + Alessandro Roveda, + Mohamed Amine Sadaoui, + Amine Samani, + Alpha Sanou Toure, + Tamas Sashalmi, + Peter Schmitteckert, + Ralph Schreyer, + David Schwartz, + Simon Shakeshaft, + Kirill Shemyakin, + Eugene Shevkoplyas, + Enrico Sirola, + Leon Sit, + Maxim Sokolov, + Niels Elken Sønderby, + Andreas Spengler, + Roland Stamm, + Marco Tarenghi, + François du Vignaud, + Charles Whitmore, + Stephen Wong, + Bernd Johannes Wuebben, + Sun Xiuxin, + Jeff Yu, + and Francesco Zirilli. %QuantLib also includes code taken from Peter Jäckel's book "Monte Carlo Methods in Finance". diff --git a/Docs/pages/config.docs b/Docs/pages/config.docs index f9a76c6081..069b1ea1e2 100644 --- a/Docs/pages/config.docs +++ b/Docs/pages/config.docs @@ -70,13 +70,6 @@ functions. This can prevent their inlining and degrade performance. Undefined by default. - \code - #define QL_TODAYS_PAYMENTS - \endcode - If undefined (the default,) payments are considered to be settled - at the beginning of the day. Therefore, payments occurring at - today's date are not included in the NPV of an instrument. - \code #define QL_DISABLE_DEPRECATED \endcode diff --git a/Docs/pages/history.docs b/Docs/pages/history.docs index 67efa4fc01..cfa2170cdd 100644 --- a/Docs/pages/history.docs +++ b/Docs/pages/history.docs @@ -1,6 +1,6 @@ /* - Copyright (C) 2000-2009 StatPro Italia srl + Copyright (C) 2000-2012 StatPro Italia srl This file is part of QuantLib, a free-software/open-source library for financial quantitative analysts and developers - http://quantlib.org/ @@ -18,7 +18,216 @@ /*! \page history Version history - Release 1.0 - February 2010 + Release 1.2.1 - September 2012 + + Bug-fix release. + + Release 1.2 - March 6th, 2012 + + 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). + + Release 1.1 - May 23rd, 2011 + + 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.) + + Release 1.0.1 - September 17th, 2010 + + Bug-fix release. + + Release 1.0 - February 24th, 2010 PORTABILITY - Fixes for x64 Visual Studio compilation (thanks to Craig Miller.) @@ -1223,7 +1432,7 @@ - added discrete time forward methods - added DiscountCurve (loglinear interpolated) and CompoundForward term structures - - ForwardSpreadedTermStructure moved under %QuantLib::TermStructures + - ForwardSpreadedTermStructure moved under QuantLib::TermStructures namespace FIXED INCOME diff --git a/Docs/pages/index.docs b/Docs/pages/index.docs index 407485fa90..41cfc288f3 100644 --- a/Docs/pages/index.docs +++ b/Docs/pages/index.docs @@ -16,7 +16,7 @@ FOR A PARTICULAR PURPOSE. See the license for more details. */ -/*! \page index Introduction +/*! \mainpage Introduction %QuantLib (http://quantlib.org/) is a C++ library for financial quantitative analysts and developers. diff --git a/Docs/pages/license.docs b/Docs/pages/license.docs index 6fa75b03e3..3dbcff3fa5 100644 --- a/Docs/pages/license.docs +++ b/Docs/pages/license.docs @@ -8,9 +8,9 @@ Copyright (C) 2001, 2002, 2003 Sadruddin Rejeb Copyright (C) 2002, 2003, 2004 Decillion Pty(Ltd) - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Ferdinando Ametrano + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Ferdinando Ametrano - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 StatPro Italia srl + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 StatPro Italia srl Copyright (C) 2003, 2004, 2007 Neil Firth Copyright (C) 2003, 2004 Roman Gitlin Copyright (C) 2003 Niels Elken Sønderby @@ -21,7 +21,7 @@ Copyright (C) 2004 Mike Parker Copyright (C) 2004 Walter Penschke Copyright (C) 2004 Gianni Piolanti - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Klaus Spanderen + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Klaus Spanderen Copyright (C) 2004 Jeff Yu Copyright (C) 2005, 2006, 2008 Toyin Akin @@ -41,7 +41,7 @@ Copyright (C) 2006, 2007 Chiara Fornarola Copyright (C) 2006 Silvia Frasson Copyright (C) 2006 Richard Gould - Copyright (C) 2006, 2007, 2008, 2009 Mark Joshi + Copyright (C) 2006, 2007, 2008, 2009, 2010 Mark Joshi Copyright (C) 2006, 2007, 2008 Allen Kuo Copyright (C) 2006, 2007, 2008, 2009 Roland Lichters Copyright (C) 2006, 2007 Katiuscia Manzoni @@ -51,12 +51,12 @@ Copyright (C) 2007 Affine Group Limited Copyright (C) 2007 Richard Gomes Copyright (C) 2007, 2008 Laurent Hoffmann - Copyright (C) 2007, 2008, 2009 Chris Kenyon + Copyright (C) 2007, 2008, 2009, 2010, 2011 Chris Kenyon Copyright (C) 2007 Gang Liang Copyright (C) 2008, 2009 Jose Aparicio Copyright (C) 2008 Yee Man Chan - Copyright (C) 2008 Charles Chongseok Hyun + Copyright (C) 2008, 2011 Charles Chongseok Hyun Copyright (C) 2008 Piero Del Boca Copyright (C) 2008 Paul Farrington Copyright (C) 2008 Lorella Fatone @@ -67,7 +67,7 @@ Copyright (C) 2008 Simon Ibbotson Copyright (C) 2008 John Maiden Copyright (C) 2008 Francesca Mariani - Copyright (C) 2008, 2009 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + Copyright (C) 2008, 2009, 2010, 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis Copyright (C) 2008, 2009 Andrea Odetti Copyright (C) 2008 J. Erik Radmall Copyright (C) 2008 Maria Cristina Recchioni @@ -80,11 +80,26 @@ Copyright (C) 2009 Frédéric Degraeve Copyright (C) 2009 Dirk Eddelbuettel Copyright (C) 2009 Bernd Engelmann - Copyright (C) 2009 Liquidnet Holdings, Inc. + Copyright (C) 2009, 2010 Liquidnet Holdings, Inc. Copyright (C) 2009 Bojan Nikolic - Copyright (C) 2009 Dimitri Reiswich + Copyright (C) 2009, 2010 Dimitri Reiswich Copyright (C) 2009 Sun Xiuxin + Copyright (C) 2010 Kakhkhor Abdijalilov + Copyright (C) 2010 Hachemi Benyahia + Copyright (C) 2010 Manas Bhatt + Copyright (C) 2010 DeriveXperts SAS + Copyright (C) 2010 Cavit Hafizoglu + Copyright (C) 2010 Michael Heckl + Copyright (C) 2010 Liquidnet Holdings Inc. + Copyright (C) 2010 Slava Mazur + Copyright (C) 2010 Adrian O' Neill + Copyright (C) 2010 Robert Philipp + Copyright (C) 2010 Alessandro Roveda + Copyright (C) 2010 SunTrust Bank + + Copyright (C) 2011 Fabien Le Floc'h + QuantLib includes code taken from Peter Jäckel's book "Monte Carlo Methods in Finance". diff --git a/Docs/quantlib.css b/Docs/quantlib.css index cd07858894..d6e15f8183 100644 --- a/Docs/quantlib.css +++ b/Docs/quantlib.css @@ -42,6 +42,12 @@ ul#profiles li { vertical-align: top; } +div.textblock { + margin-right: 1em; + padding: 1em; + vertical-align: top; +} + #header { margin-left: 1em; text-align: left; @@ -90,6 +96,7 @@ ul.navbarlist { li.navlink { font-weight: normal; font-size: 80%; + line-height: 170%; text-align: left; list-style: none; margin: 0; @@ -150,6 +157,7 @@ span.googlestyle { body, table, div, p, dl { font-family: trebuchet ms,luxi sans,sans-serif; /* font-size: 12px; */ + line-height: 1.3; } /* @group Heading Levels */ @@ -159,6 +167,12 @@ h1 { font-size: 150%; } +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + h2 { font-size: 120%; } @@ -167,23 +181,58 @@ h2 { font-size: 100%; }*/ +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + /* @end */ caption { font-weight: bold; } -div.qindex, div.navpath, div.navtab{ - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - padding: 2px; +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; } div.qindex, div.navpath { - width: 100%; - line-height: 140%; + width: 100%; + line-height: 140%; } div.navtab { @@ -193,13 +242,13 @@ div.navtab { /* @group Link Styling */ a { - color: #153788; + color: #3D578C; font-weight: normal; text-decoration: none; } .contents a:visited { - color: #1b77c5; + color: #4665A2; } a:hover { @@ -211,10 +260,14 @@ a.qindex { } a.qindexHL { - font-weight: bold; - background-color: #6666cc; - color: #ffffff; - border: 1px double #9295C2; + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; } a.el { @@ -224,10 +277,12 @@ a.el { a.elRef { } -a.code { +a.code, a.code:visited { + color: #4665A2; } -a.codeRef { +a.codeRef, a.codeRef:visited { + color: #4665A2; } /* @end */ @@ -238,67 +293,109 @@ dl.el { .fragment { font-family: monospace, fixed; - font-size: 90%; + font-size: 105%; } pre.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - padding: 4px 6px; - margin: 4px 8px 4px 2px; + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; } div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); } div.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; + margin-left: 16px; + margin-top: 12px; + font-weight: bold; } div.groupText { - margin-left: 16px; - font-style: italic; + margin-left: 16px; + font-style: italic; +} + +div.contents { + margin-top: 10px; + margin-left: 8px; + margin-right: 17em; /*8px;*/ } td.indexkey { - background-color: #e8eef2; - font-weight: bold; + background-color: #EBEFF6; + font-weight: bold; font-size: 75%; - border: 1px solid #CCCCCC; - margin: 2px 0px 2px 0; - padding: 2px 10px; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; } td.indexvalue { - background-color: #e8eef2; + background-color: #EBEFF6; font-size: 75%; - border: 1px solid #CCCCCC; - padding: 2px 10px; - margin: 2px 0px; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; } tr.memlist { - background-color: #f0f0f0; + background-color: #EEF1F7; } p.formulaDsp { - text-align: center; + text-align: center; } img.formulaDsp { - + } img.formulaInl { - vertical-align: middle; + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; } /* @group Code Colorization */ @@ -373,26 +470,35 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid #84b0c7; + border: 1px solid #A3B4D7; } th.dirtab { - background: #e8eef2; + background: #EBEFF6; font-weight: bold; } hr { height: 0; border: none; - border-top: 1px solid #666; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; } /* @group Member Descriptions */ +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #FAFAFA; + background-color: #F9FAFC; border: none; margin: 4px; padding: 1px 0 0 8px; @@ -404,11 +510,20 @@ hr { } .memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #ccc; + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; } .memTemplParams { - color: #606060; + color: #4665A2; + white-space: nowrap; } /* @end */ @@ -419,55 +534,92 @@ hr { .memtemplate { font-size: 80%; - color: #606060; + color: #4665A2; font-weight: normal; - margin-left: 3px; + margin-left: 9px; } .memnav { - background-color: #e8eef2; - border: 1px solid #84b0c7; + background-color: #EBEFF6; + border: 1px solid #A3B4D7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } -.memitem { - padding: 0; -} - -.memname { - white-space: nowrap; - font-weight: bold; -} - -.memproto, .memdoc { - border: 1px solid #84b0c7; +.mempage { + width: 100%; } -.memproto { +.memitem { padding: 0; - background-color: #d5e1e8; - font-weight: bold; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; - -moz-border-radius-topleft: 8px; - -moz-border-radius-topright: 8px; -} - -.memdoc { - padding: 2px 5px; - background-color: #eef3f5; - border-top-width: 0; - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; + margin-bottom: 10px; + margin-right: 5px; } -.memdoc p, .memdoc dl, .memdoc ul { - margin: 6px 0; +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; } .paramkey { @@ -486,6 +638,28 @@ hr { font-style: normal; } +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + /* @end */ /* @group Directory (tree) */ @@ -494,7 +668,7 @@ hr { .ftvtree { font-family: sans-serif; - margin: 0.5em; + margin: 0px; } /* these are for tree view when used as main index */ @@ -502,6 +676,7 @@ hr { .directory { font-size: 9pt; font-weight: bold; + margin: 5px; } .directory h3 { @@ -511,22 +686,22 @@ hr { } /* -The following two styles can be used to replace the root node title -with an image of your choice. Simply uncomment the next two styles, -specify the name of your image and be sure to set 'height' to the -proper pixel height of your image. -*/ + The following two styles can be used to replace the root node title + with an image of your choice. Simply uncomment the next two styles, + specify the name of your image and be sure to set 'height' to the + proper pixel height of your image. + */ /* -.directory h3.swap { - height: 61px; - background-repeat: no-repeat; - background-image: url("yourimage.gif"); -} -.directory h3.swap span { - display: none; -} -*/ + .directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); + } + .directory h3.swap span { + display: none; + } + */ .directory > h3 { margin-top: 0; @@ -579,7 +754,345 @@ proper pixel height of your image. /* @end */ +div.dynheader { + margin-top: 8px; +} + address { font-style: normal; - color: #333; + color: #2A3D61; } + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + pre.fragment + { + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } +} + diff --git a/Docs/quantlib.doxy b/Docs/quantlib.doxy index 1abb221494..8c77970519 100644 --- a/Docs/quantlib.doxy +++ b/Docs/quantlib.doxy @@ -1,4 +1,4 @@ -# Doxyfile 1.5.7 +# Doxyfile 1.7.6.1 #--------------------------------------------------------------------------- # Project related configuration options @@ -6,12 +6,14 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = QuantLib PROJECT_NUMBER = ql_version -OUTPUT_DIRECTORY = +PROJECT_BRIEF = +PROJECT_LOGO = +OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = +ABBREVIATE_BRIEF = ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = YES @@ -28,18 +30,23 @@ ALIASES = "warning=\xrefitem caveats \"Warning\" \"Caveats\" " \ "test=\xrefitem test \"Tests\" \"Test Suite\" " \ "todo=\xrefitem todo \"Possible enhancements\" \"Possible Enhancements\" " \ "bug=\xrefitem bug \"Bug\" \"Known Bugs\" " +TCL_SUBST = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = BUILTIN_STL_SUPPORT = YES CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO SYMBOL_CACHE_SIZE = 0 +LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -57,23 +64,27 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = YES SHOW_INCLUDE_FILES = YES +FORCE_LOCAL_INCLUDES = NO INLINE_INFO = NO SORT_MEMBER_DOCS = NO SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = YES SORT_GROUP_NAMES = NO -SORT_BY_SCOPE_NAME = NO +SORT_BY_SCOPE_NAME = YES +STRICT_PROTO_MATCHING = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = +ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = NO SHOW_DIRECTORIES = NO SHOW_FILES = YES SHOW_NAMESPACES = NO -FILE_VERSION_FILTER = -LAYOUT_FILE = +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- @@ -83,7 +94,7 @@ WARN_IF_UNDOCUMENTED = NO WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text " -WARN_LOGFILE = +WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- @@ -102,15 +113,16 @@ EXCLUDE = ../ql/config.hpp \ ../ql/math/interpolations/abcdinterpolation.hpp EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = */all.hpp -EXCLUDE_SYMBOLS = +EXCLUDE_SYMBOLS = EXAMPLE_PATH = Examples \ ../Examples EXAMPLE_PATTERNS = *.cpp EXAMPLE_RECURSIVE = YES -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- @@ -125,8 +137,9 @@ VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 3 -IGNORE_PREFIX = +IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- @@ -136,28 +149,48 @@ HTML_FILE_EXTENSION = .html HTML_HEADER = quantlibheader.html HTML_FOOTER = quantlibfooter.html HTML_STYLESHEET = quantlib.css +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO HTML_ALIGN_MEMBERS = YES HTML_DYNAMIC_SECTIONS = NO GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher GENERATE_HTMLHELP = NO CHM_FILE = ../QuantLib-docs-ql_version.chm HHC_LOCATION = hhc.exe GENERATE_CHI = NO -CHM_INDEX_ENCODING = +CHM_INDEX_ENCODING = BINARY_TOC = NO TOC_EXPAND = NO GENERATE_QHP = NO -QCH_FILE = +QCH_FILE = QHP_NAMESPACE = org.doxygen.Project QHP_VIRTUAL_FOLDER = doc -QHG_LOCATION = +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO +ENUM_VALUES_PER_LINE = 4 +USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 12 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_RELPATH = http://www.mathjax.org/mathjax +MATHJAX_EXTENSIONS = +SEARCHENGINE = NO +SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- @@ -167,12 +200,15 @@ LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = +EXTRA_PACKAGES = +LATEX_HEADER = +LATEX_FOOTER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -180,8 +216,8 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- @@ -194,8 +230,8 @@ MAN_LINKS = YES #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = +XML_SCHEMA = +XML_DTD = XML_PROGRAMLISTING = NO #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output @@ -207,36 +243,38 @@ GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = +PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- -# Configuration options related to the preprocessor +# Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = PREDEFINED = __DOXYGEN__ -EXPAND_AS_DEFINED = +EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references +# Configuration::additions related to external references #--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = +TAGFILES = +GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES -MSCGEN_PATH = +MSCGEN_PATH = HIDE_UNDOC_RELATIONS = NO HAVE_DOT = YES +DOT_NUM_THREADS = 0 DOT_FONTNAME = FreeSans -DOT_FONTPATH = +DOT_FONTSIZE = 10 +DOT_FONTPATH = CLASS_GRAPH = YES COLLABORATION_GRAPH = NO GROUP_GRAPHS = NO @@ -249,15 +287,13 @@ CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = NO DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = DOT_GRAPH_MAX_NODES = 20 MAX_DOT_GRAPH_DEPTH = 2 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/Examples/BermudanSwaption/BermudanSwaption.cpp b/Examples/BermudanSwaption/BermudanSwaption.cpp index c47d951c44..6af8ea5096 100644 --- a/Examples/BermudanSwaption/BermudanSwaption.cpp +++ b/Examples/BermudanSwaption/BermudanSwaption.cpp @@ -274,20 +274,29 @@ int main(int, char* []) { // G2 price the European swaption here, it should switch to bermudan bermudanSwaption.setPricingEngine(boost::shared_ptr( - new TreeSwaptionEngine(modelG2, 50))); - std::cout << "G2: " << bermudanSwaption.NPV() << std::endl; + new TreeSwaptionEngine(modelG2, 50))); + std::cout << "G2 (tree): " << bermudanSwaption.NPV() << std::endl; + bermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdG2SwaptionEngine(modelG2))); + std::cout << "G2 (fdm) : " << bermudanSwaption.NPV() << std::endl; bermudanSwaption.setPricingEngine(boost::shared_ptr( - new TreeSwaptionEngine(modelHW, 50))); - std::cout << "HW: " << bermudanSwaption.NPV() << std::endl; + new TreeSwaptionEngine(modelHW, 50))); + std::cout << "HW (tree): " << bermudanSwaption.NPV() << std::endl; + bermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdHullWhiteSwaptionEngine(modelHW))); + std::cout << "HW (fdm) : " << bermudanSwaption.NPV() << std::endl; bermudanSwaption.setPricingEngine(boost::shared_ptr( - new TreeSwaptionEngine(modelHW2, 50))); - std::cout << "HW (num): " << bermudanSwaption.NPV() << std::endl; + new TreeSwaptionEngine(modelHW2, 50))); + std::cout << "HW (num, tree): " << bermudanSwaption.NPV() << std::endl; + bermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdHullWhiteSwaptionEngine(modelHW2))); + std::cout << "HW (num, fdm) : " << bermudanSwaption.NPV() << std::endl; bermudanSwaption.setPricingEngine(boost::shared_ptr( - new TreeSwaptionEngine(modelBK, 50))); - std::cout << "BK: " << bermudanSwaption.NPV() << std::endl; + new TreeSwaptionEngine(modelBK, 50))); + std::cout << "BK: " << bermudanSwaption.NPV() << std::endl; // OTM Bermudan swaption pricing @@ -300,20 +309,36 @@ int main(int, char* []) { // Do the pricing for each model otmBermudanSwaption.setPricingEngine(boost::shared_ptr( - new TreeSwaptionEngine(modelG2, 50))); - std::cout << "G2: " << otmBermudanSwaption.NPV() << std::endl; + new TreeSwaptionEngine(modelG2, 300))); + std::cout << "G2 (tree): " << otmBermudanSwaption.NPV() + << std::endl; + otmBermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdG2SwaptionEngine(modelG2))); + std::cout << "G2 (fdm) : " << otmBermudanSwaption.NPV() + << std::endl; otmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelHW, 50))); - std::cout << "HW: " << otmBermudanSwaption.NPV() << std::endl; + std::cout << "HW (tree): " << otmBermudanSwaption.NPV() + << std::endl; + otmBermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdHullWhiteSwaptionEngine(modelHW))); + std::cout << "HW (fdm) : " << otmBermudanSwaption.NPV() + << std::endl; otmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelHW2, 50))); - std::cout << "HW (num): " << otmBermudanSwaption.NPV() << std::endl; + std::cout << "HW (num, tree): " << otmBermudanSwaption.NPV() + << std::endl; + otmBermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdHullWhiteSwaptionEngine(modelHW2))); + std::cout << "HW (num, fdm): " << otmBermudanSwaption.NPV() + << std::endl; otmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelBK, 50))); - std::cout << "BK: " << otmBermudanSwaption.NPV() << std::endl; + std::cout << "BK: " << otmBermudanSwaption.NPV() + << std::endl; // ITM Bermudan swaption pricing @@ -327,19 +352,35 @@ int main(int, char* []) { // Do the pricing for each model itmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelG2, 50))); - std::cout << "G2: " << itmBermudanSwaption.NPV() << std::endl; + std::cout << "G2 (tree): " << itmBermudanSwaption.NPV() + << std::endl; + itmBermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdG2SwaptionEngine(modelG2))); + std::cout << "G2 (fdm) : " << itmBermudanSwaption.NPV() + << std::endl; itmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelHW, 50))); - std::cout << "HW: " << itmBermudanSwaption.NPV() << std::endl; + std::cout << "HW (tree): " << itmBermudanSwaption.NPV() + << std::endl; + itmBermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdHullWhiteSwaptionEngine(modelHW))); + std::cout << "HW (fdm) : " << itmBermudanSwaption.NPV() + << std::endl; itmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelHW2, 50))); - std::cout << "HW (num): " << itmBermudanSwaption.NPV() << std::endl; + std::cout << "HW (num, tree): " << itmBermudanSwaption.NPV() + << std::endl; + itmBermudanSwaption.setPricingEngine(boost::shared_ptr( + new FdHullWhiteSwaptionEngine(modelHW2))); + std::cout << "HW (num, fdm) : " << itmBermudanSwaption.NPV() + << std::endl; itmBermudanSwaption.setPricingEngine(boost::shared_ptr( new TreeSwaptionEngine(modelBK, 50))); - std::cout << "BK: " << itmBermudanSwaption.NPV() << std::endl; + std::cout << "BK: " << itmBermudanSwaption.NPV() + << std::endl; Real seconds = timer.elapsed(); Integer hours = int(seconds/3600); diff --git a/Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj b/Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj new file mode 100644 index 0000000000..0c2bb877ec --- /dev/null +++ b/Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj @@ -0,0 +1,290 @@ + + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + BermudanSwaption + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + BermudanSwaption-vc100-mt-sgd + BermudanSwaption-vc100-mt-gd + BermudanSwaption-vc100-mt-s + BermudanSwaption-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\BermudanSwaption.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj.filters b/Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj.filters new file mode 100644 index 0000000000..5b7af0d4a1 --- /dev/null +++ b/Examples/BermudanSwaption/BermudanSwaption_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {d7ab011b-de67-4bac-b299-e86fbb6dc477} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {4c3fcfea-c3b4-4761-88a6-edfc5270d10b} + h;hpp;hxx;hm;inl + + + {bf2571d4-d70c-4f62-b682-6e3a9280c287} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj b/Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj index d057f32f11..0a8df3e609 100644 --- a/Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj +++ b/Examples/BermudanSwaption/BermudanSwaption_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + Bonds + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + Bonds-vc100-mt-sgd + Bonds-vc100-mt-gd + Bonds-vc100-mt-s + Bonds-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\Bonds.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Bonds.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Bonds.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Bonds.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\Bonds.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/Bonds/Bonds_vc10.vcxproj.filters b/Examples/Bonds/Bonds_vc10.vcxproj.filters new file mode 100644 index 0000000000..ac42798ff6 --- /dev/null +++ b/Examples/Bonds/Bonds_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {9a63eacd-2708-4d66-ac50-0cf7fe0e6683} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {f4922be1-cece-457f-b554-e1fd34535be7} + h;hpp;hxx;hm;inl + + + {284b0e95-17b6-4a1a-b04c-e0a5b5075084} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/Bonds/Bonds_vc9.vcproj b/Examples/Bonds/Bonds_vc9.vcproj index 7c5147a685..df3f9ab65f 100644 --- a/Examples/Bonds/Bonds_vc9.vcproj +++ b/Examples/Bonds/Bonds_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + CDS + {65F5530B-D97E-4BDB-949F-9C31C56104B0} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + CDS-vc100-mt-sgd + CDS-vc100-mt-gd + CDS-vc100-mt-s + CDS-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\CDS.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CDS.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\CDS.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\CDS.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CDS.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\CDS.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\CDS.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CDS.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\CDS.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\CDS.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CDS.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\CDS.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/CDS/CDS_vc10.vcxproj.filters b/Examples/CDS/CDS_vc10.vcxproj.filters new file mode 100644 index 0000000000..40cad38d9c --- /dev/null +++ b/Examples/CDS/CDS_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {a0ea4a3b-4fce-4af2-b929-674d09895aa0} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {6cd8a0d6-df74-42d0-b288-336f4631e5da} + h;hpp;hxx;hm;inl + + + {bf4a74df-7126-4bca-b287-fbb881d4ca92} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/CDS/CDS_vc9.vcproj b/Examples/CDS/CDS_vc9.vcproj index 1f98541a5d..c1c1693fb2 100644 --- a/Examples/CDS/CDS_vc9.vcproj +++ b/Examples/CDS/CDS_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> #include -#include +#include #include #include #include diff --git a/Examples/CallableBonds/CallableBonds_vc10.vcxproj b/Examples/CallableBonds/CallableBonds_vc10.vcxproj new file mode 100644 index 0000000000..100d1d6897 --- /dev/null +++ b/Examples/CallableBonds/CallableBonds_vc10.vcxproj @@ -0,0 +1,290 @@ + + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + CallableBonds + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + CallableBonds-vc100-mt-sgd + CallableBonds-vc100-mt-gd + CallableBonds-vc100-mt-s + CallableBonds-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\CallableBonds.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/CallableBonds/CallableBonds_vc10.vcxproj.filters b/Examples/CallableBonds/CallableBonds_vc10.vcxproj.filters new file mode 100644 index 0000000000..a0b20df341 --- /dev/null +++ b/Examples/CallableBonds/CallableBonds_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {a4055f3c-98ca-4213-a87f-13ca1cc25196} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {18fa8b4b-7039-4470-ab79-30e74ea0e1f1} + h;hpp;hxx;hm;inl + + + {f116dfe9-ac9e-430e-b9f0-0f7eb06d03b8} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/CallableBonds/CallableBonds_vc9.vcproj b/Examples/CallableBonds/CallableBonds_vc9.vcproj index a9258925b0..876da27d79 100644 --- a/Examples/CallableBonds/CallableBonds_vc9.vcproj +++ b/Examples/CallableBonds/CallableBonds_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + ConvertibleBonds + {7C32702E-ED12-49F1-B476-656DD1EBCE66} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + ConvertibleBonds-vc100-mt-sgd + ConvertibleBonds-vc100-mt-gd + ConvertibleBonds-vc100-mt-s + ConvertibleBonds-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\ConvertibleBonds.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/ConvertibleBonds/ConvertibleBonds_vc10.vcxproj.filters b/Examples/ConvertibleBonds/ConvertibleBonds_vc10.vcxproj.filters new file mode 100644 index 0000000000..3179756bb7 --- /dev/null +++ b/Examples/ConvertibleBonds/ConvertibleBonds_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {941c56e3-8bed-4a65-968c-dee1a3ba5373} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {4f8fbdcd-0e44-4bdd-88c1-4d84e2175098} + h;hpp;hxx;hm;inl + + + {f9039bb8-2565-4b27-9eba-002564b0d650} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj b/Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj index 6cb8e83f24..f52f7136d0 100644 --- a/Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj +++ b/Examples/ConvertibleBonds/ConvertibleBonds_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="1" + RuntimeLibrary="3" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + DiscreteHedging + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + DiscreteHedging-vc100-mt-sgd + DiscreteHedging-vc100-mt-gd + DiscreteHedging-vc100-mt-s + DiscreteHedging-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\DiscreteHedging.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/DiscreteHedging/DiscreteHedging_vc10.vcxproj.filters b/Examples/DiscreteHedging/DiscreteHedging_vc10.vcxproj.filters new file mode 100644 index 0000000000..2fd3d9dfe1 --- /dev/null +++ b/Examples/DiscreteHedging/DiscreteHedging_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {069167bf-1b28-4a21-aae0-4638d019c018} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {6ff9991e-cc19-4c1f-9d90-68aa9c933205} + h;hpp;hxx;hm;inl + + + {b40c1cd5-edd0-4412-b9dd-21b6924d45b6} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj b/Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj index 27506c72c1..554b875b75 100644 --- a/Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj +++ b/Examples/DiscreteHedging/DiscreteHedging_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="2" + RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="1" + RuntimeLibrary="3" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> hestonProcess( + new HestonProcess(flatTermStructure, flatDividendTS, + underlyingH, volatility*volatility, + 1.0, volatility*volatility, 0.001, 0.0)); + boost::shared_ptr hestonModel( + new HestonModel(hestonProcess)); + europeanOption.setPricingEngine(boost::shared_ptr( + new AnalyticHestonEngine(hestonModel))); + std::cout << std::setw(widths[0]) << std::left << method + << std::fixed + << std::setw(widths[1]) << std::left << europeanOption.NPV() + << std::setw(widths[2]) << std::left << "N/A" + << std::setw(widths[3]) << std::left << "N/A" + << std::endl; + + // semi-analytic Bates for European + method = "Bates semi-analytic"; + boost::shared_ptr batesProcess( + new BatesProcess(flatTermStructure, flatDividendTS, + underlyingH, volatility*volatility, + 1.0, volatility*volatility, 0.001, 0.0, + 1e-14, 1e-14, 1e-14)); + boost::shared_ptr batesModel(new BatesModel(batesProcess)); + europeanOption.setPricingEngine(boost::shared_ptr( + new BatesEngine(batesModel))); + std::cout << std::setw(widths[0]) << std::left << method + << std::fixed + << std::setw(widths[1]) << std::left << europeanOption.NPV() + << std::setw(widths[2]) << std::left << "N/A" + << std::setw(widths[3]) << std::left << "N/A" + << std::endl; + // Barone-Adesi and Whaley approximation for American method = "Barone-Adesi/Whaley"; americanOption.setPricingEngine(boost::shared_ptr( diff --git a/Examples/EquityOption/EquityOption_vc10.vcxproj b/Examples/EquityOption/EquityOption_vc10.vcxproj new file mode 100644 index 0000000000..5cdedbacd5 --- /dev/null +++ b/Examples/EquityOption/EquityOption_vc10.vcxproj @@ -0,0 +1,290 @@ + + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + EquityOption + {EF6D982C-CF99-4442-B297-776DBECFAFC9} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + EquityOption-vc100-mt-sgd + EquityOption-vc100-mt-gd + EquityOption-vc100-mt-s + EquityOption-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\EquityOption.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/EquityOption/EquityOption_vc10.vcxproj.filters b/Examples/EquityOption/EquityOption_vc10.vcxproj.filters new file mode 100644 index 0000000000..4cb6c92e38 --- /dev/null +++ b/Examples/EquityOption/EquityOption_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {e1cf0425-cf98-4329-a9cc-02cc9512d9e4} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {3fba9b70-6bea-43e7-b0e8-5a037bc32d53} + h;hpp;hxx;hm;inl + + + {6a339176-8fa2-4b45-ac4a-0af262ec79fe} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/EquityOption/EquityOption_vc9.vcproj b/Examples/EquityOption/EquityOption_vc9.vcproj index 6437b23972..3a86ea6407 100644 --- a/Examples/EquityOption/EquityOption_vc9.vcproj +++ b/Examples/EquityOption/EquityOption_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="1" + RuntimeLibrary="3" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + FRA + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + FRA-vc100-mt-sgd + FRA-vc100-mt-gd + FRA-vc100-mt-s + FRA-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\FRA.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FRA.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\FRA.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\FRA.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FRA.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\FRA.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\FRA.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FRA.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\FRA.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\FRA.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FRA.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\FRA.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/FRA/FRA_vc10.vcxproj.filters b/Examples/FRA/FRA_vc10.vcxproj.filters new file mode 100644 index 0000000000..d840cc9983 --- /dev/null +++ b/Examples/FRA/FRA_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {e5b36e0b-0c10-4616-94b1-1ef3ef7916c9} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {174c70f8-3df4-4348-93ef-4ea5c27a09f1} + h;hpp;hxx;hm;inl + + + {76c82d40-2a6d-4f9b-9da0-63c04d968628} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/FRA/FRA_vc9.vcproj b/Examples/FRA/FRA_vc9.vcproj index 1d55a112ea..010e6f7b5c 100644 --- a/Examples/FRA/FRA_vc9.vcproj +++ b/Examples/FRA/FRA_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> > instrumentsA; + std::vector > instrumentsA; std::vector > instrumentsB; for (Size j=0; j helperA( + boost::shared_ptr helperA( new FixedRateBondHelper(quoteHandle[j], bondSettlementDays, 100.0, diff --git a/Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj b/Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj new file mode 100644 index 0000000000..978f38a21e --- /dev/null +++ b/Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj @@ -0,0 +1,290 @@ + + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + FittedBondCurve + {4E262A25-90B4-449A-BFC0-95311CADF91D} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + FittedBondCurve-vc100-mt-sgd + FittedBondCurve-vc100-mt-gd + FittedBondCurve-vc100-mt-s + FittedBondCurve-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\FittedBondCurve.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj.filters b/Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj.filters new file mode 100644 index 0000000000..d607a2e8c6 --- /dev/null +++ b/Examples/FittedBondCurve/FittedBondCurve_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {6eea4212-7507-4719-825e-8ef39cd3bcdd} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {8d6e5416-15af-44c3-85ca-4b17f293d6c9} + h;hpp;hxx;hm;inl + + + {e4c9f26d-1de7-4c2b-9bae-decf50435a71} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj b/Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj index a29b2cbb8a..6899afbc54 100644 --- a/Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj +++ b/Examples/FittedBondCurve/FittedBondCurve_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="1" + RuntimeLibrary="3" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> (5,numberRates); @@ -550,7 +549,6 @@ int InverseFloater(Real rateLevel) Real initialNumeraireValue = 0.95; Real volLevel = 0.11; - Real longTermCorr = 0.5; Real beta = 0.2; Real gamma = 1.0; Size numberOfFactors = std::min(5,numberRates); diff --git a/Examples/MarketModels/MarketModels_vc10.vcxproj b/Examples/MarketModels/MarketModels_vc10.vcxproj new file mode 100644 index 0000000000..50f8bff6c7 --- /dev/null +++ b/Examples/MarketModels/MarketModels_vc10.vcxproj @@ -0,0 +1,290 @@ + + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + MarketModels + {47CE2A41-091A-42A3-B40D-F6F0DD689349} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + MarketModels-vc100-mt-sgd + MarketModels-vc100-mt-gd + MarketModels-vc100-mt-s + MarketModels-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\MarketModels.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/MarketModels/MarketModels_vc10.vcxproj.filters b/Examples/MarketModels/MarketModels_vc10.vcxproj.filters new file mode 100644 index 0000000000..27b031d5ad --- /dev/null +++ b/Examples/MarketModels/MarketModels_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {ef3c0f00-1079-4e8a-8ed1-2d26a1604c21} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {038cd05e-3ab8-40c2-bff7-945536b6614f} + h;hpp;hxx;hm;inl + + + {09a0e693-0b58-4999-8813-be814b00e365} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/MarketModels/MarketModels_vc9.vcproj b/Examples/MarketModels/MarketModels_vc9.vcproj index 0944232128..4abd351012 100644 --- a/Examples/MarketModels/MarketModels_vc9.vcproj +++ b/Examples/MarketModels/MarketModels_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + Replication + {7FF22935-8C7D-4903-908C-B77A9CDBA840} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + Replication-vc100-mt-sgd + Replication-vc100-mt-gd + Replication-vc100-mt-s + Replication-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\Replication.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Replication.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\Replication.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Replication.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Replication.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\Replication.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Replication.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Replication.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\Replication.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Replication.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Replication.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\Replication.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/Replication/Replication_vc10.vcxproj.filters b/Examples/Replication/Replication_vc10.vcxproj.filters new file mode 100644 index 0000000000..81d2dd2dfb --- /dev/null +++ b/Examples/Replication/Replication_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {e567add1-2f97-4e73-a9aa-99d073bdb2ba} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {624eac84-2876-47bd-ac5b-dff8d49dfcd4} + h;hpp;hxx;hm;inl + + + {c9709508-a0f0-49d1-ae0c-e048a8001686} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/Replication/Replication_vc9.vcproj b/Examples/Replication/Replication_vc9.vcproj index 7c4c63e170..4e24f76247 100644 --- a/Examples/Replication/Replication_vc9.vcproj +++ b/Examples/Replication/Replication_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="1" + RuntimeLibrary="3" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + Repo + {1B660588-A923-4D84-9092-16DA67869773} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + Repo-vc100-mt-sgd + Repo-vc100-mt-gd + Repo-vc100-mt-s + Repo-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\Repo.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Repo.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\Repo.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Repo.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Repo.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\Repo.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Repo.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Repo.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\Repo.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Repo.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + quantlib.hpp + .\build\vc100\$(Platform)\$(Configuration)\Repo.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\Repo.pdb + Console + false + + + MachineX86 + + + + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/Repo/Repo_vc10.vcxproj.filters b/Examples/Repo/Repo_vc10.vcxproj.filters new file mode 100644 index 0000000000..4acaf8e19f --- /dev/null +++ b/Examples/Repo/Repo_vc10.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {bf42d8f4-4ad9-4de5-9ed5-43b500a30207} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {4a8fbbaa-955c-4433-8435-0eec9d9c8c79} + h;hpp;hxx;hm;inl + + + {f7eb1321-6516-4ea2-918d-44ed8c0b08d9} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/Examples/Repo/Repo_vc9.vcproj b/Examples/Repo/Repo_vc9.vcproj index d8c5b5a637..94893b9e35 100644 --- a/Examples/Repo/Repo_vc9.vcproj +++ b/Examples/Repo/Repo_vc9.vcproj @@ -67,6 +67,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> @@ -148,9 +151,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="0" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -180,7 +183,7 @@ /> @@ -637,9 +641,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -669,7 +673,7 @@ /> + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + Swap + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0} + + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + .\bin\ + .\build\vc100\$(Platform)\$(Configuration)\ + false + false + SwapValuation-vc100-mt-sgd + SwapValuation-vc100-mt-gd + SwapValuation-vc100-mt-s + SwapValuation-vc100-mt + + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\SwapValuation.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.tlb + + + + + Disabled + false + ..\..;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + .\build\vc100\$(Platform)\$(Configuration)\SwapValuation.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\SwapValuation.pdb + Console + false + + + MachineX86 + + + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.tlb + + + + + MaxSpeed + AnySuitable + false + Speed + ..\..;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\Swap.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + true + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + true + ..\..\lib;%(AdditionalLibraryDirectories) + .\build\vc100\$(Platform)\$(Configuration)\SwapValuation.pdb + Console + false + + + MachineX86 + + + + + + + + {ad0a27da-91da-46a2-acbd-296c419ed3aa} + false + + + + + + \ No newline at end of file diff --git a/Examples/Swap/Swap_vc10.vcxproj.filters b/Examples/Swap/Swap_vc10.vcxproj.filters new file mode 100644 index 0000000000..3262023f74 --- /dev/null +++ b/Examples/Swap/Swap_vc10.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {deb30ec3-c3f4-4d74-8917-d5f238b546a2} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {c1fccdc0-8ebc-47e7-ae54-5dabf2f29761} + h;hpp;hxx;hm;inl + + + {e2ac9f63-b988-4d74-9e49-b924f3ebea79} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + \ No newline at end of file diff --git a/Examples/Swap/Swap_vc9.vcproj b/Examples/Swap/Swap_vc9.vcproj index e0ca89e42e..0dd17ddde8 100644 --- a/Examples/Swap/Swap_vc9.vcproj +++ b/Examples/Swap/Swap_vc9.vcproj @@ -63,7 +63,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" - DebugInformationFormat="4" + DebugInformationFormat="3" CompileAs="0" /> @@ -144,9 +145,9 @@ Optimization="0" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="_DEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" BasicRuntimeChecks="3" - RuntimeLibrary="3" + RuntimeLibrary="1" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" RuntimeTypeInfo="true" @@ -159,7 +160,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" - DebugInformationFormat="4" + DebugInformationFormat="3" CompileAs="0" /> @@ -631,9 +633,9 @@ EnableIntrinsicFunctions="false" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\.." - PreprocessorDefinitions="NDEBUG;x64;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" + PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;" StringPooling="true" - RuntimeLibrary="2" + RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" ForceConformanceInForLoopScope="true" @@ -647,6 +649,7 @@ BrowseInformationFile=".\build\vc90\$(PlatformName)\$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> Vendor: QuantLib.org Source0: http://prdownloads.sourceforge.net/quantlib/QuantLib-%{version}.tar.gz URL: http://quantlib.org/ -Buildroot: %{_tmppath}/%{name}-%{version}-root +BuildRoot:%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: rpmlib(FileDigests) +BuildRequires: rpmlib(CompressedFileNames) %description QuantLib is an open source C++ library for financial quantitative analysts @@ -22,19 +30,21 @@ and developers. %package devel Summary: The header files and the static library. Group: Development/Libraries -Requires: QuantLib = %{version} +Requires: QuantLib = %{version}, boost >= 1.34.1 +BuildRequires: boost-devel >= 1.34.1 %description devel QuantLib is an open source C++ library for financial quantitative analysts and developers. Install QuantLib-devel if you are going to develop programs which will -use the standard C libraries. +use the QuantLib C++ libraries. %package test-suite Summary: The test-suite to check the setup of quantlib installation. Group: Development/Tools -Requires: QuantLib = %{version} +Requires: QuantLib = %{version}, boost-test >= 1.34.1 +BuildRequires: boost-test >= 1.34.1 %description test-suite QuantLib is an open source C++ library for financial quantitative analysts @@ -66,29 +76,29 @@ You'll want to install this package if you need a reference to QuantLib. CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \ CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \ FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \ -./configure --prefix=%{_prefix} -make +%configure --prefix=%{_prefix} +make %{?_smp_mflags} # make documentations cd Docs make docs-all %install -rm -rf %{buildroot} -make prefix=%{buildroot}%{_prefix} install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT + # install the documentation mkdir -p %{buildroot}%{docdir} +mkdir -p %{buildroot}%{_mandir} cp -p Authors.txt LICENSE.TXT ChangeLog.txt Readme.txt %{buildroot}%{docdir} -cp -p Contributors.txt History.txt INSTALL.txt TODO.txt %{buildroot}%{docdir} +cp -p Contributors.txt %{buildroot}%{docdir} cp -p News.txt %{buildroot}%{docdir} cp -pr Examples %{buildroot}%{docdir} cp -pr Docs/html %{buildroot}%{docdir} rm -f %{buildroot}%{docdir}/html/*.dot -cp -p Docs/latex/refman.pdf %{buildroot}%{docdir}/QuantLib-%{version}-docs-refman.pdf -cp -p Docs/latex/refman.ps %{buildroot}%{docdir}/QuantLib-%{version}-docs-refman.ps cp -pr Docs/man/man3 %{buildroot}%{_mandir}/ %clean -rm -rf %{buildroot} +rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig @@ -102,42 +112,31 @@ rm -rf %{buildroot} %{docdir}/Readme.txt %{docdir}/News.txt %{docdir}/Contributors.txt -%{docdir}/History.txt -%{docdir}/INSTALL.txt -%{docdir}/TODO.txt -%{_libdir}/libQuantLib.la -%{_libdir}/libQuantLib.so -%{_libdir}/libQuantLib-%{version}.so -%{_libdir}/libQuantLibFunctions.la -%{_libdir}/libQuantLibFunctions.so -%{_libdir}/libQuantLibFunctions-%{version}.so +%{_libdir}/* %files devel %defattr(-,root,root) %{docdir}/Examples %{_includedir}/ql/ -%{_libdir}/libQuantLib.a -%{_libdir}/libQuantLib.so -%{_libdir}/libQuantLibFunctions.a -%{_libdir}/libQuantLibFunctions.so +%{_libdir}/* %{_datadir}/aclocal/* -%{_datadir}/emacs/site-lisp/* %{_bindir}/quantlib-config -%{_mandir}/man1/quantlib-config.1 +%{_mandir}/man1/quantlib-config.1.gz %files test-suite %defattr(-,root,root) -%{_mandir}/man1/quantlib-test-suite.1 +%{_mandir}/man1/quantlib-test-suite.1.gz %{_bindir}/quantlib-test-suite %files docs %defattr(-,root,root) %{_mandir}/man3/* %{docdir}/html -%{docdir}/QuantLib-%{version}-docs-refman.pdf -%{docdir}/QuantLib-%{version}-docs-refman.ps %changelog +* Wed Sep 14 2011 Matt Fair +- Updated spec file to work with current QuantLib versions + * Tue Nov 18 2003 Liguo Song - Initial release of 0.3.4 - Rename QuantLib-doc to QuantLib-docs for consistency with the docs tar package diff --git a/QuantLib_vc10.sln b/QuantLib_vc10.sln new file mode 100644 index 0000000000..12e79bf2ce --- /dev/null +++ b/QuantLib_vc10.sln @@ -0,0 +1,165 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QuantLib", "QuantLib_vc10.vcxproj", "{AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsuite", "test-suite\testsuite_vc10.vcxproj", "{A613045C-34AF-4706-AA3C-730C92524F74}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Swap", "Examples\Swap\Swap_vc10.vcxproj", "{4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EquityOption", "Examples\EquityOption\EquityOption_vc10.vcxproj", "{EF6D982C-CF99-4442-B297-776DBECFAFC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConvertibleBonds", "Examples\ConvertibleBonds\ConvertibleBonds_vc10.vcxproj", "{7C32702E-ED12-49F1-B476-656DD1EBCE66}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FRA", "Examples\FRA\FRA_vc10.vcxproj", "{B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Repo", "Examples\Repo\Repo_vc10.vcxproj", "{1B660588-A923-4D84-9092-16DA67869773}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Replication", "Examples\Replication\Replication_vc10.vcxproj", "{7FF22935-8C7D-4903-908C-B77A9CDBA840}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BermudanSwaption", "Examples\BermudanSwaption\BermudanSwaption_vc10.vcxproj", "{940A0AFC-9F9F-4797-A0FF-99543F67C1D9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DiscreteHedging", "Examples\DiscreteHedging\DiscreteHedging_vc10.vcxproj", "{C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FittedBondCurve", "Examples\FittedBondCurve\FittedBondCurve_vc10.vcxproj", "{4E262A25-90B4-449A-BFC0-95311CADF91D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CallableBonds", "Examples\CallableBonds\CallableBonds_vc10.vcxproj", "{0214688B-CE8A-4446-9BDD-1AE7F486EB8B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CDS", "Examples\CDS\CDS_vc10.vcxproj", "{65F5530B-D97E-4BDB-949F-9C31C56104B0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Bonds", "Examples\Bonds\Bonds_vc10.vcxproj", "{C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MarketModels", "Examples\MarketModels\MarketModels_vc10.vcxproj", "{47CE2A41-091A-42A3-B40D-F6F0DD689349}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug (static runtime)|Win32 = Debug (static runtime)|Win32 + Debug|Win32 = Debug|Win32 + Release (static runtime)|Win32 = Release (static runtime)|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Debug|Win32.Build.0 = Debug|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Release|Win32.ActiveCfg = Release|Win32 + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA}.Release|Win32.Build.0 = Release|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Debug|Win32.ActiveCfg = Debug|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Debug|Win32.Build.0 = Debug|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Release|Win32.ActiveCfg = Release|Win32 + {A613045C-34AF-4706-AA3C-730C92524F74}.Release|Win32.Build.0 = Release|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Debug|Win32.ActiveCfg = Debug|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Debug|Win32.Build.0 = Debug|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Release|Win32.ActiveCfg = Release|Win32 + {4EAC6A0E-20F2-4B5A-8250-7E930CCE3AD0}.Release|Win32.Build.0 = Release|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Debug|Win32.ActiveCfg = Debug|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Debug|Win32.Build.0 = Debug|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Release|Win32.ActiveCfg = Release|Win32 + {EF6D982C-CF99-4442-B297-776DBECFAFC9}.Release|Win32.Build.0 = Release|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Debug|Win32.ActiveCfg = Debug|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Debug|Win32.Build.0 = Debug|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Release|Win32.ActiveCfg = Release|Win32 + {7C32702E-ED12-49F1-B476-656DD1EBCE66}.Release|Win32.Build.0 = Release|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Debug|Win32.ActiveCfg = Debug|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Debug|Win32.Build.0 = Debug|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Release|Win32.ActiveCfg = Release|Win32 + {B96E9E0A-99DA-4E9F-B8D0-941F46CDF634}.Release|Win32.Build.0 = Release|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Debug|Win32.ActiveCfg = Debug|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Debug|Win32.Build.0 = Debug|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Release|Win32.ActiveCfg = Release|Win32 + {1B660588-A923-4D84-9092-16DA67869773}.Release|Win32.Build.0 = Release|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Debug|Win32.ActiveCfg = Debug|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Debug|Win32.Build.0 = Debug|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Release|Win32.ActiveCfg = Release|Win32 + {7FF22935-8C7D-4903-908C-B77A9CDBA840}.Release|Win32.Build.0 = Release|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Debug|Win32.ActiveCfg = Debug|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Debug|Win32.Build.0 = Debug|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Release|Win32.ActiveCfg = Release|Win32 + {940A0AFC-9F9F-4797-A0FF-99543F67C1D9}.Release|Win32.Build.0 = Release|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Debug|Win32.ActiveCfg = Debug|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Debug|Win32.Build.0 = Debug|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Release|Win32.ActiveCfg = Release|Win32 + {C3E22CAD-0CAF-42DC-ADE0-B2FF4F644BCE}.Release|Win32.Build.0 = Release|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Debug|Win32.ActiveCfg = Debug|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Debug|Win32.Build.0 = Debug|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Release|Win32.ActiveCfg = Release|Win32 + {4E262A25-90B4-449A-BFC0-95311CADF91D}.Release|Win32.Build.0 = Release|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Debug|Win32.ActiveCfg = Debug|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Debug|Win32.Build.0 = Debug|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Release|Win32.ActiveCfg = Release|Win32 + {0214688B-CE8A-4446-9BDD-1AE7F486EB8B}.Release|Win32.Build.0 = Release|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Debug|Win32.Build.0 = Debug|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Release|Win32.ActiveCfg = Release|Win32 + {65F5530B-D97E-4BDB-949F-9C31C56104B0}.Release|Win32.Build.0 = Release|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Debug|Win32.Build.0 = Debug|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Release|Win32.ActiveCfg = Release|Win32 + {C8AFC9D1-704C-4AB5-911B-3C93C27C63D0}.Release|Win32.Build.0 = Release|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Debug (static runtime)|Win32.ActiveCfg = Debug (static runtime)|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Debug (static runtime)|Win32.Build.0 = Debug (static runtime)|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Debug|Win32.ActiveCfg = Debug|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Debug|Win32.Build.0 = Debug|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Release (static runtime)|Win32.ActiveCfg = Release (static runtime)|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Release (static runtime)|Win32.Build.0 = Release (static runtime)|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Release|Win32.ActiveCfg = Release|Win32 + {47CE2A41-091A-42A3-B40D-F6F0DD689349}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/QuantLib_vc10.vcxproj b/QuantLib_vc10.vcxproj new file mode 100644 index 0000000000..d734879851 --- /dev/null +++ b/QuantLib_vc10.vcxproj @@ -0,0 +1,2102 @@ + + + + + Debug (static runtime) + Win32 + + + Debug + Win32 + + + Release (static runtime) + Win32 + + + Release + Win32 + + + + QuantLib + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA} + QuantLib + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\lib\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\lib\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\lib\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\lib\ + .\build\vc100\$(Platform)\$(Configuration)\ + QuantLib-vc100-mt-sgd + QuantLib-vc100-mt-gd + QuantLib-vc100-mt-s + QuantLib-vc100-mt + + + + /MP %(AdditionalOptions) + MaxSpeed + AnySuitable + false + Speed + .;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\QuantLib.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + + + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + /MP %(AdditionalOptions) + Disabled + false + .;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\QuantLib.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + + + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + /MP %(AdditionalOptions) + MaxSpeed + AnySuitable + false + Speed + .;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\QuantLib.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + + + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + /MP %(AdditionalOptions) + Disabled + false + .;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + .\build\vc100\$(Platform)\$(Configuration)\QuantLib.pch + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + .\build\vc100\$(Platform)\$(Configuration)\ + + + .\build\vc100\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/QuantLib_vc10.vcxproj.filters b/QuantLib_vc10.vcxproj.filters new file mode 100644 index 0000000000..86f8bb722e --- /dev/null +++ b/QuantLib_vc10.vcxproj.filters @@ -0,0 +1,5749 @@ + + + + + {b8aa1a7a-0199-4243-94e9-44c79da50099} + + + {aea49e67-9408-4620-89d3-037c781cba11} + + + {31939e69-d4cf-4754-8226-2b55bd65ee25} + + + {c7ee75dd-b0c1-40c1-b672-eb15b51fb2b2} + + + {7a76183f-0ac9-49e9-a574-d83fa3ca88eb} + + + {0f08b9f0-9002-4f9b-bf66-c9e73d2ca13b} + + + {9d53bbc0-3213-471b-9b14-01c9bbef411c} + + + {1886f7fd-2357-47aa-bc92-84d13b48a913} + + + {f4ad9f82-7463-4af1-973a-ab13fddba354} + + + {bdda7538-22a4-44ac-925a-6c95afb05c55} + + + {692074d7-b624-441f-b7da-a660d59f5fb8} + + + {7c2dcbda-48ea-48eb-bd23-b1d88d45dbc3} + + + {b42ab6bf-67e2-4186-8a69-9de38642fe9e} + + + {c69725ed-ff73-4e74-9777-d3fd2c4b0f48} + + + {a591a398-d145-47e3-9d70-3586402ef751} + + + {0235f1b9-babc-41ec-b0c7-ee8ea60090e1} + + + {37bc9da0-bb2a-4e61-ae73-1fd8cd26b466} + + + {6853f0b6-f5cb-475a-bb31-b7d03ffa0685} + + + {627e33e9-8709-415d-b7a8-b6c3f680c241} + + + {d7c675a7-76b5-4ef4-ad8f-e64de99c39c7} + + + {fe3e871d-733d-4497-9d95-fa5248f1b5ab} + + + {0a0e9ecd-4c8e-4e72-8195-123ef41301be} + + + {483b4555-8ff3-4f29-a747-ef06e274fd73} + + + {4df7c636-1015-4420-b49b-d084fd0813db} + + + {73f36670-3ee6-4af8-9a8b-45ca71a8293d} + + + {88b6dfd9-e5f9-4f0d-8143-ab75b68cf472} + + + {1e4d1b00-7be4-4b86-b8ab-4e13c7d8d2d3} + + + {6b816a6e-05ec-4faa-9943-83bb71d84e23} + + + {01775f02-a000-4176-b7ec-d98d70a365b7} + + + {d5ea26ea-a326-48a2-90b8-7f1c8a126a98} + + + {3a3f097f-0d50-4527-86b5-548bbc1c20cd} + + + {aa3f5c77-d466-43ab-b063-9be4cd44c900} + + + {f3557c7e-8b6b-486b-acf2-1340ff7431f9} + + + {e9089237-fe8c-4d55-914d-52d7d327f3bd} + + + {5ba48137-364c-4ea0-8ed4-2345d82d471c} + + + {eb617bd5-2e6b-4c09-b151-ee5162072000} + + + {89a29868-6250-48c4-9114-49d231bbb022} + + + {0b0b5594-c9af-4db2-b1af-6f72ac6418db} + + + {3f3a5a66-d590-4175-90b3-96cb391e5fad} + + + {8b4b44b7-fa7b-4b04-8186-b74a4b4553ff} + + + {146d248f-eca5-4d6e-a41c-56f68851c964} + + + {b72a4d22-c381-4ed5-b6a3-97285fc789d0} + + + {1b0ea6af-abd5-4c8d-9ac1-f513efc372fd} + + + {55f020ff-1b2f-4f56-8194-6fe99d69e9f1} + + + {0bf280b6-d895-40ff-b988-65ad2880c1ff} + + + {abef9afa-8a52-4aa4-919f-9783ff8f1007} + + + {be944554-fbaf-47f3-beee-c441a7e8f1ce} + + + {88309f41-e501-4c74-90ab-22e8cca7f0ca} + + + {f5650187-c37a-4a98-8a24-8836f0f11324} + + + {159ec8ea-6958-4f60-a716-62915d2cef63} + + + {539e9341-cf4e-499c-9828-cf406c5c7e4b} + + + {e31e697b-bed3-4d0c-b1e0-15747249a105} + + + {af9827f7-274b-43da-a2a2-40fc4c80c194} + + + {25fb83ed-1731-4cd6-aa3a-d8027a0eca9f} + + + {717cf2d6-0581-4aa8-a21f-34e9700bc89e} + + + {d8199c0f-73e6-47e0-8444-57267a6112c4} + + + {b134ed97-6567-422a-b13e-21ce2e9abdd5} + + + {7d2cb293-d738-4289-ba74-fd7445bf6749} + + + {23b3f559-6e47-4fbe-846d-4dc9002560f3} + + + {4b67a796-2576-42be-89cc-b751a07e3973} + + + {25671919-a7a3-4197-943c-23a5df4e8146} + + + {817c0417-9b08-4702-9b00-af51445dce2a} + + + {4c3b4a0c-5a68-4167-8e21-bfaf6b75563b} + + + {8606a756-ea3a-44ee-a9ed-f5e76761023e} + + + {5b92aca1-b394-4001-83a3-bc2d58fba28f} + + + {39b63159-982e-48fa-8723-def3612fce0d} + + + {3ec47a48-746e-4e8f-ae78-a5e1f154bb71} + + + {79361c8f-2a4f-4cae-97b3-b6762c33ff63} + + + {147286c4-32fb-4540-9752-f9eb5d165cd6} + + + {d754981c-0ab8-4c35-bd77-ad78c78e9b41} + + + {083a46bb-a18c-4a14-8d21-baad35f27df5} + + + {a709110c-73f5-4b2e-b44c-46a909a89b31} + + + {36727168-b97c-4f82-aeb7-e397627499a6} + + + {d076d7be-7ff0-4df0-829a-73dc1cfaa7ae} + + + {3346f5d8-7c2e-4444-bca0-837abbec52da} + + + {5eb5dffa-ec4b-4d24-acbd-9c5e7c2fa072} + + + {41c18bb1-d892-4994-b699-cd644c6421e8} + + + {4eadb3fc-a4ce-4e0c-bfe5-f23777a30a8d} + + + {d18be44d-a78a-4109-a3f8-757c4737d267} + + + {1b920d53-9803-4152-8653-c855397066d4} + + + {d7d44f55-80bf-4af8-9367-5c903022d99e} + + + {936a8947-d2c0-4bdd-95c5-8b52daf92cc4} + + + {7d489132-7d03-49f7-bad4-bde084e20bbe} + + + {ae60e960-e1e8-49f4-9a18-bc976b60f165} + + + {d42ff6e1-a70e-4fe7-a35a-db4ca5ef1c95} + + + {51b20bfb-087c-4623-be3c-647010d4e809} + + + {fffa1e10-7b29-41f9-a775-b2bb61638f39} + + + {8cc2e654-d55c-41e3-8005-e6222102f717} + + + {e29388ea-045b-43fe-95f7-0973b8537907} + + + {8fd699bb-f489-4e96-a998-54b5612a9aa7} + + + {12b22ebc-4102-4d94-b640-8490b20365b7} + + + {aa33a8b9-0ac4-49d9-ad88-a7810d0532dd} + + + {aae4b1e6-d6bd-44d9-af3d-4e5efcfd0b57} + + + {101d6cdd-3e77-48cd-8bec-c84a252324f0} + + + {aad1cf31-2c29-47a1-9461-ee71b1dd9a6a} + + + {c8f5fb33-e14a-4880-b985-6377963a2edf} + + + {410bb8f6-ce1c-4e79-956c-85239a8ffcb2} + + + {c046c970-45d0-4156-b587-ff2bc881bf04} + + + {db6b7309-6e3f-4eb2-bce2-6f45a933a788} + + + {02219e9b-59b0-458f-9937-397f83864a9e} + + + {209ea670-7502-4ccc-a3fd-5d793608356b} + + + {8bb09d36-55a0-4496-8e78-989117257790} + + + {5d212607-989f-42d9-ae9d-a54f29d74dfc} + + + {2c4b39a7-b606-4f9f-9df6-70685dbde95f} + + + {be723df5-2e58-41de-8071-8d2e2f62410a} + + + + + methods + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + patterns + + + patterns + + + patterns + + + patterns + + + patterns + + + patterns + + + patterns + + + models + + + models + + + models + + + models + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels\browniangenerators + + + models\marketmodels\browniangenerators + + + models\marketmodels\browniangenerators + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers\volprocesses + + + models\marketmodels\evolvers\volprocesses + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\shortrate + + + models\shortrate + + + models\shortrate + + + models\shortrate\calibrationhelpers + + + models\shortrate\calibrationhelpers + + + models\shortrate\calibrationhelpers + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\twofactorsmodels + + + models\shortrate\twofactorsmodels + + + models\volatility + + + models\volatility + + + models\volatility + + + models\volatility + + + models\volatility + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\quanto + + + pricingengines\quanto + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\inflation + + + pricingengines\inflation + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + legacy + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + experimental + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\fx + + + experimental\fx + + + experimental\fx + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\finitedifferences + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\processes + + + experimental\processes + + + experimental\processes + + + experimental\processes + + + experimental\risk + + + experimental\risk + + + experimental\shortrate + + + experimental\shortrate + + + experimental\shortrate + + + experimental\varianceoption + + + experimental\varianceoption + + + experimental\varianceoption + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\lattices + + + experimental\lattices + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\amortizingbonds + + + experimental\amortizingbonds + + + experimental\amortizingbonds + + + experimental\amortizingbonds + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\convertiblebonds + + + experimental\convertiblebonds + + + experimental\convertiblebonds + + + experimental\convertiblebonds + + + experimental\convertiblebonds + + + experimental\compoundoption + + + experimental\compoundoption + + + experimental\compoundoption + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cashflows + + + cashflows + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments\bonds + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + methods\finitedifferences\solvers + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + experimental\processes + + + experimental\inflation + + + experimental\inflation + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\matrixutilities + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\schemes + + + instruments + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\meshers + + + pricingengines\basket + + + pricingengines\vanilla + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\vanilla + + + pricingengines\vanilla + + + methods\finitedifferences\meshers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + experimental\finitedifferences + + + math\matrixutilities + + + pricingengines\vanilla + + + methods\finitedifferences\stepconditions + + + pricingengines\vanilla + + + methods\finitedifferences\solvers + + + pricingengines\swaption + + + pricingengines\swaption + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\matrixutilities + + + math\optimization + + + math\randomnumbers + + + math + + + methods\finitedifferences\schemes + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + pricingengines\vanilla + + + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\lattices + + + methods\lattices + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + models + + + models + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels\browniangenerators + + + models\marketmodels\browniangenerators + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers\volprocesses + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\shortrate + + + models\shortrate + + + models\shortrate\calibrationhelpers + + + models\shortrate\calibrationhelpers + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\twofactorsmodels + + + models\volatility + + + models\volatility + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + utilities + + + utilities + + + utilities + + + currencies + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\inflation + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\fx + + + experimental\fx + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\processes + + + experimental\processes + + + experimental\processes + + + experimental\risk + + + experimental\shortrate + + + experimental\shortrate + + + experimental\varianceoption + + + experimental\varianceoption + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\lattices + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\amortizingbonds + + + experimental\amortizingbonds + + + experimental\amortizingbonds + + + experimental\barrieroption + + + experimental\convertiblebonds + + + experimental\convertiblebonds + + + experimental\compoundoption + + + experimental\compoundoption + + + experimental\inflation + + + experimental\inflation + + + experimental\math + + + + + + + + + + + + + + + + + + + cashflows + + + cashflows + + + instruments + + + instruments + + + instruments\bonds + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + experimental\processes + + + experimental\inflation + + + experimental\inflation + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + instruments + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\matrixutilities + + + methods\finitedifferences\meshers + + + methods\finitedifferences\schemes + + + instruments + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\meshers + + + pricingengines\basket + + + pricingengines\vanilla + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\vanilla + + + pricingengines\vanilla + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + math\matrixutilities + + + pricingengines\vanilla + + + methods\finitedifferences\stepconditions + + + pricingengines\vanilla + + + methods\finitedifferences\solvers + + + pricingengines\swaption + + + pricingengines\swaption + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\optimization + + + math\randomnumbers + + + math + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + pricingengines\vanilla + + + \ No newline at end of file diff --git a/QuantLib_vc7.vcproj b/QuantLib_vc7.vcproj index fd4e7f7bfc..ab0f401a54 100644 --- a/QuantLib_vc7.vcproj +++ b/QuantLib_vc7.vcproj @@ -447,6 +447,18 @@ + + + + + + + + @@ -845,6 +857,12 @@ + + + + @@ -1040,353 +1058,206 @@ RelativePath=".\ql\experimental\exoticoptions\analyticsimplechooserengine.hpp"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\ql\experimental\exoticoptions\analytictwoassetbarrierengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\analytictwoassetbarrierengine.hpp"> + RelativePath=".\ql\experimental\exoticoptions\analyticwriterextensibleoptionengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\analyticwriterextensibleoptionengine.hpp"> + RelativePath=".\ql\experimental\exoticoptions\continuousarithmeticasianlevyengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\continuousarithmeticasianlevyengine.hpp"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\ql\experimental\exoticoptions\everestoption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\everestoption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\himalayaoption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\himalayaoption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\kirkspreadoptionengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\kirkspreadoptionengine.hpp"> + RelativePath=".\ql\experimental\exoticoptions\margrabeoption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\margrabeoption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\mceverestengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\mceverestengine.hpp"> + RelativePath=".\ql\experimental\exoticoptions\mchimalayaengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\mchimalayaengine.hpp"> + RelativePath=".\ql\experimental\exoticoptions\mcpagodaengine.cpp"> + RelativePath=".\ql\experimental\exoticoptions\mcpagodaengine.hpp"> + RelativePath=".\ql\experimental\exoticoptions\pagodaoption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\pagodaoption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\simplechooseroption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\simplechooseroption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\spreadoption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\twoassetbarrieroption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\twoassetbarrieroption.hpp"> + RelativePath=".\ql\experimental\exoticoptions\writerextensibleoption.cpp"> + RelativePath=".\ql\experimental\exoticoptions\writerextensibleoption.hpp"> + + + RelativePath=".\ql\experimental\finitedifferences\all.hpp"> + RelativePath=".\ql\experimental\finitedifferences\dynprogvppintrinsicvalueengine.cpp"> + RelativePath=".\ql\experimental\finitedifferences\dynprogvppintrinsicvalueengine.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdextoujumpvanillaengine.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdextoujumpvanillaengine.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdklugeextouspreadengine.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdklugeextouspreadengine.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmexpextouinnervaluecalculator.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextendedornsteinuhlenbeckop.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextendedornsteinuhlenbeckop.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextoujumpmodelinnervalue.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextoujumpop.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextoujumpop.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextoujumpsolver.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmextoujumpsolver.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmklugeextouop.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmklugeextouop.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmklugeextousolver.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmsimple2dextousolver.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmsimple3dextoujumpsolver.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmspreadpayoffinnervalue.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmvppstartlimitstepcondition.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmvppstartlimitstepcondition.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmvppstepcondition.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmvppstepcondition.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmvppstepconditionfactory.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdmvppstepconditionfactory.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdsimpleextoujumpswingengine.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdsimpleextoujumpswingengine.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdsimpleextoustorageengine.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdsimpleextoustorageengine.hpp"> + RelativePath=".\ql\experimental\finitedifferences\fdsimpleklugeextouvppengine.cpp"> + RelativePath=".\ql\experimental\finitedifferences\fdsimpleklugeextouvppengine.hpp"> + RelativePath=".\ql\experimental\finitedifferences\glued1dmesher.cpp"> + RelativePath=".\ql\experimental\finitedifferences\glued1dmesher.hpp"> + RelativePath=".\ql\experimental\finitedifferences\vanillavppoption.cpp"> + RelativePath=".\ql\experimental\finitedifferences\vanillavppoption.hpp"> + + + + + + + + @@ -1464,15 +1347,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1951,12 +1888,30 @@ + + + + + + + + + + + + @@ -2116,12 +2071,21 @@ + + + + + + @@ -2146,12 +2110,24 @@ + + + + + + + + @@ -2321,6 +2297,9 @@ + + @@ -2357,6 +2336,12 @@ + + + + @@ -2384,15 +2369,15 @@ - - + + @@ -2606,6 +2591,9 @@ + + @@ -2625,6 +2613,12 @@ + + + + @@ -2655,6 +2649,15 @@ + + + + + + @@ -2713,6 +2716,12 @@ + + + + @@ -2864,6 +2873,12 @@ + + + + @@ -2886,6 +2901,9 @@ + + @@ -3033,6 +3051,9 @@ + + @@ -3042,6 +3063,402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4179,6 +4614,30 @@ + + + + + + + + + + + + + + + + @@ -4192,6 +4651,18 @@ + + + + + + + + @@ -4415,6 +4886,18 @@ + + + + + + + + @@ -4467,6 +4950,12 @@ + + + + @@ -4479,6 +4968,12 @@ + + + + @@ -4509,9 +5004,21 @@ + + + + + + + + @@ -4530,12 +5037,30 @@ + + + + + + + + + + + + @@ -4859,6 +5384,9 @@ + + @@ -5021,6 +5549,18 @@ + + + + + + + + @@ -5462,6 +6002,12 @@ + + + + @@ -5565,6 +6111,9 @@ + + diff --git a/QuantLib_vc8.vcproj b/QuantLib_vc8.vcproj index 16e261b336..1d026eb0a4 100644 --- a/QuantLib_vc8.vcproj +++ b/QuantLib_vc8.vcproj @@ -558,6 +558,10 @@ RelativePath=".\ql\methods\finitedifferences\stepcondition.hpp" > + + @@ -570,6 +574,526 @@ RelativePath=".\ql\methods\finitedifferences\zerocondition.hpp" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -974,6 +1514,14 @@ RelativePath=".\ql\indexes\ibor\seklibor.hpp" > + + + + @@ -1183,6 +1731,22 @@ RelativePath=".\ql\instruments\compositeinstrument.hpp" > + + + + + + + + @@ -1191,6 +1755,14 @@ RelativePath=".\ql\instruments\creditdefaultswap.hpp" > + + + + @@ -1411,6 +1983,10 @@ RelativePath=".\ql\instruments\vanillaoption.hpp" > + + @@ -1419,6 +1995,14 @@ RelativePath=".\ql\instruments\vanillaswap.hpp" > + + + + @@ -1450,6 +2034,14 @@ RelativePath=".\ql\instruments\bonds\all.hpp" > + + + + @@ -1458,6 +2050,14 @@ RelativePath=".\ql\instruments\bonds\cmsratebond.hpp" > + + + + @@ -1551,6 +2151,10 @@ RelativePath="ql\math\functional.hpp" > + + @@ -1599,6 +2203,14 @@ RelativePath=".\ql\math\quadratic.hpp" > + + + + @@ -1694,6 +2306,10 @@ RelativePath=".\ql\math\interpolations\loginterpolation.hpp" > + + @@ -1898,6 +2514,14 @@ RelativePath=".\ql\math\matrixutilities\basisincompleteordered.hpp" > + + + + @@ -1938,6 +2562,18 @@ RelativePath=".\ql\math\matrixutilities\qrdecomposition.hpp" > + + + + + + @@ -2082,6 +2718,14 @@ RelativePath=".\ql\math\randomnumbers\seedgenerator.hpp" > + + + + @@ -2110,6 +2754,10 @@ RelativePath=".\ql\math\solvers1d\falseposition.hpp" > + + @@ -2170,6 +2818,14 @@ RelativePath=".\ql\math\optimization\costfunction.hpp" > + + + + @@ -2263,15 +2919,15 @@ Name="copulas" > + + + + + + + + + + + + + + + + @@ -4110,6 +4798,10 @@ RelativePath=".\ql\termstructures\inflation\inflationhelpers.hpp" > + + @@ -4534,6 +5226,14 @@ RelativePath=".\ql\pricingengines\asian\analytic_discr_geom_av_strike.hpp" > + + + + @@ -4578,6 +5278,38 @@ RelativePath="ql\pricingengines\barrier\analyticbarrierengine.hpp" > + + + + + + + + + + + + + + + + @@ -4594,6 +5326,22 @@ RelativePath="ql\pricingengines\basket\all.hpp" > + + + + + + + + @@ -4702,6 +5450,14 @@ RelativePath=".\ql\pricingengines\vanilla\analyticgjrgarchengine.hpp" > + + + + @@ -4718,6 +5474,14 @@ RelativePath=".\ql\pricingengines\vanilla\analytichestonhullwhiteengine.hpp" > + + + + @@ -4755,43 +5519,83 @@ > + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5470,6 +6290,14 @@ RelativePath=".\ql\time\calendars\poland.hpp" > + + + + @@ -5606,6 +6434,10 @@ RelativePath=".\ql\time\daycounters\all.hpp" > + + @@ -5831,507 +6663,351 @@ > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - @@ -6422,6 +7098,14 @@ RelativePath=".\ql\experimental\coupons\all.hpp" > + + + + @@ -7142,6 +7826,22 @@ RelativePath=".\ql\experimental\inflation\all.hpp" > + + + + + + + + @@ -7190,6 +7890,10 @@ + + @@ -7198,10 +7902,30 @@ RelativePath=".\ql\experimental\math\autocovariance.hpp" > + + + + + + + + + + + + @@ -914,7 +920,527 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1319,6 +1861,14 @@ RelativePath=".\ql\indexes\ibor\seklibor.hpp" > + + + + @@ -1528,6 +2078,22 @@ RelativePath=".\ql\instruments\compositeinstrument.hpp" > + + + + + + + + @@ -1536,6 +2102,14 @@ RelativePath=".\ql\instruments\creditdefaultswap.hpp" > + + + + @@ -1756,6 +2330,10 @@ RelativePath=".\ql\instruments\vanillaoption.hpp" > + + @@ -1764,6 +2342,14 @@ RelativePath=".\ql\instruments\vanillaswap.hpp" > + + + + @@ -1795,6 +2381,14 @@ RelativePath=".\ql\instruments\bonds\all.hpp" > + + + + @@ -1803,6 +2397,14 @@ RelativePath=".\ql\instruments\bonds\cmsratebond.hpp" > + + + + @@ -1896,6 +2498,10 @@ RelativePath="ql\math\functional.hpp" > + + @@ -1944,6 +2550,14 @@ RelativePath=".\ql\math\quadratic.hpp" > + + + + @@ -2247,6 +2861,14 @@ RelativePath=".\ql\math\matrixutilities\basisincompleteordered.hpp" > + + + + @@ -2287,6 +2909,18 @@ RelativePath=".\ql\math\matrixutilities\qrdecomposition.hpp" > + + + + + + @@ -2431,6 +3065,14 @@ RelativePath=".\ql\math\randomnumbers\seedgenerator.hpp" > + + + + @@ -2459,6 +3101,10 @@ RelativePath=".\ql\math\solvers1d\falseposition.hpp" > + + @@ -2519,6 +3165,14 @@ RelativePath=".\ql\math\optimization\costfunction.hpp" > + + + + @@ -2612,15 +3266,15 @@ Name="copulas" > + + + + + + + + + + + + + + + + @@ -4467,6 +5153,10 @@ RelativePath=".\ql\termstructures\inflation\inflationhelpers.hpp" > + + @@ -4891,6 +5581,14 @@ RelativePath=".\ql\pricingengines\asian\analytic_discr_geom_av_strike.hpp" > + + + + @@ -4935,6 +5633,38 @@ RelativePath="ql\pricingengines\barrier\analyticbarrierengine.hpp" > + + + + + + + + + + + + + + + + @@ -4951,6 +5681,22 @@ RelativePath=".\ql\pricingengines\basket\all.hpp" > + + + + + + + + @@ -5059,20 +5805,36 @@ RelativePath=".\ql\pricingengines\vanilla\analyticgjrgarchengine.hpp" > + + + + + + + + + + + + + + + + @@ -5143,6 +5921,22 @@ RelativePath=".\ql\pricingengines\vanilla\fdeuropeanengine.hpp" > + + + + + + + + @@ -5151,6 +5945,14 @@ RelativePath=".\ql\pricingengines\vanilla\fdshoutengine.hpp" > + + + + @@ -5299,6 +6101,22 @@ RelativePath=".\ql\pricingengines\swaption\discretizedswaption.hpp" > + + + + + + + + @@ -5827,6 +6645,14 @@ RelativePath=".\ql\time\calendars\poland.hpp" > + + + + @@ -5963,6 +6789,10 @@ RelativePath=".\ql\time\daycounters\all.hpp" > + + @@ -6168,847 +6998,659 @@ > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + + + @@ -7079,6 +7721,46 @@ RelativePath=".\ql\experimental\processes\extendedblackscholesprocess.hpp" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7547,6 +8245,10 @@ + + @@ -7555,10 +8257,30 @@ RelativePath=".\ql\experimental\math\autocovariance.hpp" > + + + + + + + + + + using namespace boost::unit_test_framework; test_suite* @@ -117,7 +117,7 @@ AC_DEFUN([QL_CHECK_BOOST_UNIT_TEST], { return (test_suite*) 0; } - ], + ])], [boost_unit_found=$boost_lib boost_defines="" break], @@ -125,7 +125,7 @@ AC_DEFUN([QL_CHECK_BOOST_UNIT_TEST], # 1.34 shared CXXFLAGS="$ql_original_CXXFLAGS -DBOOST_TEST_MAIN -DBOOST_TEST_DYN_LINK" boost_unit_found=no - AC_LINK_IFELSE( + AC_LINK_IFELSE([AC_LANG_SOURCE( [@%:@include using namespace boost::unit_test_framework; test_suite* @@ -133,7 +133,7 @@ AC_DEFUN([QL_CHECK_BOOST_UNIT_TEST], { return (test_suite*) 0; } - ], + ])], [boost_unit_found=$boost_lib boost_defines="-DBOOST_TEST_DYN_LINK" break], diff --git a/configure.ac b/configure.ac index 6d8acce80b..9cc54793c3 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ # Process this file with autoconf to produce a configure script. -AC_INIT([QuantLib], [1.1], +AC_INIT([QuantLib], [1.3], [quantlib-dev@lists.sourceforge.net], [QuantLib]) AC_PREREQ(2.50) @@ -184,7 +184,7 @@ AC_ARG_ENABLE([indexed-coupons], AC_HELP_STRING([--enable-indexed-coupons], [If enabled, indexed coupons (see the documentation) are used in floating legs. - If disabled (the default,) par coupons + If disabled (the default), par coupons are used.]), [ql_indexed_coupon=$enableval], [ql_indexed_coupon=no]) @@ -198,16 +198,15 @@ AC_MSG_RESULT([$ql_indexed_coupon]) AC_MSG_CHECKING([whether to enable negative rates]) AC_ARG_ENABLE([negative-rates], AC_HELP_STRING([--enable-negative-rates], - [If enabled, negative yield rates are allowed - in a few places where they are currently - forbidden. It is still not clear whether - this is safe.]), + [If enabled (the default), negative yield + rates are allowed. If disabled, some + features (notably, curve bootstrapping) + will throw when negative rates are found.]), [ql_negative_rates=$enableval], - [ql_negative_rates=no]) + [ql_negative_rates=yes]) if test "$ql_negative_rates" = "yes" ; then AC_DEFINE([QL_NEGATIVE_RATES],[1], - [Define this if negative yield rates should be allowed. - This might not be safe.]) + [Define this if negative yield rates should be allowed.]) fi AC_MSG_RESULT([$ql_negative_rates]) @@ -229,7 +228,7 @@ AC_MSG_RESULT([$ql_belt_and_braces]) AC_MSG_CHECKING([whether to enable deprecated code]) AC_ARG_ENABLE([deprecated-code], AC_HELP_STRING([--enable-deprecated-code], - [If enabled (the default,) deprecated code + [If enabled (the default), deprecated code will be included in the library.]), [ql_use_deprecated_code=$enableval], [ql_use_deprecated_code=yes]) @@ -342,7 +341,13 @@ AC_CONFIG_FILES([ ql/math/solvers1d/Makefile ql/math/statistics/Makefile ql/methods/Makefile - ql/methods/finitedifferences/Makefile + ql/methods/finitedifferences/Makefile + ql/methods/finitedifferences/meshers/Makefile + ql/methods/finitedifferences/operators/Makefile + ql/methods/finitedifferences/schemes/Makefile + ql/methods/finitedifferences/solvers/Makefile + ql/methods/finitedifferences/stepconditions/Makefile + ql/methods/finitedifferences/utilities/Makefile ql/methods/lattices/Makefile ql/methods/montecarlo/Makefile ql/models/Makefile @@ -417,4 +422,5 @@ AC_CONFIG_FILES([ Examples/Swap/Makefile test-suite/Makefile]) AC_CONFIG_FILES([quantlib-config],[chmod +x quantlib-config]) +AC_CONFIG_FILES([QuantLib.spec]) AC_OUTPUT diff --git a/ql/auto_link.hpp b/ql/auto_link.hpp index 84b77fd875..56d68224b4 100644 --- a/ql/auto_link.hpp +++ b/ql/auto_link.hpp @@ -36,6 +36,8 @@ # else # define QL_LIB_TOOLSET "vc90" # endif +#elif (_MSC_VER == 1600) +# define QL_LIB_TOOLSET "vc100" #else # error "unknown Microsoft compiler" #endif diff --git a/ql/cashflow.cpp b/ql/cashflow.cpp index 0feb7325c0..1573289167 100644 --- a/ql/cashflow.cpp +++ b/ql/cashflow.cpp @@ -24,6 +24,16 @@ namespace QuantLib { bool CashFlow::hasOccurred(const Date& refDate, boost::optional includeRefDate) const { + + // easy and quick handling of most cases + if (refDate != Date()) { + Date cf = date(); + if (refDate < cf) + return false; + if (cf < refDate) + return true; + } + if (refDate == Date() || refDate == Settings::instance().evaluationDate()) { // today's date; we override the bool with the one diff --git a/ql/cashflow.hpp b/ql/cashflow.hpp index 6eb506fff9..a206202aa1 100644 --- a/ql/cashflow.hpp +++ b/ql/cashflow.hpp @@ -65,6 +65,7 @@ namespace QuantLib { //@} }; + //! Sequence of cash-flows typedef std::vector > Leg; template <> diff --git a/ql/cashflows/Makefile.am b/ql/cashflows/Makefile.am index d50ce0f92c..cdb726afeb 100644 --- a/ql/cashflows/Makefile.am +++ b/ql/cashflows/Makefile.am @@ -13,6 +13,8 @@ this_include_HEADERS = \ conundrumpricer.hpp \ coupon.hpp \ couponpricer.hpp \ + cpicoupon.hpp \ + cpicouponpricer.hpp \ digitalcmscoupon.hpp \ digitalcoupon.hpp \ digitaliborcoupon.hpp \ @@ -41,6 +43,8 @@ libCashFlows_la_SOURCES = \ conundrumpricer.cpp \ coupon.cpp \ couponpricer.cpp \ + cpicoupon.cpp \ + cpicouponpricer.cpp \ digitalcmscoupon.cpp \ digitalcoupon.cpp \ digitaliborcoupon.cpp \ diff --git a/ql/cashflows/all.hpp b/ql/cashflows/all.hpp index 738d2f9e5c..743747fd88 100644 --- a/ql/cashflows/all.hpp +++ b/ql/cashflows/all.hpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/ql/cashflows/averagebmacoupon.cpp b/ql/cashflows/averagebmacoupon.cpp index 22b342f6dc..542b272809 100644 --- a/ql/cashflows/averagebmacoupon.cpp +++ b/ql/cashflows/averagebmacoupon.cpp @@ -112,13 +112,14 @@ namespace QuantLib { const DayCounter& dayCounter) : FloatingRateCoupon(paymentDate, nominal, startDate, endDate, index->fixingDays(), index, gearing, spread, - refPeriodStart, refPeriodEnd, dayCounter, false), - fixingSchedule_(index->fixingSchedule( - index->fixingCalendar().advance( - startDate, - -(Integer(index->fixingDays())+bmaCutoffDays)*Days, - Preceding), - endDate)) { + refPeriodStart, refPeriodEnd, dayCounter, false) + { + Calendar cal = index->fixingCalendar(); + Integer fixingDays = Integer(index->fixingDays()); + fixingDays += bmaCutoffDays; + Date fixingStart = cal.advance(startDate, -fixingDays*Days, Preceding); + fixingSchedule_ = index->fixingSchedule(fixingStart, endDate); + setPricer(boost::shared_ptr( new AverageBMACouponPricer)); } diff --git a/ql/cashflows/cashflows.cpp b/ql/cashflows/cashflows.cpp index 36269bf9ca..140a34b3e7 100644 --- a/ql/cashflows/cashflows.cpp +++ b/ql/cashflows/cashflows.cpp @@ -3,7 +3,7 @@ /* Copyright (C) 2005, 2006 StatPro Italia srl Copyright (C) 2005 Charles Whitmore - Copyright (C) 2007, 2008, 2009, 2010 Ferdinando Ametrano + Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 Ferdinando Ametrano Copyright (C) 2008 Toyin Akin This file is part of QuantLib, a free-software/open-source library @@ -230,6 +230,23 @@ namespace QuantLib { return aggregateRate(leg, cf, leg.end()); } + Real CashFlows::nominal(const Leg& leg, + bool includeSettlementDateFlows, + Date settlementDate) { + Leg::const_iterator cf = nextCashFlow(leg, + includeSettlementDateFlows, + settlementDate); + if (cf==leg.end()) return 0.0; + + Date paymentDate = (*cf)->date(); + for (; cfdate()==paymentDate; ++cf) { + shared_ptr cp = dynamic_pointer_cast(*cf); + if (cp) + return cp->nominal(); + } + return 0.0; + } + Date CashFlows::accrualStartDate(const Leg& leg, bool includeSettlementDateFlows, Date settlementDate) { @@ -391,24 +408,23 @@ namespace QuantLib { public Visitor, public Visitor { public: - BPSCalculator(const YieldTermStructure& discountCurve, - Date npvDate) - : discountCurve_(discountCurve), npvDate_(npvDate), result_(0.0) { - QL_REQUIRE(npvDate_!=Date(), "null npv date"); - } + BPSCalculator(const YieldTermStructure& discountCurve) + : discountCurve_(discountCurve), bps_(0.0), nonSensNPV_(0.0) {} void visit(Coupon& c) { - result_ += c.nominal() * + Real bps = c.nominal() * c.accrualPeriod() * discountCurve_.discount(c.date()); + bps_ += bps; } - void visit(CashFlow&) {} - Real result() const { - return result_/discountCurve_.discount(npvDate_); + void visit(CashFlow& cf) { + nonSensNPV_ += cf.amount() * + discountCurve_.discount(cf.date()); } + Real bps() const { return bps_; } + Real nonSensNPV() const { return nonSensNPV_; } private: const YieldTermStructure& discountCurve_; - Date npvDate_; - Real result_; + Real bps_, nonSensNPV_; }; const Spread basisPoint_ = 1.0e-4; @@ -454,13 +470,42 @@ namespace QuantLib { if (npvDate == Date()) npvDate = settlementDate; - BPSCalculator calc(discountCurve, npvDate); + BPSCalculator calc(discountCurve); for (Size i=0; ihasOccurred(settlementDate, includeSettlementDateFlows)) leg[i]->accept(calc); } - return basisPoint_*calc.result(); + return basisPoint_*calc.bps()/discountCurve.discount(npvDate); + } + + void CashFlows::npvbps(const Leg& leg, + const YieldTermStructure& discountCurve, + bool includeSettlementDateFlows, + Date settlementDate, + Date npvDate, + Real& npv, + Real& bps) { + + npv = 0.0; + if (leg.empty()) { + bps = 0.0; + return; + } + + BPSCalculator calc(discountCurve); + for (Size i=0; i()) - npv = CashFlows::npv(leg, discountCurve, - includeSettlementDateFlows, - settlementDate, npvDate); - return basisPoint_*npv/bps; + Real npv = 0.0; + BPSCalculator calc(discountCurve); + for (Size i=0; i()) + targetNpv = npv - calc.nonSensNPV(); + else { + targetNpv *= discountCurve.discount(npvDate); + targetNpv -= calc.nonSensNPV(); + } + + if (targetNpv==0.0) + return 0.0; + + Real bps = calc.bps(); + QL_REQUIRE(bps!=0.0, "null bps: impossible atm rate"); + + return targetNpv/bps; } // IRR utility functions @@ -542,7 +604,8 @@ namespace QuantLib { if (leg.empty()) return 0.0; - QL_REQUIRE(settlementDate!=Date(), "null settlement date"); + if (settlementDate == Date()) + settlementDate = Settings::instance().evaluationDate(); if (npvDate == Date()) npvDate = settlementDate; @@ -620,7 +683,6 @@ namespace QuantLib { settlementDate_(settlementDate), npvDate_(npvDate) { - QL_REQUIRE(!leg.empty(), "empty leg"); if (settlementDate == Date()) settlementDate = Settings::instance().evaluationDate(); @@ -1046,13 +1108,17 @@ namespace QuantLib { includeSettlementDateFlows_(includeSettlementDateFlows), settlementDate_(settlementDate), npvDate_(npvDate) { - QL_REQUIRE(!leg.empty(), "empty leg"); if (settlementDate == Date()) settlementDate = Settings::instance().evaluationDate(); if (npvDate == Date()) npvDate = settlementDate; + + // if the discount curve allows extrapolation, let's + // the spreaded curve do too. + curve_.enableExtrapolation( + discountCurve->allowsExtrapolation()); } Real operator()(Rate zSpread) const { zSpread_->setValue(zSpread); @@ -1115,7 +1181,6 @@ namespace QuantLib { Real accuracy, Size maxIterations, Rate guess) { - QL_REQUIRE(!leg.empty(), "empty leg"); if (settlementDate == Date()) settlementDate = Settings::instance().evaluationDate(); diff --git a/ql/cashflows/cashflows.hpp b/ql/cashflows/cashflows.hpp index fc0ba3e08d..b2c04f73b7 100644 --- a/ql/cashflows/cashflows.hpp +++ b/ql/cashflows/cashflows.hpp @@ -3,7 +3,7 @@ /* Copyright (C) 2005, 2006 StatPro Italia srl Copyright (C) 2005 Charles Whitmore - Copyright (C) 2007, 2008, 2009, 2010 Ferdinando Ametrano + Copyright (C) 2007, 2008, 2009, 2010, 2011 Ferdinando Ametrano Copyright (C) 2008 Toyin Akin This file is part of QuantLib, a free-software/open-source library @@ -92,6 +92,11 @@ namespace QuantLib { nextCouponRate(const Leg& leg, bool includeSettlementDateFlows, Date settlementDate = Date()); + + static Real + nominal(const Leg& leg, + bool includeSettlementDateFlows, + Date settlDate = Date()); static Date accrualStartDate(const Leg& leg, bool includeSettlementDateFlows, @@ -152,6 +157,20 @@ namespace QuantLib { bool includeSettlementDateFlows, Date settlementDate = Date(), Date npvDate = Date()); + + //@{ + //! NPV and BPS of the cash flows. + /*! The NPV and BPS of the cash flows calculated + together for performance reason + */ + static void npvbps(const Leg& leg, + const YieldTermStructure& discountCurve, + bool includeSettlementDateFlows, + Date settlementDate, + Date npvDate, + Real& npv, + Real& bps); + //! At-the-money rate of the cash flows. /*! The result is the fixed rate for which a fixed rate cash flow vector, equivalent to the input vector, has the required NPV diff --git a/ql/cashflows/conundrumpricer.cpp b/ql/cashflows/conundrumpricer.cpp index baa4f87d95..dfd13b18cc 100644 --- a/ql/cashflows/conundrumpricer.cpp +++ b/ql/cashflows/conundrumpricer.cpp @@ -81,6 +81,8 @@ namespace QuantLib { QL_REQUIRE(coupon_, "CMS coupon needed"); gearing_ = coupon_->gearing(); spread_ = coupon_->spread(); + Time accrualPeriod = coupon_->accrualPeriod(); + QL_REQUIRE(accrualPeriod != 0.0, "null accrual period"); fixingDate_ = coupon_->fixingDate(); paymentDate_ = coupon_->date(); @@ -93,7 +95,7 @@ namespace QuantLib { discount_ = rateCurve_->discount(paymentDate_); else discount_= 1.; - spreadLegValue_ = spread_ * coupon_->accrualPeriod()* discount_; + spreadLegValue_ = spread_ * accrualPeriod * discount_; if (fixingDate_ > today){ swapTenor_ = swapIndex->tenor(); diff --git a/ql/cashflows/couponpricer.cpp b/ql/cashflows/couponpricer.cpp index 86cc0f26da..674df60f87 100644 --- a/ql/cashflows/couponpricer.cpp +++ b/ql/cashflows/couponpricer.cpp @@ -3,6 +3,7 @@ /* Copyright (C) 2007 Giorgio Facchinetti Copyright (C) 2007 Cristina Duminuco + Copyright (C) 2011 Ferdinando Ametrano This file is part of QuantLib, a free-software/open-source library for financial quantitative analysts and developers - http://quantlib.org/ @@ -24,11 +25,12 @@ #include #include #include -#include +#include /* internal */ #include -#include #include +using boost::dynamic_pointer_cast; + namespace QuantLib { //===========================================================================// @@ -36,54 +38,32 @@ namespace QuantLib { //===========================================================================// void BlackIborCouponPricer::initialize(const FloatingRateCoupon& coupon) { - coupon_ = dynamic_cast(&coupon); - QL_REQUIRE(coupon_, "Libor coupon required"); - gearing_ = coupon_->gearing(); - spread_ = coupon_->spread(); - Date paymentDate = coupon_->date(); - boost::shared_ptr index = - boost::dynamic_pointer_cast(coupon_->index()); - Handle rateCurve = index->forwardingTermStructure(); - Date today = Settings::instance().evaluationDate(); + gearing_ = coupon.gearing(); + spread_ = coupon.spread(); + accrualPeriod_ = coupon.accrualPeriod(); + QL_REQUIRE(accrualPeriod_ != 0.0, "null accrual period"); + + index_ = dynamic_pointer_cast(coupon.index()); + if (!index_) { + // check if the coupon was right + const IborCoupon* c = dynamic_cast(&coupon); + QL_REQUIRE(c, "IborCoupon required"); + // coupon was right, index is not + QL_FAIL("IborIndex required"); + } + Handle rateCurve = + index_->forwardingTermStructure(); + Date paymentDate = coupon.date(); if (paymentDate > rateCurve->referenceDate()) discount_ = rateCurve->discount(paymentDate); else discount_ = 1.0; - spreadLegValue_ = spread_ * coupon_->accrualPeriod()* discount_; - } - - Real BlackIborCouponPricer::swapletPrice() const { - // past or future fixing is managed in InterestRateIndex::fixing() - - Real swapletPrice = - adjustedFixing()* coupon_->accrualPeriod() * discount_; - return gearing_ * swapletPrice + spreadLegValue_; - } + spreadLegValue_ = spread_ * accrualPeriod_ * discount_; - Rate BlackIborCouponPricer::swapletRate() const { - return swapletPrice()/(coupon_->accrualPeriod()*discount_); - } - - Real BlackIborCouponPricer::capletPrice(Rate effectiveCap) const { - Real capletPrice = optionletPrice(Option::Call, effectiveCap); - return gearing_ * capletPrice; - } - - Rate BlackIborCouponPricer::capletRate(Rate effectiveCap) const { - return capletPrice(effectiveCap)/(coupon_->accrualPeriod()*discount_); - } - - Real BlackIborCouponPricer::floorletPrice(Rate effectiveFloor) const { - Real floorletPrice = optionletPrice(Option::Put, effectiveFloor); - return gearing_ * floorletPrice; - } - - Rate BlackIborCouponPricer::floorletRate(Rate effectiveFloor) const { - return floorletPrice(effectiveFloor)/ - (coupon_->accrualPeriod()*discount_); + coupon_ = &coupon; } Real BlackIborCouponPricer::optionletPrice(Option::Type optionType, @@ -99,7 +79,7 @@ namespace QuantLib { a = effStrike; b = coupon_->indexFixing(); } - return std::max(a - b, 0.0)* coupon_->accrualPeriod()*discount_; + return std::max(a - b, 0.0)* accrualPeriod_*discount_; } else { // not yet determined, use Black model QL_REQUIRE(!capletVolatility().empty(), @@ -111,34 +91,30 @@ namespace QuantLib { effStrike, adjustedFixing(), stdDev); - return fixing * coupon_->accrualPeriod() * discount_; + return fixing * accrualPeriod_ * discount_; } } Rate BlackIborCouponPricer::adjustedFixing(Rate fixing) const { - Real adjustement = 0.0; - if (fixing == Null()) fixing = coupon_->indexFixing(); - if (!coupon_->isInArrears()) { - adjustement = 0.0; - } else { - // see Hull, 4th ed., page 550 - QL_REQUIRE(!capletVolatility().empty(), - "missing optionlet volatility"); - Date d1 = coupon_->fixingDate(), - referenceDate = capletVolatility()->referenceDate(); - if (d1 <= referenceDate) { - adjustement = 0.0; - } else { - Date d2 = coupon_->index()->maturityDate(d1); - Time tau = coupon_->index()->dayCounter().yearFraction(d1, d2); - Real variance = capletVolatility()->blackVariance(d1, fixing); - adjustement = fixing*fixing*variance*tau/(1.0+fixing*tau); - } - } + if (!coupon_->isInArrears()) + return fixing; + + QL_REQUIRE(!capletVolatility().empty(), + "missing optionlet volatility"); + Date d1 = coupon_->fixingDate(); + Date referenceDate = capletVolatility()->referenceDate(); + if (d1 <= referenceDate) + return fixing; + + // see Hull, 4th ed., page 550 + Date d2 = index_->maturityDate(d1); + Time tau = index_->dayCounter().yearFraction(d1, d2); + Real variance = capletVolatility()->blackVariance(d1, fixing); + Spread adjustement = fixing*fixing*variance*tau/(1.0+fixing*tau); return fixing + adjustement; } diff --git a/ql/cashflows/couponpricer.hpp b/ql/cashflows/couponpricer.hpp index 162b65b8fe..c12e7f7450 100644 --- a/ql/cashflows/couponpricer.hpp +++ b/ql/cashflows/couponpricer.hpp @@ -3,6 +3,7 @@ /* Copyright (C) 2007 Giorgio Facchinetti Copyright (C) 2007 Cristina Duminuco + Copyright (C) 2011 Ferdinando Ametrano This file is part of QuantLib, a free-software/open-source library for financial quantitative analysts and developers - http://quantlib.org/ @@ -27,6 +28,7 @@ #include #include +#include #include #include @@ -99,11 +101,14 @@ namespace QuantLib { virtual Rate adjustedFixing(Rate fixing = Null()) const; - const IborCoupon* coupon_; - Real discount_; Real gearing_; Spread spread_; + Time accrualPeriod_; + boost::shared_ptr index_; + Real discount_; Real spreadLegValue_; + + const FloatingRateCoupon* coupon_; }; //! base pricer for vanilla CMS coupons @@ -135,6 +140,39 @@ namespace QuantLib { const Leg& leg, const std::vector >&); + // inline + + inline Real BlackIborCouponPricer::swapletPrice() const { + // past or future fixing is managed in InterestRateIndex::fixing() + + Real swapletPrice = adjustedFixing() * accrualPeriod_ * discount_; + return gearing_ * swapletPrice + spreadLegValue_; + } + + inline Rate BlackIborCouponPricer::swapletRate() const { + return swapletPrice()/(accrualPeriod_*discount_); + } + + inline Real BlackIborCouponPricer::capletPrice(Rate effectiveCap) const { + Real capletPrice = optionletPrice(Option::Call, effectiveCap); + return gearing_ * capletPrice; + } + + inline Rate BlackIborCouponPricer::capletRate(Rate effectiveCap) const { + return capletPrice(effectiveCap) / (accrualPeriod_*discount_); + } + + inline + Real BlackIborCouponPricer::floorletPrice(Rate effectiveFloor) const { + Real floorletPrice = optionletPrice(Option::Put, effectiveFloor); + return gearing_ * floorletPrice; + } + + inline + Rate BlackIborCouponPricer::floorletRate(Rate effectiveFloor) const { + return floorletPrice(effectiveFloor) / (accrualPeriod_*discount_); + } + } #endif diff --git a/ql/cashflows/cpicoupon.cpp b/ql/cashflows/cpicoupon.cpp new file mode 100644 index 0000000000..ae667b41f3 --- /dev/null +++ b/ql/cashflows/cpicoupon.cpp @@ -0,0 +1,329 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2009 Chris Kenyon + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. + */ + + + +#include +#include +#include + +#include +#include + + +namespace QuantLib { + + CPICoupon:: + CPICoupon( + Real baseCPI, // user provided + const Date& paymentDate, + Real nominal, + const Date& startDate, + const Date& endDate, + Natural fixingDays, + const boost::shared_ptr& zeroIndex, + const Period& observationLag, + CPI::InterpolationType observationInterpolation, + const DayCounter& dayCounter, + Real fixedRate, // aka gearing + Spread spread, + const Date& refPeriodStart, + const Date& refPeriodEnd) + : InflationCoupon(paymentDate, nominal, startDate, endDate, + fixingDays, zeroIndex, observationLag, + dayCounter, refPeriodStart, refPeriodEnd), + baseCPI_(baseCPI), fixedRate_(fixedRate), spread_(spread), + observationInterpolation_(observationInterpolation) { + + QL_REQUIRE(fabs(baseCPI_) > 1e-16, + "|baseCPI_| < 1e-16, future divide-by-zero problem"); + } + + + void CPICoupon::accept(AcyclicVisitor& v) { + Visitor* v1 = + dynamic_cast*>(&v); + if (v1 != 0) + v1->visit(*this); + else + InflationCoupon::accept(v); + } + + + bool CPICoupon::checkPricerImpl( + const boost::shared_ptr&pricer) const { + return boost::dynamic_pointer_cast(pricer); + } + + + Rate CPICoupon::indexFixing(const Date &d) const { + // you may want to modify the interpolation of the index + // this gives you the chance + + Rate I1; + // what interpolation do we use? Index / flat / linear + if (observationInterpolation() == CPI::AsIndex) { + I1 = cpiIndex()->fixing(d); + + } else { + // work out what it should be + std::pair dd = inflationPeriod(d, cpiIndex()->frequency()); + Real indexStart = cpiIndex()->fixing(dd.first); + if (observationInterpolation() == CPI::Linear) { + Real indexEnd = cpiIndex()->fixing(dd.second+Period(1,Days)); + // linear interpolation + I1 = indexStart + (indexEnd - indexStart) * (d - dd.first) + / (Real)( (dd.second+Period(1,Days)) - dd.first); // can't get to next period's value within current period + } else { + // no interpolation, i.e. flat = constant, so use start-of-period value + I1 = indexStart; + } + + } + return I1; + } + + + + + Date CPICashFlow::baseDate() const { + // you may not have a valid date + exit(-1); + } + + Real CPICashFlow::baseFixing() const { + return baseFixing_; + } + + Real CPICashFlow::amount() const { + Real I0 = baseFixing(); + Real I1; + + // what interpolation do we use? Index / flat / linear + if (interpolation() == CPI::AsIndex ) { + I1 = index()->fixing(fixingDate()); + } else { + // work out what it should be + //std::cout << fixingDate() << " and " << frequency() << std::endl; + //std::pair dd = inflationPeriod(fixingDate(), frequency()); + //std::cout << fixingDate() << " and " << dd.first << " " << dd.second << std::endl; + // work out what it should be + std::pair dd = inflationPeriod(fixingDate(), frequency()); + Real indexStart = index()->fixing(dd.first); + if (interpolation() == CPI::Linear) { + Real indexEnd = index()->fixing(dd.second+Period(1,Days)); + // linear interpolation + //std::cout << indexStart << " and " << indexEnd << std::endl; + I1 = indexStart + (indexEnd - indexStart) * (fixingDate() - dd.first) + / ( (dd.second+Period(1,Days)) - dd.first); // can't get to next period's value within current period + } else { + // no interpolation, i.e. flat = constant, so use start-of-period value + I1 = indexStart; + } + + } + + + if (growthOnly()) + return notional() * (I1 / I0 - 1.0); + else + return notional() * (I1 / I0); + } + + + CPILeg::CPILeg(const Schedule& schedule, const boost::shared_ptr& index, + const Real baseCPI, const Period& observationLag) : + schedule_(schedule), index_(index), + baseCPI_(baseCPI), observationLag_(observationLag), + paymentDayCounter_(Thirty360()), + paymentAdjustment_(ModifiedFollowing), + fixingDays_(std::vector(1,0)), + observationInterpolation_(CPI::AsIndex), + subtractInflationNominal_(true), + spreads_(std::vector(1,0)) + {} + + + CPILeg& CPILeg::withObservationInterpolation(CPI::InterpolationType interp) { + observationInterpolation_ = interp; + return *this; + } + + + CPILeg& CPILeg::withFixedRates(Real fixedRate) { + fixedRates_ = std::vector(1,fixedRate); + return *this; + } + + CPILeg& CPILeg::withFixedRates(const std::vector& fixedRates) { + fixedRates_ = fixedRates; + return *this; + } + + CPILeg& CPILeg::withNotionals(Real notional) { + notionals_ = std::vector(1,notional); + return *this; + } + + CPILeg& CPILeg::withNotionals(const std::vector& notionals) { + notionals_ = notionals; + return *this; + } + + CPILeg& CPILeg::withSubtractInflationNominal(bool growthOnly) { + subtractInflationNominal_ = growthOnly; + return *this; + } + + CPILeg& CPILeg::withPaymentDayCounter(const DayCounter& dayCounter) { + paymentDayCounter_ = dayCounter; + return *this; + } + + CPILeg& CPILeg::withPaymentAdjustment(BusinessDayConvention convention) { + paymentAdjustment_ = convention; + return *this; + } + + CPILeg& CPILeg::withFixingDays(Natural fixingDays) { + fixingDays_ = std::vector(1,fixingDays); + return *this; + } + + CPILeg& CPILeg::withFixingDays(const std::vector& fixingDays) { + fixingDays_ = fixingDays; + return *this; + } + + CPILeg& CPILeg::withSpreads(Spread spread) { + spreads_ = std::vector(1,spread); + return *this; + } + + CPILeg& CPILeg::withSpreads(const std::vector& spreads) { + spreads_ = spreads; + return *this; + } + + CPILeg& CPILeg::withCaps(Rate cap) { + caps_ = std::vector(1,cap); + return *this; + } + + CPILeg& CPILeg::withCaps(const std::vector& caps) { + caps_ = caps; + return *this; + } + + CPILeg& CPILeg::withFloors(Rate floor) { + floors_ = std::vector(1,floor); + return *this; + } + + CPILeg& CPILeg::withFloors(const std::vector& floors) { + floors_ = floors; + return *this; + } + + + CPILeg::operator Leg() const { + + QL_REQUIRE(!notionals_.empty(), "no notional given"); + Size n = schedule_.size()-1; + Calendar calendar = schedule_.calendar(); + Leg leg; + leg.reserve(n+1); // +1 for notional, we always have some sort ... + if (n>0) { + QL_REQUIRE(!fixedRates_.empty() || !spreads_.empty(), + "no fixedRates or spreads given"); + + Date refStart, start, refEnd, end; + + for (Size i=0; i + (new FixedRateCoupon + (paymentDate, detail::get(notionals_, i, 0.0), + detail::effectiveFixedRate(spreads_,caps_,floors_,i), + paymentDayCounter_, start, end, refStart, refEnd))); + } else { // zero inflation coupon + if (detail::noOption(caps_, floors_, i)) { // just swaplet + boost::shared_ptr coup; + + coup = boost::shared_ptr + (new CPICoupon(baseCPI_, // all have same base for ratio + paymentDate, + detail::get(notionals_, i, 0.0), + start, end, + detail::get(fixingDays_, i, 0.0), + index_, observationLag_, + observationInterpolation_, + paymentDayCounter_, + detail::get(fixedRates_, i, 0.0), + detail::get(spreads_, i, 0.0), + refStart, refEnd)); + + // in this case you can set a pricer + // straight away because it only provides computation - not data + boost::shared_ptr pricer + (new CPICouponPricer); + coup->setPricer(pricer); + leg.push_back(boost::dynamic_pointer_cast(coup)); + + } else { // cap/floorlet + QL_FAIL("caps/floors on CPI coupons not implemented."); + } + } + } + } + + // in CPI legs you always have a notional flow of some sort + Date paymentDate = calendar.adjust(schedule_.date(n), paymentAdjustment_); + Date fixingDate = paymentDate - observationLag_; + boost::shared_ptr xnl(new CPICashFlow + (detail::get(notionals_, n, 0.0), index_, + Date(), // is fake, i.e. you do not have one + baseCPI_, fixingDate, paymentDate, + subtractInflationNominal_, observationInterpolation_, + index_->frequency()) + ); + leg.push_back(xnl); + + + return leg; + } + + + + + + +} // namespace RiskLib + diff --git a/ql/cashflows/cpicoupon.hpp b/ql/cashflows/cpicoupon.hpp new file mode 100644 index 0000000000..929f99b0af --- /dev/null +++ b/ql/cashflows/cpicoupon.hpp @@ -0,0 +1,254 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Chris Kenyon + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. + */ + +/*! \file cpicoupon.hpp + \brief Coupon paying a zero-inflation index +*/ + +#ifndef quantlib_cpicoupon_hpp +#define quantlib_cpicoupon_hpp + +#include +#include +#include +#include + +namespace QuantLib { + + struct CPI { + //! when you observe an index, how do you interpolate between fixings? + enum InterpolationType { + AsIndex, //!< same interpolation as index + Flat, //!< flat from previous fixing + Linear //!< linearly between bracketing fixings + }; + }; + + + class CPICouponPricer; + + //! %Coupon paying the performance of a CPI (zero inflation) index + /*! The performance is relative to the index value on the base date. + + The other inflation value is taken from the refPeriodEnd date + with observation lag, so any roll/calendar etc. will be built + in by the caller. By default this is done in the + InflationCoupon which uses ModifiedPreceding with fixing days + assumed positive meaning earlier, i.e. always stay in same + month (relative to referencePeriodEnd). + + This is more sophisticated than an %IndexedCashFlow because it + does date calculations itself. + + \todo we do not do any convexity adjustment for lags different + to the natural ZCIIS lag that was used to create the + forward inflation curve. + */ + class CPICoupon : public InflationCoupon { + public: + CPICoupon(Real baseCPI, // user provided, could be arbitrary + const Date& paymentDate, + Real nominal, + const Date& startDate, + const Date& endDate, + Natural fixingDays, + const boost::shared_ptr& index, + const Period& observationLag, + CPI::InterpolationType observationInterpolation, + const DayCounter& dayCounter, + Real fixedRate, // aka gearing + Spread spread = 0.0, + const Date& refPeriodStart = Date(), + const Date& refPeriodEnd = Date()); + + //! \name Inspectors + //@{ + //! fixed rate that will be inflated by the index ratio + Real fixedRate() const; + //! spread paid over the fixing of the underlying index + Spread spread() const; + + //! adjusted fixing (already divided by the base fixing) + Rate adjustedFixing() const; + //! allows for a different interpolation from the index + Rate indexFixing() const; + //! base value for the CPI index + /*! \warning make sure that the interpolation used to create + this is what you are using for the fixing, + i.e. the observationInterpolation. + */ + Rate baseCPI() const; + //! how do you observe the index? as-is, flat, linear? + CPI::InterpolationType observationInterpolation() const; + //! utility method, calls indexFixing + Rate indexObservation(const Date& onDate) const; + //! index used + boost::shared_ptr cpiIndex() const; + //@} + + //! \name Visitability + //@{ + virtual void accept(AcyclicVisitor&); + //@} + protected: + Real baseCPI_; + Real fixedRate_; + Spread spread_; + CPI::InterpolationType observationInterpolation_; + + bool checkPricerImpl( + const boost::shared_ptr&) const; + // use to calculate for fixing date, allows change of + // interpolation w.r.t. index. Can also be used ahead of time + Rate indexFixing(const Date &) const; + }; + + + //! Cash flow paying the performance of a CPI (zero inflation) index + /*! It is NOT a coupon, i.e. no accruals. */ + class CPICashFlow : public IndexedCashFlow { + public: + CPICashFlow(Real notional, + const boost::shared_ptr& index, + const Date& baseDate, + Real baseFixing, + const Date& fixingDate, + const Date& paymentDate, + bool growthOnly = false, + CPI::InterpolationType interpolation = CPI::AsIndex, + const Frequency& frequency = QuantLib::NoFrequency) + : IndexedCashFlow(notional, index, baseDate, fixingDate, + paymentDate, growthOnly), + baseFixing_(baseFixing), interpolation_(interpolation), + frequency_(frequency) { + QL_REQUIRE(fabs(baseFixing_)>1e-16, + "|baseFixing|<1e-16, future divide-by-zero error"); + if (interpolation_ != CPI::AsIndex) { + QL_REQUIRE(frequency_ != QuantLib::NoFrequency, + "non-index interpolation w/o frequency"); + } + } + + //! value used on base date + /*! This does not have to agree with index on that date. */ + virtual Real baseFixing() const; + //! you may not have a valid date + virtual Date baseDate() const; + + //! do you want linear/constant/as-index interpolation of future data? + virtual CPI::InterpolationType interpolation() const { + return interpolation_; + } + virtual Frequency frequency() const { return frequency_; } + + //! redefined to use baseFixing() and interpolation + virtual Real amount() const; + protected: + Real baseFixing_; + CPI::InterpolationType interpolation_; + Frequency frequency_; + }; + + + //! Helper class building a sequence of capped/floored CPI coupons. + /*! Also allowing for the inflated notional at the end... + especially if there is only one date in the schedule. + If a fixedRate is zero you get a FixedRateCoupon, otherwise + you get a ZeroInflationCoupon. + + payoff is: spread + fixedRate x index + */ + class CPILeg { + public: + CPILeg(const Schedule& schedule, + const boost::shared_ptr& index, + const Real baseCPI, + const Period& observationLag); + CPILeg& withNotionals(Real notional); + CPILeg& withNotionals(const std::vector& notionals); + CPILeg& withFixedRates(Real fixedRate); + CPILeg& withFixedRates(const std::vector& fixedRates); + CPILeg& withPaymentDayCounter(const DayCounter&); + CPILeg& withPaymentAdjustment(BusinessDayConvention); + CPILeg& withFixingDays(Natural fixingDays); + CPILeg& withFixingDays(const std::vector& fixingDays); + CPILeg& withObservationInterpolation(CPI::InterpolationType); + CPILeg& withSubtractInflationNominal(bool); + CPILeg& withSpreads(Spread spread); + CPILeg& withSpreads(const std::vector& spreads); + CPILeg& withCaps(Rate cap); + CPILeg& withCaps(const std::vector& caps); + CPILeg& withFloors(Rate floor); + CPILeg& withFloors(const std::vector& floors); + operator Leg() const; + + private: + Schedule schedule_; + boost::shared_ptr index_; + Real baseCPI_; + Period observationLag_; + std::vector notionals_; + std::vector fixedRates_; // aka gearing + DayCounter paymentDayCounter_; + BusinessDayConvention paymentAdjustment_; + std::vector fixingDays_; + CPI::InterpolationType observationInterpolation_; + bool subtractInflationNominal_; + std::vector spreads_; + std::vector caps_, floors_; + }; + + + // inline definitions + + inline Real CPICoupon::fixedRate() const { + return fixedRate_; + } + + inline Real CPICoupon::spread() const { + return spread_; + } + + inline Rate CPICoupon::adjustedFixing() const { + return (rate()-spread())/fixedRate(); + } + + inline Rate CPICoupon::indexFixing() const { + return indexFixing(fixingDate()); + } + + inline Rate CPICoupon::baseCPI() const { + return baseCPI_; + } + + inline CPI::InterpolationType CPICoupon::observationInterpolation() const { + return observationInterpolation_; + } + + inline Rate CPICoupon::indexObservation(const Date& onDate) const { + return indexFixing(onDate); + } + + inline boost::shared_ptr CPICoupon::cpiIndex() const { + return boost::dynamic_pointer_cast(index()); + } + +} + +#endif diff --git a/ql/cashflows/cpicouponpricer.cpp b/ql/cashflows/cpicouponpricer.cpp new file mode 100644 index 0000000000..024493f473 --- /dev/null +++ b/ql/cashflows/cpicouponpricer.cpp @@ -0,0 +1,157 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2009, 2011 Chris Kenyon + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. + */ + +#include + +namespace QuantLib { + + CPICouponPricer:: + CPICouponPricer(const Handle& capletVol) + : capletVol_(capletVol) { + + if( !capletVol_.empty() ) registerWith(capletVol_); + } + + + void CPICouponPricer::setCapletVolatility( + const Handle& capletVol) { + QL_REQUIRE(!capletVol.empty(),"empty capletVol handle") + capletVol_ = capletVol; + registerWith(capletVol_); + } + + + Real CPICouponPricer::floorletPrice(Rate effectiveFloor) const{ + Real floorletPrice = optionletPrice(Option::Put, effectiveFloor); + return gearing_ * floorletPrice; + } + + Real CPICouponPricer::capletPrice(Rate effectiveCap) const{ + Real capletPrice = optionletPrice(Option::Call, effectiveCap); + return gearing_ * capletPrice; + } + + + Rate CPICouponPricer::floorletRate(Rate effectiveFloor) const{ + return floorletPrice(effectiveFloor)/ + (coupon_->accrualPeriod()*discount_); + } + + Rate CPICouponPricer::capletRate(Rate effectiveCap) const{ + return capletPrice(effectiveCap)/(coupon_->accrualPeriod()*discount_); + } + + + Real CPICouponPricer::optionletPriceImp(Option::Type optionType, + Real effStrike, + Real forward, + Real stdDev + ) const { + QL_FAIL("you must implement this to get a vol-dependent price"); + return effStrike*forward*stdDev*optionType; + } + + + Real CPICouponPricer::optionletPrice(Option::Type optionType, + Real effStrike) const { + Date fixingDate = coupon_->fixingDate(); + if (fixingDate <= Settings::instance().evaluationDate()) { + // the amount is determined + Real a, b; + if (optionType==Option::Call) { + a = coupon_->indexFixing(); + b = effStrike; + } else { + a = effStrike; + b = coupon_->indexFixing(); + } + return std::max(a - b, 0.0)* coupon_->accrualPeriod()*discount_; + } else { + // not yet determined, use Black/DD1/Bachelier/whatever from Impl + QL_REQUIRE(!capletVolatility().empty(), + "missing optionlet volatility"); + Real stdDev = + std::sqrt(capletVolatility()->totalVariance(fixingDate, + effStrike)); + Rate fixing = optionletPriceImp(optionType, + effStrike, + adjustedFixing(), + stdDev); + return fixing * coupon_->accrualPeriod() * discount_; + } + } + + + Rate CPICouponPricer::adjustedFixing(Rate fixing) const { + + if (fixing == Null()) + fixing = coupon_->indexFixing() / coupon_->baseCPI(); + //std::cout << " adjustedFixing " << fixing << std::endl; + // no adjustment + return fixing; + } + + + void CPICouponPricer::initialize(const InflationCoupon& coupon) { + coupon_ = dynamic_cast(&coupon); + gearing_ = coupon_->fixedRate(); + spread_ = coupon_->spread(); + paymentDate_ = coupon_->date(); + rateCurve_ = boost::dynamic_pointer_cast(coupon.index()) + ->zeroInflationTermStructure() + ->nominalTermStructure(); + + // past or future fixing is managed in YoYInflationIndex::fixing() + // use yield curve from index (which sets discount) + + discount_ = 1.0; + if (paymentDate_ > rateCurve_->referenceDate()) + discount_ = rateCurve_->discount(paymentDate_); + + spreadLegValue_ = spread_ * coupon_->accrualPeriod()* discount_; + + } + + + Real CPICouponPricer::swapletPrice() const { + + Real swapletPrice = adjustedFixing() * coupon_->accrualPeriod() * discount_; + //std::cout << swapletPrice << " SWAPLET price" << std::endl; + return gearing_ * swapletPrice + spreadLegValue_; + } + + + Rate CPICouponPricer::swapletRate() const { + // This way we do not require the index to have + // a yield curve, i.e. we do not get the problem + // that a discounting-instrument-pricer is used + // with a different yield curve + //std::cout << (gearing_ * adjustedFixing() + spread_) << " SWAPLET rate" << gearing_ << " " << spread_ << std::endl; + return gearing_ * adjustedFixing() + spread_; + } + + //========================================================================= + // vol-dependent pricers, note that these do not discount + //========================================================================= + +/* + NOT IMPLEMENTED +*/ + +} diff --git a/ql/cashflows/cpicouponpricer.hpp b/ql/cashflows/cpicouponpricer.hpp new file mode 100644 index 0000000000..ea73a1c9ca --- /dev/null +++ b/ql/cashflows/cpicouponpricer.hpp @@ -0,0 +1,86 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2009, 2011 Chris Kenyon + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. + */ + +/*! \file cpicouponpricer.hpp + \brief zero inflation-coupon pricer + */ + +#ifndef quantlib_cpicouponpricer_hpp +#define quantlib_cpicouponpricer_hpp + +#include +#include +#include +#include +#include + +namespace QuantLib { + + //! base pricer for capped/floored CPI coupons N.B. vol-dependent parts are a TODO + /*! \note this pricer can already do swaplets but to get + volatility-dependent coupons you need to implement the descendents. + */ + class CPICouponPricer : public InflationCouponPricer { + public: + CPICouponPricer(const Handle& capletVol + = Handle()); + + virtual Handle capletVolatility() const{ + return capletVol_; + } + + virtual void setCapletVolatility( + const Handle& capletVol); + + + //! \name InflationCouponPricer interface + //@{ + virtual Real swapletPrice() const; + virtual Rate swapletRate() const; + virtual Real capletPrice(Rate effectiveCap) const; + virtual Rate capletRate(Rate effectiveCap) const; + virtual Real floorletPrice(Rate effectiveFloor) const; + virtual Rate floorletRate(Rate effectiveFloor) const; + virtual void initialize(const InflationCoupon&); + //@} + + + protected: + //! can replace this if really required + virtual Real optionletPrice(Option::Type optionType, + Real effStrike) const; + + //! usually only need implement this (of course they may need + //! to re-implement initialize too ...) + virtual Real optionletPriceImp(Option::Type, Real strike, + Real forward, Real stdDev) const; + virtual Rate adjustedFixing(Rate fixing = Null()) const; + + //! data + Handle capletVol_; + const CPICoupon* coupon_; + Real gearing_; + Spread spread_; + Real discount_; + Real spreadLegValue_; + }; + +} // namespace QuantLib + +#endif diff --git a/ql/cashflows/iborcoupon.cpp b/ql/cashflows/iborcoupon.cpp index 1ee555ff99..01445faf1d 100644 --- a/ql/cashflows/iborcoupon.cpp +++ b/ql/cashflows/iborcoupon.cpp @@ -3,7 +3,7 @@ /* Copyright (C) 2007 Giorgio Facchinetti Copyright (C) 2007 Cristina Duminuco - Copyright (C) 2010 Ferdinando Ametrano + Copyright (C) 2010, 2011 Ferdinando Ametrano This file is part of QuantLib, a free-software/open-source library for financial quantitative analysts and developers - http://quantlib.org/ @@ -26,6 +26,8 @@ #include #include +using boost::shared_ptr; + namespace QuantLib { IborCoupon::IborCoupon(const Date& paymentDate, @@ -33,7 +35,7 @@ namespace QuantLib { const Date& startDate, const Date& endDate, Natural fixingDays, - const boost::shared_ptr& iborIndex, + const shared_ptr& iborIndex, Real gearing, Spread spread, const Date& refPeriodStart, @@ -44,72 +46,75 @@ namespace QuantLib { fixingDays, iborIndex, gearing, spread, refPeriodStart, refPeriodEnd, dayCounter, isInArrears), - iborIndex_(iborIndex) {} + iborIndex_(iborIndex) { - Rate IborCoupon::indexFixing() const { + fixingDate_ = fixingDate(); + + const Calendar& fixingCalendar = index_->fixingCalendar(); + Natural indexFixingDays = index_->fixingDays(); + + fixingValueDate_ = fixingCalendar.advance( + fixingDate_, indexFixingDays, Days); #ifdef QL_USE_INDEXED_COUPON - return index_->fixing(fixingDate()); + fixingEndDate_ = index_->maturityDate(fixingValueDate_); #else - if (isInArrears()) { - return index_->fixing(fixingDate()); - } else { - Date today = Settings::instance().evaluationDate(); - Date fixing_date = fixingDate(); - if (fixing_date < today) { - // must have been fixed - Rate pastFixing = IndexManager::instance().getHistory( - index_->name())[fixing_date]; - QL_REQUIRE(pastFixing != Null(), - "Missing " << index_->name() - << " fixing for " << fixing_date); - return pastFixing; - } - if (fixing_date == today) { - // might have been fixed - try { - Rate pastFixing = IndexManager::instance().getHistory( - index_->name())[fixing_date]; - if (pastFixing != Null()) - return pastFixing; - else - ; // fall through and forecast - } catch (Error&) { - ; // fall through and forecast - } - } - - // forecast: 0) forecasting curve - Handle termStructure = - iborIndex_->forwardingTermStructure(); - QL_REQUIRE(!termStructure.empty(), - "null term structure set to this instance of " << - index_->name()); - - // forecast: 1) startDiscount - Date fixingValueDate = index_->fixingCalendar().advance( - fixing_date, index_->fixingDays(), Days); - DiscountFactor startDiscount = - termStructure->discount(fixingValueDate); - // forecast: 2) endDiscount - Date nextFixingDate = index_->fixingCalendar().advance( - accrualEndDate_, -static_cast(fixingDays()), Days); - Date nextFixingValueDate = index_->fixingCalendar().advance( - nextFixingDate, index_->fixingDays(), Days); - DiscountFactor endDiscount = - termStructure->discount(nextFixingValueDate); - // forecast: 3) spanningTime - Time spanningTime = index_->dayCounter().yearFraction( - fixingValueDate, nextFixingValueDate); - QL_REQUIRE(spanningTime>0.0, - "cannot calculate forward rate between " << - fixingValueDate << " and " << nextFixingValueDate << - ": non positive time using " << index_->dayCounter().name()); - // forecast: 4) implied fixing - return (startDiscount/endDiscount-1.0)/spanningTime; + if (isInArrears_) + fixingEndDate_ = index_->maturityDate(fixingValueDate_); + else { // par coupon approximation + Date nextFixingDate = fixingCalendar.advance( + accrualEndDate_, -static_cast(fixingDays), Days); + fixingEndDate_ = fixingCalendar.advance( + nextFixingDate, indexFixingDays, Days); } - #endif + #endif + const DayCounter& dc = index_->dayCounter(); + spanningTime_ = dc.yearFraction(fixingValueDate_, + fixingEndDate_); + QL_REQUIRE(spanningTime_>0.0, + "\n cannot calculate forward rate between " << + fixingValueDate_ << " and " << fixingEndDate_ << + ":\n non positive time (" << spanningTime_ << + ") using " << dc.name() << " daycounter"); + } + + Rate IborCoupon::indexFixing() const { + + /* instead of just returning index_->fixing(fixingValueDate_) + its logic is duplicated here using a specialized iborIndex + forecastFixing overload which + 1) allows to save date/time recalculations, and + 2) takes into account par coupon needs + */ + Date today = Settings::instance().evaluationDate(); + + if (fixingDate_>today) + return iborIndex_->forecastFixing(fixingValueDate_, + fixingEndDate_, + spanningTime_); + + if (fixingDate_pastFixing(fixingDate_); + QL_REQUIRE(result != Null(), + "Missing " << index_->name() << " fixing for " << fixingDate_); + return result; + } + + try { + Rate result = index_->pastFixing(fixingDate_); + if (result!=Null()) + return result; + else + ; // fall through and forecast + } catch (Error&) { + ; // fall through and forecast + } + return iborIndex_->forecastFixing(fixingValueDate_, + fixingEndDate_, + spanningTime_); } void IborCoupon::accept(AcyclicVisitor& v) { @@ -124,7 +129,7 @@ namespace QuantLib { IborLeg::IborLeg(const Schedule& schedule, - const boost::shared_ptr& index) + const shared_ptr& index) : schedule_(schedule), index_(index), paymentAdjustment_(Following), inArrears_(false), zeroPayments_(false) {} @@ -216,10 +221,11 @@ namespace QuantLib { paymentAdjustment_, fixingDays_, gearings_, spreads_, caps_, floors_, inArrears_, zeroPayments_); - if (caps_.empty() && floors_.empty() && !inArrears_) - setCouponPricer(leg, - boost::shared_ptr( - new BlackIborCouponPricer)); + if (caps_.empty() && floors_.empty() && !inArrears_) { + shared_ptr pricer(new BlackIborCouponPricer); + setCouponPricer(leg, pricer); + } + return leg; } diff --git a/ql/cashflows/iborcoupon.hpp b/ql/cashflows/iborcoupon.hpp index eefb16c07d..01ba5cc047 100644 --- a/ql/cashflows/iborcoupon.hpp +++ b/ql/cashflows/iborcoupon.hpp @@ -1,7 +1,7 @@ /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* - Copyright (C) 2007 Ferdinando Ametrano + Copyright (C) 2007, 2011 Ferdinando Ametrano Copyright (C) 2007 Giorgio Facchinetti Copyright (C) 2007 Cristina Duminuco Copyright (C) 2007 StatPro Italia srl @@ -65,6 +65,8 @@ namespace QuantLib { //@} private: boost::shared_ptr iborIndex_; + Date fixingDate_, fixingValueDate_, fixingEndDate_; + Time spanningTime_; }; diff --git a/ql/cashflows/overnightindexedcoupon.cpp b/ql/cashflows/overnightindexedcoupon.cpp index d9a354466e..484e245259 100644 --- a/ql/cashflows/overnightindexedcoupon.cpp +++ b/ql/cashflows/overnightindexedcoupon.cpp @@ -53,7 +53,7 @@ namespace QuantLib { // already fixed part Date today = Settings::instance().evaluationDate(); - while (fixingDates[i]name())[fixingDates[i]]; @@ -65,7 +65,7 @@ namespace QuantLib { } // today is a border case - if (fixingDates[i] == today && i* v1 = + dynamic_cast*>(&v); + if (v1 != 0) + v1->visit(*this); + else + SimpleCashFlow::accept(v); + } + + inline void AmortizingPayment::accept(AcyclicVisitor& v) { + Visitor* v1 = + dynamic_cast*>(&v); + if (v1 != 0) + v1->visit(*this); + else + SimpleCashFlow::accept(v); + } + } #endif diff --git a/ql/cashflows/yoyinflationcoupon.cpp b/ql/cashflows/yoyinflationcoupon.cpp index 5972661bf1..0e61a49acd 100644 --- a/ql/cashflows/yoyinflationcoupon.cpp +++ b/ql/cashflows/yoyinflationcoupon.cpp @@ -167,7 +167,6 @@ namespace QuantLib { Calendar calendar = paymentCalendar_; Date refStart, start, refEnd, end; - Date lastPaymentDate = calendar.adjust(schedule_.date(n), paymentAdjustment_); for (Size i=0; i includeToday) const { + bool Event::hasOccurred(const Date& d, // refDate + boost::optional includeRefDate) const { Date refDate = d != Date() ? d : Settings::instance().evaluationDate(); - bool includeTodaysEvent = - includeToday ? *includeToday : - Settings::instance().includeReferenceDateCashFlows(); - if (includeTodaysEvent) + bool includeRefDateEvent = + includeRefDate ? *includeRefDate : + Settings::instance().includeReferenceDateEvents(); + if (includeRefDateEvent) return date() < refDate; else return date() <= refDate; diff --git a/ql/experimental/Makefile.am b/ql/experimental/Makefile.am index ea4a9d9088..9d4e160f64 100644 --- a/ql/experimental/Makefile.am +++ b/ql/experimental/Makefile.am @@ -27,6 +27,7 @@ libExperimental_la_LIBADD = \ fx/libFX.la \ inflation/libInflation.la \ lattices/libLattices.la \ + math/libMath.la \ mcbasket/libMcBasket.la \ processes/libProcesses.la \ risk/libRisk.la \ diff --git a/ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp b/ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp index ca9375ca9d..ce290ff475 100644 --- a/ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp +++ b/ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp @@ -77,7 +77,7 @@ namespace { { double v0=0.0, v1=0.0, v1p=0.0, v2p=0.0, v2pp=0.0, gm=0.0; int i=0,j=0; - double tmp=0.0, tau=0.0, e1=0.0, e2=0.0, e3=0.0, e4=0.0; + double tmp=0.0, e1=0.0, e2=0.0, e3=0.0, e4=0.0; double xstar=0.0, s0=0.0; double sigmat=0.0, disc=0.0, d1=0.0,d2=0.0,d3=0.0,d4=0.0; double et=0.0,tt=0.0, dt=0.0,p=0.0; @@ -108,7 +108,6 @@ namespace { xstar=log(kprice/hbarr); if(xstar>0.0) xstar=0.0; - tau=taumax; sigmat=integs(taumin,taumax); disc=-integr(taumin,taumax); diff --git a/ql/experimental/commodities/commoditycashflow.hpp b/ql/experimental/commodities/commoditycashflow.hpp index b00092440e..c52ab3b30e 100644 --- a/ql/experimental/commodities/commoditycashflow.hpp +++ b/ql/experimental/commodities/commoditycashflow.hpp @@ -86,8 +86,10 @@ namespace QuantLib { typedef std::map > CommodityCashFlows; + #ifndef __DOXYGEN__ std::ostream& operator<<(std::ostream& out, const CommodityCashFlows& cashFlows); + #endif } diff --git a/ql/experimental/commodities/energybasisswap.cpp b/ql/experimental/commodities/energybasisswap.cpp index ba3a515fad..c3ead7ebf2 100644 --- a/ql/experimental/commodities/energybasisswap.cpp +++ b/ql/experimental/commodities/energybasisswap.cpp @@ -86,7 +86,7 @@ namespace QuantLib { paymentCashFlows_.clear(); Date evaluationDate = Settings::instance().evaluationDate(); - Date endDate = calendar_.adjust(pricingPeriods_.back()->endDate()); + const Currency& baseCurrency = CommoditySettings::instance().currency(); const UnitOfMeasure baseUnitOfMeasure = diff --git a/ql/experimental/commodities/energycommodity.hpp b/ql/experimental/commodities/energycommodity.hpp index 6fbe784da2..b6ab69ce13 100644 --- a/ql/experimental/commodities/energycommodity.hpp +++ b/ql/experimental/commodities/energycommodity.hpp @@ -51,8 +51,10 @@ namespace QuantLib { typedef std::map EnergyDailyPositions; + #ifndef __DOXYGEN__ std::ostream& operator<<(std::ostream& out, const EnergyDailyPositions& dailyPositions); + #endif diff --git a/ql/experimental/commodities/energyvanillaswap.cpp b/ql/experimental/commodities/energyvanillaswap.cpp index 6c95de1109..6d8b43936f 100644 --- a/ql/experimental/commodities/energyvanillaswap.cpp +++ b/ql/experimental/commodities/energyvanillaswap.cpp @@ -74,7 +74,7 @@ namespace QuantLib { paymentCashFlows_.clear(); Date evaluationDate = Settings::instance().evaluationDate(); - Date endDate = calendar_.adjust(pricingPeriods_.back()->endDate()); + const Currency& baseCurrency = CommoditySettings::instance().currency(); const UnitOfMeasure baseUnitOfMeasure = diff --git a/ql/experimental/commodities/unitofmeasureconversionmanager.hpp b/ql/experimental/commodities/unitofmeasureconversionmanager.hpp index 117c7f601e..de2fad7bda 100644 --- a/ql/experimental/commodities/unitofmeasureconversionmanager.hpp +++ b/ql/experimental/commodities/unitofmeasureconversionmanager.hpp @@ -31,12 +31,13 @@ namespace QuantLib { + //! repository of conversion factors between units of measure + /*! \test lookup of direct unit of measure conversion is tested. */ class UnitOfMeasureConversionManager : public Singleton { friend class Singleton; public: - UnitOfMeasureConversionManager(); UnitOfMeasureConversion lookup( const CommodityType& commodityType, const UnitOfMeasure&, @@ -48,6 +49,7 @@ namespace QuantLib { private: std::list data_; + UnitOfMeasureConversionManager(); void addKnownConversionFactors(); UnitOfMeasureConversion directLookup(const CommodityType& commodityType, const UnitOfMeasure& source, diff --git a/ql/experimental/convertiblebonds/convertiblebond.cpp b/ql/experimental/convertiblebonds/convertiblebond.cpp index 8e1f652faa..5de42aa2da 100644 --- a/ql/experimental/convertiblebonds/convertiblebond.cpp +++ b/ql/experimental/convertiblebonds/convertiblebond.cpp @@ -44,6 +44,14 @@ namespace QuantLib { maturityDate_ = schedule.endDate(); + if (!callability.empty()) { + QL_REQUIRE(callability.back()->date() <= maturityDate_, + "last callability date (" + << callability.back()->date() + << ") later than maturity (" + << maturityDate_ << ")"); + } + registerWith(creditSpread); } diff --git a/ql/experimental/coupons/Makefile.am b/ql/experimental/coupons/Makefile.am index f1600a4aa1..46cbe998f6 100644 --- a/ql/experimental/coupons/Makefile.am +++ b/ql/experimental/coupons/Makefile.am @@ -4,10 +4,12 @@ AM_CPPFLAGS = -I${top_srcdir} -I${top_builddir} this_includedir=${includedir}/${subdir} this_include_HEADERS = \ all.hpp \ + proxyibor.hpp \ quantocouponpricer.hpp \ subperiodcoupons.hpp libCoupons_la_SOURCES = \ + proxyibor.cpp \ quantocouponpricer.cpp \ subperiodcoupons.cpp diff --git a/ql/experimental/coupons/all.hpp b/ql/experimental/coupons/all.hpp index acdd758221..6eb4eaeaf4 100644 --- a/ql/experimental/coupons/all.hpp +++ b/ql/experimental/coupons/all.hpp @@ -1,6 +1,7 @@ /* This file is automatically generated; do not edit. */ /* Add the files to be included into Makefile.am instead. */ +#include #include #include diff --git a/ql/experimental/coupons/proxyibor.cpp b/ql/experimental/coupons/proxyibor.cpp new file mode 100644 index 0000000000..e0dfd9c4de --- /dev/null +++ b/ql/experimental/coupons/proxyibor.cpp @@ -0,0 +1,41 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2010 Ferdinando Ametrano + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + ProxyIbor::ProxyIbor(const std::string& familyName, + const Period& tenor, + Natural settlementDays, + const Currency& currency, + const Calendar& fixingCalendar, + BusinessDayConvention convention, + bool endOfMonth, + const DayCounter& dayCounter, + const Handle& gearing, + const boost::shared_ptr& iborIndex, + const Handle& spread) + : IborIndex(familyName, tenor, settlementDays, currency, + fixingCalendar, convention, endOfMonth, dayCounter), + gearing_(gearing), iborIndex_(iborIndex), spread_(spread) { + registerWith(iborIndex_); + } + +} diff --git a/ql/experimental/coupons/proxyibor.hpp b/ql/experimental/coupons/proxyibor.hpp new file mode 100644 index 0000000000..1b7b148e0f --- /dev/null +++ b/ql/experimental/coupons/proxyibor.hpp @@ -0,0 +1,61 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2010 Ferdinando Ametrano + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file proxyibor.hpp + \brief IborIndex calculated as proxy of some other IborIndex +*/ + +#ifndef quantlib_proxyibor_hpp +#define quantlib_proxyibor_hpp + +#include + +namespace QuantLib { + + //! IborIndex calculated as proxy of some other IborIndex + class ProxyIbor : public IborIndex { + public: + ProxyIbor(const std::string& familyName, + const Period& tenor, + Natural settlementDays, + const Currency& currency, + const Calendar& fixingCalendar, + BusinessDayConvention convention, + bool endOfMonth, + const DayCounter& dayCounter, + const Handle& gearing, + const boost::shared_ptr& iborIndex, + const Handle& spread); + private: + // overload + Rate forecastFixing(const Date& fixingDate) const; + + Handle gearing_; + boost::shared_ptr iborIndex_; + Handle spread_; + }; + + inline Rate ProxyIbor::forecastFixing(const Date& fixingDate) const { + Rate proxy = iborIndex_->fixing(fixingDate); + return gearing_->value() * proxy * spread_->value(); + } + +} + +#endif diff --git a/ql/experimental/credit/basket.cpp b/ql/experimental/credit/basket.cpp index 80d0b4cbe4..90b22db843 100644 --- a/ql/experimental/credit/basket.cpp +++ b/ql/experimental/credit/basket.cpp @@ -256,7 +256,6 @@ namespace QuantLib { void Basket::updateScenarioLoss(bool zeroRecovery) { calculate(); - Date today = Settings::instance().evaluationDate(); for (Size i = 0; i < names_.size(); i++) { if (zeroRecovery) scenarioLoss_[i].amount = notionals_[i]; diff --git a/ql/experimental/credit/recursivecdoengine.hpp b/ql/experimental/credit/recursivecdoengine.hpp index 5508c90ae5..98845d91c7 100644 --- a/ql/experimental/credit/recursivecdoengine.hpp +++ b/ql/experimental/credit/recursivecdoengine.hpp @@ -20,7 +20,6 @@ #ifndef recursive_cdo_engine_hpp #define recursive_cdo_engine_hpp -#include #include #include #include @@ -59,13 +58,13 @@ namespace QuantLib { } //! Correlation name to name single factor construction - RecursiveCdoEngine(const Handle& correl, + RecursiveCdoEngine(const Handle& correl, const Matrix& correlMtrx, Size nbuckets = 1, Size quadOrder = 20) : correlQuote_(correl), copula_(), nBuckets_(nbuckets), integral_(quadOrder), wk_(), - oneFactorCorrels_(factorReduction(Matrix(correlMtrx))) + oneFactorCorrels_(factorReduction(correlMtrx)) { // at least QL_REQUIRE(!oneFactorCorrels_.empty(), diff --git a/ql/experimental/credit/riskybond.cpp b/ql/experimental/credit/riskybond.cpp index 5d40b26ddd..5abe00d14a 100644 --- a/ql/experimental/credit/riskybond.cpp +++ b/ql/experimental/credit/riskybond.cpp @@ -142,7 +142,7 @@ namespace QuantLib { FixedRateCoupon(dates[i], previousNotional, rate_, dayCounter_, dates[i-1], dates[i])); boost::shared_ptr amortization(new - SimpleCashFlow(previousNotional - currentNotional, dates[i])); + AmortizingPayment(previousNotional - currentNotional, dates[i])); previousNotional = currentNotional; leg_.push_back(interest); @@ -154,7 +154,7 @@ namespace QuantLib { } boost::shared_ptr redemption(new - SimpleCashFlow(previousNotional, schedule_.dates().back())); + Redemption(previousNotional, schedule_.dates().back())); leg_.push_back(redemption); redemptionLeg_.push_back(redemption); } @@ -220,7 +220,7 @@ namespace QuantLib { IborCoupon(dates[i], previousNotional, dates[i-1], dates[i], fixingDays_, index_, 1.0, spread_)); boost::shared_ptr amortization(new - SimpleCashFlow(previousNotional - currentNotional, dates[i])); + AmortizingPayment(previousNotional - currentNotional, dates[i])); previousNotional = currentNotional; leg_.push_back(interest); @@ -232,7 +232,7 @@ namespace QuantLib { } boost::shared_ptr redemption(new - SimpleCashFlow(previousNotional, schedule_.dates().back())); + Redemption(previousNotional, schedule_.dates().back())); leg_.push_back(redemption); redemptionLeg_.push_back(redemption); diff --git a/ql/experimental/exoticoptions/Makefile.am b/ql/experimental/exoticoptions/Makefile.am index b0d5e78d8b..0f80c3448c 100644 --- a/ql/experimental/exoticoptions/Makefile.am +++ b/ql/experimental/exoticoptions/Makefile.am @@ -7,27 +7,40 @@ this_include_HEADERS = \ analyticamericanmargrabeengine.hpp \ analyticeuropeanmargrabeengine.hpp \ analyticsimplechooserengine.hpp \ + analytictwoassetbarrierengine.hpp \ + analyticwriterextensibleoptionengine.hpp \ + continuousarithmeticasianlevyengine.hpp \ everestoption.hpp \ himalayaoption.hpp \ + kirkspreadoptionengine.hpp \ margrabeoption.hpp \ mceverestengine.hpp \ mchimalayaengine.hpp \ mcpagodaengine.hpp \ pagodaoption.hpp \ - simplechooseroption.hpp + simplechooseroption.hpp \ + spreadoption.hpp \ + twoassetbarrieroption.hpp \ + writerextensibleoption.hpp libExoticOptions_la_SOURCES = \ analyticamericanmargrabeengine.cpp \ analyticeuropeanmargrabeengine.cpp \ analyticsimplechooserengine.cpp \ + analytictwoassetbarrierengine.cpp \ + analyticwriterextensibleoptionengine.cpp \ + continuousarithmeticasianlevyengine.cpp \ everestoption.cpp \ himalayaoption.cpp \ + kirkspreadoptionengine.cpp \ margrabeoption.cpp \ mceverestengine.cpp \ mchimalayaengine.cpp \ mcpagodaengine.cpp \ pagodaoption.cpp \ - simplechooseroption.cpp + simplechooseroption.cpp \ + twoassetbarrieroption.cpp \ + writerextensibleoption.cpp noinst_LTLIBRARIES = libExoticOptions.la diff --git a/ql/experimental/exoticoptions/all.hpp b/ql/experimental/exoticoptions/all.hpp index 17d63f6ce6..f23fb54fdc 100644 --- a/ql/experimental/exoticoptions/all.hpp +++ b/ql/experimental/exoticoptions/all.hpp @@ -4,12 +4,19 @@ #include #include #include +#include +#include +#include #include #include +#include #include #include #include #include #include #include +#include +#include +#include diff --git a/ql/experimental/exoticoptions/analytictwoassetbarrierengine.cpp b/ql/experimental/exoticoptions/analytictwoassetbarrierengine.cpp new file mode 100644 index 0000000000..7ef5364b07 --- /dev/null +++ b/ql/experimental/exoticoptions/analytictwoassetbarrierengine.cpp @@ -0,0 +1,244 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include +#include +#include + +namespace QuantLib { + + AnalyticTwoAssetBarrierEngine::AnalyticTwoAssetBarrierEngine( + const boost::shared_ptr& process1, + const boost::shared_ptr& process2, + const Handle& rho) + : process1_(process1), process2_(process2), rho_(rho) { + registerWith(process1_); + registerWith(process2_); + registerWith(rho_); + } + + void AnalyticTwoAssetBarrierEngine::calculate() const { + boost::shared_ptr payoff = + boost::dynamic_pointer_cast(arguments_.payoff); + QL_REQUIRE(payoff, "non-plain payoff given"); + QL_REQUIRE(payoff->strike()>0.0,"strike must be positive"); + + Real strike = payoff->strike(); + Real spot2 = process2_->x0(); + // option is triggered by S2 + QL_REQUIRE(spot2 >= 0.0, "negative or null underlying given"); + QL_REQUIRE(!triggered(spot2), "barrier touched"); + + Barrier::Type barrierType = arguments_.barrierType; + + switch (payoff->optionType()) { + case Option::Call: + switch (barrierType) { + case Barrier::DownOut: + results_.value = A(1,-1) +B(1,-1) ; + break; + case Barrier::UpOut: + results_.value = A(1,1) + B(1,1) ; + break; + case Barrier::DownIn: + results_.value = call()-(A(1,-1) +B(1,-1) ); + break; + case Barrier::UpIn: + results_.value = call()-(A(1,1) +B(1,1)); + break; + } + break; + case Option::Put: + switch (barrierType) { + case Barrier::DownOut: + results_.value = A(-1,-1)+B(-1,-1) ; + break; + case Barrier::UpOut: + results_.value = A(-1,1)+B(-1,1) ; + break; + case Barrier::DownIn: + results_.value = put()-(A(-1,-1) +B(-1,-1) ); + break; + case Barrier::UpIn: + results_.value = put()-(A(-1,1) +B(-1,1) ); + break; + } + break; + default: + QL_FAIL("unknown type"); + } + } + + Real AnalyticTwoAssetBarrierEngine::underlying1() const { + return process1_->x0(); + } + + Real AnalyticTwoAssetBarrierEngine::underlying2() const { + return process2_->x0(); + } + + Real AnalyticTwoAssetBarrierEngine::strike() const { + boost::shared_ptr payoff = + boost::dynamic_pointer_cast(arguments_.payoff); + QL_REQUIRE(payoff, "non-plain payoff given"); + return payoff->strike(); + } + + Time AnalyticTwoAssetBarrierEngine::residualTime() const { + return process1_->time(arguments_.exercise->lastDate()); + } + + Volatility AnalyticTwoAssetBarrierEngine::volatility1() const { + return process1_->blackVolatility()->blackVol(residualTime(), strike()); + } + + Volatility AnalyticTwoAssetBarrierEngine::volatility2() const { + return process2_->blackVolatility()->blackVol(residualTime(), strike()); + } + + Real AnalyticTwoAssetBarrierEngine::barrier() const { + return arguments_.barrier; + } + + Real AnalyticTwoAssetBarrierEngine::rho() const { + return rho_->value(); + } + + Rate AnalyticTwoAssetBarrierEngine::riskFreeRate() const { + return process1_->riskFreeRate()->zeroRate(residualTime(), + Continuous, NoFrequency); + } + + + Rate AnalyticTwoAssetBarrierEngine::dividendYield1() const { + return process1_->dividendYield()->zeroRate(residualTime(), + Continuous, NoFrequency); + } + + Rate AnalyticTwoAssetBarrierEngine::dividendYield2() const { + return process2_->dividendYield()->zeroRate(residualTime(), + Continuous, NoFrequency); + } + + Rate AnalyticTwoAssetBarrierEngine::costOfCarry1() const { + return riskFreeRate() - dividendYield1(); + } + + Rate AnalyticTwoAssetBarrierEngine::costOfCarry2() const { + return riskFreeRate() - dividendYield2(); + } + + Real AnalyticTwoAssetBarrierEngine::d1() const { + return (std::log(underlying1()/strike())+(mu(costOfCarry1(),volatility1())+volatility1()*volatility1())*residualTime())/ + (volatility1()*std::sqrt(residualTime())); + } + + Real AnalyticTwoAssetBarrierEngine::d2() const { + return d1() - volatility1()*std::sqrt(residualTime()); + } + + Real AnalyticTwoAssetBarrierEngine::d3() const { + return d1()+ (2*rho()*std::log(barrier()/underlying2()))/(volatility2()*std::sqrt(residualTime())); + } + + Real AnalyticTwoAssetBarrierEngine::d4() const { + return d2()+ (2*rho()*std::log(barrier()/underlying2()))/(volatility2()*std::sqrt(residualTime())); + } + + Real AnalyticTwoAssetBarrierEngine::e1() const { + return (std::log(barrier()/underlying2())-(mu(costOfCarry2(),volatility2())+rho()*volatility1()*volatility2())*residualTime())/ + (volatility2()*std::sqrt(residualTime())); + } + + Real AnalyticTwoAssetBarrierEngine::e2() const { + return e1()+rho()*volatility1()*std::sqrt(residualTime()); + } + + Real AnalyticTwoAssetBarrierEngine::e3() const { + return e1()-(2*std::log(barrier()/underlying2()))/(volatility2()*std::sqrt(residualTime())); + } + + Real AnalyticTwoAssetBarrierEngine::e4() const { + return e2()-(2*std::log(barrier()/underlying2()))/(volatility2()*std::sqrt(residualTime())); + } + + Real AnalyticTwoAssetBarrierEngine::mu(Real b, Real vol) const { + return b-(vol*vol)/2; + } + + Real AnalyticTwoAssetBarrierEngine::call() const { + CumulativeNormalDistribution nd; + return underlying1()*nd(d1())-strike()*std::exp(-riskFreeRate()*residualTime())*nd(d2()); + } + + Real AnalyticTwoAssetBarrierEngine::put() const { + CumulativeNormalDistribution nd; + return strike()*std::exp(-riskFreeRate()*residualTime())*nd(-d2())-underlying1()*nd(-d1()); + } + + Real AnalyticTwoAssetBarrierEngine::A(Real eta, Real phi) const { + Real S1 = underlying1(), S2 = underlying2(); + Rate b1 = costOfCarry1(), b2 = costOfCarry2(); + Rate r = riskFreeRate(); + Time T = residualTime(); + Real H = barrier(), X = strike(); + Volatility sigma1 = volatility1(), sigma2 = volatility2(); + Real rho = rho_->value(); + + Rate mu1 = b1 - sigma1*sigma1/2.0; + Rate mu2 = b2 - sigma2*sigma2/2.0; + + Real d1 = (std::log(S1/X)+(mu1+sigma1*sigma1)*T)/ + (sigma1*std::sqrt(T)); + Real d2 = d1 - sigma1*std::sqrt(T); + Real d3 = d1 + (2*rho*std::log(H/S2))/(sigma2*std::sqrt(T)); + Real d4 = d2 + (2*rho*std::log(H/S2))/(sigma2*std::sqrt(T)); + + Real e1 = (std::log(H/S2)-(mu2+rho*sigma1*sigma2)*T)/ + (sigma2*std::sqrt(T)); + Real e2 = e1 + rho*sigma1*std::sqrt(T); + Real e3 = e1 - (2*std::log(H/S2))/(sigma2*std::sqrt(T)); + Real e4 = e2 - (2*std::log(H/S2))/(sigma2*std::sqrt(T)); + + Real w = + eta*S1*std::exp((b1-r)*T) * + (M(eta*d1, phi*e1,-eta*phi*rho) + -std::exp((2*(mu2+rho*sigma1*sigma2)*std::log(H/S2))/(sigma2*sigma2)) + *M(eta*d3, phi*e3, -eta*phi*rho)) + + - eta*X*std::exp(-r*T) * + (M(eta*d2, phi*e2, -eta*phi*rho) + -std::exp((2*mu2*std::log(H/S2))/(sigma2*sigma2))* + M(eta*d4, phi*e4, -eta*phi*rho) ) ; + + return w; + } + + Real AnalyticTwoAssetBarrierEngine::B(Real eta, Real phi) const { + return 0.0; + } + + Real AnalyticTwoAssetBarrierEngine::M(Real m_a, Real m_b, Real rho) const { + BivariateCumulativeNormalDistributionDr78 f(rho); + return f(m_a, m_b); + } + +} + diff --git a/ql/experimental/exoticoptions/analytictwoassetbarrierengine.hpp b/ql/experimental/exoticoptions/analytictwoassetbarrierengine.hpp new file mode 100644 index 0000000000..72334c4e32 --- /dev/null +++ b/ql/experimental/exoticoptions/analytictwoassetbarrierengine.hpp @@ -0,0 +1,99 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file analytictwoassetbarrierengine.hpp + \brief Analytic engine for barrier option on two assets +*/ + +#ifndef quantlib_analytic_two_asset_barrier_engine_hpp +#define quantlib_analytic_two_asset_barrier_engine_hpp + +#include +#include + +namespace QuantLib { + + //! Analytic engine for barrier option on two assets + /*! The formulas are taken from "Option pricing formulas", + E.G. Haug, McGraw-Hill, + + \ingroup barrierengines + + \test the correctness of the returned value is tested by + reproducing results available in literature. + */ + class AnalyticTwoAssetBarrierEngine + : public TwoAssetBarrierOption::engine { + public: + AnalyticTwoAssetBarrierEngine( + const boost::shared_ptr& process1, + const boost::shared_ptr& process2, + const Handle& rho); + void calculate() const; + private: + boost::shared_ptr process1_; + boost::shared_ptr process2_; + Handle rho_; + + // helper methods + Real underlying1() const; + Real underlying2() const; + + Real strike() const; + Time residualTime() const; + + Volatility volatility1() const; + Volatility volatility2() const; + + Real barrier() const; + Real rho() const; + + Rate riskFreeRate() const; + + Rate dividendYield1() const; + Rate dividendYield2() const; + + Rate costOfCarry1() const; + Rate costOfCarry2() const; + + Real mu(Real b, Real vol) const; + + Real d1() const; + Real d2() const; + Real d3() const; + Real d4() const; + + Real e1() const; + Real e2() const; + Real e3() const; + Real e4() const; + + Real call() const; + Real put() const; + + Real A(Real eta, Real phi) const; + Real B(Real eta, Real phi) const; + + Real M(Real m_a, Real m_b,Real rho) const; + }; + +} + + +#endif diff --git a/ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.cpp b/ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.cpp new file mode 100644 index 0000000000..fcda2148a6 --- /dev/null +++ b/ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.cpp @@ -0,0 +1,130 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include +#include + +using namespace std; + +namespace QuantLib { + + AnalyticWriterExtensibleOptionEngine::AnalyticWriterExtensibleOptionEngine( + const boost::shared_ptr& process) + : process_(process) { + registerWith(process_); + } + + void AnalyticWriterExtensibleOptionEngine::calculate() const { + // We take all the arguments: + + boost::shared_ptr payoff1 = + boost::dynamic_pointer_cast(arguments_.payoff); + QL_REQUIRE(payoff1, "not a plain vanilla payoff"); + + boost::shared_ptr payoff2 = + boost::dynamic_pointer_cast(arguments_.payoff2); + QL_REQUIRE(payoff2, "not a plain vanilla payoff"); + + boost::shared_ptr exercise1 = arguments_.exercise; + + boost::shared_ptr exercise2 = arguments_.exercise2; + + + // We create and apply the calculate process: + + Option::Type type = payoff1->optionType(); + + // STEP 1: + + // S = spot + Real spot = process_->stateVariable()->value(); + + // For the B&S formulae: + DayCounter dividendDC = process_->dividendYield()->dayCounter(); + Rate dividend = process_->dividendYield()->zeroRate( + exercise1->lastDate(), dividendDC, Continuous, NoFrequency); + + DayCounter riskFreeDC = process_->riskFreeRate()->dayCounter(); + Rate riskFree = process_->riskFreeRate()->zeroRate( + exercise1->lastDate(), riskFreeDC, Continuous, NoFrequency); + + // The time to maturity: + Time t1 = riskFreeDC.yearFraction( + process_->riskFreeRate()->referenceDate(), + arguments_.exercise->lastDate()); + Time t2 = riskFreeDC.yearFraction( + process_->riskFreeRate()->referenceDate(), + arguments_.exercise2->lastDate()); + + // b = r-q: + Real b = riskFree - dividend; + + Real forwardPrice = spot * std::exp(b*t1); + + Volatility volatility = process_->blackVolatility()->blackVol( + exercise1->lastDate(), payoff1->strike()); + + Real stdDev = volatility*std::sqrt(t1); + + Real discount = std::exp(-riskFree*t1); + + // Call the B&S method: + Real black = blackFormula(type, payoff1->strike(), + forwardPrice, stdDev, discount); + + // STEP 2: + + // Standard bivariate normal distribution: + Real ro = std::sqrt(t1/t2); + Real z1 = (std::log(spot/payoff2->strike()) + + (b+std::pow(volatility, 2)/2)*t2)/(volatility*std::sqrt(t2)); + Real z2 = (std::log(spot/payoff1->strike()) + + (b+std::pow(volatility, 2)/2)*t1)/(volatility*std::sqrt(t1)); + + // Call the bivariate method: + BivariateCumulativeNormalDistributionWe04DP biv(-ro); + + + // STEP 3: + + Real bivariate1, bivariate2, result; + + // Final computing: + if (type == Option::Call) { + // Call case: + bivariate1 = biv(z1, -z2); + bivariate2 = biv(z1-volatility*std::sqrt(t2), + -z2+volatility*std::sqrt(t1)); + result = black + spot*std::exp((b-riskFree)*t2)*bivariate1 + - payoff2->strike()*std::exp((-riskFree)*t2)*bivariate2; + } else { + // Put case: + bivariate1 = biv(-z1, z2); + bivariate2 = biv(-z1+volatility*std::sqrt(t2), + z2-volatility*std::sqrt(t1)); + result = black - spot*std::exp((b-riskFree)*t2)*bivariate1 + + payoff2->strike()*std::exp((-riskFree)*t2)*bivariate2; + } + + // Save the result: + results_.value = result; + } + +} diff --git a/ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.hpp b/ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.hpp new file mode 100644 index 0000000000..7b91ef6d61 --- /dev/null +++ b/ql/experimental/exoticoptions/analyticwriterextensibleoptionengine.hpp @@ -0,0 +1,45 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file analyticwriterextensibleoptionengine.hpp + \brief Analytic engine for writer-extensible options +*/ + +#ifndef quantlib_analytic_writer_extensible_option_engine_hpp +#define quantlib_analytic_writer_extensible_option_engine_hpp + +#include +#include + +namespace QuantLib { + + //! Analytic engine for writer-extensible options + class AnalyticWriterExtensibleOptionEngine + : public WriterExtensibleOption::engine { + public: + AnalyticWriterExtensibleOptionEngine( + const boost::shared_ptr& process); + void calculate() const; + private: + boost::shared_ptr process_; + }; + +} + +#endif diff --git a/ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.cpp b/ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.cpp new file mode 100644 index 0000000000..43b5234b2e --- /dev/null +++ b/ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.cpp @@ -0,0 +1,106 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include +#include +#include + +using namespace std; + +namespace QuantLib { + + ContinuousArithmeticAsianLevyEngine::ContinuousArithmeticAsianLevyEngine( + const boost::shared_ptr& process, + const Handle& currentAverage, + Date startDate) + : process_(process), currentAverage_(currentAverage), + startDate_(startDate) { + registerWith(process_); + registerWith(currentAverage_); + } + + void ContinuousArithmeticAsianLevyEngine::calculate() const { + QL_REQUIRE(arguments_.averageType == Average::Arithmetic, + "not an Arithmetic average option"); + QL_REQUIRE(arguments_.exercise->type() == Exercise::European, + "not an European Option"); + + DayCounter rfdc = process_->riskFreeRate()->dayCounter(); + DayCounter divdc = process_->dividendYield()->dayCounter(); + DayCounter voldc = process_->blackVolatility()->dayCounter(); + Real spot = process_->stateVariable()->value(); + + // payoff + boost::shared_ptr payoff = + boost::dynamic_pointer_cast(arguments_.payoff); + QL_REQUIRE(payoff, "non-plain payoff given"); + + // original time to maturity + Date maturity = arguments_.exercise->lastDate(); + Time T = rfdc.yearFraction(startDate_, + arguments_.exercise->lastDate()); + // remaining time to maturity + Time T2 = rfdc.yearFraction(process_->riskFreeRate()->referenceDate(), + arguments_.exercise->lastDate()); + + Real strike = payoff->strike(); + + Volatility volatility = + process_->blackVolatility()->blackVol(maturity, strike); + + CumulativeNormalDistribution N; + + Rate riskFreeRate = process_->riskFreeRate()-> + zeroRate(maturity, rfdc, Continuous, NoFrequency); + Rate dividendYield = process_->dividendYield()-> + zeroRate(maturity, divdc, Continuous, NoFrequency); + Real b = riskFreeRate - dividendYield; + QL_REQUIRE(b != 0.0, "null cost of carry not allowed by Levy engine"); + + Real Se = (spot/(T*b))*(exp((b-riskFreeRate)*T2)-exp(-riskFreeRate*T2)); + + Real X; + if (T2 < T) { + QL_REQUIRE(!currentAverage_.empty() && currentAverage_->isValid(), + "current average required"); + X = strike - ((T-T2)/T)*currentAverage_->value(); + } else { + X = strike; + } + + Real M = (2*spot*spot/(b+volatility*volatility)) * + (((exp((2*b+volatility*volatility)*T2)-1) + / (2*b+volatility*volatility))-((exp(b*T2)-1)/b)); + + Real D = M/(T*T); + + Real V = log(D)-2*(riskFreeRate*T2+log(Se)); + + Real d1 = (1/sqrt(V))*((log(D)/2)-log(X)); + Real d2 = d1-sqrt(V); + + if(payoff->optionType()==Option::Call) + results_.value = Se*N(d1) - X*exp(-riskFreeRate*T2)*N(d2); + else + results_.value = Se*N(d1) - X*exp(-riskFreeRate*T2)*N(d2) + - Se + X*exp(-riskFreeRate*T2); + } + +} diff --git a/ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.hpp b/ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.hpp new file mode 100644 index 0000000000..244baaffb9 --- /dev/null +++ b/ql/experimental/exoticoptions/continuousarithmeticasianlevyengine.hpp @@ -0,0 +1,49 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file continuousarithmeticasianlevyengine.hpp + \brief Levy engine for continuous arithmetic Asian options +*/ + +#ifndef quantlib_continuous_arithmetic_asian_levy_engine_hpp +#define quantlib_continuous_arithmetic_asian_levy_engine_hpp + +#include +#include + +namespace QuantLib { + + class ContinuousArithmeticAsianLevyEngine + : public ContinuousAveragingAsianOption::engine { + public: + ContinuousArithmeticAsianLevyEngine( + const boost::shared_ptr& process, + const Handle& currentAverage, + Date startDate); + void calculate() const; + private: + boost::shared_ptr process_; + Handle currentAverage_ ; + Date startDate_; + }; + +} + + +#endif diff --git a/ql/experimental/exoticoptions/kirkspreadoptionengine.cpp b/ql/experimental/exoticoptions/kirkspreadoptionengine.cpp new file mode 100644 index 0000000000..fe932a61e3 --- /dev/null +++ b/ql/experimental/exoticoptions/kirkspreadoptionengine.cpp @@ -0,0 +1,97 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include +#include + +using namespace std; + +namespace QuantLib { + + KirkSpreadOptionEngine::KirkSpreadOptionEngine( + const boost::shared_ptr& process1, + const boost::shared_ptr& process2, + const Handle& correlation) + : process1_(process1), process2_(process2), rho_(correlation) { + registerWith(process1_); + registerWith(process2_); + registerWith(rho_); + } + + void KirkSpreadOptionEngine::calculate() const { + + // First: tests on types + QL_REQUIRE(arguments_.exercise->type() == Exercise::European, + "not an European Option"); + + boost::shared_ptr payoff = + boost::dynamic_pointer_cast(arguments_.payoff); + QL_REQUIRE(payoff, "not a plain-vanilla payoff"); + + // forward values - futures, so b=0 + Real forward1 = process1_->stateVariable()->value(); + Real forward2 = process2_->stateVariable()->value(); + + Date exerciseDate = arguments_.exercise->lastDate(); + + // Volatilities + Real sigma1 = + process1_->blackVolatility()->blackVol(exerciseDate,forward1); + Real sigma2 = + process2_->blackVolatility()->blackVol(exerciseDate,forward2); + + DiscountFactor riskFreeDiscount = + process1_->riskFreeRate()->discount(exerciseDate); + + Real strike = payoff->strike(); + + // Unique F (forward) value for pricing + Real F = forward1/(forward2+strike); + + // Its volatility + Real sigma = + sqrt(pow(sigma1,2) + + pow((sigma2*(forward2/(forward2+strike))),2) + - 2*rho_->value()*sigma1*sigma2*(forward2/(forward2+strike))); + + // Day counter and Dates handling variables + DayCounter rfdc = process1_->riskFreeRate()->dayCounter(); + Time t = rfdc.yearFraction(process1_->riskFreeRate()->referenceDate(), + arguments_.exercise->lastDate()); + + // Black-Scholes solution values + Real d1 = (log(F)+ 0.5*pow(sigma,2)*t) / (sigma*sqrt(t)); + Real d2 = d1 - sigma*sqrt(t); + + CumulativeNormalDistribution cum; + Real Nd1 = cum(d1); + Real Nd2 = cum(d2); + Real NMd1 = cum(-d1); + Real NMd2 = cum(-d2); + + if (payoff->optionType()==Option::Call) { + results_.value = riskFreeDiscount*(F*Nd1-Nd2)*(forward2+strike); + } else { + results_.value = riskFreeDiscount*(NMd2 -F*NMd1)*(forward2+strike); + } + } + +} + diff --git a/ql/experimental/exoticoptions/kirkspreadoptionengine.hpp b/ql/experimental/exoticoptions/kirkspreadoptionengine.hpp new file mode 100644 index 0000000000..3650ea3e4d --- /dev/null +++ b/ql/experimental/exoticoptions/kirkspreadoptionengine.hpp @@ -0,0 +1,48 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file kirkspreadoptionengine.hpp + \brief Kirk approximation for European spread option on futures +*/ + +#ifndef quantlib_kirk_spread_option_engine_hpp +#define quantlib_kirk_spread_option_engine_hpp + +#include +#include + +namespace QuantLib { + + //! Kirk approximation for European spread option on futures + class KirkSpreadOptionEngine : public SpreadOption::engine { + public: + KirkSpreadOptionEngine( + const boost::shared_ptr& process1, + const boost::shared_ptr& process2, + const Handle& correlation); + void calculate() const; + private: + boost::shared_ptr process1_; + boost::shared_ptr process2_; + Handle rho_; + }; + +} + +#endif diff --git a/ql/experimental/exoticoptions/simplechooseroption.hpp b/ql/experimental/exoticoptions/simplechooseroption.hpp index 5788b8fb91..314524e566 100644 --- a/ql/experimental/exoticoptions/simplechooseroption.hpp +++ b/ql/experimental/exoticoptions/simplechooseroption.hpp @@ -17,8 +17,8 @@ FOR A PARTICULAR PURPOSE. See the license for more details. */ -/*! \file chooseroption.hpp - \brief Chooser option on a single asset +/*! \file simplechooseroption.hpp + \brief Simple chooser option on a single asset */ #ifndef quantlib_simple_chooser_option_hpp diff --git a/ql/experimental/exoticoptions/spreadoption.hpp b/ql/experimental/exoticoptions/spreadoption.hpp new file mode 100644 index 0000000000..56ad77b871 --- /dev/null +++ b/ql/experimental/exoticoptions/spreadoption.hpp @@ -0,0 +1,49 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file spreadoption.hpp + \brief Spread option on two assets +*/ + +#ifndef quantlib_spread_option_hpp +#define quantlib_spread_option_hpp + +#include +#include + +namespace QuantLib { + + //! Spread option on two assets + class SpreadOption : public MultiAssetOption { + public: + class engine; + SpreadOption(const boost::shared_ptr& payoff, + const boost::shared_ptr& exercise) + : MultiAssetOption(payoff, exercise) {} + }; + + //! %Spread option %engine base class + class SpreadOption::engine + : public GenericEngine {}; + +} + + +#endif diff --git a/ql/experimental/exoticoptions/twoassetbarrieroption.cpp b/ql/experimental/exoticoptions/twoassetbarrieroption.cpp new file mode 100644 index 0000000000..24f7aed907 --- /dev/null +++ b/ql/experimental/exoticoptions/twoassetbarrieroption.cpp @@ -0,0 +1,80 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include +#include + +namespace QuantLib { + + TwoAssetBarrierOption::TwoAssetBarrierOption( + Barrier::Type barrierType, + Real barrier, + const boost::shared_ptr& payoff, + const boost::shared_ptr& exercise) + : Option(payoff, exercise), barrierType_(barrierType), barrier_(barrier) {} + + void TwoAssetBarrierOption::setupArguments( + PricingEngine::arguments* args) const { + Option::setupArguments(args); + TwoAssetBarrierOption::arguments* moreArgs = + dynamic_cast(args); + QL_REQUIRE(moreArgs != 0, "wrong argument type"); + moreArgs->barrierType = barrierType_; + moreArgs->barrier = barrier_; + } + + bool TwoAssetBarrierOption::isExpired() const { + return detail::simple_event(exercise_->lastDate()).hasOccurred(); + } + + TwoAssetBarrierOption::arguments::arguments() + : barrierType(Barrier::Type(-1)), barrier(Null()) {} + + void TwoAssetBarrierOption::arguments::validate() const { + Option::arguments::validate(); + + switch (barrierType) { + case Barrier::DownIn: + case Barrier::UpIn: + case Barrier::DownOut: + case Barrier::UpOut: + break; + default: + QL_FAIL("unknown type"); + } + + QL_REQUIRE(barrier != Null(), "no barrier given"); + } + + bool TwoAssetBarrierOption::engine::triggered(Real underlying) const { + switch (arguments_.barrierType) { + case Barrier::DownIn: + case Barrier::DownOut: + return underlying < arguments_.barrier; + case Barrier::UpIn: + case Barrier::UpOut: + return underlying > arguments_.barrier; + default: + QL_FAIL("unknown type"); + } + } + +} + diff --git a/ql/experimental/exoticoptions/twoassetbarrieroption.hpp b/ql/experimental/exoticoptions/twoassetbarrieroption.hpp new file mode 100644 index 0000000000..99414d5695 --- /dev/null +++ b/ql/experimental/exoticoptions/twoassetbarrieroption.hpp @@ -0,0 +1,76 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file twoassetbarrieroption.hpp + \brief Barrier option on two assets +*/ + +#ifndef quantlib_two_asset_barrier_option_hpp +#define quantlib_two_asset_barrier_option_hpp + +#include +#include +#include + +namespace QuantLib { + + class GeneralizedBlackScholesProcess; + + //! %Barrier option on two assets + /*! \ingroup instruments */ + class TwoAssetBarrierOption : public Option { + public: + class arguments; + class engine; + TwoAssetBarrierOption( + Barrier::Type barrierType, + Real barrier, + const boost::shared_ptr& payoff, + const boost::shared_ptr& exercise); + + bool isExpired() const; + void setupArguments(PricingEngine::arguments*) const; + protected: + // arguments + Barrier::Type barrierType_; + Real barrier_; + }; + + + //! %Arguments for two-asset %barrier %option calculation + class TwoAssetBarrierOption::arguments : public Option::arguments { + public: + arguments(); + Barrier::Type barrierType; + Real barrier; + void validate() const; + }; + + //! %Two-asset barrier-option %engine base class + class TwoAssetBarrierOption::engine + : public GenericEngine { + protected: + bool triggered(Real underlying) const; + }; + +} + + +#endif diff --git a/ql/experimental/exoticoptions/writerextensibleoption.cpp b/ql/experimental/exoticoptions/writerextensibleoption.cpp new file mode 100644 index 0000000000..b0c54909cc --- /dev/null +++ b/ql/experimental/exoticoptions/writerextensibleoption.cpp @@ -0,0 +1,57 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include + +namespace QuantLib { + + WriterExtensibleOption::WriterExtensibleOption( + const boost::shared_ptr& payoff1, + const boost::shared_ptr& exercise1, + const boost::shared_ptr& payoff2, + const boost::shared_ptr& exercise2) + : OneAssetOption(payoff1, exercise1), + payoff2_(payoff2), exercise2_(exercise2) {} + + void WriterExtensibleOption::setupArguments( + PricingEngine::arguments* args) const { + OneAssetOption::setupArguments(args); + + WriterExtensibleOption::arguments* otherArguments = + dynamic_cast(args); + QL_REQUIRE(otherArguments != 0, "wrong arguments type"); + + otherArguments->payoff2 = payoff2_; + otherArguments->exercise2 = exercise2_; + } + + bool WriterExtensibleOption::isExpired() const { + return detail::simple_event(exercise2_->lastDate()).hasOccurred(); + } + + void WriterExtensibleOption::arguments::validate() const { + OneAssetOption::arguments::validate(); + QL_REQUIRE(payoff2, "no second payoff given"); + QL_REQUIRE(exercise2, "no second exercise given"); + QL_REQUIRE(exercise2->lastDate() > exercise->lastDate(), + "second exercise date is not later than the first"); + } + +} diff --git a/ql/experimental/exoticoptions/writerextensibleoption.hpp b/ql/experimental/exoticoptions/writerextensibleoption.hpp new file mode 100644 index 0000000000..2f4a3b4da8 --- /dev/null +++ b/ql/experimental/exoticoptions/writerextensibleoption.hpp @@ -0,0 +1,76 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Master IMAFA - Polytech'Nice Sophia - Université de Nice Sophia Antipolis + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file writerextensibleoption.hpp + \brief Writer-extensible option +*/ + +#ifndef quantlib_writer_extensible_option_hpp +#define quantlib_writer_extensible_option_hpp + +#include +#include +#include + +namespace QuantLib { + + //! Writer-extensible option + class WriterExtensibleOption : public OneAssetOption { + public: + class arguments; + class engine; + /*! + \param payoff1 The first payoff + \param exercise1 The first exercise date + \param payoff2 The payoff of the extended option + \param exercise2 The second exercise date + */ + WriterExtensibleOption( + const boost::shared_ptr& payoff1, + const boost::shared_ptr& exercise1, + const boost::shared_ptr& payoff2, + const boost::shared_ptr& exercise2); + // inspectors + boost::shared_ptr payoff2() { return payoff2_; } + boost::shared_ptr exercise2() { return exercise2_; }; + // Instrument interface + bool isExpired() const; + void setupArguments(PricingEngine::arguments*) const; + private: + boost::shared_ptr payoff2_; + boost::shared_ptr exercise2_; + }; + + //! Additional arguments for writer-extensible option + class WriterExtensibleOption::arguments + : public OneAssetOption::arguments { + public: + void validate() const; + boost::shared_ptr payoff2; + boost::shared_ptr exercise2; + }; + + //! Base engine + class WriterExtensibleOption::engine : + public GenericEngine {}; + +} + +#endif diff --git a/ql/experimental/finitedifferences/Makefile.am b/ql/experimental/finitedifferences/Makefile.am index a290d83352..e3a88cf36c 100644 --- a/ql/experimental/finitedifferences/Makefile.am +++ b/ql/experimental/finitedifferences/Makefile.am @@ -4,106 +4,44 @@ AM_CPPFLAGS = -I${top_srcdir} -I${top_builddir} this_includedir=${includedir}/${subdir} this_include_HEADERS = \ all.hpp \ - bicgstab.hpp \ - concentrating1dmesher.hpp \ - craigsneydscheme.hpp \ - dividendbarrieroption.hpp \ - douglasscheme.hpp \ - expliciteulerscheme.hpp \ - fdblackscholesasianengine.hpp \ - fdblackscholesbarrierengine.hpp \ - fdblackscholesrebateengine.hpp \ - fdblackscholesvanillaengine.hpp \ - fdhestonbarrierengine.hpp \ - fdhestonrebateengine.hpp \ - fdhestonvanillaengine.hpp \ - fdhestonhullwhitevanillaengine.hpp \ - fdm1dmesher.hpp \ - fdmamericanstepcondition.hpp \ - fdmarithmeticaveragecondition.hpp \ - fdmbackwardsolver.hpp \ - fdmblackscholesmesher.hpp \ - fdmblackscholesmultistrikemesher.hpp \ - fdmblackscholesop.hpp \ - fdmblackscholessolver.hpp \ - fdmdirichletboundary.hpp \ - fdmdividendhandler.hpp \ - fdmhestonhullwhiteop.hpp \ - fdmhestonhullwhitesolver.hpp \ - fdmhestonop.hpp \ - fdmhestonsolver.hpp \ - fdmhestonvariancemesher.hpp \ - fdmhullwhitemesher.hpp \ - fdminnervaluecalculator.hpp \ - fdmlinearop.hpp \ - fdmlinearopcomposite.hpp \ - fdmlinearopiterator.hpp \ - fdmlinearoplayout.hpp \ - fdmmesher.hpp \ - fdmmeshercomposite.hpp \ - fdmquantohelper.hpp \ - fdmsimple2dbssolver.hpp \ - fdmsnapshotcondition.hpp \ - fdmstepconditioncomposite.hpp \ - firstderivativeop.hpp \ - hundsdorferscheme.hpp \ - impliciteulerscheme.hpp \ - modifiedcraigsneydscheme.hpp \ - ninepointlinearop.hpp \ - secondderivativeop.hpp \ - secondordermixedderivativeop.hpp \ - sparseilupreconditioner.hpp \ - triplebandlinearop.hpp \ - uniform1dmesher.hpp \ - uniformgridmesher.hpp + dynprogvppintrinsicvalueengine.hpp \ + fdextoujumpvanillaengine.hpp \ + fdklugeextouspreadengine.hpp \ + fdmexpextouinnervaluecalculator.hpp \ + fdmextendedornsteinuhlenbeckop.hpp \ + fdmextoujumpmodelinnervalue.hpp \ + fdmextoujumpop.hpp \ + fdmextoujumpsolver.hpp \ + fdmklugeextouop.hpp \ + fdmklugeextousolver.hpp \ + fdmsimple2dextousolver.hpp \ + fdmsimple3dextoujumpsolver.hpp \ + fdmspreadpayoffinnervalue.hpp \ + fdmvppstartlimitstepcondition.hpp \ + fdmvppstepcondition.hpp \ + fdmvppstepconditionfactory.hpp \ + fdsimpleextoujumpswingengine.hpp \ + fdsimpleextoustorageengine.hpp \ + fdsimpleklugeextouvppengine.hpp \ + glued1dmesher.hpp \ + vanillavppoption.hpp libMultiDimFDM_la_SOURCES = \ - bicgstab.cpp \ - concentrating1dmesher.cpp \ - craigsneydscheme.cpp \ - dividendbarrieroption.cpp \ - douglasscheme.cpp \ - expliciteulerscheme.cpp \ - fdblackscholesasianengine.cpp \ - fdblackscholesbarrierengine.cpp \ - fdblackscholesrebateengine.cpp \ - fdblackscholesvanillaengine.cpp \ - fdhestonbarrierengine.cpp \ - fdhestonrebateengine.cpp \ - fdhestonvanillaengine.cpp \ - fdhestonhullwhitevanillaengine.cpp \ - fdmamericanstepcondition.cpp \ - fdmarithmeticaveragecondition.cpp \ - fdmbackwardsolver.cpp \ - fdmblackscholesmesher.cpp \ - fdmblackscholesmultistrikemesher.cpp \ - fdmblackscholesop.cpp \ - fdmblackscholessolver.cpp \ - fdmdirichletboundary.cpp \ - fdmdividendhandler.cpp \ - fdmhestonhullwhiteop.cpp \ - fdmhestonhullwhitesolver.cpp \ - fdmhestonop.cpp \ - fdmhestonsolver.cpp \ - fdmhestonvariancemesher.cpp \ - fdmhullwhitemesher.cpp \ - fdminnervaluecalculator.cpp \ - fdmlinearoplayout.cpp \ - fdmmeshercomposite.cpp \ - fdmquantohelper.cpp \ - fdmsimple2dbssolver.cpp \ - fdmsnapshotcondition.cpp \ - fdmstepconditioncomposite.cpp \ - firstderivativeop.cpp \ - hundsdorferscheme.cpp \ - impliciteulerscheme.cpp \ - modifiedcraigsneydscheme.cpp \ - ninepointlinearop.cpp \ - secondderivativeop.cpp \ - secondordermixedderivativeop.cpp \ - sparseilupreconditioner.cpp \ - triplebandlinearop.cpp \ - uniformgridmesher.cpp + dynprogvppintrinsicvalueengine.cpp \ + fdextoujumpvanillaengine.cpp \ + fdklugeextouspreadengine.cpp \ + fdmextendedornsteinuhlenbeckop.cpp \ + fdmextoujumpop.cpp \ + fdmextoujumpsolver.cpp \ + fdmklugeextouop.cpp \ + fdmvppstartlimitstepcondition.cpp \ + fdmvppstepcondition.cpp \ + fdmvppstepconditionfactory.cpp \ + fdsimpleextoujumpswingengine.cpp \ + fdsimpleextoustorageengine.cpp \ + fdsimpleklugeextouvppengine.cpp \ + glued1dmesher.cpp \ + vanillavppoption.cpp noinst_LTLIBRARIES = libMultiDimFDM.la diff --git a/ql/experimental/finitedifferences/all.hpp b/ql/experimental/finitedifferences/all.hpp index af3c55c60b..2f3670e4b4 100644 --- a/ql/experimental/finitedifferences/all.hpp +++ b/ql/experimental/finitedifferences/all.hpp @@ -1,56 +1,25 @@ /* This file is automatically generated; do not edit. */ /* Add the files to be included into Makefile.am instead. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/ql/experimental/finitedifferences/dynprogvppintrinsicvalueengine.cpp b/ql/experimental/finitedifferences/dynprogvppintrinsicvalueengine.cpp new file mode 100644 index 0000000000..db39ddc94a --- /dev/null +++ b/ql/experimental/finitedifferences/dynprogvppintrinsicvalueengine.cpp @@ -0,0 +1,112 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file dynprogvppintrinsicvalueengine.cpp +*/ + +#include +#include +#include +#include +#include +#include +#include + + +namespace QuantLib { + namespace { + class SparkSpreadPrice : public FdmInnerValueCalculator { + public: + SparkSpreadPrice(Real heatRate, + const std::vector& fuelPrices, + const std::vector& powerPrices) + : heatRate_(heatRate), + fuelPrices_(fuelPrices), + powerPrices_(powerPrices) {} + + Real innerValue(const FdmLinearOpIterator&, Time t) { + Size i = (Size) t; + QL_REQUIRE(i < powerPrices_.size(), "invalid time"); + return powerPrices_[i] - heatRate_*fuelPrices_[i]; + } + Real avgInnerValue(const FdmLinearOpIterator& iter, Time t) { + return innerValue(iter, t); + } + private: + const Real heatRate_; + const std::vector& fuelPrices_; + const std::vector& powerPrices_; + }; + + + class FuelPrice : public FdmInnerValueCalculator { + public: + FuelPrice(const std::vector& fuelPrices) + : fuelPrices_(fuelPrices) {} + + Real innerValue(const FdmLinearOpIterator&, Time t) { + Size i = (Size) t; + QL_REQUIRE(i < fuelPrices_.size(), "invalid time"); + return fuelPrices_[(Size) t]; } + Real avgInnerValue(const FdmLinearOpIterator& iter, Time t) { + return innerValue(iter, t); + } + + private: + const std::vector& fuelPrices_; + }; + } + + DynProgVPPIntrinsicValueEngine::DynProgVPPIntrinsicValueEngine( + const std::vector& fuelPrices, + const std::vector& powerPrices, + Real fuelCostAddon, + const boost::shared_ptr& rTS) + : fuelPrices_ (fuelPrices), + powerPrices_ (powerPrices), + fuelCostAddon_(fuelCostAddon), + rTS_(rTS) { + } + + void DynProgVPPIntrinsicValueEngine::calculate() const { + const boost::shared_ptr fuelPrice( + new FuelPrice(fuelPrices_)); + const boost::shared_ptr sparkSpreadPrice( + new SparkSpreadPrice(arguments_.heatRate,fuelPrices_,powerPrices_)); + + const FdmVPPStepConditionFactory stepConditionFactory(arguments_); + + const boost::shared_ptr mesher( + new FdmMesherComposite(stepConditionFactory.stateMesher())); + + const FdmVPPStepConditionMesher mesh = { 0, mesher }; + + const boost::shared_ptr stepCondition( + stepConditionFactory.build(mesh, fuelCostAddon_, + fuelPrice, sparkSpreadPrice)); + + Array state(mesher->layout()->dim()[0], 0.0); + for (Size j=powerPrices_.size(); j > 0; --j) { + stepCondition->applyTo(state, (Time) j-1); + } + + results_.value = stepCondition->maxValue(state); + } +} + diff --git a/ql/experimental/finitedifferences/dynprogvppintrinsicvalueengine.hpp b/ql/experimental/finitedifferences/dynprogvppintrinsicvalueengine.hpp new file mode 100644 index 0000000000..19cddff556 --- /dev/null +++ b/ql/experimental/finitedifferences/dynprogvppintrinsicvalueengine.hpp @@ -0,0 +1,55 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file dynprogvppintrinsicvalueengine.hpp + \brief intrinsic value engine using dynamic programming +*/ + +#ifndef quantlib_dp_vpp_intrinsic_value_engine_hpp +#define quantlib_dp_vpp_intrinsic_value_engine_hpp + +#include +#include + +namespace QuantLib { + + class YieldTermStructure; + + class DynProgVPPIntrinsicValueEngine + : public GenericEngine { + public: + DynProgVPPIntrinsicValueEngine( + const std::vector& fuelPrices, + const std::vector& powerPrices, + Real fuelCostAddon, + const boost::shared_ptr& rTS); + + void calculate() const; + + private: + const std::vector fuelPrices_; + const std::vector powerPrices_; + const Real fuelCostAddon_; + const boost::shared_ptr rTS_; + }; +} + +#endif + diff --git a/ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp b/ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp deleted file mode 100644 index cab3940e59..0000000000 --- a/ql/experimental/finitedifferences/fdblackscholesvanillaengine.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -/* - Copyright (C) 2008 Andreas Gaida - Copyright (C) 2008, 2009 Ralph Schreyer - Copyright (C) 2008, 2009 Klaus Spanderen - - This file is part of QuantLib, a free-software/open-source library - for financial quantitative analysts and developers - http://quantlib.org/ - - QuantLib is free software: you can redistribute it and/or modify it - under the terms of the QuantLib license. You should have received a - copy of the license along with this program; if not, please email - . The license is also available online at - . - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the license for more details. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace QuantLib { - - FdBlackScholesVanillaEngine::FdBlackScholesVanillaEngine( - const boost::shared_ptr& process, - Size tGrid, Size xGrid, Size dampingSteps, Real theta, - bool localVol, Real illegalLocalVolOverwrite) - : GenericEngine(), - process_(process), - tGrid_(tGrid), xGrid_(xGrid), dampingSteps_(dampingSteps), - theta_(theta), localVol_(localVol), - illegalLocalVolOverwrite_(illegalLocalVolOverwrite) { - } - - void FdBlackScholesVanillaEngine::calculate() const { - - // 1. Layout - std::vector dim; - dim.push_back(xGrid_); - const boost::shared_ptr layout( - new FdmLinearOpLayout(dim)); - - const boost::shared_ptr payoff = - boost::dynamic_pointer_cast(arguments_.payoff); - - // 2. Mesher - const Time maturity = process_->time(arguments_.exercise->lastDate()); - const boost::shared_ptr equityMesher( - new FdmBlackScholesMesher( - xGrid_, process_, maturity, payoff->strike(), - Null(), Null(), 0.0001, 1.5, - std::pair(payoff->strike(), 0.1))); - - std::vector > meshers; - meshers.push_back(equityMesher); - boost::shared_ptr mesher ( - new FdmMesherComposite(layout, meshers)); - - - // 3. Calculator - boost::shared_ptr calculator( - new FdmLogInnerValue(payoff, mesher, 0)); - - // 4. Step conditions - std::list > > stepConditions; - std::list > stoppingTimes; - - // 4.1 Step condition if discrete dividends - if(!arguments_.cashFlow.empty()) { - boost::shared_ptr dividendCondition( - new FdmDividendHandler(arguments_.cashFlow, mesher, - process_->riskFreeRate()->referenceDate(), - process_->riskFreeRate()->dayCounter(), - 0)); - stepConditions.push_back(dividendCondition); - stoppingTimes.push_back(dividendCondition->dividendTimes()); - } - - // 4.2 Step condition if american exercise - QL_REQUIRE( arguments_.exercise->type() == Exercise::American - || arguments_.exercise->type() == Exercise::European, - "exercise type is not supported"); - if (arguments_.exercise->type() == Exercise::American) { - stepConditions.push_back(boost::shared_ptr >( - new FdmAmericanStepCondition(mesher,calculator))); - } - - boost::shared_ptr conditions( - new FdmStepConditionComposite(stoppingTimes, stepConditions)); - - // 5. Boundary conditions - std::vector > boundaries; - - // 6. Solver - boost::shared_ptr solver( - new FdmBlackScholesSolver( - Handle(process_), - mesher, boundaries, conditions, calculator, - payoff->strike(), maturity, tGrid_, dampingSteps_, - theta_, localVol_, illegalLocalVolOverwrite_)); - - const Real spot = process_->x0(); - results_.value = solver->valueAt(spot); - results_.delta = solver->deltaAt(spot); - results_.gamma = solver->gammaAt(spot); - results_.theta = solver->thetaAt(spot); - } -} diff --git a/ql/experimental/finitedifferences/fddstartlimitstepcondition.hpp b/ql/experimental/finitedifferences/fddstartlimitstepcondition.hpp new file mode 100644 index 0000000000..5560290793 --- /dev/null +++ b/ql/experimental/finitedifferences/fddstartlimitstepcondition.hpp @@ -0,0 +1,80 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2012 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file fdmvppstepcondition.hpp + \brief VPP incl. start limit step condition for FD models +*/ + +#ifndef quantlib_fdm_start_limit_step_condition_hpp +#define quantlib_fdm_start_limit_step_condition_hpp + +#include + +#include +#include +#include + +namespace QuantLib { + class FdmMesher; + class FdmLinearOpIterator; + class FdmInnerValueCalculator; + + class FdmStartLimitStepCondition : public StepCondition { + public: + FdmStartLimitStepCondition( + Real heatRate, + Real pMin, Real pMax, + Size tMinUp, Size tMinDown, + Size nStarts, + Real startUpFuel, Real startUpFixCost, + Real carbonPrice, + Size stateDirection, + const boost::shared_ptr& mesher, + const boost::shared_ptr& gasPrice, + const boost::shared_ptr& sparkSpreadPrice); + + Size nStates() const; + void applyTo(Array& a, Time t) const; + + private: + Real evolveAtPMin(Real sparkSpread) const; + Real evolveAtPMax(Real sparkSpread) const; + + Real evolve(const FdmLinearOpIterator& iter, Time t) const; + Disposable changeState(Real gasPrice, + const Array& state, Time t) const; + + const Real heatRate_; + const Real pMin_, pMax_; + const Size tMinUp_, tMinDown_; + const Size nStarts_; + const Real startUpFuel_, startUpFixCost_; + const Real carbonPrice_; + const Size stateDirection_; + + const boost::shared_ptr mesher_; + const boost::shared_ptr gasPrice_; + const boost::shared_ptr sparkSpreadPrice_; + + const Size nStates_; + std::vector > stateEvolveFcts_; + }; +} + +#endif diff --git a/ql/experimental/finitedifferences/fdextoujumpvanillaengine.cpp b/ql/experimental/finitedifferences/fdextoujumpvanillaengine.cpp new file mode 100644 index 0000000000..228c246cd2 --- /dev/null +++ b/ql/experimental/finitedifferences/fdextoujumpvanillaengine.cpp @@ -0,0 +1,100 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file fdoujumpvanillaengine.cpp + \brief Finite Differences Ornstein Uhlenbeck plus exponential jumps engine + for simple swing options +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace QuantLib { + + FdExtOUJumpVanillaEngine::FdExtOUJumpVanillaEngine( + const boost::shared_ptr& process, + const boost::shared_ptr& rTS, + Size tGrid, Size xGrid, Size yGrid, + const FdmSchemeDesc& schemeDesc) + : process_(process), + rTS_(rTS), + tGrid_(tGrid), + xGrid_(xGrid), + yGrid_(yGrid), + schemeDesc_(schemeDesc) { + } + + void FdExtOUJumpVanillaEngine::calculate() const { + // 1. Mesher + const Time maturity + = rTS_->dayCounter().yearFraction(rTS_->referenceDate(), + arguments_.exercise->lastDate()); + const boost::shared_ptr ouProcess( + process_->getExtendedOrnsteinUhlenbeckProcess()); + const boost::shared_ptr xMesher( + new FdmSimpleProcess1dMesher(xGrid_, ouProcess,maturity)); + + const boost::shared_ptr yMesher( + new ExponentialJump1dMesher(yGrid_, + process_->beta(), + process_->jumpIntensity(), + process_->eta())); + + const boost::shared_ptr mesher( + new FdmMesherComposite(xMesher, yMesher)); + + // 2. Calculator + const boost::shared_ptr calculator( + new FdmExtOUJumpModelInnerValue(arguments_.payoff, mesher)); + + // 3. Step conditions + const boost::shared_ptr conditions = + FdmStepConditionComposite::vanillaComposite( + DividendSchedule(), arguments_.exercise, + mesher, calculator, + rTS_->referenceDate(), rTS_->dayCounter()); + + // 4. Boundary conditions + const FdmBoundaryConditionSet boundaries; + + // 5. set-up solver + FdmSolverDesc solverDesc = { mesher, boundaries, conditions, + calculator, maturity, tGrid_, 0 }; + + const boost::shared_ptr solver( + new FdmExtOUJumpSolver(Handle(process_), + rTS_, solverDesc, schemeDesc_)); + + const Real x = process_->initialValues()[0]; + const Real y = process_->initialValues()[1]; + results_.value = solver->valueAt(x, y); + } +} diff --git a/ql/experimental/finitedifferences/fdextoujumpvanillaengine.hpp b/ql/experimental/finitedifferences/fdextoujumpvanillaengine.hpp new file mode 100644 index 0000000000..f9965a8a15 --- /dev/null +++ b/ql/experimental/finitedifferences/fdextoujumpvanillaengine.hpp @@ -0,0 +1,57 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file fdsimplebsswingengine.hpp + \brief Finite Differences Ornstein Uhlenbeck plus exponential jumps engine + for vanilla options +*/ + +#ifndef quantlib_fd_simple_ou_jump_swing_engine_hpp +#define quantlib_fd_simple_ou_jump_swing_engine_hpp + +#include +#include +#include + +namespace QuantLib { + + class YieldTermStructure; + class ExtOUWithJumpsProcess; + + class FdExtOUJumpVanillaEngine + : public GenericEngine { + public: + FdExtOUJumpVanillaEngine( + const boost::shared_ptr& p, + const boost::shared_ptr& rTS, + Size tGrid = 50, Size xGrid = 200, Size yGrid = 50, + const FdmSchemeDesc& schemeDesc=FdmSchemeDesc::Hundsdorfer()); + + void calculate() const; + + private: + const boost::shared_ptr process_; + const boost::shared_ptr rTS_; + const Size tGrid_, xGrid_, yGrid_; + const FdmSchemeDesc schemeDesc_; + }; +} + +#endif diff --git a/ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp b/ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp new file mode 100644 index 0000000000..4737420753 --- /dev/null +++ b/ql/experimental/finitedifferences/fdklugeextouspreadengine.cpp @@ -0,0 +1,127 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace QuantLib { + + FdKlugeExtOUSpreadEngine::FdKlugeExtOUSpreadEngine( + const boost::shared_ptr& klugeOUProcess, + const boost::shared_ptr& rTS, + Size tGrid, Size xGrid, Size yGrid, Size uGrid, + const boost::shared_ptr& gasShape, + const boost::shared_ptr& powerShape, + const FdmSchemeDesc& schemeDesc) + : klugeOUProcess_(klugeOUProcess), + rTS_ (rTS), + tGrid_(tGrid), + xGrid_(xGrid), + yGrid_(yGrid), + uGrid_(uGrid), + gasShape_(gasShape), + powerShape_(powerShape), + schemeDesc_(schemeDesc) { + } + + void FdKlugeExtOUSpreadEngine::calculate() const { + // 1. Mesher + const Time maturity + = rTS_->dayCounter().yearFraction(rTS_->referenceDate(), + arguments_.exercise->lastDate()); + const boost::shared_ptr klugeProcess + = klugeOUProcess_->getKlugeProcess(); + const boost::shared_ptr ouProcess + = klugeProcess->getExtendedOrnsteinUhlenbeckProcess(); + const boost::shared_ptr xMesher( + new FdmSimpleProcess1dMesher(xGrid_, ouProcess,maturity)); + + const boost::shared_ptr yMesher( + new ExponentialJump1dMesher(yGrid_, + klugeProcess->beta(), + klugeProcess->jumpIntensity(), + klugeProcess->eta())); + + const boost::shared_ptr uMesher( + new FdmSimpleProcess1dMesher(uGrid_, + klugeOUProcess_->getExtOUProcess(), + maturity)); + + const boost::shared_ptr mesher( + new FdmMesherComposite(xMesher, yMesher, uMesher)); + + // 2. Calculator + boost::shared_ptr basketPayoff = + boost::dynamic_pointer_cast(arguments_.payoff); + QL_REQUIRE(basketPayoff," basket payoff expected"); + + const boost::shared_ptr zeroStrikeCall( + new PlainVanillaPayoff(Option::Call, 0.0)); + + const boost::shared_ptr gasPrice( + new FdmExpExtOUInnerValueCalculator(zeroStrikeCall, + mesher, gasShape_, 2)); + + const boost::shared_ptr powerPrice( + new FdmExtOUJumpModelInnerValue(zeroStrikeCall,mesher,powerShape_)); + + const boost::shared_ptr calculator( + new FdmSpreadPayoffInnerValue(basketPayoff, powerPrice, gasPrice)); + + // 3. Step conditions + const boost::shared_ptr conditions = + FdmStepConditionComposite::vanillaComposite( + DividendSchedule(), arguments_.exercise, + mesher, calculator, + rTS_->referenceDate(), rTS_->dayCounter()); + + // 4. Boundary conditions + const FdmBoundaryConditionSet boundaries; + + // 5. set-up solver + FdmSolverDesc solverDesc = { mesher, boundaries, conditions, + calculator, maturity, tGrid_, 0 }; + + const boost::shared_ptr > solver( + new FdmKlugeExtOUSolver<3>( + Handle(klugeOUProcess_), + rTS_, solverDesc, schemeDesc_)); + + std::vector x(3); + x[0] = klugeOUProcess_->initialValues()[0]; + x[1] = klugeOUProcess_->initialValues()[1]; + x[2] = klugeOUProcess_->initialValues()[2]; + + results_.value = solver->valueAt(x); + } +} diff --git a/ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp b/ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp new file mode 100644 index 0000000000..fa6ff76189 --- /dev/null +++ b/ql/experimental/finitedifferences/fdklugeextouspreadengine.hpp @@ -0,0 +1,70 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2011 Klaus Spanderen + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file fdklugeextouspreadengine.hpp + \brief FD Kluge/extended Ornstein-Uhlenbeck engine + for a simple power-gas spread option +*/ + +#ifndef quantlib_fd_kluge_extou_spread_engine_hpp +#define quantlib_fd_kluge_extou_spread_engine_hpp + +#include +#include +#include +#include +#include +#include + +namespace QuantLib { + + class YieldTermStructure; + class ExtOUWithJumpsProcess; + class ExtendedOrnsteinUhlenbeckProcess; + + class FdKlugeExtOUSpreadEngine + : public GenericEngine { + public: + typedef FdmExtOUJumpModelInnerValue::Shape GasShape; + typedef FdmExtOUJumpModelInnerValue::Shape PowerShape; + + FdKlugeExtOUSpreadEngine( + const boost::shared_ptr& klugeOUProcess, + const boost::shared_ptr& rTS, + Size tGrid = 25, Size xGrid = 50, Size yGrid = 10, Size uGrid=25, + const boost::shared_ptr& gasShape + = boost::shared_ptr(), + const boost::shared_ptr& powerShape + = boost::shared_ptr(), + const FdmSchemeDesc& schemeDesc=FdmSchemeDesc::Hundsdorfer()); + + void calculate() const; + + private: + const boost::shared_ptr klugeOUProcess_; + const boost::shared_ptr rTS_; + const Size tGrid_, xGrid_, yGrid_, uGrid_; + const boost::shared_ptr gasShape_; + const boost::shared_ptr powerShape_; + const FdmSchemeDesc schemeDesc_; + }; +} + +#endif diff --git a/ql/experimental/finitedifferences/fdmblackscholessolver.cpp b/ql/experimental/finitedifferences/fdmblackscholessolver.cpp deleted file mode 100644 index 43761e474a..0000000000 --- a/ql/experimental/finitedifferences/fdmblackscholessolver.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -/* - Copyright (C) 2008 Andreas Gaida - Copyright (C) 2008, 2009 Ralph Schreyer - Copyright (C) 2008, 2009 Klaus Spanderen - - This file is part of QuantLib, a free-software/open-source library - for financial quantitative analysts and developers - http://quantlib.org/ - - QuantLib is free software: you can redistribute it and/or modify it - under the terms of the QuantLib license. You should have received a - copy of the license along with this program; if not, please email - . The license is also available online at - . - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the license for more details. -*/ - -#include -#include -#include -#include - -namespace QuantLib { - - namespace { - const boost::shared_ptr addCondition( - const boost::shared_ptr& c1, - const boost::shared_ptr& c2) { - - std::list > stoppingTimes; - stoppingTimes.push_back(std::vector