QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.38
Loading...
Searching...
No Matches
history.docs
Go to the documentation of this file.
1/*
2 Copyright (C) 2000-2018 StatPro Italia srl
3
4 This file is part of QuantLib, a free-software/open-source library
5 for financial quantitative analysts and developers - http://quantlib.org/
6
7 QuantLib is free software: you can redistribute it and/or modify it
8 under the terms of the QuantLib license. You should have received a
9 copy of the license along with this program; if not, please email
10 <quantlib-dev@lists.sf.net>. The license is also available online at
11 <http://quantlib.org/license.shtml>.
12
13 This program is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the license for more details.
16*/
17
18/*! \page history Version history
19
20 <strong>Release 1.38 - April 2025</strong>
21
22 PORTABILITY
23 - **Future change of default:** as already announced, in the next
24 release we're going to switch the default for `ext::any` and
25 `ext::optional` from the Boost implementation to the standard one.
26 Using `boost::any` and `boost::optional` is still possible
27 for the time being but deprecated.
28 - **Possible future breaking change**: in the next release, the
29 `SimpleQuote` class might be made `final`. If you're inheriting
30 from it, drop us a line.
31
32 DATES AND CALENDARS
33 - The `Schedule` class now honors the passed business day convention
34 when end-of-month is enabled. Previously, enabling
35 end-of-month caused it to always use the Modified Following
36 convention.
37 - Added Chinese holidays for 2025; thanks to Cheng Li.
38 - Added Thailand holidays for 2025; thanks to Paolo D'Elia.
39 - Added Hong Kong holidays for 2025; thanks to Ka Wai Lee.
40
41 INDEXES
42 - Year-or-year inflation indexes can (and should) now be built without
43 an `interpolated` flag. As for zero inflation indexes,
44 the interpolation was moved into the coupons using the indexes.
45 - Fixed obsolete conventions for the (now discountinued) EUR LIBOR
46 index; thanks to Eugene Toder.
47
48 INSTRUMENTS AND PRICING ENGINES
49 - Added implementation of partial-time barrier put options; thanks to
50 Paolo D'Elia.
51 - The `OvernightIndexFuture` class would not receive notifications
52 when the convexity quote or the evaluation date changed; this is now
53 fixed. Thanks to Eugene Toder.
54 - The experimental `BlackCallableFixedRateBondEngine` wouldn't take
55 discount correctly into account when evaluation the embedded option;
56 this is now fixed. Thanks to GitHub user RobertS548 for the heads-up.
57 - Moved a few instruments and engines from the experimental folder to
58 the core library:
59 - `HolderExtensibleOption` and `AnalyticHolderExtensibleOptionEngine`;
60 - `WriterExtensibleOption` and `AnalyticWriterExtensibleOptionEngine`;
61 - `PartialTimeBarrierOption` and `AnalyticPartialTimeBarrierOptionEngine`;
62 - `TwoAssetBarrierOption` and `AnalyticTwoAssetBarrierEngine`;
63 - `TwoAssetCorrelationOption` and ``AnalyticTwoAssetCorrelationEngine`;
64 - `ContinuousArithmeticAsianLevyEngine`;
65 - `AnalyticPDFHestonEngine`.
66
67 TERM STRUCTURES
68 - The `DepositRateHelper` and `FraRateHelper` classes can now be built
69 specifying fixed dates instead of a tenor; thanks to Eugene Toder.
70 - The cross-currency basis-swap rate helpers can now be passed an
71 overnight index and a corresponding payment frequency; it is also
72 possible to pass a payment lag. Thanks to GitHub user kp9991-git.
73 - The additional penalty functions passed to the `GlobalBootstrap`
74 class can now take the curve nodes as arguments; thanks to Eugene
75 Toder. This makes it possible, for example, to penalize
76 gradients to make the curve smoother. It is also possible to
77 specify additional variables to be optimized, e.g., futures
78 convexity adjustments.
79 - Added a piecewise forward-spreaded term structure; thanks to
80 Paolo D'Elia.
81
82 DEPRECATED FEATURES
83 - **Removed** features deprecated in version 1.33:
84 - the constructors of `Currency` and `Currency::Data` taking a
85 format string, the `format` method of the `Currency` class and the
86 `formatString` data member of `Currency::Data`.
87 - Deprecated the constructors of year-on-year inflation indexes taking
88 an `interpolated` argument; use the other constructors instead.
89 - Deprecated the header files in `ql/experimental/exoticoptions` for
90 some classes moved to the core library (see above); use the
91 corresponding new headers in `ql/instruments` and
92 `ql/pricingengines` instead.
93
94 Thanks go also to Eugene Toder, Konstantin Novitsky, Tomas
95 Kalibera and GitHub user raneamri for miscellaneous smaller fixes,
96 improvements or reports.
97
98 <strong>Release 1.37 - January 21st, 2025</strong>
99
100 PORTABILITY
101 - **Future change of default:** as already announced, in the next
102 release we're going to switch the default for `ext::any` and
103 `ext::optional` from the Boost implementation to the standard one.
104
105 DATES AND CALENDARS
106 - Added closure for President Carter's funeral to the NYSE calendar;
107 thanks to Dirk Eddelbuettel.
108 - Added distinct Wellington and Auckland variants for New Zealand
109 calendar.
110
111 INDEXES
112 - Improved the performance of the `addFixing` and `addFixings` method
113 in the `Index` class; thanks to Peter Caspers.
114 - Added the KOFR index; thanks to Jongbong An.
115
116 INSTRUMENTS AND PRICING ENGINES
117 - Added Choi pricing engine for Asian options; thanks to Klaus
118 Spanderen.
119 - Passing a risk-free overnight index to an asset swap now implies
120 using OIS-like coupons.
121 - Added Bjerksund-Stensland, Operator-Splitting, Deng-Li-Zhou, Choi
122 and n-dim PDE engines for spread options; thanks to Klaus Spanderen.
123 - Deng-Li-Zhou, Choi and n-dim PDE engines for basket options; thanks
124 to Klaus Spanderen.
125
126 TERM STRUCTURES
127 - **Possibly breaking**: better upper and lower bounds for global
128 bootstrap; thanks to Eugene Toder. If you created your own
129 bootstrap traits, you'll need to add `minValueGlobal` and
130 `maxValueGlobal` methods for them to work with the
131 `GlobalBootstrap` class.
132 - Fitted bond curves can now be passed precomputed parameters without
133 the need for bond helpers.
134 - Use correct guess in SABR swaption vol cube.
135 - OIS rate helpers can now be passed a date-generation rule; thanks to
136 Sotirios Papathanasopoulos.
137 - Swap rate helpers can now be passed explicit start and end dates;
138 thanks to Eugene Toder.
139 - OIS rate helpers can now be passed explicit start and end dates,
140 making a distinct `DatedOISRateHelper` class unnecessary; thanks to
141 Eugene Toder.
142
143 CASH FLOWS
144 - Added new `MultipleResetsCoupon` and `MultipleResetsLeg` classes to
145 manage coupons with multiple resets. They fix and
146 replace `SubPeriodsCoupon` and `SubPeriodsLeg`.
147
148 DEPRECATED FEATURES
149 - **Removed** features deprecated in version 1.32:
150 - the `FixedRateBondForward` class;
151 - the `SampledCurve` and `SampledCurveSet` classes;
152 - the `StepConditionSet` and `BoundaryConditionSet` classes;
153 - the `ParallelEvolver` and `ParallelEvolverTraits` classes;
154 - the `FDVanillaEngine` and `FDMultiPeriodEngine` classes;
155 - the `BSMTermOperator`, `StandardFiniteDifferenceModel`,
156 `StandardSystemFiniteDifferenceModel` and `StandardStepCondition`
157 typedefs;
158 - the `QL_NULL_FUNCTION` macro;
159 - the overloads of `DigitalCmsLeg::withReplication` ,
160 `DigitalCmsSpreadLeg::withReplication` and
161 `DigitalIborLeg::withReplication` taking no arguments;
162 - the empty headers `analyticamericanmargrabeengine.hpp`,
163 `analyticcomplexchooserengine.hpp`,
164 `analyticcomplexchooserengine.hpp`,
165 `analyticcompoundoptionengine.hpp`,
166 `analyticeuropeanmargrabeengine.hpp`,
167 `analyticsimplechooserengine.hpp`, `complexchooseroption.hpp`,
168 `compoundoption.hpp`, `margrabeoption.hpp` and
169 `simplechooseroption.hpp` in the `ql/experimental/exoticoptions`
170 folder;
171 - the empty header `ql/experimental/termstructures/multicurvesensitivities.hpp`;
172 - the empty headers `pdeshortrate.hpp` and `shoutcondition.hpp` in
173 the `ql/methods/finitedifferences` folder;
174 - the empty header `ql/models/marketmodels/duffsdeviceinnerproduct.hpp`;
175 - the empty headers `fdconditions.hpp`, `fddividendengine.hpp` and
176 `fdstepconditionengine.hpp` in the `ql/pricingengines/vanilla`
177 folder.
178 - Deprecated the `SubPeriodsCoupon`, `SubPeriodsPricer`,
179 `AveragingRatePricer` and `CompoundingRatePricer` classes; renamed
180 to `MultipleResetsCoupon`, `MultipleResetsPricer`,
181 `AveragingMultipleResetsPricer` and
182 `CompoundingMultipleResetsPricer`, respectively.
183 - Deprecated the `SubPeriodsLeg` class; use `MultipleResetsLeg` instead.
184 - Deprecated the `MultipleResetsCoupon` constructor without a reset
185 schedule; use the other constructor.
186 - Deprecated the `calendar`, `price`, `addQuote`, `addQuotes`,
187 `clearQuotes`, `isValidQuoteDate` and `quotes` methods in the
188 `CommodityIndex` class; use `fixingCalendar`, `fixing`, `addFixing`,
189 `addFixings`, `clearFixings`, `isValidFixingDate` and `timeSeries`
190 instead.
191 - Deprecated the experimental `SpreadOption` and `KirkSpreadOptionEngine`
192 classes; use `BasketOption` and `KirkEngine` instead.
193 - Deprecated the `TransformedGrid` and `LogGrid` classes and the
194 `CenteredGrid`, `BoundedGrid` and `BoundedLogGrid` functions; use
195 the new FD framework instead.
196 - Deprecated the `PdeOperator` and `BSMOperator` classes; use the new
197 FD framework instead.
198 - Deprecated the `PdeSecondOrderParabolic`, `PdeConstantCoeff`,
199 `PdeBSM` and `GenericTimeSetter` classes; use the new FD framework
200 instead.
201 - Deprecated the `hasHistory`, `getHistory`, `clearHistory`,
202 `hasHistoricalFixing` and `setHistory` in the `IndexManager` class;
203 use `Index::hasHistoricalFixing`, `Index::timeSeries`,
204 `Index::clearFixings`, `Index::hasHistoricalFixing` and
205 `Index::addFixings` instead.
206 - Deprecated the `notifier` method in the `IndexManager` class;
207 register with the relevant index instead.
208 - Deprecated one of the `AssetSwap` constructors; use the other overload.
209 - Deprecated the `fcn` and `jacFcn` methods in the
210 `LevenbergMarquardt` class; they are for internal use only.
211 - Deprecated the `indexIsInterpolated` parameter in YoY inflation
212 curve constructors; use another overload. Fixings will be
213 interpolated by coupons instead, so curves and indexes will only be
214 asked for fixing at the start of a month.
215 - Deprecated the `indexIsInterpolated` method and the
216 `indexIsInterpolated_` data member in the
217 `YoYInflationTermStructure` class.
218 - Deprecated the `DatedOISRateHelper` class; use `OISRateHelper`
219 instead.
220
221 Thanks go also to Eugene Toder, Ben Watson
222 and the XAD team for miscellaneous
223 smaller fixes, improvements or reports.
224
225 <strong>Release 1.36 - October 14th, 2024</strong>
226
227 PORTABILITY
228 - **New minimum C++ standard:** starting from this release, a compiler
229 supporting C++17 is required. Passing `--enable-std-classes` to
230 `configure` now causes `std::any` and `std::optional` to be used.
231 - **End of support:** related to the above, and as announced since
232 release 1.32, this release drops support Visual C++ 2015, g++ up to
233 version 6.x, and clang up to version 4. Also, given the testing
234 environments available on GitHub actions, clang 5 and 6 are no
235 longer available to us for testing, and the same holds for g++ 7.
236 Therefore, it is suggested to upgrade to a newer version if
237 possible.
238 - **End of support:** this release also removes the configure switch
239 that allowed to use `boost::tuple`, `boost::function` and
240 `boost::bind` instead of their `std` counterparts; the `std` classes
241 were already the default since release 1.32. The corresponding
242 classes in the `ext` namespace are now deprecated.
243 - **Future change of default:** in a couple of releases, we're going
244 to switch the default for `ext::any` and `ext::optional` from the
245 Boost implementation to the standard one.
246
247 DATES AND CALENDARS
248 - Added `startOfMonth` and `isStartOfMonth` methods to both `Date` and
249 `Calendar`; thanks to Francois Botha.
250 - Added specialized Warsaw Stock Exchange (WSE) calendar to Poland;
251 thanks to Marcin Bogusz.
252 - Added a new one-off holiday to South Korean calendar; thanks to
253 Jongbong An.
254
255 CASH FLOWS
256 - Made` OvernightIndexedCouponPricer` public and renamed to
257 `CompoundingOvernightIndexedCouponPricer`, and moved
258 `ArithmeticAveragedOvernightIndexedCouponPricer` from experimental
259 to core library; thanks to Ralf Konrad Eckel.
260
261 INDEXES
262 - **Possibly breaking:** inherited the `Index` class from `Observer`
263 and added a virtual `pastFixing` method. If you inherited a class
264 from both `Index` and `Observer`, change your code to avoid
265 inheriting twice from `Observer`. Thanks to Ralf Konrad Eckel.
266 - Added currency information to `EquityIndex`; thanks to Ralf Konrad
267 Eckel.
268
269 INFLATION
270 - Inflation indexes are now better at deciding when to forecast;
271 also added a `needsForecast` method that makes the
272 information available.
273 - Added `CPI::laggedYoYRate`; also, `YoYInflationCoupon`,
274 `yoyInflationLeg`, `CappedFlooredYoYInflationCoupon`,
275 `YearOnYearInflationSwap`, `MakeYoYInflationCapFloor`,
276 `YearOnYearInflationSwapHelper`, `YoYOptionletHelper` and the
277 experimental `YoYCapFloorTermPriceSurface` and
278 `InterpolatedYoYCapFloorTermPriceSurface` can now take an explicit
279 `CPI::InterpolationType` parameter instead of relying on the index
280 being defined as interpolated or not. This is a first
281 step in removing interpolation from `YoYInflationIndex` and moving
282 it into the coupons where it belongs.
283 - Added method to YoY inflation index returning the date of the last
284 available fixing.
285
286 TERM STRUCTURES
287 - Allow passing a pricer to the constructor of the `OISRateHelper` and
288 `DatedOISRateHelper` classes; this makes it possible to
289 use arithmetic averaging of overnight rates.
290 - Allow custom constraint in non-linear fitting methods; thanks to Kai
291 Lin.
292 - Allow creating a swap helper with frequency "Once".
293 - The `GlobalBootstrap` constructor can now take an optional optimizer
294 and end criteria, allowing for better configuration; thanks to
295 Eugene Toder.
296
297 VOLATILITY
298 - Added exact Bachelier implied-vol formula from Jäckel's paper; thanks
299 to Peter Caspers.
300
301
302 DEPRECATED FEATURES
303 - **Removed** features deprecated in version 1.31:
304 - the `BlackVanillaOptionPricer` typedef;
305 - the constructors of `CPICoupon` taking a `spread` parameter, its
306 `spread` method, and its protected `spread_` data member;
307 - the `withSpreads` method of `CPILeg`;
308 - the protected `adjustedFixing` method and `spread_` data member of
309 `CPICouponPricer`;
310 - the `YYAUCPIr`, `YYEUHICPr`, `YYFRHICPr`, `YYUKRPIr`, `YYUSCPIr`
311 and `YYZACPIr` indexes and the experimental `YYGenericCPIr` class;
312 - the constructor of `YoYInflationIndex` taking a `ratio` parameter;
313 - a couple of constructors of `ForwardRateAgreement`;
314 - the empty files `ql/math/curve.hpp`, `ql/math/lexicographicalview.hpp`,
315 `ql/termstructures/yield/drifttermstructure.hpp`
316 and `ql/patterns/composite.hpp`;
317 - the `const_iterator` and `const_value_iterator` typedefs in the
318 `Garch11` class;
319 - the `const_time_iterator`, `const_value_iterator`,
320 `const_reverse_time_iterator` and `const_reverse_value_iterator`
321 typedefs and the `cbegin_values`, `cend_values`, `crbegin_values`,
322 `crend_values`, `cbegin_time`, `cend_time`, `crbegin_time` and
323 `crend_time` methods of the `TimeSeries` class;
324 - the `base`, `increment`, `decrement`, `advance` and `distance_to`
325 method of the `step_iterator` class.
326 - Deprecated `ext::function`, `ext::bind`, `ext::ref`, `ext::cref`,
327 `ext::placeholders`, `ext::tuple`, `ext::make_tuple`, `ext::get` and
328 `ext::tie`; use the corresponding `std::` classes and functions
329 instead.
330 - Deprecated the `ArithmeticAverageOIS`, `MakeArithmeticAverageOIS`
331 and `ArithmeticOISRateHelper` classes; use `OvernightIndexedSwap`,
332 `MakeOIS` and `OISRateHelper` instead.
333 - Deprecated the `YoYInflationCoupon`, `yoyInflationLeg`,
334 `CappedFlooredYoYInflationCoupon`, `YearOnYearInflationSwap`,
335 `MakeYoYInflationCapFloor`, `YearOnYearInflationSwapHelper`,
336 `YoYOptionletHelper`, `YoYCapFloorTermPriceSurface` and
337 `InterpolatedYoYCapFloorTermPriceSurface` constructors that don't
338 take an explicit CPI interpolation type.
339 - Deprecated the `getInfo` method of `LevenbergMarquardt`; inspect the
340 result of `minimize` instead.
341 - Deprecated the
342 `ql/experimental/averageois/averageoiscouponpricer.hpp` file;
343 include `ql/cashflows/overnightindexedcouponpricer.hpp` instead.
344 - Deprecated the somewhat out-of-scope and experimental
345 `CreditRiskPlus`, `SensitivityAnalysis`, `aggregateNPV`,
346 `parallelAnalysis` and `bucketAnalysis`.
347
348 Thanks go also to Jonathan Sweemer, Eugene Toder, Ralf Konrad
349 Eckel, Tony Wang and the XAD team for miscellaneous smaller fixes,
350 improvements or reports.
351
352 <strong>Release 1.35 - July 23rd, 2024</strong>
353
354 PORTABILITY
355 - **Future end of support:** as announced since release 1.32, this
356 release is the last to support Visual C++ 2015, g++ up to version
357 6.x, and clang up to version 4; support for those compilers will be
358 dropped in next release, 1.36, about three months from now. From
359 that point onwards, this will allows us to enable the use of C++17
360 in the code base. Also, given the testing environments available on
361 GitHub actions, clang 5 and 6 are no longer available to us for
362 testing, and the same holds for g++ 7. Therefore, it is suggested
363 to upgrade to a newer version if possible.
364 - **Future end of support:** at the same time as the above, we'll also
365 remove the configure switch that allows to use `boost::tuple`,
366 `boost::function` and `boost::bind` instead of their `std`
367 counterparts; the `std` classes are already the default since
368 release 1.32.
369 - The `config.hpp` generated by cmake now behaves like the one
370 generated by autotools and provides values for the defines so that
371 they can be used in `static_assert`. Thanks to Tom
372 Anderson for the heads-up.
373
374 CALENDARS
375 - Some fixes for the Chilean calendar; thanks to Eugene Toder.
376 - Better NFP/SIFMA rule for Good Friday in U.S. government bond
377 calendar; thanks to Eugene Toder.
378 - Updated Indian NSE holidays for 2024; thanks to Fredrik Gerdin
379 Börjesson.
380 - Some fixes for the Mexican calendar; thanks to Lucas Dias.
381
382 CASH FLOWS
383 - Added lookback days, lockout days and observation shift to
384 overnight-indexed coupons; thanks to Marcin Rybacki.
385 The same parameters were propagated to
386 overnight-indexed swaps and to the corresponding helpers.
387 - Added the `hasFixed` method to IBOR coupons that detects whether
388 they have fixed or still need to be forecast; thanks to Tom Anderson.
389
390 INSTRUMENTS
391 - Overnight index futures didn't manage a start date falling on a
392 holiday; this is now fixed. Thanks to GitHub user
393 `JustCallMeDavid` for the heads-up.
394 - Callable bonds didn't account for nominal when calculating OAS; this
395 is now fixed. Thanks to Hristo Raykov.
396 - For European swaption, sometimes the price is quoted as a forward
397 price to be paid at exercise time. Such a quoted price can now be
398 used for implied-volatility calculation. The forward price is also
399 returned by the Black and Bachelier swaption engines as an
400 additional result.
401
402 RANDOM NUMBERS
403 - Added the fast `ZigguratGaussianRng` generator; thanks to Ralf
404 Konrad Eckel.
405
406 TERM STRUCTURES
407 - Fix treatment of custom end date in `FuturesRateHelper`.
408 - Add possibility to reset guess in fitted bond curves.
409 Thanks to GitHub user `klin333` for the suggestion.
410
411 UTILITIES
412 - Overloaded `Handle` and `RelinkableHandle` constructors on lvalue
413 and rvalue references for performance; thanks to Jonathan Sweemer.
414
415 TOOLS
416 - Better benchmark utility; thanks to Jacques du Toit.
417
418 EXAMPLES
419 - Reworked bond example.
420
421 DEPRECATED FEATURES
422 - **Removed** features deprecated in version 1.30:
423 - the `DividendVanillaOption` and `DividendBarrierOption` classes;
424 - the constructor of `AnalyticDividendEuropeanEngine` taking only a
425 process and no dividends;
426 - the `SwaptionVolCube1`, `SwaptionVolCube1a`, `SwaptionVolCube1x`
427 and `SwaptionVolCube2` typedefs and the empty headers
428 `ql/experimental/volatility/swaptionvolcube1.hpp`,
429 `ql/experimental/volatility/swaptionvolcube1a.hpp` and
430 `ql/experimental/volatility/swaptionvolcube2.hpp`;
431 - the `setCommon` method of `CappedFlooredYoYInflationCoupon`.
432 - Deprecated the constructor of `DatedOISRateHelper` taking a forward
433 start; use the other overload instead.
434 - Deprecated the specialized `Bibor9M`, `Euribor2W`, `Euribor3W`,
435 `Euribor2M`, `Euribor4M`, `Euribor5M`, `Euribor7M`, `Euribor8M`,
436 `Euribor9M`, `Euribor10M`, `Euribor11M`, `Euribor365_SW`,
437 `Euribor365_2W`, `Euribor365_3W`, `Euribor365_1M`, `Euribor365_2M`,
438 `Euribor365_3M`, `Euribor365_4M`, `Euribor365_5M`, `Euribor365_6M`,
439 `Euribor365_7M`, `Euribor365_8M`, `Euribor365_9M`, `Euribor365_10M`,
440 `Euribor365_11M`, `Euribor365_1Y`, `EURLiborSW`, `EURLibor2W`,
441 `EURLibor2M`, `EURLibor4M`, `EURLibor5M`, `EURLibor7M`,
442 `EURLibor8M`, `EURLibor9M`, `EURLibor10M`, `EURLibor11M`; if needed,
443 use the corresponding generic class and pass the tenor (for
444 instance, `Euribor(4 * Months)`).
445 - Renamed `EuriborSW` to `Euribor1W` and deprecated the old name.
446 - Deprecated the constructor of `RelinkableHandle` taking a raw
447 pointer.
448
449 Thanks go also to Dmitri Goloubentsev, Eleanor Green, Tom
450 Anderson, Peter Caspers, Jonghee Lee, Ralf Konrad Eckel and the
451 XAD team for miscellaneous fixes, improvements or reports.
452
453 <strong>Release 1.34 - April 24th, 2024</strong>
454
455 PORTABILITY
456 - **Future end of support:** as announced in release 1.32, we're
457 targeting next release (1.35) as the last to support Visual C++
458 2015, g++ up to version 6.x, and clang up to version 4; support for
459 those compilers will be dropped in release 1.36, about six months
460 from now. From that point onwards, this will allows us to enable
461 the use of C++17 in the code base.
462 Also, given the testing environments available on GitHub actions,
463 clang 5 is already no longer available to us for testing, and in a
464 while the same will hold for clang 6 and g++ 7. Therefore, it is
465 suggested to upgrade to a newer version if possible.
466 - **Future end of support:** at the same time as the above, we'll also
467 remove the configure switch that allows to use `boost::tuple`,
468 `boost::function` and `boost::bind` instead of their `std`
469 counterparts; the `std` classes are already the default since
470 release 1.32.
471 - Generate and install pkg-config files in CMake builds; thanks to
472 GitHub user jez6.
473
474 DATES AND CALENDARS
475 - Prevent `Calendar::advance` from returning the business end of month
476 (instead of the calendar end) when `endOfMonth` is `true` and
477 `convention` is `Unadjusted`; thanks to GitHub user DeimosXing.
478 - Add good Friday holiday for SOFR fixing; thanks to GitHub user
479 PaulXiCao.
480 - Properly restrict São Paulo city holiday to years before 2022;
481 thanks to Marco Bruno Ferreira Vasconcellos.
482 - Update holidays for 2023 and 2024 in calendars for India, Thailand,
483 Singapore and South Africa; thanks to Fredrik Gerdin Börjesson.
484
485 CASH FLOWS
486 - Fixed a couple of cases in which notifications were not forwarded
487 properly; thanks to GitHub user djkrystul for the heads-up.
488 - Fixed past payment dates and added support for OIS in
489 `LinearTsrPricer`; thanks to Peter Caspers.
490
491 INSTRUMENTS
492 - Swaptions can now take an OIS as underlying; thanks to Guillaume
493 Horel and Peter Caspers. So far, only
494 `BlackSwaptionEngine` manages OIS explicitly; other engines might
495 work and return approximated values.
496 - More methods in `MakeOIS` and `MakeVanillaSwap`; thanks to Eugene Toder.
497 - More methods in the `BondFunctions` class now support either clean or
498 dirty prices; thanks to Francois Botha.
499 - The `basisPointValue` and `yieldValueBasisPoint` methods in
500 `BondFunctions` didn't always manage the settlement date correctly;
501 this is now fixed (thanks to GitHub user jez6).
502 - Add `Custom` to `Futures::Type` enumeration to allow passing custom
503 dates to futures; thanks to Eugene Toder.
504
505 TERM STRUCTURES
506 - Inflation curves can now be built passing an explicit base date
507 (corresponding to the last published fixing) instead of an
508 observation lag.
509 - Fixed calculation of year fraction under Actual/365 Canadian
510 convention in `FuturesRateHelper`; thanks to GitHub user PaulXiCao.
511 - Fixed settlement date calculation in cross-currency basis-swap rate
512 helpers in some cases; thanks to Marcin Rybacki
513 for the fix and to Aleksis Ali Raza for the heads-up.
514
515 MATH
516 - Handle non-equidistant grids and arbitrary dimensions in Laplace
517 interpolation; thanks to Peter Caspers.
518
519 DEPRECATED FEATURES
520 - **Removed** features deprecated in version 1.29:
521 - The `argument_type`, `first_argument_type`, `second_argument_type`
522 and `result_type` typedefs in several classes;
523 - The overloads of zero-rate inflation index constructors taking an
524 `interpolated` argument;
525 - The `interpolated` method and the protected `interpolated_` data
526 member in `InflationIndex`;
527 - The overload of `CashFlows::npvbps` taking the result by reference;
528 - The protected `rateCurve_` method in `InflationCouponPricer`;
529 - The `ThreadKey` typedef;
530 - The empty header `ql/experimental/credit/riskybond.hpp`.
531 - Deprecated the constructors of `InflationTermStructure`,
532 `ZeroInflationTermStructure`, `YoYInflationTermStructure`,
533 `InterpolatedZeroInflationCurve`, `InterpolatedYoYInflationCurve`,
534 `PiecewiseZeroInflationCurve` and `PiecewiseYoYInflationCurve`
535 taking an observation lag; use the overloads taking an explicit base
536 date instead.
537 - Deprecated the `Bond::yield`, `BondFunctions::atmRate`,
538 `BondFunctions::yield` and `BondFunctions::zSpread` overloads taking
539 a clean price as a number; use the overloads taking a `Bond::Price`
540 instead.
541 - Deprecated the `InflationTermStructure::setSeasonality` overload
542 taking no arguments; use the overload taking a pointer and pass an
543 empty one to remove seasonality.
544 - Deprecated the `InflationTermStructure::setBaseRate` method; set
545 `baseRate_` directly if needed.
546 - Deprecated the `Swaption::underlyingSwap` and
547 `SwaptionHelper::underlyingSwap` methods; use `underlying` instead.
548 - Deprecated the broken `FixedRateBondHelper::fixedRateBond` and
549 `CPIBondHelper::cpiBond` methods and the corresponding
550 `fixedRateBond_` and `cpiBond_` data members.
551
552 Thanks go also to Isuru Fernando, Viktor Zhou, Stephen Dacek, Yi
553 Jiang, Jonathan Sweemer, Eugene Toder, the XAD team and GitHub
554 user PaulXiCao and klin333 for miscellaneous fixes, improvements
555 or reports.
556
557 <strong>Release 1.33 - January 22nd, 2024</strong>
558
559 PORTABILITY
560 - **Future end of support:** as announced in release 1.32, we're
561 targeting the future release 1.35 as the last to support Visual C++
562 2015, g++ up to version 6.x, and clang up to version 4; support for
563 those compilers will be dropped in release 1.36, about nine months
564 from now. From that point onwards, this will allows us to enable
565 the use of C++17 in the code base.
566 - **Future end of support:** at the same time as the above, we'll also
567 remove the configure switch that allows to use `boost::tuple`,
568 `boost::function` and `boost::bind` instead of their `std`
569 counterparts; the `std` classes are already the default since
570 release 1.32.
571 - Added CMake presets for Apple; thanks to Christian Köhnenkamp.
572
573 DATES AND CALENDARS
574 - Added New Year's Eve as a holiday to the Chilean calendar; thanks to
575 GitHub user MoixaStrikes.
576 - Added Black Awareness Day as a holiday to the Brazilian calendar
577 starting from 2024; thanks to GitHub user PaulXiCao.
578 - Added Inauguration Day as a holiday to the Mexican calendar starting
579 from 2024; thanks to Fredrik Gerdin Börjesson.
580 - Added Chinese holidays for 2024; thanks to Cheng Li.
581 - Updated list of known ECB dates; thanks to GitHub user PaulXiCao.
582 - Added Thailandese and Taiwanese holidays up to 2024; thanks to
583 Fredrik Gerdin Börjesson.
584 - Added a one-time holiday to the South African calendar; thanks to
585 Francois Botha.
586
587 MODELS
588 - Added support for angled contour shift integrals to Heston model;
589 thanks to Klaus Spanderen.
590
591 INSTRUMENTS
592 - Allow different calendars and frequencies for different legs in
593 `MakeOIS` and `OISRateHelper`; thanks to Eugene Toder.
594 - Enabled negative payment lag in swap legs; thanks to GitHub user
595 Stoozy.
596
597 RANDOM NUMBERS
598 - Added Burley 2020 scrambled Sobol sequence generator; thanks to
599 Peter Caspers.
600
601 TESTS
602 - Use automated registration of unit tests; thanks to Siddharth
603 Mehrotra.
604 - Added a few fuzzing tests; thanks to Nathaniel Brough.
605 - Improved test coverage for a few classes; thanks to GitHub user
606 PaulXiCao.
607
608 DEPRECATED FEATURES
609 - **Removed** features deprecated in version 1.28:
610 - The overload of `CallableBond::impliedVolatility` taking an NPV as target.
611 - The constructor of `AmortizingFixedRateBond` taking a sinking frequency.
612 - The constructor of `AmortizingFixedRateBond` taking a vector of
613 `InterestRate` instances.
614 - The constructor of `FixedRateBond` taking start date, maturity
615 date etc. instead of a schedule.
616 - The constructor of `FixedRateBond` taking a vector of
617 `InterestRate` instances.
618 - The constructor of `FloatingRateBond` taking start date, maturity
619 date etc. instead of a schedule.
620 - The constructor of `CPICapFloor` taking a handle to an
621 interest-rate index.
622 - The `CPICapFloor::inflationIndex` method.
623 - The `infIndex` data member of the `CPICapFloor::arguments` class.
624 - A redundant constructor of `SabrSmileSection`.
625 - The empty headers
626 `ql/experimental/amortizingbonds/amortizingcmsratebond.hpp`,
627 `ql/experimental/amortizingbonds/amortizingfixedratebond.hpp` and
628 `ql/experimental/amortizingbonds/amortizingfloatingratebond.hpp`.
629 - Deprecated the constructor of `Currency` and `Currency::Data` taking
630 a format string, and the `Currency::format` method.
631
632 Thanks go also to Yi Jiang, Hoang Giap Vu, Jonathan Sweemer and
633 the XAD team for smaller fixes and improvements.
634
635 <strong>Release 1.32 - October 20th, 2023</strong>
636
637 PORTABILITY
638 - **Possibly breaking change:** the protected `evaluationDate_` data
639 member of the `SwaptionVolatilityDiscrete` class was renamed to
640 `cachedReferenceDate_`.
641 - **Future end of support:** we're targeting the future release 1.35
642 as the last to support Visual C++ 2015, g++ up to version 6.x, and
643 clang up to version 4; support for those compilers will be dropped
644 in release 1.36, about one year from now. From that point onwards,
645 this will allows us to enable the use of C++17 in the code base.
646 - **Future end of support:** at the same time as the above, we'll also
647 remove the configure switch that allows to use `boost::tuple`,
648 `boost::function` and `boost::bind` instead of their `std`
649 counterparts; starting from this release, the `std` classes are
650 already the default.
651 - Reorganized the CMake presets; thanks to the XAD team.
652
653 CASH FLOWS
654 - All cash flows are now lazy; thanks to Peter Caspers.
655
656 INSTRUMENTS
657 - Overnight-indexed swaps can now have different schedules and
658 nominals on the two legs; thanks to Tom Anderson.
659 - Margrabe options, compound options and chooser options were moved
660 from experimental to core.
661 - Introduced common base class `FixedVsFloatingSwap` for vanilla swap
662 and overnight-indexed swaps; this will be used in the future to help
663 a few existing swap engines support OIS.
664 - Added optional `redemptions` argument to amortizing bond
665 constructors. This allows them to be used for pools of loans where a
666 certain proportion of the underlying loans are subject to defaults
667 and losses. Thanks to Gyan Sinha.
668 - It is now possible to manually prune the notification tree for swaps
669 and bonds if one knows that the cashflows won't change pricer;
670 thanks to Peter Caspers.
671
672 MODELS
673 - Fixed the algorithm to add instruments to the calibration set of the
674 Markov model; thanks to Peter Caspers for the fix and
675 Giuseppe Trapani for the heads-up.
676
677 TERM STRUCTURES
678 - Time-to-date conversion in some swaption volatility classes could
679 return the wrong date before the first exercise date; this is now
680 fixed, thanks to Peter Caspers.
681 - It's now possible to specify the maximum number of iteration for the
682 solver inside a bootstrapped term structure; thanks to Jonathan
683 Sweemer for the change and Daniel Ángeles Ortiz
684 for the heads-up.
685 - Reduced the number of notifications for bootstrap helpers; thanks to
686 Peter Caspers.
687
688 RANDOM NUMBERS
689 - Added the xoshiro265** random-number generator; thanks to Ralf
690 Konrad. It is faster than the Mersenne Twister and
691 might be used as default in the future.
692
693 EXAMPLES
694 - The code of the examples has been modernized a bit; thanks to
695 Jonathan Sweemer.
696
697 PATTERNS
698 - Avoided a possible crash when using observables in a multi-threaded
699 setting; thanks to Peter Caspers.
700
701 DEPRECATED FEATURES
702 - **Removed** features deprecated in version 1.27:
703 - The `QL_NULL_INTEGER`, `QL_NULL_REAL`, `QL_NOEXCEPT`,
704 `QL_CONSTEXPR` and `QL_USE_STD_UNIQUE_PTR` macros.
705 - The `MultiCurveSensitivities` class.
706 - The `constant`, `identity`, `square`, `cube`, `fourth_power`,
707 `add`, `subtract`, `subtract_from`, `multiply_by`, `divide`,
708 `divide_by`, `less_than`, `greater_than`, `greater_or_equal_to`,
709 `not_zero`, `not_null`, `everywhere`, `nowhere`, `equal_within`,
710 `clipped_function`, `clip`, `composed_function`, `compose`,
711 `binary_compose3_function` and `compose3` functors.
712 - The `PdeShortRate`, `ShoutCondition`, `FDShoutCondition`,
713 `FDStepConditionEngine` and `FDEngineAdapter` classes from the old
714 finite-differences framework.
715 - The `dsd::inner_product` function.
716 - The `FDDividendEngineBase`, `FDDividendEngineMerton73`,
717 `FDDividendEngineShiftScale` and `FDDividendEngine` pricing
718 engines.
719 - The empty headers `ql/auto_ptr.hpp`, `ql/math/initializers.hpp`,
720 `ql/methods/finitedifferences/americancondition.hpp`,
721 `ql/methods/finitedifferences/onefactoroperator.hpp`,
722 `ql/pricingengines/vanilla/fddividendshoutengine.hpp`,
723 `ql/pricingengines/vanilla/fdshoutengine.hpp` and
724 `ql/utilities/disposable.hpp`.
725 - Deprecated the `StandardFiniteDifferenceModel`,
726 `StandardSystemFiniteDifferenceModel` and `StandardStepCondition`
727 typedefs; define your own typedefs if needed.
728 - Deprecated the `FDVanillaEngine`, `FDMultiPeriodEngine`,
729 `StepConditionSet`, `ParallelEvolverTraits`, `ParallelEvolver` and
730 `SampledCurve`classes and the `BSMTermOperator` and
731 `SampledCurveSet` typedefs; use the new finite-differences framework
732 instead.
733 - Deprecated the `QL_NULL_FUNCTION` macro; to check if a function is
734 empty, use it in a bool context instead.
735 - Deprecated the now empty headers
736 `ql/experimental/exoticoptions/margrabeoption.hpp`,
737 `ql/experimental/exoticoptions/analyticcomplexchooserengine.hpp`,
738 `ql/experimental/exoticoptions/analyticeuropeanmargrabeengine.hpp`,
739 `ql/experimental/exoticoptions/analyticcompoundoptionengine.hpp`,
740 `ql/experimental/exoticoptions/simplechooseroption.hpp`,
741 `ql/experimental/exoticoptions/compoundoption.hpp`,
742 `ql/experimental/exoticoptions/analyticamericanmargrabeengine.hpp`,
743 `ql/experimental/exoticoptions/analyticsimplechooserengine.hpp`,
744 `ql/experimental/exoticoptions/complexchooseroption.hpp`,
745 `ql/experimental/termstructures/multicurvesensitivities.hpp`,
746 `ql/methods/finitedifferences/shoutcondition.hpp`,
747 `ql/methods/finitedifferences/pdeshortrate.hpp`,
748 `ql/pricingengines/vanilla/fddividendengine.hpp`,
749 `ql/pricingengines/vanilla/fdstepconditionengine.hpp`,
750 `ql/pricingengines/vanilla/fdconditions.hpp` and
751 `ql/models/marketmodels/duffsdeviceinnerproduct.hpp`.
752
753 Thanks go also to Jonathan Sweemer, Ralf Konrad, Klaus Spanderen,
754 Peter Caspers, Tom Anderson, Fredrik Gerdin Börjesson, Guillaume
755 Horel and the XAD team for a number of smaller fixes and
756 improvements.
757
758 <strong>Release 1.31.1 - July 24th, 2023</strong>
759
760 QuantLib 1.31.1 is a bug-fix release for QuantLib 1.31.
761
762 It fixes a regression that could cause a segmentation fault when
763 bootstrapping an interest-rate curve using OIS rates.
764
765 <strong>Release 1.31 - July 18th, 2023</strong>
766
767 PORTABILITY
768 - **Future end of support:** as announced in the notes for the
769 previous release, after this release using `std::tuple`,
770 `std::function` and `std::bind` (instead of their `boost`
771 counterparts) will become the default. If you're using `ext::tuple`
772 etc. in your code (which is suggested), this should be a transparent
773 change. If not, you'll still be able to choose the `boost` versions
774 via a configure switch for a while; but we do suggest you start
775 using `ext::tuple` etc. in the meantime.
776 - The cmake build now creates (but doesn't install) a
777 `quantlib-config` script that can be used to retrieve flags for
778 compiling QuantLib-dependent projects; thanks to Christian
779 Köhnenkamp.
780 - A number of Boost classes and functions only used internally were
781 replaced by their standard-library equivalent; thanks to Jonathan
782 Sweemer.
783
784 PATTERNS
785 - **Optional change of behavior:** by default, the `LazyObject`
786 class forwards only one notification after recalculating and
787 silently ignores the others. In some edge cases, this could
788 lead to objects not being updated. It's now possible to enable
789 a different behavior where all notifications are forwarded; the
790 new behavior can be chosen at compile time via the configure
791 option `--disable-faster-lazy-objects` (or disabling
792 `QL_FASTER_LAZY_OBJECTS` in cmake or `userconfig.hpp`) or at run
793 time by calling
794 `LazyObject::Defaults::instance().alwaysForwardNotifications()`.
795 This might cause a slow down, so you're invited to try it out
796 and report on the mailing list. If there are no problems, the
797 new behavior might become the default in future releases. Also,
798 a new configure option `--enable-throwing-in-cycles`
799 (`QL_THROW_IN_CYCLES` in cmake or `userconfig.hpp`) is
800 optionally available; when both this option and the new behavior
801 are enabled, notifications cycles involving a lazy object will
802 throw an exception. It is suggested to try enabling the option
803 and removing such loops, if any. Thanks to Peter Caspers for
804 the change and to Ralf Konrad, Jonathan Sweemer and GitHub user
805 `djkrystul` for feedback.
806
807 DATE/TIME
808 - **Change of behavior:** when the end-of-month option is true, the
809 constructor of a schedule no longer adjust to the end of their month
810 the effective date and the termination date if they were passed
811 explicitly. Thanks to Hristo Raykov.
812 - Added separate US SOFR calendar to manage days that are business
813 days for the US government bond market but in which SOFR doesn't
814 fix; for instance, Good Friday 2023. Thanks to Tom
815 Anderson for reporting the issue.
816 - Fixed some rolling rules for South Korean calendar; thanks to Jonghee
817 Lee.
818 - Fixed incorrect 2023 holidays for Hong Kong calendar; thanks to
819 Fredrik Gerdin Börjesson.
820 - Added Hong Kong holidays for 2021-2024; thanks to Rémy Frèrebeau
821 and Binrui Dong.
822 - Added Singapore holidays for 2019-2023; thanks to Rémy Frèrebeau.
823 - Added Indian holidays for 2021-2025; thanks to Fredrik Gerdin
824 Börjesson.
825 - Added Taiwanese holidays for 2020-2023; thanks to GitHub user `jsmx`.
826 - Added a few election days for South African and South Korean
827 calendar; thanks to Fredrik Gerdin Börjesson.
828 - Updated Danish calendar; starting in 2024, General Prayer Day will
829 no longer be a holiday. Thanks to Fredrik Gerdin Börjesson.
830 - Fixed a few holidays in Finland and Singapore calendars; Thanks to
831 Fredrik Gerdin Börjesson.
832 - More day counters (Act/364, Act/365.25, Act/366) now take into
833 account intraday resolution when enabled; thanks to Klaus Spanderen.
834
835 CASH FLOWS
836 - The accrued amount for CPI coupons is now correctly based on the
837 index ratio at settlement date. An inspector for retrieving the
838 index ratio at a given date was also added.
839 - Enabled the use of normal volatilities in Hagan pricer for CMS
840 coupons; thanks to Andre Miemiec.
841 - Floating-rate coupons are now lazy; thanks to Peter Caspers.
842
843 INDEXES
844 - When passed a tenor of 7 or 14 business days, interest-rate indexes
845 would wrongly convert it to 1 or 2 weeks. This is now fixed.
846 Thanks to Eugene Toder for reporting the issue.
847 - Added DESTR and SWESTR indexes; thanks to Fredrik Gerdin Börjesson.
848 - Added CORRA index; thanks to GitHub user `AND2797`.
849 - When an YoY inflation index is calculated as a ratio, the underlying
850 inflation index is available through an inspector and its fixings
851 are used to calculate the fixing of the YoY index.
852
853 INSTRUMENTS
854 - Instruments now register automatically with the global evaluation
855 date and are notified when it changes. This makes sense in general
856 (if the evaluation date changes, you probably want to recalculate)
857 and can also help avoid some edge cases when lazy objects only
858 forward their first notification.
859 - Allowed passing a schedule without a regular tenor to callable
860 fixed-rate bonds; thanks to Hristo Raykov for the
861 fix and to GitHub user `OleBueker` for reporting the issue.
862 - Reorganized the constructors of FRA instruments; thanks to Jake Heke.
863
864 TERM STRUCTURES
865 - Ensures that upfront CDS helpers update correctly when the global
866 evaluation date changes; thanks to Andrea Pellegatta
867 for the fix and to GitHub user `bkhoor` for reporting the issue.
868 - Allow more maturities for SOFR quarterly contract in SOFR futures
869 rate helper; thanks to Jake Heke.
870 - Added constructor for date-dependent strikes to StrippedOptionlet;
871 thanks to Peter Caspers.
872
873 TEST SUITE
874 - Global settings (such as the evaluation date) are now restored and
875 index fixings are now cleaned automatically at the end of each test
876 case, making it unnecessary to clean them up manually. Thanks to
877 Eugene Toder.
878 - The parallel unit-test runner now passes the `--run_test=<filter>`
879 option down to the underlying Boost.Test implementation. Thanks to
880 Eugene Toder.
881
882 DEPRECATED FEATURES
883 - **Removed** features deprecated in version 1.26:
884 - The `CPICoupon` constructor taking a number of fixing days and its
885 `indexObservation`, `adjustedFixing` and `indexFixing(date)` methods.
886 - The `CPICashFlow` constructor taking a fixing date.
887 - The `withFixingDays` methods of `CPILeg`.
888 - The `ZeroInflationCashFlow` constructor taking a calendar and
889 business-day convention.
890 - The `LsmBasisSystem::PolynomType` typedef and the
891 `MakeMCAmericanEngine::withPolynomOrder` method.
892 - The `Observer::set_type` and `Observable::set_type` typedefs.
893 - The `Curve` class.
894 - The `LexicographicalView` class.
895 - The `Composite` class.
896 - The `DriftTermStructure` class.
897 - Deprecated the various `time_iterator` and `value_iterator` types in
898 `TimeSeries`, as well as methods returning them. The more general
899 `const_iterator` and `const_reverse_iterator` types can be used
900 instead.
901 - Deprecated the constructors of `CPICoupon` taking a spread, as well
902 as its `spread` method, its protected `spread_` data member, and the
903 `withSpreads` methods of `CPILeg`.
904 - Deprecated the `adjustedFixing` method and the protected `spread_`
905 data member of `CPICouponPricer`.
906 - Renamed `BlackVanillaOptionPricer` to `MarketQuotedOptionPricer` and
907 deprecated the old name.
908 - Deprecated a couple of constructors of `ForwardRateAgreement`.
909 - Deprecated the constructor of `YoYInflationIndex` taking a `ratio`.
910 Also, deprecated explicit classes for YoY ratio indexes
911 `YYGenericCPIr`, `YYAUCPIr`, `YYEUHICPr`, `YYFRHICPr`, `YYUKRPIr`,
912 `YYUSCPIr` and `YYZACPIr`.
913 - Deprecated the `base`, `increment`, `decrement`, `advance` and
914 `distance_to` methods of the `step_iterator` class.
915
916 Thanks go also to Jonathan Sweemer, Jose Garcia, Jake Heke, Eugene
917 Toder, Binrui Dong, the Xcelerit Dev Team, Ralf Konrad, Tom
918 Anderson and Fredrik Gerdin Börjesson for a number of smaller
919 fixes and improvements.
920
921 <strong>Release 1.30 - April 19th, 2023</strong>
922
923 PORTABILITY
924 - **Future end of support:** as announced in the notes for the
925 previous release, after this release and the next, using
926 `std::tuple`, `std::function` and `std::bind` (instead of their
927 `boost` counterparts) will become the default. If you're using
928 `ext::tuple` etc. in your code (which is suggested), this should be
929 a transparent change. If not, you'll still be able to choose the
930 `boost` versions via a configure switch for a while; but we do
931 suggest you start using `ext::tuple` etc. in the meantime.
932 - CMake builds now use a stricter warning level by default; thanks to
933 Ralf Konrad.
934 - Is it now possible to use `std::any` and `std::optional` (and the
935 related `std::any_cast` and `std::nullopt`) instead of their `boost`
936 counterparts by setting new compilation switches; thanks to Jonathan
937 Sweemer. Using the `std` classes requires C++17. We
938 expect the `boost` classes to remain the default for a while, but in
939 the meantime we encourage to start using `ext::any` and
940 `ext::optional` in preparation for a new default.
941
942 DATE/TIME
943 - Good Friday 2023 is now a business day for the US government bond
944 calendar; thanks to Anastasiia Shumyk.
945 - Added specialized Australian calendar for ASX; thanks to Trent
946 Maetzold.
947 - Fixed Turkish holidays between 2019 and 2023; thanks to Fredrik
948 Gerdin Börjesson.
949 - Added a few missing holidays to Danish calendar; thanks to Fredrik
950 Gerdin Börjesson.
951 - Added the Matariki holiday to the New Zealand calendar; thanks to
952 Jake Heke.
953
954 CASHFLOWS
955 - Added a new equity cash flow class to model equity legs in total
956 return swaps; thanks to Marcin Rybacki. Quanto
957 pricing is also supported.
958 - Added an overloaded constructor for CPI coupons that allows to
959 specify a base date instead of a base CPI value; thanks to Matthias
960 Groncki.
961
962 INSTRUMENTS
963 - Added a new total-return swap; thanks to Marcin Rybacki.
964 An equity-index class was also added to support
965 this instrument.
966 - The analytic engine for barrier options would return NaN for low
967 values of volatility; this is now fixed.
968 - The `VanillaOption` and `BarrierOption` classes can now be used to
969 model vanilla and barrier options with discrete dividends; the
970 future dividends (not being part of the terms and conditions of the
971 contract) should be passed to the pricing engine instead.
972 - Added analytical Greeks to Bjerksund-Stensland engine; thanks to
973 Klaus Spanderen.
974
975 INDEXES
976 - Added UKHICP inflation index; thanks to Fredrik Gerdin Börjesson.
977
978 TERM STRUCTURES
979 - Renamed `SwaptionVolCube1`, `SwaptionVolCube1x`, `SwaptionVolCube1a`
980 and `SwaptionVolCube2` to `SabrSwaptionVolatilityCube`,
981 `XabrSwaptionVolatilityCube`, `NoArbSabrSwaptionVolatilityCube` and
982 `InterpolatedSwaptionVolatilityCube`, respectively; thanks to
983 Ignacio Anguita. The old names are deprecated but
984 still available for a few releases.
985 - Ensure that inflation curves are re-bootstrapped correctly when
986 seasonality is added.
987
988 MODELS
989 - Moved the Heston SLV model from experimental to main; thanks to
990 Klaus Spanderen.
991
992 MATH
993 - Added a few overloads to Array and Matrix operators taking rvalue
994 references for increased speed; thanks to Jonathan Sweemer.
995
996 DEPRECATED FEATURES
997 - **Removed** features deprecated in version 1.24:
998 - the protected `spreadLegValue_` data member of `BlackIborCouponPricer`;
999 - the `WulinYongDoubleBarrierEngine` alias for `SuoWangDoubleBarrierEngine`;
1000 - the `settlementDate`, `incomeDiscountCurve`, `spotIncome`,
1001 `spotValue`, `impliedYield` and `forwardValue` methods of
1002 `ForwardRateAgreement`, as well as its protected
1003 `underlyingIncome_`, `underlyingSpotValue_`, `settlementDays_`,
1004 `payoff_` and `incomeDiscountCurve_` data members;
1005 - constructors for `InflationTermStructure`,
1006 `ZeroInflationTermStructure`, `InterpolatedZeroInflationCurve`,
1007 `PiecewiseZeroInflationCurve` taking an `indexIsInterpolated`
1008 parameter;
1009 - the `indexIsInterpolated` method of `InflationTermStructure` and
1010 its protected `indexIsInterpolated_` data member;
1011 - some overloaded constructors of `SofrFutureRateHelper`.
1012 - Deprecated the `DividendVanillaOption` and `DividendBarrierOption`
1013 classes; use `VanillaOption` and `BarrierOption` instead (see
1014 above).
1015 - Deprecated the constructor of `AnalyticDividendEuropeanEngine` that
1016 takes no dividend information; use the other overload instead.
1017 - Deprecated the names `SwaptionVolCube1`, `SwaptionVolCube1x`,
1018 `SwaptionVolCube1a` and `SwaptionVolCube2` (see above).
1019 - Deprecated the protected `setCommon` method of
1020 `CappedFlooredYoYInflationCoupon`.
1021
1022 Thanks go also to Jonathan Sweemer, the Xcelerit Dev
1023 Team, Fredrik Gerdin Börjesson, Klaus
1024 Spanderen and Peter Caspers for a number
1025 of smaller fixes and improvements, and to Matthias Groncki
1026 and GitHub user `lukey8767` for raising issues.
1027
1028 <strong>Release 1.29 - January 17th, 2023</strong>
1029
1030 PORTABILITY
1031 - <b>End of support:</b> as announced in the notes for the previous
1032 release, this release no longer manages thread-local singletons via
1033 a user-provided `sessionId` function, and therefore the latter is no
1034 longer needed. Instead, the code now uses the built-in language
1035 support for thread-local variables. Thanks go to Peter Caspers.
1036 - **Future end of support:** as announced in the notes for the
1037 previous release, after the next couple of releases, using
1038 `std::tuple`, `std::function` and `std::bind` (instead of their
1039 `boost` counterparts) will become the default. If you're using
1040 `ext::tuple` etc. in your code (which is suggested), this should be
1041 a transparent change. If not, you'll still be able to choose the
1042 `boost` versions via a configure switch for a while; but we do
1043 suggest you start using `ext::tuple` etc. in the meantime.
1044 - Replaced internal usage of `boost::thread` with `std::thread`;
1045 thanks to Jonathan Sweemer. This removed our last dependency on
1046 Boost binaries and makes it possible to compile QuantLib using a
1047 header-only Boost installation.
1048 - On Windows, it is now possible to use the MSVC dynamic runtime when
1049 using cmake by passing
1050 `-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL`
1051 on the command line; thanks to Jonathan Sweemer. The
1052 static runtime remains the default.
1053 - It is now possible to build QuantLib with Intel's `icpx` compiler
1054 using cmake; thanks to Jonathan Sweemer. Note that in order to get
1055 all the unit tests passing, `-fp-model=precise` must be added to
1056 `CMAKE_CXX_FLAGS`.
1057
1058 DATE/TIME
1059 - Updated Chinese holidays for 2023; thanks to Cheng Li.
1060 - Added in-lieu holiday for Christmas 2022 to South-African calendar;
1061 thanks to Joshua Hayes.
1062 - Added King Charles III coronation holiday to UK calendar; thanks to
1063 Fredrik Gerdin Börjesson.
1064 - Added holiday for National Day of Mourning to Australian calendar;
1065 thanks to Fredrik Gerdin Börjesson.
1066
1067 INSTRUMENTS
1068 - Added high performance/precision American engine based on
1069 fixed-point iteration for the exercise boundary; thanks to Klaus
1070 Spanderen.
1071 - Bonds with draw-down (i.e., increasing notionals) are now allowed;
1072 thanks to Oleg Kulkov.
1073 - Added `withIndexedCoupons` and `withAtParCoupons` methods to
1074 `MakeSwaption` for easier initialization; thanks to Ralf Konrad.
1075 - It is now possible to use the same pricing engine for vanilla and
1076 dividend vanilla options, or for barrier and dividend barrier
1077 options.
1078
1079 INDEXES
1080 - Creating a zero inflation index as "interpolated" is now deprecated;
1081 thanks to Ralf Konrad. The index should only return
1082 monthly fixings. Interpolation is now the responsibility of
1083 inflation-based coupons.
1084
1085 TERM STRUCTURES
1086 - The `ConstantCPIVolatility` constructor can now take a handle to a
1087 volatility quote, instead of just an immutable number.
1088
1089 DEPRECATED FEATURES
1090 - <b>Removed</b> features deprecated in version 1.24:
1091 - the `createAtParCoupons`, `createIndexedCoupons` and
1092 `usingAtParCoupons` methods of `IborCoupon`;
1093 - the `RiskyBond` class and its subclasses `RiskyFixedBond` and
1094 `RiskyFloatingBond`;
1095 - the `CrossCurrencyBasisSwapRateHelper` typedef;
1096 - the `termStructure_` data member of `BlackCalibrationHelper`;
1097 - the static `baseCurrency` and `conversionType` data members of `Money`;
1098 - the `nominalTermStructure` method and the `nominalTermStructure_`
1099 data member of `InflationTermStructure`;
1100 - the constructor of the `UnitedStates` calendar not taking an
1101 explicit market.
1102 - Deprecated the `argument_type`, `first_argument_type`,
1103 `second_argument_type` and `result_type` typedefs in a number of
1104 classes; use `auto` or `decltype` instead.
1105 - Deprecated the constructors of `InflationIndex`,
1106 `ZeroInflationIndex`, `FRHICP`, `ZACPI`, `UKRPI`, `EUHICP`,
1107 `EUHICPXT`, `USCPI`, `AUCPI` and `GenericCPI` taking an
1108 `interpolated` parameter; use another constructor.
1109 - Deprecated the `interpolated` method and the `interpolated_` data
1110 member of `InflationIndex`.
1111 - Deprecated the `ThreadKey` typedef. It was used in the signature of
1112 `sessionId`, which is no longer needed after the changes in the
1113 `Singleton` implementation.
1114 - Deprecated the `rateCurve_` data member of the
1115 `InflationCouponPricer` base class. If you need it, provide it in
1116 your derived class.
1117 - Deprecated the `npvbps` function taking NPV and BPS as references.
1118 Use the overload returning a pair of `Real`s.
1119
1120 Thanks go also to Matthias Groncki, Jonathan Sweemer
1121 and Nijaz Kovacevic for a number of smaller fixes
1122 and improvements, to the Xcelerit Dev Team for
1123 improvements to the automated CI builds, and to Vincenzo Ferrazzanno
1124 and GitHub users alienbrett, xuruilong100 and philippb90 for raising issues.
1125
1126 <strong>Release 1.28 - October 25th, 2022</strong>
1127
1128 PORTABILITY
1129 - <b>New language standard:</b> as announced in the notes for the
1130 previous release, this release started using some C++14 syntax.
1131 This should be supported by most compilers released in the past
1132 several years.
1133 - <b>End of support:</b> as announced in the notes for the previous
1134 release, this release is the last to manage thread-local singletons
1135 via a user-provided `sessionId` function. Future releases will use
1136 the built-in language support for thread-local variables.
1137 - <b>Future end of support:</b> after the next two or three releases,
1138 using `std::tuple`, `std::function` and `std::bind` (instead of
1139 their `boost` counterparts) will become the default. If you're
1140 using `ext::tuple` etc. in your code (which is suggested), this
1141 should be a transparent change. If not, you'll still be able to
1142 choose the `boost` versions via a configure switch for a while.
1143
1144 DATE/TIME
1145 - Added Act/366 and Act/365.25 day counters; thanks to Ignacio Anguita.
1146 - Added H.M. the Queen's funeral to the UK calendars; thanks to Tomass
1147 Wilson.
1148
1149 INSTRUMENTS
1150 - Amortizing bonds were moved out of the experimental folder. Also, a
1151 couple of utility functions were provided to calculate amortization
1152 schedules and notionals.
1153
1154 PRICING ENGINES
1155 - Fixed results from `COSHestonEngine` in the case of an option with
1156 short time to expiration and deep ITM or deep OTM strike prices;
1157 thanks to Ignacio Anguita.
1158 - The ISDA engine for CDS could calculate the fair upfront with the
1159 wrong sign; this is now fixed, thanks to Gualtiero Chiaia.
1160
1161 TERM STRUCTURES
1162 - The constructor for `OISRateHelper` now allows to specify the
1163 `endOfMonth` parameter; thanks to Guillaume Horel.
1164
1165 FINITE DIFFERENCES
1166 - Fixed computation of cds boundaries in `LocalVolRNDCalculator`;
1167 thanks to GitHub user mdotlic.
1168
1169 EXPERIMENTAL FOLDER
1170
1171 The `ql/experimental` folder contains code whose interface is not
1172 fully stable, but is released in order to get user
1173 feedback. Experimental classes make no guarantees of backward
1174 compatibility; their interfaces might change in future releases.
1175
1176 - <b>Breaking change</b>: the constructor of the
1177 `CPICapFloorTermPriceSurface` class now also takes an explicit
1178 interpolation type.
1179 - <b>Possibly breaking</b>: the protected constructor for `CallableBond`
1180 changes its arguments. If you inherited from this class, you'll
1181 need to update your code. If you're using the existing derived bond
1182 classes, the change will be transparent.
1183 - Pricing engines for callable bonds worked incorrectly when the face
1184 amount was not 100. This is now fixed.
1185 - The `impliedVolatility` method for callable bonds was taking a
1186 target NPV, not a price. This implementation is now deprecated, and
1187 a new overload was added taking a price in base 100.
1188
1189 DEPRECATED FEATURES
1190 - <b>Removed</b> features deprecated in version 1.23:
1191 - the constructors of `ZeroCouponInflationSwap` and
1192 `ZeroCouponInflationSwapHelper` missing an explicit CPI
1193 interpolation type;
1194 - the constructors of `ActualActual` and `Thirty360` missing an
1195 explicit choice of convention, and the constructor of `Thirty360`
1196 passing an `isLastPeriod` boolean flag.
1197 - Deprecated the constructors of `FixedRateBond` taking an
1198 `InterestRate` instance or not taking a `Schedule` instance.
1199 - Deprecated the constructor of `FloatingRateBond` not taking a
1200 `Schedule` instance.
1201 - Deprecated the constructors of `AmortizingFixedRateBond` taking a
1202 sinking frequency or a vector of `InterestRate` instances.
1203 - Deprecated the constructor of `CPICapFloor` taking a `Handle` to an
1204 inflation index, and its `inflationIndex` method returning a `Handle`.
1205 New versions of both were added using `shared_ptr` instead.
1206 - Deprecated one of the constructors of `SabrSmileSection`; a new
1207 version was added also taking an optional reference date.
1208 - Deprecated the old `impliedVolatility` method for callable bonds;
1209 see above.
1210
1211 Thanks go also to Konstantin Novitsky, Peter Caspers, Klaus
1212 Spanderen, Fredrik Gerdin Börjesson and Dirk Eddelbuettel for a
1213 number of smaller fixes, and to Jonathan Sweemer for various
1214 improvements to the automated CI builds.
1215
1216 <strong>Release 1.27.1 - August 30th, 2022</strong>
1217
1218 QuantLib 1.27.1 is a bug-fix release.
1219
1220 It restores the old implementation of `Null<T>` which was replaced
1221 in version 1.27 with a new one; the latter was reported to cause
1222 an internal compiler error under Visual C++ 2022 for some client code.
1223 The new version (which avoids some problems when replacing `Real`
1224 with some AAD-enabled types) is still available; depending on how
1225 you compile QuantLib, it can be enabled through the
1226 `--enable-null-as-functions` configure flag, the cmake variable
1227 `QL_NULL_AS_FUNCTIONS`, or the define with the same name in the
1228 `ql/userconfig.hpp` header.
1229
1230 <strong>Release 1.27 - July 22nd, 2022</strong>
1231
1232 PORTABILITY
1233 - <b>Removed support:</b> as announced in the notes for the previous
1234 release, support for Visual Studio 2013 was dropped.
1235 - <b>End of support:</b> as announced in the notes for the previous
1236 release, this release will be the last to avoid C++14 syntax.
1237 Allowing the newer (but still oldish) standard should still support
1238 most compilers released in the past several years.
1239 - <b>Future end of support:</b> this release and the next will be the
1240 last to manage thread-local singletons via a user-provided
1241 `sessionId` function. Future releases will use the built-in
1242 language support for thread-local variables.
1243 - The `Real` type is now used consistently throughout the codebase,
1244 thanks to the Xcelerit dev team. This, along with
1245 other changes, allows its default definition to `double` to be
1246 replaced with one of the available third-party AAD types.
1247 - The test suite is now built using the header-only version of
1248 Boost.Test, thanks to Jonathan Sweemer. This might
1249 simplify Boost installation for some users, since in the default
1250 configuration QuantLib now only needs the Boost headers.
1251 - Replaced some Boost facilities with the corresponding C++11
1252 counterparts; thanks to Klaus Spanderen and
1253 Jonathan Sweemer.
1254
1255 DATE/TIME
1256 - Fixed the behavior of a couple of Australian holidays; thanks to
1257 Pradeep Krishnamurthy and Fredrik Gerdin Börjesson.
1258
1259 INSTRUMENTS
1260 - Added the Turnbull-Wakeman engine for discrete Asian options; thanks
1261 to Fredrik Gerdin Börjesson for the main engine code
1262 and to Jack Gillett for the Greeks.
1263 - Added more validation to barrier options; thanks to Jonathan Sweemer.
1264
1265 MODELS
1266 - Fixed the start date of the underlying swap in swaption calibration
1267 helpers; thanks to Peter Caspers.
1268 - Fixed parameter checks in SVI volatility smiles; thanks to Fredrik
1269 Gerdin Börjesson.
1270
1271 PATTERNS
1272 - Avoid possible iterator invalidation while notifying observers;
1273 thanks to Klaus Spanderen.
1274
1275 DEPRECATED FEATURES
1276 - <b>Removed</b> the `--enable-disposable` and `--enable-std-unique-ptr`
1277 configure switches.
1278 - <b>Removed</b> features deprecated in version 1.22:
1279 - the unused `AmericanCondition` and `FDAmericanCondition` classes;
1280 - the old-style FD shout and dividend shout engines;
1281 - the unused `OneFactorOperator` class;
1282 - the `io::to_integer` function;
1283 - the `ArrayProxy` and `MatrixProxy` classes.
1284 - Deprecated the `QL_NOEXCEPT` and `QL_CONSTEXPR` macros.
1285 - Deprecated the `QL_NULL_INTEGER` and `QL_NULL_REAL` macros.
1286 - Deprecated some unused parts of the old-style FD framework:
1287 - the `PdeShortRate` class;
1288 - the `ShoutCondition` and `FDShoutCondition` classes;
1289 - the `FDDividendEngineBase`, `FDDividendEngineMerton73`,
1290 `FDDividendEngineShiftScale` and `FDDividendEngine` classes;
1291 - the `FDStepConditionEngine` and `FDEngineAdapter` classes.
1292 - Deprecated a number of function objects in the
1293 `ql/math/functional.hpp` header.
1294 - Deprecated the unused `MultiCurveSensitivities` class.
1295 - Deprecated the unused `inner_product` function.
1296
1297 Thanks go also to Ryan Russell for documentation fixes.
1298
1299 <strong>Release 1.26 - April 20th, 2022</strong>
1300
1301 PORTABILITY
1302 - <b>End of support:</b> as announced in the notes for the previous
1303 release, this release is the last to support Visual Studio 2013.
1304 - <b>End of support:</b> this release is the last to support the
1305 long-deprecated configure switches `--enable-disposable` and
1306 `--enable-std-unique-ptr`. From the next release, `Disposable` will
1307 always be disabled (and eventually removed) and `std::unique_ptr`
1308 will always be used instead of `std::auto_ptr`. This has already
1309 been the default in the last few releases.
1310 - <b>Future end of support:</b> this release and the next will be the
1311 last to avoid C++14 syntax. This should still support most
1312 compilers released in the past several years (except for Visual
1313 Studio 2013, which we're already dropping in this release).
1314 - If tagged libraries are specified, as is the default on Windows,
1315 CMake now gives the built libraries the same names as the Visual
1316 Studio solution (for instance, `QuantLib-x64-mt-s` instead of
1317 `QuantLib-mt-s-x64`) so that the pragma in `ql/auto_link.hpp` works.
1318 - QuantLib can now also be built as a subproject in a larger CMake
1319 build (thanks to Peter Caspers).
1320
1321 DATE/TIME
1322 - When printed, `Period` instances now display transparently what
1323 their units and length are, instead of doing more fancy formatting
1324 (e.g., "16 months" is now displayed instead of "1 year 4 months").
1325 Also, `Period` instances that compare as equal now return the same
1326 period from their `normalize` method.
1327
1328 INDEXES
1329 - Added Tona (Tokyo overnight average) index (thanks to Jonghee Lee).
1330 - Added static `laggedFixing` method to `CPI` structure which provides
1331 interpolation of inflation index fixings.
1332
1333 CASH FLOWS
1334 - The `CPICoupon` and `CPICashFlow` classes now take into account the
1335 correct dates and observation lag for interpolation.
1336
1337 INSTRUMENTS
1338 - Added a `BondForward` class that generalizes the existing
1339 `FixedRateBondForward` to any kind of bond (thanks to Marcin
1340 Rybacki).
1341 - Avoided unexpected jumps in callable bond OAS (thanks to Ralf Konrad).
1342 - Fixed `TreeSwaptionEngine` mispricing when adjusting the instrument
1343 schedule to a near exercise date (thanks to Ralf Konrad).
1344 - the `ForwardRateAgreement` class now works correctly without an
1345 explicit discount curve.
1346
1347 TERM STRUCTURES
1348 - Dates explicitly passed to `InterpolatedZeroInflationCurve` are no
1349 longer adjusted automatically to the beginning of their inflation period.
1350
1351 DEPRECATED FEATURES
1352 - <b>Removed</b> the `MCDiscreteAveragingAsianEngine` class,
1353 deprecated in version 1.21.
1354 - Deprecated the `LsmBasisSystem::PolynomType` typedef, now renamed to
1355 `PolynomialType`; `MakeMCAmericanEngine::withPolynomOrder` was also
1356 deprecated and renamed to `withPolynomialOrder`.
1357 - Deprecated the `ZeroInflationCashFlow` constructor taking an unused
1358 calendar and business-day convention.
1359 - Deprecated the `CPICoupon` constructor taking a number of fixing
1360 days, as well as the `CPICoupon::indexObservation`,
1361 `CPICoupon::adjustedFixing` and `CPICoupon::indexFixing` methods
1362 and the `CPILeg::withFixingDays` method.
1363 - Deprecated the `CPICashFlow` constructor taking a precalculated fixing date and a frequency.
1364 - Deprecated the `Observer::set_type` and `Observable::set_type` typedefs.
1365 - Deprecated the unused `Curve` class.
1366 - Deprecated the unused `LexicographicalView` class.
1367 - Deprecated the unused `Composite` class.
1368 - Deprecated the unused `DriftTermStructure` class.
1369
1370 Thanks go also to Matthias Groncki, Jonathan Sweemer and Li Zhong
1371 for smaller fixes, enhancements and bug reports.
1372
1373 <strong>Release 1.25 - January 18th, 2022</strong>
1374
1375 PORTABILITY
1376 - <b>End of support:</b> this release and the next will be the last
1377 two to support Visual Studio 2013.
1378 - Added a few CMake presets for building the library (thanks to
1379 Jonathan Sweemer).
1380 - When built and installed through CMake, the library now installs
1381 a `QuantLibConfig.cmake` file that allows other CMake projects
1382 to find and use QuantLib (thanks to Jonathan Sweemer).
1383
1384 CASHFLOWS
1385 - Fixed the accrual calculation in overnight-indexed coupons
1386 (thanks to Mohammad Shojatalab).
1387 - Fixed fixing-days usage in `SubPeriodsCoupon` class (thanks to
1388 Marcin Rybacki).
1389 - IBOR coupons fixed in the past no longer need a forecast curve
1390 to return their amount.
1391
1392 INDEXES
1393
1394 - <b>Important change:</b> inflation indexes inherited from the
1395 `ZeroInflationIndex` class no longer rely on their forecast
1396 curve for interpolation. For coupons that already took care of
1397 interpolation (as in the case of `CPICoupon` and
1398 `ZeroInflationCashFlow`) this should not change the results. In
1399 other cases, figures will change but should be more correct as
1400 the interpolation is now performed according to market
1401 conventions. Also, most inflation curves now assume that the
1402 index is not implemented. Year-on-year inflation indexes and
1403 curves are not affected.
1404
1405 INSTRUMENTS
1406 - <b>Breaking change:</b> convertible bonds were moved out of the
1407 `ql/experimental` folder. Also, being market values and not
1408 part of the contract, dividends and credit spread were moved
1409 from the bond to the `BinomialConvertibleEngine` class (thanks
1410 to Lew Wei Hao).
1411 - The `ForwardRateAgreement` no longer inherits from `Forward`.
1412 This also made it possible to implement the `amount` method
1413 returning the expected cash settlement (thanks to Lew Wei Hao).
1414 The methods from `Forward` were kept available but deprecated so
1415 code using them won't break. Client code might break if it
1416 performed casts to `Forward`.
1417
1418 MODELS
1419 - Fixed formula for discount bond option in CIR++ model (thanks to
1420 Magnus Mencke).
1421
1422 TERM STRUCTURES
1423 - It is now possible to use normal volatilities in SABR smile
1424 sections, and thus in the `SabrSwaptionVolatilityCube` class (thanks to
1425 Lew Wei Hao).
1426
1427 DATE/TIME
1428 - Added Chinese holidays for 2022 (thanks to Cheng Li).
1429
1430 CURRENCIES
1431 - Added a number of African, American, Asian and European
1432 currencies from Quaternion's `QuantExt` project (thanks to Ole
1433 Bueker).
1434
1435 EXPERIMENTAL FOLDER
1436
1437 The `ql/experimental` folder contains code whose interface is not
1438 fully stable, but is released in order to get user
1439 feedback. Experimental classes make no guarantees of backward
1440 compatibility; their interfaces might change in future releases.
1441
1442 - Added experimental rate helpers for LIBOR-LIBOR and
1443 Overnight-LIBOR basis swaps.
1444 - Renamed `WulinYongDoubleBarrierEngine` to
1445 `SuoWangDoubleBarrierEngine` (thanks to Adityakumar Sinha for the
1446 fix and Ruilong Xu for the heads-up).
1447
1448 DEPRECATED FEATURES
1449 - Deprecated the constructors of zero-coupon inflation term
1450 structures taking an `indexIsInterpolated` boolean argument.
1451 - Deprecated a number of methods in the `ForwardRateAgreement`
1452 class that used to be inherited from `Forward`.
1453 - Deprecated a couple of constructors in the
1454 `SofrFutureRateHelper` class.
1455 - Deprecated the `WulinYongDoubleBarrierEngine` alias for
1456 `SuoWangDoubleBarrierEngine`.
1457 - Deprecated the protected `spreadLegValue_` data member in the
1458 `BlackIborCouponPricer` class.
1459
1460 Thanks go also to Tom Anderson, Francois Botha, Matthew Kolbe,
1461 Benson Luk, Marcin Rybacki, Henning Segger, Klaus Spanderen, and
1462 GitHub users jxcv0 and azsrz for smaller fixes, enhancements and
1463 bug reports.
1464
1465 <strong>Release 1.24 - October 2021</strong>
1466
1467 PORTABILITY
1468 - Overhauled the CMake build system (thanks to Philip Kovacs). Among
1469 other things, it now allows to specify the available configuration
1470 options from the `cmake` invocation and adds the required Boost
1471 libraries accordingly.
1472
1473 INSTRUMENTS
1474 - Avoid callable-bond mispricing when a call date is close but not equal
1475 to a coupon date (thanks to Ralf Konrad for the fix and to GitHub user
1476 aichao for the analysis).
1477 See <https://github.com/lballabio/QuantLib/issues/930> for details.
1478 - A new `RiskyBondEngine` is available for bonds (thanks to Lew Wei
1479 Hao). It prices bonds based on a risk-free discount cure and a
1480 default-probability curve used to assess the probability of each
1481 coupon payment. It makes accessible to all bonds the calculations
1482 previously available in the experimental `RiskyBond` class.
1483
1484 CASHFLOWS
1485 - The choice between par and indexed coupons was moved to
1486 `IborCouponPricer` (thanks to Peter Caspers). This also made it
1487 possible to override the choice locally when building a
1488 `VanillaSwap` or a `SwapRateHelper`, so that coupons with both
1489 behaviors can now be used at the same time.
1490
1491 TERM STRUCTURES
1492 - Cross-currency basis swap rate helpers now support both
1493 constant-notional and marked-to-market swaps (thanks to Marcin
1494 Rybacki).
1495
1496 DATE/TIME
1497 - Added Chilean calendar (thanks to Anubhav Pandey).
1498 - Added new `ThirdWednesdayInclusive` date-generation rule that also
1499 adjusts start and end dates (thanks to Lew Wei Hao).
1500
1501 PATTERNS
1502 - Overhauled `Singleton` implementation (thanks to Peter Caspers).
1503 Singletons are now initialized in a thread-safe way when sessions
1504 are enabled, global singletons (that is, independent of sessions)
1505 were made available, and static initialization was made safer.
1506
1507 TEST SUITE
1508 - Sped up some of the longer-running tests (thanks to Mohammad Shojatalab).
1509
1510 DEPRECATED FEATURES
1511 - Deprecated default constructor for the U.S. calendar; the desired
1512 market should now be passed explicitly.
1513 - Deprecated the `nominalTermStructure` method and the corresponding
1514 data member in inflation term structures. Any object needing the
1515 nominal term structure should have it passed explicitly.
1516 - Deprecated the `termStructure_` data member in
1517 `BlackCalibrationHelper`. It you're inheriting from
1518 `BlackCalibrationHelper` and need it, declare it in your derived
1519 class.
1520 - Deprecated the `createAtParCoupons`, `createIndexedCoupons` and
1521 `usingAtParCoupons` methods of `IborCoupon`, now moved to a new
1522 `IborCoupon::Settings` singleton (thanks to Philip Kovacs).
1523 - Deprecated the `conversionType` and `baseCurrency` static data
1524 members of `Money`, now moved to a new `Money::Settings` singleton
1525 (thanks to Philip Kovacs).
1526 - Removed features deprecated in version 1.19: the `BMAIndex`
1527 constructor taking a calendar, the `AmericanCondition` and
1528 `ShoutCondition` constructors taking an option type and strike, the
1529 `CurveDependentStepCondition` class and the
1530 `StandardCurveDependentStepCondition` typedef, the
1531 `BlackCalibrationHelper` constructor taking a yield term structure,
1532 the various inflation term structure constructors taking a yield
1533 term structure, the various yield term constructors taking a vector
1534 of jumps but not specifying a reference date.
1535
1536 Thanks go also to Mickael Anas Laaouini, Jack Gillett, Bojan Nikolic
1537 and Klaus Spanderen for smaller fixes, enhancements and bug reports.
1538
1539 <strong>Release 1.23 - July 14th, 2021</strong>
1540
1541 PORTABILITY
1542 - On Mac OS, the `-std=c++11` flag is now added automatically when
1543 needed. This applies to both `configure` and `cmake` (thanks to
1544 Leander Schulten).
1545 - We now assume that the compiler supports Boost::uBLAS and no longer
1546 check for it in configure. (The check was originally introduced for
1547 versions of gcc before 4.x, which don't support C++ anyway.)
1548 Please let us know if this causes problems on some systems.
1549 - The `Period`, `InterestRate` and `InterestRateIndex` classes are now
1550 visualized more clearly in the Visual Studio debugger (thanks to
1551 Francois Botha).
1552
1553 CASHFLOWS
1554 - Year-on-year and CPI legs are now set a default coupon pricer. In
1555 most cases, this removes the need for setting it explicitly.
1556 - Add new `ZeroInflationCashFlow` class, used in zero-coupon inflation
1557 swaps (thanks to Ralf Konrad).
1558
1559 CURRENCIES
1560 - Added custom constructor that allows to create bespoke currencies
1561 not already included in the library (thanks to Marcin Rybacki).
1562
1563 DATE/TIME
1564 - Fixed implementation of U.S. 30/360 convention (the old one is still
1565 available as 30/360 NASD).
1566 - The 30/360 ISDA convention can now take the termination date as a
1567 constructor argument and use it to adjust the calculation properly.
1568 - Added the 30/360 ISMA convention; the Bond-Basis convention is now
1569 an alias to the former.
1570 - The 30/360 German convention was renamed to ISDA; "German" remains
1571 as an alias.
1572 - Added new Canadian holiday (National Day for Truth and
1573 Reconciliation) established in 2021 (thanks to GitHub user `qiubill`
1574 for the heads-up).
1575 - Added new U.S. holiday (Juneteenth) established in 2021.
1576 - Added new Platinum Jubilee U.K. holiday for 2022 (thanks to Ioannis
1577 Rigopoulos for the heads-up.)
1578 - Added missing Christmas Eve holiday to Norwegian calendar (thanks to
1579 Prince Nanda).
1580
1581 INDEXES
1582 - Added ESTR index (thanks to Magnus Mencke).
1583
1584 INSTRUMENTS
1585 - Added zero-coupon swap (thanks to Marcin Rybacki).
1586 - The `Type` enumeration defined in several swap classes was moved to
1587 their base `Swap` class.
1588 - Fixed sign of theta in experimental Kirk engine for spread options
1589 (thanks to Xu Ruilong for the heads-up).
1590
1591 PROCESSES
1592 - Improved discretization of Cox-Ingersoll-Ross process to avoid
1593 occasional divergence (thanks to Magnus Mencke).
1594
1595 DEPRECATED FEATURES
1596 - Deprecated default constructor for actual/actual and 30/360 day
1597 counters; the desired convention should now be passed explicitly.
1598 - Removed features deprecated in version 1.18: the
1599 `CalibrationHelperBase` typedef (now `CalibrationHelper`), some
1600 overloads of the `CalibratedModel::calibrate` and
1601 `CalibratedModel::value` methods, the constructors of
1602 `PiecewiseYieldCurve` and `PiecewiseDefaultCurve` taking an
1603 `accuracy` parameter, the constructors of `BondHelper`,
1604 `FixedRateBondHelper` and `CPIBondHelper` taking a boolean
1605 `useCleanPrice` parameter, the `BondHelper::useCleanPrice()` method,
1606 and the non-static `Calendar::holidayList` method.
1607
1608 Thanks go also to Francis Duffy, Kevin Kirchhoff, Magnus Mencke and
1609 Klaus Spanderen for smaller fixes, enhancements and bug reports.
1610
1611 <strong>Release 1.22 - April 15th, 2021</strong>
1612
1613 PORTABILITY
1614 - As previously announced, this release drops support for Visual
1615 C++ 2012. VC++ 2013 or later is now required.
1616 - The `Date` and `Array` classes are now visualized more clearly in
1617 the Visual Studio debugger (thanks to Francois Botha).
1618
1619 LANGUAGE STANDARD
1620 - QuantLib now uses the C++11 standard and no longer compiles in C++03
1621 mode. As before, it can be compiled with later versions of the
1622 standard. For details on the C++11 features used, see the pull
1623 requests marked "C++11 modernization" at the above link; for
1624 information on possible problems, see
1625 <https://www.implementingquantlib.com/2021/02/leaving-03-for-real.html>.
1626
1627 CASHFLOWS
1628 - Revised and tested the `SubPeriodCoupon` class (thanks to Marcin
1629 Rybacki). The class was moved out of the `ql/experimental` folder
1630 and its interface can now be considered stable.
1631 - Add simple averaging to overnight-index coupons in addition to the
1632 existing compound averaging (thanks to Marcin Rybacki).
1633 - Fixed accrual calculation for inflation coupon when trading
1634 ex-coupon (thanks to GitHub user `bachhani`).
1635
1636 CURRENCIES
1637 - Added the Nigerian Naira (thanks to Bryte Morio).
1638
1639 DATE/TIME
1640 - Fixed actual/actual (ISMA) day counter calculation for long/short
1641 final periods (thanks to Francois Botha).
1642 - Updated a couple of changed rules for New Zealand calendar (thanks
1643 to Paul Giltinan).
1644
1645 INDEXES
1646 - Added `hasHistoricalFixing` inspector to `Index` class to check if
1647 the fixing for a given past date is available (thanks to Ralf
1648 Konrad).
1649
1650 INSTRUMENTS
1651 - Added new-style finite-difference engine for shout options (thanks
1652 to Klaus Spanderen). In the case of dividend shout options, an
1653 escrowed dividend model is used.
1654 - Revised the `OvernightIndexFutures` class. The class was moved out
1655 of the `ql/experimental` folder and its interface can now be
1656 considered stable.
1657 - Added an overloaded constructor for Asian options that takes all
1658 past fixings and thus allows to reprice them correctly when the
1659 evaluation date changes (thanks to Jack Gillett).
1660 - Added support for seasoned geometric Asian options to the Heston
1661 engine (thanks to Jack Gillett).
1662
1663 PATTERNS
1664 - Faster implementation of the `Observable` class in the thread-safe
1665 case (thanks to Klaus Spanderen).
1666
1667 TERM STRUCTURES
1668 - Added experimental rate helper for constant-notional cross-currency
1669 basis swaps (thanks to Marcin Rybacki).
1670 - Added volatility type and displacements to year-on-year inflation
1671 volatility surfaces (thanks to Peter Caspers).
1672
1673 DEPRECATED FEATURES
1674 - Removed features deprecated in version 1.17: the `Callability::Type`
1675 typedef (now `Bond::Price`), the `FdmOrnsteinUhlenbackOp` typedef
1676 (now correctly spelled as `FdmOrnsteinUhlenbeckOp`, and a number of
1677 old-style finite-difference engines (`FDAmericanEngine`,
1678 `FDBermudanEngine`, `FDDividendAmericanEngine` and its variants,
1679 `FDDividendEuropeanEngine` and its variants, and `FDEuropeanEngine`)
1680 all replaced by the `FdBlackScholesVanillaEngine` class.
1681 - Deprecated the old-style finite difference engines for shout
1682 options; they are now replaced by the new `FDDividendShoutEngine`
1683 class.
1684 - Deprecated a few unused parts of the old-style finite-differences
1685 framework: the `AmericanCondition` class, the `OneFactorOperator`
1686 typedef, and the `FDAmericanCondition` class.
1687
1688 TEST SUITE
1689 - Reduced the run time for the longest-running test cases.
1690
1691 Thanks go also to Francis Duffy and Cay Oest for smaller fixes,
1692 enhancements and bug reports.
1693
1694 <strong>Release 1.21 - January 20th, 2021</strong>
1695
1696 PORTABILITY
1697 - As previously announced, this is the last release to support
1698 Visual C++ 2012. Starting from next release, VC++ 2013 or later
1699 will be required in order to enable use of C++11 features.
1700
1701 INSTRUMENTS
1702 - Improve date generation for CDS schedules under the post-big-bang
1703 rules (thanks to Francis Duffy).
1704 - Amortizing fixed-rate bonds can now use a generic `InterestRate`
1705 object (thanks to Piter Dias).
1706 - Added Monte Carlo pricer for discrete-average arithmetic Asian
1707 options under the Heston model (thanks to Jack Gillett).
1708 - Added analytic and Monte Carlo pricers for discrete-average
1709 geometric Asian options under the Heston model (thanks to Jack
1710 Gillett). Together, they can also be used as a control variate in
1711 Monte Carlo models for arithmetic Asian options.
1712 - Added analytic pricer for continuous-average geometric Asian
1713 options under the Heston model (thanks to Jack Gillett).
1714 - Added analytic pricer for forward options under the Heston model
1715 (thanks to Jack Gillett).
1716 - Added Monte Carlo pricers for forward options under the
1717 Black-Scholes and the Heston models (thanks to Jack Gillett).
1718
1719 TERM STRUCTURES
1720 - Added Dutch regulatory term structure, a.k.a. ultimate forward term
1721 structure (thanks to Marcin Rybacki).
1722 - Generalized exponential spline fitting to an arbitrary number of
1723 parameters; it is now also possible to fix kappa (thanks to David
1724 Sansom).
1725 - Fixed averaging period for 1-month SOFR futures rate helper (thanks
1726 to Eisuke Tani).
1727
1728 DATE/TIME
1729 - Fixed a bug and added 2017 holidays in Thailand calendar (thanks to
1730 GitHub user `phil-zxx` for the heads-up).
1731 - Updated Chinese calendar for 2021 (thanks to Cheng Li).
1732 - Updated Japanese calendar for 2021 (thanks to Eisuke Tani).
1733
1734 Thanks go also to Francois Botha, Peter Caspers, Ralf Konrad,
1735 Matthias Siemering, Klaus Spanderen and Joseph Wang for smaller
1736 fixes, enhancements and bug reports.
1737
1738 <strong>Release 1.20 - October 26th, 2020</strong>
1739
1740 PORTABILITY
1741 - Support for Visual C++ 2012 is being deprecated. It will be dropped
1742 after the next release in order to enable use of C++11 features.
1743 - It is now possible to opt into using `std::tuple` instead of
1744 `boost::tuple` when the compiler allows it. The default is still to
1745 use the Boost implementation. The feature can be enabled by
1746 uncommenting the `QL_USE_STD_TUPLE` macro in `ql/userconfig.hpp` on
1747 Visual C++ or by passing the `--enable-std-tuple` switch to
1748 `./configure` on other systems. The `--enable-std-tuple` switch is
1749 also implied by `--enable-std-classes`. (Thanks to Joseph Wang.)
1750
1751 INSTRUMENTS
1752 - Added mixing-factor parameter to Heston finite-differences barrier,
1753 rebate and double-barrier engines (thanks to GitHub user
1754 `jackgillett101`).
1755 - Added a few additional results to Black swaption engine and to
1756 analytic European option engine (thanks to Peter Caspers and Marcin
1757 Rybacki).
1758 - Improved calculation of spot date for vanilla swap around holidays
1759 (thanks to Paul Giltinan).
1760 - Added ex-coupon feature to amortizing bonds, callable bonds and
1761 convertible bonds.
1762 - Added optional first-coupon day counter to fixed-rate bonds (thanks
1763 to Jacob Lee-Howes).
1764
1765 MATH
1766 - Added convenience classes `LogCubic` and `LogMixedLinearCubic`
1767 hiding a few default parameters (thanks to Andrea Maffezzoli).
1768
1769 MODELS
1770 - Added control variate based on asymptotic expansion for the Heston
1771 model (thanks to Klaus Spanderen).
1772
1773 DATE/TIME
1774 - Added missing Hong Kong holiday (thanks to GitHub user `CarrieMY`).
1775 - Added a couple of one-off closing days to the Romanian calendar.
1776 - Added a one-off holiday to South Korean calendar (thanks to GitHub
1777 user `fayce66`).
1778 - Added a missing holiday to Turkish calendar (thanks to Berat
1779 Postalcioglu).
1780
1781 DOCUMENTATION
1782 - Added basic documentation to optimization methods (thanks to GitHub
1783 user `martinbrose`).
1784
1785 DEPRECATED FEATURES
1786 - Features deprecate in version 1.16 were removed: a constructor of
1787 the `FdmOrnsteinUhlenbeckOp` class and a constructor of the
1788 `SwaptionVolatilityMatrix` class.
1789
1790 <strong>Release 1.19 - July 20th, 2020</strong>
1791
1792 PORTABILITY
1793 - Support for Visual C++ 2012 is being deprecated. It will be dropped
1794 around the end of 2020 or the beginning of 2021 in order to enable
1795 use of C++11 features.
1796 - Avoided use in Makefiles of functions only available to GNU Make
1797 (thanks to GitHub user `UnitedMarsupials` for the heads-up).
1798
1799 BUILD
1800 - Automated builds on Travis and GitHub Actions were extended. We now
1801 have a build for Mac OS X, as well as a few builds that run a number
1802 of checks on the code (including clang-tidy) and automatically open
1803 pull requests with fixes.
1804
1805 TERM STRUCTURES
1806 - Added options for iterative bootstrap to widen the search domain or
1807 to keep the best result upon failure (thanks to Francis Duffy).
1808 - Added flat-extrapolation option to fitted bond curves (thanks to
1809 Peter Caspers).
1810
1811 INSTRUMENTS
1812 - Added finite-difference pricing engine for equity options under the
1813 Cox-Ingersoll-Ross process (thanks to Lew Wei Hao).
1814 - Added Heston engine based on exponentially-fitted Laguerre
1815 quadrature rule (thanks to Klaus Spanderen).
1816 - Added Monte Carlo pricing engines for lookback options (thanks to
1817 Lew Wei Hao).
1818 - Added Monte Carlo pricing engine for double-barrier options (thanks
1819 to Lew Wei Hao).
1820 - Added analytic pricing engine for equity options under the
1821 Vasicek model (thanks to Lew Wei Hao).
1822 - The `Bond::yield` method can now specify a guess and whether the
1823 passed price is clean or dirty (thanks to Francois Botha).
1824
1825 MODELS
1826 - Improved grid scaling for FDM Heston SLV calibration, and fixed
1827 drift and diffusion for Heston SLV process (thanks to Klaus
1828 Spanderen and Peter Caspers).
1829 - Added mixing factor to Heston SLV process (thanks to Lew Wei Hao).
1830
1831 MATH
1832 - Improved nodes/weights for the exponentially fitted Laguerre
1833 quadrature rule and added sine and cosine quadratures (thanks to
1834 Klaus Spanderen).
1835
1836 DATE/TIME
1837 - Improved performance of the Calendar class (thanks to Leonardo Arcari).
1838 - Updated holidays for Indian and Russian calendars (thanks to Alexey
1839 Indiryakov).
1840 - Added missing All Souls Day holiday to Mexican calendar (thanks to
1841 GitHub user `phil-zxx` for the heads-up).
1842 - Restored New Year's Eve holiday to Eurex calendar (thanks to Joshua
1843 Engelman).
1844
1845 DEPRECATED FEATURES
1846 - Features deprecate in version 1.15 were removed: constructors of
1847 inflation swap helpers, inflation-based pricing engines and
1848 inflation coupon pricers that didn't take a nominal term structure.
1849 - The constructor of `BMAIndex` taking a calendar was deprecated.
1850 - The constructors of several interest-rate term structures taking
1851 jumps without a reference date were deprecated.
1852 - The `CurveDependentStepCondition` class and related typedefs were
1853 deprecated.
1854 - The constructor of `BlackCalibrationHelper` taking an interest-rate
1855 structure was deprecated.
1856 - The constructors of several inflation curves taking a nominal curve
1857 were deprecated. The nominal curve should now be passed to the used
1858 coupon pricers.
1859
1860 <strong>Release 1.18 - March 23rd, 2020</strong>
1861
1862 PORTABILITY
1863 - As announced in the past release, support of Visual C++ 2010 is
1864 dropped. Also, we'll probably deprecate Visual C++ 2012 in the
1865 next release in order to drop it around the end of 2020.
1866
1867 BUILD
1868 - Cmake now installs headers with the correct folder hierarchy
1869 (thanks to Cheng Li).
1870 - The `--enable-unity-build` flag passed to configure now also
1871 causes the test suite to be built as a single source file.
1872 - The Visual Studio projects now allow enabling unity builds as
1873 described at
1874 <https://devblogs.microsoft.com/cppblog/support-for-unity-jumbo-files-in-visual-studio-2017-15-8-experimental/>
1875
1876 TERM STRUCTURES
1877 - A new `GlobalBootstrap` class can now be used with
1878 `PiecewiseYieldCurve` and other bootstrapped curves (thanks to
1879 Peter Caspers). It allows to produce curves close to
1880 Bloomberg's.
1881 - The experimental `SofrFutureRateHelper` class and its parent
1882 `OvernightIndexFutureRateHelper` can now choose to use either
1883 compounding or averaging, in order to accommodate different
1884 conventions for 1M and 3M SOFR futures (thanks to GitHub user
1885 `tani3010`).
1886 - The `FraRateHelper` class has new constructors that take IMM
1887 start / end offsets (thanks to Peter Caspers).
1888 - It is now possible to pass explicit minimum and maximum values
1889 to the `IterativeBootstrap` class. The accuracy parameter was
1890 also moved to the same class; passing it to the curve
1891 constructor is now deprecated.
1892
1893 INSTRUMENTS
1894 - It is now possible to build fixed-rate bonds with an arbitrary
1895 schedule, even without a regular tenor (thanks to Steven Van
1896 Haren).
1897
1898 MODELS
1899 - It is now possible to use normal volatilities to calibrate a
1900 short-rate model over caps.
1901
1902 DATE/TIME
1903 - The Austrian calendar was added (thanks to Benjamin
1904 Schwendinger).
1905 - The German calendar incorrectly listed December 31st as a
1906 holiday; this is now fixed (thanks to Prasad Somwanshi).
1907 - Chinese holidays were updated for 2020 and the coronavirus event
1908 (thanks to Cheng Li).
1909 - South Korea holidays were updated for 2016-2020 (thanks to
1910 GitHub user `fayce66`).
1911 - In the calendar class, `holidayList` is now an instance method;
1912 the static version is deprecated. The `businessDayList` method
1913 was also added. (Thanks to Piotr Siejda.)
1914 - A bug in the 30/360 German day counter was fixed (thanks to Kobe
1915 Young for the heads-up).
1916
1917 OPTIMIZERS
1918 - The differential evolution optimizer was updated (thanks to
1919 Peter Caspers).
1920
1921 CURRENCIES
1922 - Added Kazakstani Tenge to currencies (thanks to Jonathan Barber).
1923
1924 DEPRECATED FEATURES
1925 - Features deprecate in version 1.14 were removed: one of the
1926 constructors of the `BSMOperator` class, the whole
1927 `OperatorFactory` class, and the typedef `CalibrationHelper`
1928 which was used to alias the `BlackCalibrationHelper` class.
1929 - The `CalibrationHelperBase` class is now called
1930 `CalibrationHelper`. The old name remains as a typedef but is
1931 deprecated.
1932 - The overload of `CalibratedModel::calibrate` and
1933 `CalibratedModel::value` taking a vector of
1934 `BlackCalibrationHelper`s are deprecated in favor of the ones
1935 taking a vector of `CalibrationHelper`s.
1936 - The static method `Calendar::holidayList` is deprecated in favor
1937 of the instance method by the same name.
1938 - The constructors of `PiecewiseDefaultCurve` and
1939 `PiecewiseYieldCurve` taking an accuracy parameter are
1940 deprecated in favor of passing the parameter to an instance of
1941 the bootstrap class.
1942 - The constructors of `BondHelper` and derived classes taking a
1943 boolean flag to choose between clean and dirty price are
1944 deprecated in favor of the ones taking a `Bond::Price::Type`
1945 argument. The `useCleanPrice` method is also deprecated in
1946 favor of `priceType`.
1947
1948 <strong>Release 1.17 - December 3rd, 2019</strong>
1949
1950 PORTABILITY
1951 - As of this release, support of Visual C++ 2010 is deprecated; it
1952 will be dropped in next release. Also, we'll probably deprecate
1953 Visual C++ 2012 in one of the next few releases in order to drop
1954 it around the end of 2020.
1955
1956 CONFIGURATION
1957 - A new function `compiledBoostVersion()` is available, (thanks to
1958 Andrew Smith). It returns the version of Boost used to compile
1959 the library, as reported by the `BOOST_VERSION` macro. This can
1960 help avoid linking the library with user code compiled with a
1961 different Boost version (which can result in erratic behavior).
1962 - It is now possible to specify at run time whether to use indexed
1963 coupons (thanks to Ralf Konrad). The compile-time configuration
1964 is still used as a default, but it is also possible to call
1965 either of the static methods `IborCoupon::createAtParCoupons` or
1966 `IborCoupon::createIndexedCoupons` to specify your preference.
1967 For the time being, the methods above must necessarily be called
1968 before creating any instance of `IborCoupon` or of its derived
1969 classes.
1970
1971 BUILD
1972 - As of this version, the names of the binaries produced by the
1973 included Visual C++ solution no longer contain the toolset
1974 version (e.g., v142).
1975
1976 INSTRUMENTS
1977 - Added ex-coupon functionality to floating-rate bonds (thanks to
1978 Steven Van Haren).
1979 - The inner structure `Callability::Price` was moved to the class
1980 `Bond` and can now be used to specify what kind of price was
1981 passed to the `BondFunctions::yield` method (thanks to Francois
1982 Botha).
1983 - It is now possible to use a par-coupon approximation for FRAs
1984 like the one used in Ibor coupons (thanks to Peter Caspers).
1985
1986 PRICING ENGINES
1987 - Added escrowed dividend model to the new-style FD engine for
1988 `DividendVanillaOption` (thanks to Klaus Spanderen).
1989 - Black cap/floor engine now also returns caplet deltas (thanks to
1990 Wojciech Slusarski).
1991
1992 TERM STRUCTURES
1993 - OIS rate helpers can now choose whether to use as a pillar for
1994 the bootstrap either their maturity date or the end date of the
1995 last underlying fixing. This provides an alternative if the
1996 bootstrap should fail. (Thanks to Drew Saunders for the
1997 heads-up.)
1998 - Instances of the `FittedBondDiscountCurve` class now behave as
1999 simple evaluators (that is, they use the given parameters without
2000 performing root-solving) when the `maxIterations` parameter is
2001 set to 0. (Thanks to Nick Firoozye for the heads-up.)
2002
2003 DATE/TIME
2004 - Added a few special closing days to the US government bond
2005 calendar (thanks to Mike DelMedico).
2006 - Fixed an incorrect 2019 holiday in Chinese calendar (thanks to
2007 Cheng Li).
2008 - Added missing holiday to Swedish calendar (thanks to GitHub
2009 users `periculus` and `tonyzhipengzhou`).
2010
2011 DEPRECATED FEATURES
2012 - The classes `FDEuropeanEngine`, `FDAmericanEngine`,
2013 `FDBermudanEngine`, `FDDividendEuropeanEngine`,
2014 `FDDividendEuropeanEngineShiftScale`,
2015 `FDDividendAmericanEngine`, `FDDividendAmericanEngineShiftScale`
2016 are now deprecated. They are superseded by
2017 `FdBlackScholesVanillaEngine`.
2018
2019 <strong>Release 1.16 - August 5th, 2019</strong>
2020
2021 PORTABILITY
2022 - Added support for Visual Studio 2019 (thanks to Paul Giltinan).
2023
2024 CONFIGURATION
2025 - As announced in past release, the compile-time switch to force
2026 non-negative rates was removed.
2027
2028 PRICING ENGINES
2029 - Added constant elasticity of variance (CEV) pricing engines for
2030 vanilla options. Analytic, FD and SABR engines are available
2031 (thanks to Klaus Spanderen).
2032 - Added quanto pricing functionality to a couple of FD engines for
2033 DividendVanillaOption (thanks to Klaus Spanderen).
2034
2035 CASH FLOWS
2036 - Digital coupons can now optionally return the value of the naked
2037 option (thanks to Peter Caspers).
2038
2039 DATE/TIME
2040 - Updated Taiwan holidays for 2019 (thanks to Hank Liu).
2041 - Added two newly announced holidays to Chinese calendar (thanks to
2042 Cheng Li).
2043 - Updated Japan calendar (thanks to Eisuke Tani).
2044 - Fixed New Year's day adjustment for Canadian calendar (thanks to Roy
2045 Zywina).
2046 - Added a couple of exceptions for UK bank holidays (thanks to GitHub
2047 user Vililikku for the heads-up).
2048 - Added French calendar (thanks to GitHub user NJeanray).
2049 - Added public methods to expose a calendar's added and removed
2050 holidays (thanks to Francois Botha).
2051 - Allow the stub date of a schedule to equal the maturity.
2052
2053 DEPRECATED FEATURES
2054 - Deprecated a constructor of the SwaptionVolatilityMatrix class that
2055 didn't take a calendar.
2056 - Removed typedefs GammaDistribution, ChiSquareDistribution,
2057 NonCentralChiSquareDistribution and
2058 InverseNonCentralChiSquareDistribution, deprecated in version 1.12.
2059 Use CumulativeGammaDistribution, CumulativeChiSquareDistribution,
2060 NonCentralCumulativeChiSquareDistribution and
2061 InverseNonCentralCumulativeChiSquareDistribution instead.
2062 - Removed Actual365NoLeap class, deprecated in version 1.11. It was
2063 folded into Actual365Fixed.
2064
2065 TERM STRUCTURES
2066 - Take payment days into account when calculating the nodes of a
2067 bootstrapped curve based on overnight swaps.
2068
2069 <strong>Release 1.15 - February 19th, 2019</strong>
2070
2071 PORTABILITY
2072 - This release drops support for Boost version 1.43 to 1.47; the
2073 minimum required version is now Boost 1.48, released in 2011.
2074 - Added a `.clang-format` file to the repository. The format is
2075 not going to be enforced, but the style file is provided as a
2076 convenience in case you want to format new code according to the
2077 conventions of the library.
2078 - `boost::function`, `boost::bind` and a few related classes and
2079 functions were imported into the new namespace `QuantLib::ext`.
2080 This allows them to be conditionally replaced with their `std::`
2081 versions (see the "opt-in features" section below). The default
2082 is still to use the Boost implementation. Client code using the
2083 `boost` namespace explicitly doesn't need to be updated.
2084
2085 MODELS
2086 - Added an experimental volatility basis model for caplet and
2087 swaptions (thanks to Sebastian Schlenkrich).
2088
2089 PRICING ENGINES
2090 - It is now possible to specify polynomial order and type when
2091 creating a `MCAmericanBasketEngine` instance (thanks to Klaus
2092 Spanderen).
2093
2094 TERM STRUCTURES
2095 - Inflation curves used to store the nominal curve used during
2096 their construction. This is still supported for backward
2097 compatibility, but is deprecated. You should instead pass the
2098 nominal curve explicitly to objects that need one (e.g.,
2099 inflation helpers, engines, or cashflow pricers).
2100 - Added experimental helpers to bootstrap an interest-rate curve
2101 on SOFR futures (thanks to Roy Zywina).
2102
2103 INDEXES
2104 - It is now possible to choose the fixing calendar for the BMA
2105 index (thanks to Jan Ladislav Dussek).
2106
2107 CASH FLOWS
2108 - Fixed broken observability in CMS-spread coupon pricer (thanks
2109 to Peter Caspers).
2110
2111 DATE/TIME
2112 - Fix implementation of Actual/Actual (ISMA) day counter in case a
2113 schedule is provided (thanks to Philip Stephens).
2114 - Fix implementation of `Calendar::businessDaysBetween` method
2115 when the initial and final date are the same (thanks to Weston
2116 Steimel).
2117 - Added day of mourning for G.H.W. Bush to the list of United
2118 States holidays (thanks to Joshua Engelman).
2119 - Updated list of Chinese holidays for 2019 (thanks to Cheng Li).
2120 - Added basic unit tests for the `TimeGrid` class (thanks to Kai
2121 Striega).
2122
2123 MATH
2124 - Prevent solver failure in Richardson extrapolation (thanks to
2125 Klaus Spanderen).
2126
2127 EXAMPLES
2128 - Added multi-curve bootstrapping example (thanks to Jose
2129 Garcia). This examples supersedes the old swap-valuation
2130 example, that was therefore removed.
2131
2132 NEW OPT-IN FEATURES
2133 - It is now possible to use `std::function`, `std::bind` and their
2134 related classes instead of `boost::function` and `boost::bind`.
2135 The feature can be enabled by uncommenting the
2136 `QL_USE_STD_FUNCTION` macro in `ql/userconfig.hpp` on Visual C++
2137 or by passing the `--enable-std-function` to `./configure` on
2138 other systems. This requires using at least the C++11 standard
2139 during compilation.
2140 - A new `./configure` switch, `--enable-std-classes`, was added as
2141 a shortcut for `--enable-std-pointers` `--enable-std-unique-ptr`
2142 `--enable-std-function`.
2143
2144 <strong>Release 1.14 - October 1st, 2018</strong>
2145
2146 PORTABILITY
2147 - In April 2018, Microsoft ended its support for Microsoft Visual
2148 C++ 2008. As previously announced, this release drops support
2149 for it.
2150 - Fixed generation of RPM from QuantLib.spec (thanks to Simon Rees).
2151 - Avoided uses of some features removed in C++17 so that the
2152 library can be compiled under the latest standard if needed.
2153 - `boost::shared_ptr` and a few related classes and functions were
2154 imported into the new namespace `QuantLib::ext`. This allows them
2155 to be conditionally replaced with their `std::` versions (see the
2156 "opt-in features" section below). The default is still to use
2157 the boost implementation. Client code using the `boost` namespace
2158 explicitly doesn't need to be updated.
2159 - Fixed build and tests on FreeBSD-11 (thanks to Klaus Spanderen
2160 and to Mikhail Teterin for the heads-up).
2161 - Fixed tests with the `-ffast-math` compilation flag enabled
2162 (thanks to Klaus Spanderen and to Jon Davies for the heads-up).
2163
2164 INSTRUMENTS AND PRICING ENGINES
2165 - Add different settlement methods for swaptions (thanks to Peter
2166 Caspers).
2167 - Take into account distinct day-count conventions for different
2168 curves in the analytic barrier-option engine (thanks to GitHub
2169 user cosplay-raven).
2170 - Extract the correct constant coefficients to use in
2171 finite-difference vanilla-option engine when using a
2172 time-dependent Black-Scholes process (thanks to GitHub user
2173 Grant6899 for the analysis).
2174
2175 CASH FLOWS AND INTEREST RATES
2176 - Added Bibor and THBFIX indices (thanks to Matthias Lungwitz).
2177
2178 MODELS
2179 - Added a hook for using a custom smile model in the Markov functional
2180 model (thanks to Peter Caspers).
2181 - Added a base class CalibrationHelperBase to the hierarchy of
2182 calibration helpers in order to allow for helpers not using the
2183 Black model.
2184 - Return underlying dynamics from Black-Karasinski model (thanks
2185 to Fanis Antoniou).
2186
2187 FINITE DIFFERENCES
2188 - Added higher-order spatial operators (thanks to Klaus Spanderen).
2189 - Added TR-BDF2 finite-difference scheme (thanks to Klaus Spanderen).
2190
2191 TERM STRUCTURES
2192 - Allow swap helpers to specify end-of-month convention (thanks to
2193 Matthias Lungwitz).
2194
2195 DATE/TIME
2196 - Prevented division by zero in Actual/365 Canadian day counter
2197 (thanks to Ioannis Rigopoulos for the heads-up).
2198 - Added Children's Day to the list of Romanian holidays (thanks to
2199 Matthias Lungwitz).
2200 - Added new calendar for Thailand (thanks to Matthias Lungwitz).
2201 - Added 30/360 German day counter (thanks to Peter Caspers and
2202 Alexey Indiryakov).
2203
2204 MATH
2205 - Fixed bug in convex-monotone interpolation (thanks to Peter
2206 Caspers for the fix and to Tom Anderson for finding the bug).
2207
2208 NEW OPT-IN FEATURES
2209 - It is now possible to use `std::shared_ptr` and its related
2210 classes instead of `boost::shared_ptr`. Note that, unlike its
2211 boost counterpart, `std::shared_ptr` doesn't check for null
2212 pointers before access; this can lead to crashes. The feature
2213 can be enabled by uncommenting the `QL_USE_STD_SHARED_PTR` macro
2214 in `ql/userconfig.hpp` on Visual C++ or by passing the
2215 `--enable-std-pointers` to `./configure` on other systems. This
2216 requires using at least the C++11 standard during compilation.
2217 - It is now possible to use `std::unique_ptr` instead of
2218 `std::auto_ptr`; this makes it possible to compile the library in
2219 strict C++17 mode and to avoid deprecation warnings in C++11 and
2220 C++14 mode. The feature can be enabled by uncommenting the
2221 `QL_USE_STD_UNIQUE_PTR` macro in `ql/userconfig.hpp` on Visual C++
2222 or by passing the `--enable-std-unique-ptr` to `./configure` on
2223 other systems.
2224
2225 Thanks go also to Sam Danbury, Barry Devlin, Roland Kapl, and GitHub
2226 user todatamining for smaller fixes, enhancements, and bug reports.
2227
2228 <strong>Release 1.13 - May 24th, 2018</strong>
2229
2230 PORTABILITY
2231 - In April 2018, Microsoft ended its support for Microsoft Visual
2232 C++ 2008. This release still includes a solution file for VC++
2233 2008, but we won't support it further or take bug reports for
2234 it. The next release will only contain project files for Visual
2235 C++ 2010 and later.
2236 - Fixed build on Solaris 12.5 in C++11 mode (thanks to Nick Glass).
2237
2238 INSTRUMENTS AND PRICING ENGINES
2239 - Fix CDS calculation when the start date falls during the
2240 week-end (thanks to Guillaume Horel).
2241 - Allow construction of a `ForwardRateAgreement` instance even if
2242 the interest-rate curve is not yet linked (thanks to Tom
2243 Anderson).
2244
2245 CASH FLOWS AND INTEREST RATES
2246 - Added Mosprime, Pribor, Robor and Wibor indices (thanks to
2247 Matthias Lungwitz).
2248 - Improved performance of Black pricer for LIBOR coupons (thanks
2249 to Peter Caspers).
2250 - Fixed experimental quanto coupon pricer (thanks to Peter
2251 Caspers).
2252 - Revised experimental CMS-spread coupon pricer (thanks to Peter
2253 Caspers).
2254
2255 MODELS
2256 - Improvements for the experimental generalized Hull-White model
2257 (thanks to Roy Zywina).
2258 - Fixed drift in GSR process (thanks to Peter Caspers for the fix
2259 and to Seung Beom Bang for the heads up).
2260 - Fixed an out-of-bound access in the
2261 TwoFactorModel::ShortRateDynamics::process method (thanks to
2262 Weston Steimel).
2263
2264 FINITE DIFFERENCES
2265 - Improved Black-Scholes mesher for low volatilities and high
2266 discrete dividends (thanks to Klaus Spanderen).
2267 - Added method-of-lines scheme (thanks to Klaus Spanderen).
2268
2269 DATE/TIME
2270 - Schedule::until can now be used with schedules built from
2271 vectors of dates (thanks to GitHub user Grant6899).
2272 - Added Good Friday to the list of Hungarian and Czech holidays
2273 (thanks to Matthias Lungwitz).
2274 - Updated the list of Turkish holidays after 2014 (thanks to
2275 Matthias Lungwitz).
2276
2277 MATH
2278 - Added convenience operators to initialize array and matrices
2279 (thanks to Peter Caspers).
2280
2281 TEST SUITE
2282 - Added test case for CIR++ model (thanks to Klaus Spanderen).
2283
2284 Thanks go also to Jose Aparicio, Roland Kapl and GitHub user
2285 lab4quant for smaller fixes and enhancements.
2286
2287
2288 <strong>Release 1.12.1 - April 16th, 2018</strong>
2289
2290 %QuantLib 1.12.1 is a bug-fix release for version 1.12.
2291
2292 It fixes an error that would occur during initialization of the
2293 test suite when using the newly released Boost 1.67.0.
2294 Thanks to Klaus Spanderen for the prompt fix.
2295
2296 The library code is unchanged from version 1.12.
2297
2298 <strong>Release 1.12 - February 1st, 2018</strong>
2299
2300 PORTABILITY
2301 - As announced in the previous release, support for the Dev-C++
2302 IDE was removed.
2303 - In April 2018, Microsoft will end its support for Microsoft
2304 Visual C++ 2008. Therefore, this is the last version of
2305 QuantLib to support it with maintained project files.
2306 - It is now possible to build a usable library with CMake on
2307 Windows (thanks to Javier G. Sogo).
2308 - Fix autotools build outside the source tree (thanks to Joshua
2309 Ulrich).
2310
2311 INSTRUMENTS AND PRICING ENGINES
2312 - Added OAS calculation to experimental callable bonds (thanks to
2313 Bojan Nikolic).
2314 - Avoided infinite loop for some sets of parameters in
2315 experimental variance-gamma engine (thanks to Roy Zywina).
2316
2317 CASH FLOWS
2318 - It is now possible to build a cash-flow leg from a schedule
2319 created from a precalculated vector of dates (thanks to Peter
2320 Caspers).
2321
2322 MODELS
2323 - Affine models can now be used to bootstrap a default-probability
2324 curve (thanks to Jose Aparicio).
2325 - Added Andreasen-Huge volatility interpolation and local
2326 volatility calibration (thanks to Klaus Spanderen).
2327 - Added Rannacher smoothing steps for Heston stochastic local
2328 volatility calibration (thanks to Klaus Spanderen).
2329
2330 TERM STRUCTURES
2331 - Added L2 penalty to fitted parameters of fitted bond discount
2332 curve (thanks to Robin Northcott).
2333 - Added an optional trading calendar to the FX-swap rate helper
2334 and and optional payment lag to the OIS rate helper (thanks to
2335 Wojciech Slusarski).
2336 - Fixed inconsistent treatment of strike in experimental CPI
2337 cap/floor term price surface (thanks to Francis Duffy).
2338 - Correctly handled the case of overlapping strike regions for
2339 caps and floors in experimental CPI cap/floor term price surface
2340 (thanks to Peter Caspers).
2341 - Fixed calculation of seasonality correction for interpolated
2342 inflation indexes (thanks to Francis Duffy).
2343 - Implemented composite zero-yield curve as combination of two
2344 existing curves via a given binary function (thanks to Francois
2345 Botha).
2346 - Fixed interpolation of shift in swaption volatility matrix
2347 (thanks to Peter Caspers).
2348
2349 DATE/TIME
2350 - Updated Chinese calendar for 2018 (thanks to Cheng Li).
2351 - Added Botswana calendar (thanks to Francois Botha).
2352 - Fixed a few problems with US calendars (thanks to Mike DelMedico
2353 and to GitHub user ittegrat).
2354 - User-added holidays now work correctly when intraday
2355 calculations are enabled (thanks to Klaus Spanderen for the fix
2356 and to GitHub user volchemist for the report).
2357
2358 MATH
2359 - Fixed monotonicity of Fritsch-Butland and prevented NaNs in some
2360 cases (thanks to GitHub user Grant6899 for the fix and to Tom
2361 Anderson for the report).
2362
2363 DEPRECATED FEATURES
2364 - The ChiSquareDistribution, NonCentralChiSquareDistribution,
2365 InverseNonCentralChiSquareDistribution and GammaDistribution
2366 were renamed to CumulativeChiSquareDistribution,
2367 NonCentralCumulativeChiSquareDistribution,
2368 InverseNonCentralCumulativeChiSquareDistribution and
2369 CumulativeGammaDistribution, respectively (thanks to GitHub user
2370 IGonza). The old names are still available as typedefs and will
2371 be removed in a future release.
2372
2373 Thanks go also to Marco Craveiro, Dirk Eddelbuettel, Lakshay Garg,
2374 Guillaume Horel, Alix Lassauzet, Patrick Lewis, and GitHub users
2375 bmmay, bingoko and tournierjc for smaller fixes and enhancements.
2376
2377
2378 <strong>Release 1.11 - October 2nd, 2017</strong>
2379
2380 PORTABILITY
2381 - This is the last version of QuantLib to support the now obsolete
2382 Dev-C++ IDE with a maintained project file. The project will be
2383 removed in next release.
2384
2385 INSTRUMENTS AND PRICING ENGINES
2386 - Added ISDA pricing engine for credit default swaps (thanks to
2387 Guillaume Horel, Jose Aparicio and Peter Caspers).
2388 - Added Andersen-Piterbarg engine for the Heston model (thanks to
2389 Klaus Spanderen).
2390 - Improved experimental vanna-volga engine for double-barrier
2391 knock-in options (thanks to Giorgio Pazmandi).
2392 - Added theta calculation to experimental Kirk spread-option
2393 engine (thanks to Krzysztof Wos).
2394
2395 CASH FLOWS
2396 - Added optional payment lag to fixed, floating and OIS legs
2397 (thanks to Fabrice Lecuyer and Joseph Jeisman).
2398 - Fixed yield calculation with 30/360 US day count convention and
2399 settlement on the 31st of the month (thanks to Frank Xue).
2400
2401 MODELS
2402 - Added adaptive successive over-relaxation method for implied
2403 volatility calculation (thanks to Klaus Spanderen).
2404
2405 INDEXES
2406 - Fixed day-count convention and spot lag for CAD LIBOR (thanks to
2407 Oleg Kulkov).
2408
2409 TERM STRUCTURES
2410 - Optionally optimize setting up OIS helpers (thanks to Peter
2411 Caspers).
2412
2413 DATE/TIME
2414 - Added Actual/365 Canadian day count convention (thanks to Andrea
2415 Maggiulli).
2416
2417 MATH
2418 - Added GMRES iterative solver for large linear systems (thanks to
2419 Klaus Spanderen).
2420 - Updated Hong Kong calendar up to 2020 (thanks to Nicholas
2421 Bertocchi and Alix Lassauzet).
2422
2423 BUILD
2424 - Added configure switch to enable unity build.
2425
2426 TEST SUITE
2427 - Added --fast and --faster flags to the test-suite executable.
2428 When passed, slower tests are discarded so that the test suite
2429 runs in just a few minutes.
2430
2431 DEPRECATED FEATURES
2432 - Remove the HestonExpansionEngine::numberOfEvaluations method
2433 (deprecated in version 1.9).
2434 - Remove the MixedLinearCubicInterpolation and MixedLinearCubic
2435 constructors not specifying the behavior of the mixed
2436 interpolation (deprecated in version 1.8).
2437 - Remove deprecated overloads of the Swaption::impliedVolatility
2438 and CapFloor::impliedVolatility methods (deprecated in version
2439 1.9).
2440 - Remove NoArbSabrModel::checkAbsorptionMatrix method (deprecated
2441 in version 1.8.1).
2442
2443 <strong>Release 1.10.1 - August 31st, 2017</strong>
2444
2445 %QuantLib 1.10.1 is a bug-fix release for version 1.10.
2446
2447 - Prevented a name clash when using the newly-released Boost 1.65.0
2448 with g++ 6.3.
2449 - Added a few missing function declarations in the
2450 SwaptionVolatilityStructure class (thanks to Peter Caspers).
2451
2452 <strong>Release 1.10 - May 16th, 2017</strong>
2453
2454 PORTABILITY
2455 - Added support for the recently released Visual Studio 2017.
2456 - Unified Visual Studio solution file. The provided QuantLib.sln
2457 file works for all versions from 2010 to 2017.
2458 - Added support for the recently released Boost 1.64.0 (thanks to
2459 Klaus Spanderen).
2460 - Converted non-ASCII characters in source files to UTF-8; this
2461 should make them work with most editors (thanks to Krzysztof Woś
2462 and Jose Aparicio).
2463 - Fixed some compilation issues with older versions of the Sun CC
2464 compiler and with the gcc 3.4 series. The offending code has
2465 simply been disabled; when using those compilers, is also
2466 suggested to downgrade Boost to an older version since more
2467 recent ones can give problems. Boost 1.54.0 was reported to
2468 work. It is likely that no further support will be given to
2469 these compilers in future releases.
2470
2471 INSTRUMENTS AND PRICING ENGINES
2472 - Added Heston pricing engine based on Fourier-Cosine series
2473 expansion (thanks to Klaus Spanderen).
2474 - Added cash annuity model in Black swaption engine (thanks to
2475 Peter Caspers, Werner Kuerzinger and Paul Giltinan).
2476 - Add an optional exogenous discount curve to analytic Black
2477 European option engine (thanks to Paul Giltinan).
2478
2479 MODELS
2480 - Added collocating local-volatility model (thanks to Klaus
2481 Spanderen).
2482 - Optionally disable Feller constraint in Cox-Ingersoll-Ross model
2483 (thanks to Oleksandr Khomenko).
2484
2485 INTEREST RATES
2486 - Allow using an arbitrary solver to calculate yield (thanks to
2487 Daniel Hrabovcak).
2488 - Update handling of July 4th for US LIBOR fixings (thanks to Oleg
2489 Kulkov).
2490 - Added CompoundingThenSimple convention (thanks to Martin Ross).
2491
2492 INFLATION
2493 - Use the lagged reference period to interpolate inflation fixings
2494 (thanks to Francois Botha).
2495
2496 VOLATILITY
2497 - Reduce the memory footprint of OptionletStripper1 (thanks to
2498 Matthias Lungwitz)
2499
2500 DATE/TIME
2501 - Updated Chinese calendar for 2017 (thanks to Cheng Li).
2502 - Added CDS2015 date-generation rule with the correct semiannual
2503 frequency (thanks to Guillaume Horel).
2504 - The Iceland calendar used to incorrectly adjust New Year's Day
2505 to the next Monday when falling on a holiday. That's now fixed
2506 (thanks to Stefan Gunnsteinsson for the heads-up).
2507 - Fixed bug that prevented correct calculation of an ECB date on
2508 the first day of a month (thanks to Nicholas Bertocchi).
2509 - Fixed bug in Schedule that ignored end-of-month convention when
2510 calculating reference dates for irregular coupons (thanks to
2511 Ryan Taylor).
2512 - Allow passing a schedule to Actual/Actual day counter for
2513 correct calculation of reference dates (thanks to Ryan Taylor).
2514
2515 MATH
2516 - Added harmonic spline interpolation (thanks to Nicholas Bertocchi).
2517
2518 EXAMPLES
2519 - Added examples for global optimizers (thanks to Andres Hernandez).
2520
2521 DEPRECATED FEATURES
2522 - Removed the SwaptionHelper constructors not taking an explicit
2523 volatility type (deprecated in version 1.8).
2524 - Removed the SwaptionVolatilityMatrix constructors not taking an
2525 explicit volatility type (deprecated in version 1.8).
2526 - Removed the BlackSwaptionEngine constructor overriding the
2527 displacement from the given volatility structure (deprecated in
2528 version 1.8).
2529 - Removed the FlatSmileSection and InterpolatedSmileSection
2530 constructors not taking an explicit volatility type (deprecated
2531 in version 1.8).
2532 - Removed the RiskyAssetSwapOption constructor taking a side
2533 (deprecated in version 1.8).
2534
2535 POSSIBLY BREAKING CHANGES
2536 - The constructors of a few Libor-like indexes were made
2537 explicit. This means that code such as the following, which used
2538 to compile, will now break. That's probably a good thing.
2539 \code
2540 Handle<YieldTermStructure> forecast_curve;
2541 Euribor6M index = forecast_curve;
2542 \endcode
2543
2544 <strong>Release 1.9.2 - February 27th, 2017</strong>
2545
2546 %QuantLib 1.9.2 is a bug-fix release for version 1.9.1.
2547
2548 - Prevented errors in yield-curve bootstrapping tests due to an
2549 incorrect test setup (thanks to Peter Caspers for the heads-up).
2550
2551 <strong>Release 1.9.1 - January 5th, 2017</strong>
2552
2553 %QuantLib 1.9.1 is a bug-fix release for version 1.9.
2554
2555 - Prevented a linking error when multiple compilation units
2556 included the global ql/quantlib.hpp header (thanks to Dirk
2557 Eddelbuettel).
2558 - Prevented a compilation error with gcc 4.4 on RedHat (thanks to
2559 GitHub user aloupos for the heads-up).
2560 - Prevented a compilation error with the parallel unit runner and
2561 the recently released Boost 1.63.0.
2562
2563 <strong>Release 1.9 - November 8th, 2016</strong>
2564
2565 PORTABILITY
2566 - Dropped support for Visual C++ 8 (2005). As of April 2016, the
2567 compiler is no longer supported by Microsoft.
2568 - Allow the parallel test runner to work with Boost 1.62 (thanks
2569 to Klaus Spanderen for the fix and to Andrei Borodaenko for the
2570 heads-up).
2571
2572 INTEREST RATES
2573 - Allow negative jumps in interest-rate curves. Previously, trying
2574 to pass one would result in an exception (thanks to Leanpub
2575 reader Jeff for the heads-up).
2576 - Added BBSW and Aonia indexes from Australia and BKBM and NZOCR
2577 indexes from New Zealand (thanks to Fabrice Lecuyer).
2578
2579 VOLATILITY
2580 - Added normal implied-volatility calculation to caps/floors
2581 (thanks to Paolo Mazzocchi).
2582
2583 INSTRUMENTS
2584 - Fix a scenario in which a `CompositeInstrument` instance would
2585 stop receiving notifications (thanks to Peter Caspers for the
2586 heads-up).
2587 - Added a few safety checks to the CVA swap engine (thanks to
2588 Andrea Maggiulli).
2589 - Auto-deactivate Boyle-Lau optimization for barrier options when
2590 not using a CRR tree (thanks to Riccardo Ghetta).
2591
2592 DATE/TIME
2593 - Changed data type for `Date` serial numbers to `int_fast_32t` to
2594 improve performance of date calculations (thanks to Peter
2595 Caspers).
2596 - Added ECB maintenance period dates for 2017 (thanks to Paolo
2597 Mazzocchi).
2598 - Fixed rule for the Japanese Mountain Day holiday (thanks to
2599 Eisuke Tani).
2600 - Fixed United States holidays before 1971 (thanks to Nick Glass
2601 for the heads-up).
2602 - Added a missing Chinese holiday (thanks to Cheng Li).
2603 - Ensure correct formatting when outputting dates (thanks to Peter
2604 Caspers).
2605
2606 NEW OPT-IN FEATURES
2607
2608 These features are disabled by default and can be enabled by
2609 defining a macro or passing a flag to `./configure`. Feedback is
2610 appreciated.
2611 - Enable thread-safe singleton initialization (thanks to GitHub
2612 user sdgit). The feature can be enabled by uncommenting the
2613 `QL_ENABLE_SINGLETON_THREAD_SAFE_INIT` macro in
2614 `ql/userconfig.hpp` on Visual C++ or by passing the
2615 `--enable-thread-safe-singleton-init` to `./configure` on other
2616 systems.
2617
2618 EXPERIMENTAL FOLDER
2619
2620 The `ql/experimental` folder contains code whose interface is not
2621 fully stable, but is released in order to get user feedback.
2622 Experimental classes make no guarantees of backward compatibility;
2623 their interfaces might change in future releases.
2624
2625 Changes and new contributions for this release were:
2626 - OIS with arithmetic average (thanks to Stefano Fondi). A
2627 corresponding bootstrap helpers is also available.
2628 - a function to calculate multi-curve sensitivities (thanks to
2629 Michael von den Driesch).
2630
2631 <strong>Release 1.8.1 - September 23rd, 2016</strong>
2632
2633 %QuantLib 1.8.1 is a bug-fix release for version 1.8.
2634
2635 - A test failure with Visual C++ 14 (2015) was avoided. Up to
2636 VC++14 update 2, the compiler would inline a call to std::min
2637 and std::max incorrectly causing a calculation to fail (thanks
2638 to Ivan Cherkasov for the heads-up).
2639 - A test failure with the upcoming Boost 1.62 was avoided. A
2640 QuantLib test was checking for the stored value of a hash whose
2641 value changed in Boost 1.62.
2642 - Miscellaneous fixes for the g1d swaption engine and instrument
2643 (thanks to Peter Caspers).
2644 - Whit Monday was no longer a holiday in Sweden since 2005 (thanks
2645 to Stefano Fondi).
2646 - A new holiday for election day 2016 was added to the South
2647 African calendar (thanks to Jasen Mackie).
2648 - A few missing CMakeLists were added to the distributed release
2649 (thanks to izavyalov for the heads-up).
2650 - An irregular last period in a schedule was not reported as such
2651 (thanks to Schmidt for the heads-up).
2652
2653 <strong>Release 1.8 - May 18th, 2016</strong>
2654
2655 PORTABILITY
2656 - The minimum required Boost version is now Boost 1.43 (May
2657 2010). However, it is strongly suggested to use a recent
2658 version, or at least Boost 1.48 (November 2011).
2659 - Added initial CMake support (thanks to Dmitri Nesteruk). This
2660 makes it possible to compile %QuantLib on CLion and other
2661 CMake-based tools.
2662 - The build now generates and installs pkg-config file on Linux
2663 systems (thanks to GitHub user njwhite).
2664
2665 INTEREST RATES
2666 - Fixed links to documentation for LIBOR indexes (thanks to Jose
2667 Magana).
2668
2669 VOLATILITY
2670 - Added the possibility to price swaptions and to calculate their
2671 implied volatilities in a Black-like model with normal
2672 volatilities as well as shifted lognormal (thanks to Peter
2673 Caspers).
2674 - Added the possibility to price caps in a Black-like model with
2675 normal volatilities as well as shifted lognormal (thanks to
2676 Michael von den Driesch).
2677 - Caplet strike is correctly recomputed during stripping (thanks
2678 to Michael von den Driesch).
2679
2680 INSTRUMENTS
2681 - Added basic CVA IRS pricing engine (stand alone, no portfolio;
2682 no WWR, no collateral). Thanks to Jose Aparicio.
2683
2684 MODELS
2685 - Black-Scholes processes now return the closed-formula
2686 expectation, standard deviation and variance over long periods
2687 (thanks to Peter Caspers).
2688
2689 CURRENCIES
2690 - Added Ukrainian hryvnia (thanks to GitHub user
2691 maksym-studenets).
2692
2693 MONTE CARLO
2694 - Use different random-number generators for calibration and
2695 pricing in Longstaff-Schwartz engine (thanks to Peter Caspers).
2696
2697 DATE/TIME
2698 - Added forecast dates for moving holidays to Saudi Arabia
2699 calendar up to 2022 (thanks to Jayanth R. Varma).
2700 - Added new Ukrainian holiday, Defender's Day (thanks to GitHub
2701 user maksym-studenets).
2702 - Added a few more holidays for South Korea (thanks to Faycal El
2703 Karaa).
2704
2705 MATH
2706 - Added mixed log interpolation (thanks to GitHub user sfondi).
2707 - Avoid mixing different types while bit-shifting in fast Fourier
2708 transform on 64-bit systems (thanks to Nikolai Nowaczyk).
2709
2710 DEPRECATED FEATURES
2711 - Removed `DateParser::split` method (deprecated in version 1.6).
2712
2713 TEST SUITE
2714 - The test suite is now run with a fixed evaluation date instead
2715 of using today's date. This helps avoid transient errors due to
2716 holidays. It is still possible to use today's date (or any other
2717 date) by running it as:
2718 \code
2719 quantlib-test-suite -- --date=today
2720 \endcode
2721 or
2722 \code
2723 quantlib-test-suite -- --date=2016-02-08
2724 \endcode
2725 (Thanks to Peter Caspers.)
2726
2727 NEW OPT-IN FEATURES
2728 - Added a parallel unit-test runner (thanks to Klaus
2729 Spanderen). This was successfully used under Linux, but problems
2730 were reported on Mac OS X and occasionally on Visual C++ 2010.
2731 The feature requires Boost 1.59 or later and can be enabled by
2732 uncommenting the `QL_ENABLE_PARALLEL_UNIT_TEST_RUNNER` macro in
2733 `ql/userconfig.hpp` on Visual C++ or by passing the
2734 `--enable-parallel-unit-test-runner` to `./configure` on other
2735 systems.
2736
2737 EXPERIMENTAL FOLDER
2738 - Stochastic local-volatility Heston model, (thanks to Klaus
2739 Spanderen and Johannes Göttker-Schnetmann). Both a Monte Carlo
2740 and a finite-difference calibration and calculation are
2741 provided.
2742 - Laplace interpolation (thanks to Peter Caspers).
2743 - Global optimizers: Hybrid Simulated Annealing, Particle Swarm
2744 Optimization, Firefly Algorithm, and Differential Evolution
2745 (thanks to Andres Hernandez).
2746 - A SVD-based calculation of the Moore-Penrose inverse matrix
2747 (thanks to Peter Caspers).
2748
2749 <strong>Release 1.7.1 - January 18th, 2016</strong>
2750
2751 %QuantLib 1.7.1 is a bug-fix release for version 1.7.
2752
2753 - an unneeded dependency on the Boost.Thread library had slipped into
2754 version 1.7. It is now removed (thanks to GitHub user MattPD).
2755 - Trying to build a schedule with a 4-weeks tenor would fail. This is
2756 now fixed (thanks to GitHub user smallnamespace for the heads-up).
2757 - A couple of errors in the list of past holidays for the Russian MOEX
2758 calendar was fixed, and the list of holidays for 2016 was added
2759 (thanks to Dmitri Nesteruk).
2760 - Chinese holidays for 2016 were updated (thanks to Cheng Li).
2761 - The correct curve is now used when calculating the at-the-money swap
2762 rate while building swaptions (thanks to Peter Caspers).
2763
2764 <strong>Release 1.7 - November 23rd, 2015</strong>
2765
2766 INTEREST RATES
2767 - Added rate helper to bootstrap on cross-currency swaps (thanks
2768 to Maddalena Zanzi). The curve to be bootstrapped can be the one
2769 for either of the two currencies.
2770 - Added the possibility for bootstrap helpers to define their
2771 pillar date in different ways (thanks to Paolo Mazzocchi). For
2772 each helper, the date of the corresponding node can be defined
2773 as the maturity date of the corresponding instrument, as the
2774 latest date used on the term structure to price the instrument,
2775 or as a custom date. Currently, the feature is enabled for FRAs
2776 and swaps.
2777 - Added the possibility to pass weight when fitting a bond
2778 discount curve. Also, it is now possible to fit a spread over an
2779 existing term structure (thanks to Andres Hernandez).
2780
2781 INFLATION
2782 - Added Kerkhof seasonality model (thanks to Bernd Lewerenz).
2783 - Retrieve inflation fixings from the first day of the month
2784 (thanks to Gerardo Ballabio). This avoids the need to store them
2785 for each day of the corresponding month.
2786
2787 VOLATILITY
2788 - Improve consistency between caplet stripping and pricing (thanks
2789 to Michael von den Driesch)
2790
2791 INSTRUMENTS
2792 - Fixed usage of dividend yield in double-barrier formula (Thanks
2793 to Dean Raf for the heads-up).
2794 - Fixed perturbation formula for barrier options.
2795
2796 MODELS
2797 - Refine update behavior of GSR model. Depending on the market
2798 change, only the appropriate recalculations are performed
2799 (thanks to Peter Caspers).
2800 - Improve calibration of Heston model (thanks to Peter Caspers).
2801
2802 MONTE CARLO
2803 - Added the possibility to return the estimated exercise
2804 probability from a Longstaff-Schwartz engine (thanks to Giorgio
2805 Pazmandi).
2806
2807 SETTINGS
2808 - Added the possibility to temporarily disable notifications to
2809 observers (thanks to Chris Higgs). When re-enabled, any pending
2810 notifications are sent.
2811
2812 DATE/TIME
2813 - Added Romanian and Israelian calendars (thanks to Riccardo
2814 Barone).
2815 - Added ECB reserve maintenance periods for 2016 (thanks to Paolo
2816 Mazzocchi).
2817 - Updated South Korean calendar until the end of 2032 (thanks to
2818 Paolo Mazzocchi and Faycal El Karaa).
2819 - Added new Mountain Day holiday for Japan (thanks to Aaron
2820 Stephanic for the heads-up).
2821 - Remove MLK day from list of US holidays before 1983 (thanks to
2822 John Orford for the heads-up).
2823 - Added Christmas Eve to BOVESPA holidays (thanks to Daniel Beren
2824 for the heads-up).
2825
2826 MATH
2827 - Added polynomial and abcd functions.
2828 - Added Pascal triangle coefficients.
2829 - Replaced home-grown implementation of incremental statistics
2830 with Boost implementation (thanks to Peter Caspers).
2831 - Added Goldstein line-search method (thanks to Cheng Li).
2832
2833 NEW OPT-IN FEATURES
2834 - Added intraday component to dates (thanks to Klaus Spanderen).
2835 Date specifications now include hours, minutes, seconds,
2836 milliseconds and microseconds. Day counters are aware of the
2837 added data and include them in results.
2838 The feature can be enabled by uncommenting the
2839 `QL_HIGH_RESOLUTION_DATE` macro in `ql/userconfig.hpp` on Visual
2840 C++ or by passing the `--enable-intraday` flag to `./configure`
2841 on other systems.
2842 - Added thread-safe implementation of the Observer pattern (thanks
2843 to Klaus Spanderen). This can be used to avoid crashes when
2844 using %QuantLib from languages (such as C# or Java) that run a
2845 garbage collector in a separate thread.
2846 The feature requires Boost 1.58 or later and can be enabled by
2847 uncommenting the `QL_ENABLE_THREAD_SAFE_OBSERVER_PATTERN` macro
2848 in `ql/userconfig.hpp` on Visual C++ or by passing the
2849 `--enable-thread-safe-observer-pattern` to `./configure` on
2850 other systems.
2851
2852 <strong>Release 1.6.2 - September 2015</strong>
2853
2854 %QuantLib 1.6.2 is a compatibility release. It solves an ambiguous
2855 name resolution in the test-suite code when Visual Studio and the
2856 newly released Boost 1.59.0 are used together.
2857
2858 The library code did not change.
2859
2860 <strong>Release 1.6.1 - August 3rd, 2015</strong>
2861
2862 %QuantLib 1.6.1 is a compatibility release. It adds out-of-the-box
2863 support for the newly released Visual Studio 2015, and avoids use
2864 of deprecated Boost macros that will be removed in the upcoming
2865 Boost 1.59.0 release.
2866
2867 <strong>Release 1.6 - June 23rd, 2015</strong>
2868
2869 PORTABILITY
2870 - Enable successful compilation with Boost 1.58 and either gcc or clang.
2871 - Enable multi-processor compilation on Visual C++ as a project switch
2872 (thanks to Giorgio Pazmandi).
2873
2874 DATE/TIME
2875 - Added Moscow Exchange calendar (thanks to Dmitri Nesteruk).
2876 - Added 70th anniversary of anti-Japanese day to Chinese calendar
2877 (thanks to Cheng Li).
2878 - Fixed Chinese New Year date for 2010 (thanks to Cheng Li).
2879 - Added nearest-trading-day business day convention (thanks to
2880 Francois Botha).
2881 - Prevented normalization of a 7-days period to a 1-week period, since
2882 this doesn't apply to business days (thanks to Paolo Mazzocchi).
2883 - Allowed schedules built with a vector of dates to be used for coupon
2884 generation, given that the required information was provided (thanks
2885 to Peter Caspers).
2886 - Added support for Australian Security Exchange (ASX) dates (thanks
2887 to Maddalena Zanzi).
2888 - Added ECB dates for April and June 2016 (thanks to Paolo Mazzocchi).
2889
2890 INSTRUMENTS
2891 - Extended digital American options to handle knock-off case (thanks
2892 to Riccardo Ghetta).
2893 - Extended barrier options to handle KIKO/KOKI barriers (thanks to
2894 Riccardo Ghetta).
2895 - Added Ikeda/Kunitomo engine, binomial engine and binary/digital
2896 engine for double-barrier option (thanks to Riccardo Ghetta).
2897 - Added Bachelier engine for caps/floors based on normal volatility
2898 (thanks to Michael von den Driesch).
2899 - Allowed non strike/type payoffs in finite-differences engine for
2900 vanilla options (thanks to Joseph Wang).
2901 - Fixed settlement days of BTP bonds.
2902 - Fixed generation of schedule for OIS and vanilla swaps.
2903 - Added support for ASX dates to futures rate helper (thanks to
2904 Maddalena Zanzi).
2905
2906 MODELS
2907 - Moved Markov functional model, GSR model, Gaussian 1D model and
2908 related engines, processes and term structures from the experimental
2909 folder to the code library (thanks to Peter Caspers).
2910
2911 CASH FLOWS
2912 - Added CMS-spread coupons, including digital (thanks to Peter Caspers).
2913
2914 INDEXES
2915 - Added CMS-spread index (thanks to Peter Caspers).
2916 - Fixed day-count convention for Fed Funds rate.
2917
2918 TERM STRUCTURES
2919 - Fixed bug where a valid previous curve state could be a bad guess
2920 for the next and lead to a bootstrap failure.
2921 - Allow negative adjustment for futures rate helpers (thanks to Paolo
2922 Mazzocchi).
2923
2924 VOLATILITY
2925 - Added support for normal and displaced lognormal volatility to
2926 optionlet stripper (thanks to Michael von den Driesch).
2927 - Allowed calibration of the alpha of the SABR model to the ATM point
2928 while keeping beta, nu and rho fixed (thanks to Peter Caspers).
2929 - Added Chambers-Nawalkha implied-volatility approximation (thanks to
2930 Peter Caspers).
2931 - Added displaced lognormal swaption volatilities (thanks to Peter
2932 Caspers).
2933 - Allowed the optionlet boostrap to continue if one caplet can no be
2934 matched (thanks to Peter Caspers).
2935 - Added flat-extrapolation option to swaption ATM volatility matrix
2936 (thanks to Peter Caspers).
2937 - Implied swaption volatility cube for Gaussian 1-D model (thanks to
2938 Peter Caspers).
2939
2940 MATH
2941 - Allowed user-defined Jacobian in optimization (thanks to Peter Caspers).
2942
2943 MISCELLANEA
2944 - Added IDR, MYR, RUB and VND currencies (thanks to Lucy King).
2945
2946 DEPRECATED FEATURES
2947 - Removed deprecated methods and constructors from the
2948 BlackVarianceTermStructure, BlackVolTermStructure,
2949 CapFloorTermVolatilityStructure, DateParser,
2950 FittedBondDiscountCurve, GeneralLinearLeastSquares, Handle,
2951 LocalVolTermStructure, OptionletVolatilityStructure, Settings,
2952 SwaptionVolatilityStructure and VolatilityTermStructure classes.
2953
2954 EXPERIMENTAL FOLDER
2955 - Finite-difference meshers based on multi-dimensional integrals
2956 (thanks to Klaus Spanderen).
2957 - SVI interpolation and a corresponding smile section (thanks to Peter
2958 Caspers).
2959 - ZABR volatility model (thanks to Peter Caspers).
2960
2961 <strong>Release 1.5 - February 10th, 2015</strong>
2962
2963 PORTABILITY
2964 - Unified project files for Visual Studio 10 and above. Different
2965 solutions are still provided for Visual Studio 10, 11 and 12.
2966
2967 DATE/TIME
2968 - Added China Inter-Bank calendar (thanks to Cheng Li).
2969 - Added half-month modified following convention (thanks to Paolo
2970 Mazzocchi).
2971 - Added a few more historical closings for NYSE.
2972 - Updated the Hong Kong and China calendar for 2015.
2973 - Updated list of ECB dates up to the first two dates for 2016 (thanks
2974 to Paolo Mazzocchi).
2975
2976 INSTRUMENTS
2977 - Improved Storage and Swing engine (thanks to Klaus Spanderen).
2978 - Fixed behavior of the Bjerksund Stensland engine for very small
2979 volatilities (thanks to Klaus Spanderen).
2980 - Add Heston expansion engine for European options (thanks to Fabien
2981 Le Floc'h).
2982 - Caps, floors and swaptions can use a displacement in
2983 implied-volatility calculation.
2984 - Added partial-time fixed and floating strike lookback options
2985 (thanks to Francois Botha).
2986 - Added binary barrier options (thanks to Riccardo Ghetta).
2987 - Added binomial engine for barrier options (thanks to Riccardo Ghetta).
2988 - Added Vecer engine for continuous-averaging Asian options (thanks to
2989 Bernd Lewerenz).
2990
2991 CASH FLOWS
2992 - Added ex-coupon feature to fixed-rate bonds, CPI bonds and bond
2993 helpers (thanks to Francois Botha).
2994 - Fix calculation of sinking notionals when the coupon rate is very
2995 near 0 (thanks to Cheng Li).
2996
2997 INDEXES
2998 - Added Shanghai Inter-bank Offering Rate index (thanks to Cheng Li).
2999 - Added Fed Fund index.
3000 - Added South-African CPI (thanks to Francois Botha).
3001
3002 TERM STRUCTURES
3003 - Improvement to CMS market calibration: enabled use of general coupon
3004 pricers, added calibration to a term structure of betas (thanks to
3005 Peter Caspers).
3006 - InterpolatedZeroCurve can be passed rates with any compounding
3007 convention and frequency (thanks to Alexandre Radicchi).
3008 - Bond helpers can now use quotes for either clean or dirty prices
3009 (thanks to Francois Botha).
3010 - Added CPI bond helper (thanks to Francois Botha).
3011 - Better handling in rate helpers of evaluation dates which are not
3012 business dates.
3013 - Spreaded curves allow extrapolation if their underlying curve does
3014 (thanks to Peter Caspers).
3015 - Fixed inflation-rate interpolation (thanks to Amine Ifri).
3016
3017 MATH
3018 - Added generation of student-t distributed random numbers
3019 (thanks to Jose Aparicio).
3020 - Added Folin's integration methods (thanks to Klaus Spanderen).
3021 - Added mixed backward-flat/linear interpolation (thanks to Peter
3022 Caspers).
3023 - Improved performance of matrix multiplication (thanks to Peter
3024 Caspers).
3025 - Fixed wrong primitive calculation in mixed interpolation (thanks to
3026 Peter Caspers).
3027 - Fixed corner case for finite-difference Newton solver leading to
3028 infinite derivative (thanks to Peter Caspers).
3029 - Added Maddock's cumulative normal distribution (thanks to Klaus
3030 Spanderen).
3031 - Added bivariate cumulative student t distribution (thanks to Michal
3032 Kaut).
3033
3034 LATTICES
3035 - Calculate option delta/gamma on binomial trees using Hull formulas
3036 (thanks to Riccardo Ghetta).
3037
3038 MISCELLANEA
3039 - A number of small performance improvements (thanks to Michael Sharpe).
3040
3041 EXAMPLES
3042 - Added example for Gaussian 1-D models (thanks to Peter Caspers).
3043 - Added examples for latent models and basket losses (thanks to Jose
3044 Aparicio).
3045 - Added example for multi-dimensional integral (thanks to Jose Aparicio).
3046
3047 DEPRECATED CLASSES
3048 - Removed deprecated Domain and Surface classes.
3049
3050 EXPERIMENTAL FOLDER
3051 - Extended credit risk plus model (thanks to Peter Caspers).
3052 - No-arbitrage Sabr model with corresponding volatility-cube, smile
3053 section and interpolation classes (thanks to Peter Caspers).
3054 - A number of latent models for basket losses (thanks to Jose Aparicio).
3055 - Complex chooser option (thanks to Nathan Kruck, Ahmed Ayadi and
3056 Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
3057 - Holder-extensible option (thanks to Nathan Kruck, Ahmed Ayadi and
3058 Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
3059 - Partial-time barrier option (thanks to Nathan Kruck, Ahmed Ayadi and
3060 Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
3061 - Two-asset correlation option (thanks to Ilyas Rahbaoui and Driss
3062 Aouad from the IMAFA program at Polytech'Nice Sophia).
3063
3064 <strong>Release 1.4.1 - November 17th, 2014</strong>
3065
3066 %QuantLib 1.4.1 is a compatibility release. It fixes a number of
3067 compilation errors that surfaced when using %QuantLib 1.4 with
3068 Clang 3.5 and Boost 1.57. Thanks to Tim Smith for the heads-up.
3069
3070 If you are not using Clang, you don't need to upgrade from
3071 %QuantLib 1.4 to 1.4.1.
3072
3073 <strong>Release 1.4 - February 26th, 2014</strong>
3074
3075 PORTABILITY
3076 - Boost 1.39 or later is now required.
3077 We felt this could be enforced without causing grief to
3078 virtually anyone, given that 1.39 was released back in May 2009.
3079 We don't expect many people being stuck with an earlier version.
3080 This allows one to use make_shared to create shared_ptr
3081 instances, which has a number of advantages. Unfortunately, the
3082 C++03 implementation (which is still used by a number of older
3083 compiler that we're supporting) only allows a maximum of 9
3084 constructor arguments, so we won't be able to use it everywhere.
3085 - Support for Visual C++ 2003 (VC++7) was dropped.
3086 The compiler is now more than 10 years old and no longer
3087 supported by Microsoft. Keeping the support is not worth the
3088 time and effort required. Anybody who is still stuck with this
3089 compiler and needs the support can fork the repository and
3090 maintain the changes.
3091 - Specific support for Visual C++ 2013 (VC++12) is not yet
3092 available; however, version checks in the code were relaxed so
3093 that one can import and convert the VC++11 solution without
3094 causing errors when auto-linking the generated libraries.
3095 - Fixed Clang warnings.
3096 - Use deprecated attribute of supported compilers.
3097 This replaces the QL_DISABLE_DEPRECATED mechanism that
3098 conditionally removes the features and causes the compiler
3099 itself to emit warnings if the features are used. The user
3100 can enable or disable the warnings by the means provided by
3101 the compiler.
3102 - Allow singletons to work under Visual C++ when CLR is enabled
3103 (thanks to Simon Shakeshaft).
3104 - Fixed compilation errors when using STLport (thanks to Marcello
3105 Pietrobon for the heads-up).
3106
3107 CONFIGURATION
3108 - Added switch to enable OpenMP-based parallelism (thanks to
3109 Joseph Wang). Currently, this is only used in a few loops in
3110 the finite-differences and tree frameworks.
3111
3112 DATE/TIME
3113 - Added Diamond Jubilee bank holiday to UK calendar.
3114 - Added Royal Wedding bank holiday to UK calendar (thanks to
3115 Whit Armstrong for the heads-up).
3116 - Added utilities to parse and format a date with the extended
3117 format implemented in Boost.Date (thanks to Michael von den
3118 Driesch). The previous parsing utility was deprecated.
3119 - Added Actual/365 (No Leap) day counter (thanks to Nick Glass).
3120 - Updated most moving holidays for 2014.
3121 - Fixed a Schedule bug where a combination of backwards generation
3122 and end-of-month convention would result in missing or
3123 duplicated dates (thanks to Nicholas Manganaro for the heads-up).
3124
3125 INSTRUMENTS
3126 - Fixed Delta and Gamma calculation in Ju quadratic engine (thanks
3127 to Fabien Le Floc'h).
3128 - Improved calculation in finite-differences Asian options when
3129 the running average is much greater than the forward value
3130 (thanks to Klaus Spanderen).
3131 - Fixed Theta issue for some American FDM engines (thanks to Klaus
3132 Spanderen).
3133 - Fix annuity computation for CMS coupons (thanks to Peter Caspers).
3134 - Enabled case r=0 in Barone-Adesi/Whaley approximation engine
3135 (thanks to Klaus Spanderen).
3136 - When building a swaption with MakeSwaption, use the fixed tenor
3137 of the underlying swap index if none is given explicitly.
3138
3139 MODELS
3140 - Allow for calibration of just a subset of a model's parameters.
3141 Pre-built constraint are provided for calibration of an
3142 Hull-White model while fixing the mean reversion, and for
3143 calibration of a Markov functional model while fixing the first
3144 component of the piecewise volatility. (Thanks to Peter Caspers.)
3145 - Allow recalculation of exercise and end dates in swaption and
3146 cap helpers when the evaluation date changes (thanks to Peter
3147 Caspers).
3148 - Allowed negative strikes in BlackFormula, as long as the strike
3149 plus the displacement is still positive (thanks to Peter
3150 Caspers).
3151 - Added calculation of implied volatility from Bachelier price in
3152 BlackFormula (thanks to Gary Kennedy).
3153 - Added Broadie-Kaya exact simulation schema to Heston model
3154 (thanks to Klaus Spanderen).
3155 - Fixed upper/lower bound calculation for internal constraint in
3156 calibrated model (thanks to Peter Caspers).
3157
3158 CASH FLOWS
3159 - Added support for ex-coupon dates to cashflow calculations
3160 (thanks to Nick Glass). Currently, ex-coupons dates can be
3161 specified for fixed rate bonds.
3162 - Fixed calculation of duration and convexity when using
3163 Act/Act(ISMA) (thanks to Nick Glass).
3164
3165 INDEXES
3166 - Fixed IborCoupon construction with null fixing days.
3167 The coupon was used the passed fixing days instead of the ones
3168 previously processed by the base class constructor (thanks to
3169 Lisa Ann and Gerardo Ballabio for the heads-up).
3170 - Add a clone() method to SwapIndex which allows to change the
3171 tenor (thanks to Peter Caspers).
3172 - Ignore inflation-index fixings stored at dates later than the
3173 evaluation date.
3174 - Added utility class for creating custom Region instances to be
3175 passed to inflation indexes.
3176
3177 TERM STRUCTURES
3178 - Prevent some errors when linking a null term structure to a Handle.
3179 When settings a null term structure to a Handle used as an
3180 underlying for another curve (say, a zero-spreaded curve), the
3181 latter tries to reset the jumps in the base class and fails.
3182 This error is now trapped. (Thanks to Christoph Breig for
3183 the heads-up.)
3184 - Fix interpolation of option dates in SwaptionVolatilityDiscrete
3185 and derived classes when evaluation date changes (thanks to Shen
3186 Hui).
3187 - Piecewise-spreaded curve can now choose interpolation (thanks to
3188 Mario Aleppo).
3189
3190 MATH
3191 - Extended Sobol direction numbers up to 21200 dimensions with Joe
3192 Kuo 6 searching rule (thanks to Cheng Li).
3193 - Added class for two-dimensional integration (thanks to Klaus
3194 Spanderen).
3195 - Added Maddock inverse-cumulative normal distribution from Boost
3196 (thanks to Klaus Spanderen).
3197 - Added modified Bessel functions (thanks to Klaus Spanderen).
3198
3199 EXPERIMENTAL FOLDER
3200 - Deprecated features were removed from experimental code.
3201 - Added initial implementation of catastrophe bond (thanks to
3202 Grzegorz Andruszkiewicz).
3203 - Added Vanna/Volga pricing engine for FX barrier options.
3204 Engines were provided for both single- and double-barrier FX
3205 options. An analytic engine was also provided for double-barrier
3206 equity options (thanks to Yue Tian).
3207 - Added Hagan pricing engine for irregular swaptions (thanks to
3208 Andre Miemiec).
3209 - Added simulated-annealing optimizer (thanks to Peter Caspers).
3210 - Added rebated exercise class (thanks to Peter Caspers).
3211 - Added pricing engine for arbitrary European payoffs under the
3212 Heston model (thanks to Klaus Spanderen).
3213 - Added linear terminal swap rate model pricer for CMS coupons
3214 (thanks to Peter Caspers).
3215 - Reorganized functional Markov model. Added one-factor GSR
3216 model, and float/float swap and swaption with a number of
3217 corresponding engines. (Thanks to Peter Caspers.)
3218 - The Levy engine for continuous-averaging Asian option now checks
3219 that the averaging period doesn't start in the future. Also, it
3220 allows the b=0 case that would raise an exception until now.
3221 (Thanks to Klaus Spanderen.)
3222 - Convertible bond now updates correctly when any of its
3223 observables changes.
3224 - Extended generalized Hull-White model (thanks to Cavit Hafizoglu).
3225 The model now allows to choose the mapping function between short
3226 rate and state variable, and includes the case of constant
3227 parameters.
3228
3229 <strong>Release 1.3 - July 24th, 2013</strong>
3230
3231 PORTABILITY
3232 - Enabled g++ compilation in C++11 mode.
3233 - Added VC++11 projects (thanks to Edouard Tallent).
3234 - Added x64 target to VC++10 and VC++11 projects (thanks to Johannes
3235 G&ouml;ttker-Schnetmann).
3236 - Removed most level-4 warnings in VC++ (thanks to Michael Sharpe).
3237 - Removed warnings in VC++ when compiling for the x64 platform (thanks
3238 to Johannes G&ouml;ttker-Schnetmann).
3239
3240 DATE/TIME
3241 - Fixed holiday for Japanese calendar (thanks to Sebastien Gurrieri).
3242 - Added Epiphany (introduced in 2011) to Polish calendar (thanks to
3243 katastrofa).
3244 - Updated South-Korean calendar for 2013 (thanks to Faycal El Karaa).
3245 - Updated Chinese calendar for 2012 (thanks to Cheng Li).
3246 - Updated calendar for 2013 for China, Hong Kong, India, Indonesia,
3247 Singapore, Taiwan and Turkey.
3248 - Fixed a few Mexican holidays.
3249 - Prevented out-of-bound access to degenerate schedule.
3250
3251 INSTRUMENTS
3252 - Finite-difference Bermudan swaption engines for the G2++ and the
3253 Hull-White models (thanks to Klaus Spanderen).
3254 - Added analytic Heston-Hull-White pricing engine for vanilla option
3255 using the H1HW approximation (thanks to Klaus Spanderen).
3256 - Managed underlying start delay in Jamshidian swaption engine (thanks
3257 to Peter Caspers).
3258
3259 MODELS
3260 - Added calibration to GARCH model (thanks to Slava Mazur).
3261 - Fixed forward-looking bias in Garch11 calculation (thanks to Slava
3262 Mazur).
3263
3264 CASH FLOWS
3265 - Use correct default for evaluation date in a few CashFlows methods
3266 (thanks to Peter Caspers).
3267 - Yield-based NPV calculation now uses coupon reference dates; this
3268 fixes small discrepancies when using day counters such as ISMA
3269 act/act (thanks to Henri Gough and Nick Glass).
3270 - Fixed start and end dates for convexity adjustment of in-arrears
3271 floating-rate coupon (thanks to Peter Caspers).
3272
3273 INDEXES
3274 - Added inspector for the joint calendar used by Libor indexes.
3275 - Added method to clone a swap index with a different discount curve
3276 (thanks to Peter Caspers).
3277
3278 TERM STRUCTURES
3279 - Fixed degenerate case for ABCD volatility (thanks to Peter Caspers).
3280 - Relaxed extrapolation check for default-probability curves. When
3281 calculating default probabilities between two dates or times, allow
3282 the first to precede the reference date. This effectively assumes
3283 that the default probability before the reference is null, and helps
3284 in cases where a coupon protection extends a couple of days before
3285 the reference due to adjustments (for instance, when the protection
3286 starts on a Saturday and the reference is rolled to the following
3287 Monday).
3288 - Pass correct ATM forward rate to smile section of InterpolatedSwaptionVolatilityCube
3289 (thanks to Peter Caspers).
3290 - Added exogenous discount to OptionletStripper1 (thanks to Peter
3291 Caspers).
3292
3293 MATH
3294 - Added Sobol brownian-bridge random sequence generator (thanks to
3295 Klaus Spanderen).
3296 - Added Richardson-extrapolation utility for numerical methods (thanks
3297 to Klaus Spanderen).
3298 - Added differential evolution optimizer (thanks to Ralph Schreyer and
3299 Mateusz Kapturski).
3300 - Added special case to close()/close_enough() when either value is 0;
3301 previously, they would always return false which could be surprising
3302 (thanks to Simon Shakeshaft for the fix).
3303 - Fixed Gamma distribution tail (thanks to Ian Qsong).
3304 - Ensure that the last function call inside a solver is passed the
3305 root (thanks to Francis Duffy).
3306 - Implemented Lagrange boundary condition for cubic interpolation
3307 (thanks to Peter Caspers).
3308 - Increased precision in tail of West's bivariate cumulative normal
3309 (thanks to Fabien Le Floc'h).
3310 - Improved calibration of SABR interpolation by allowing different
3311 starting points (thanks to Peter Caspers).
3312 - Moved FFT and autocovariance implementations from experimental
3313 folder to core library.
3314
3315 FINITE DIFFERENCES
3316 - Added time-dependent Dirichlet boundary condition (thanks to Peter
3317 Caspers).
3318
3319 UTILITIES
3320 - Implicit conversions of shared_ptr to bool are now explicit; they
3321 have been removed in C++11 (thanks to Scott Condit).
3322
3323 EXPERIMENTAL FOLDER
3324
3325 The ql/experimental folder contains code which is still not fully
3326 integrated with the library or even fully tested, but is released in
3327 order to get user feedback. Experimental classes are considered
3328 unstable; their interfaces might change in future releases.
3329
3330 New contributions for this release were:
3331 - Two-asset barrier option and related engine (thanks to
3332 IMAFA/Polytech'Nice students Qingxiao Wang and Nabila Barkati).
3333 - ODE solver (thanks to Peter Caspers).
3334 - Markov functional model (thanks to Peter Caspers).
3335
3336 <strong>Release 1.2.1 - September 10th, 2012</strong>
3337
3338 Bug-fix release.
3339
3340 <strong>Release 1.2 - March 6th, 2012</strong>
3341
3342 PORTABILITY
3343 - Microsoft Visual C++ 2010 no longer needs to disable uBlas code.
3344 - %QuantLib now ships with an updated specification file for
3345 building RPMs (thanks to Matt Fair).
3346
3347 DATE/TIME
3348 - When EOM was specified, a schedule's end date was moved to the
3349 end of month even if the 'Unadjusted' convention was given.
3350 This is now fixed.
3351 - When a daily frequency was used, a schedule could end up
3352 containing duplicated dates. This is now fixed (thanks to
3353 Simone Medori for the bug report).
3354 - Added method to return truncated schedule.
3355 - Fixed Swedish Midsummer Eve's date (thanks to Gary Kennedy).
3356 - Added South Korea holidays for 2011/2012 (thanks to Charles
3357 Chongseok Hyun and Faycal El Karaa).
3358 - Added holidays for 2011 to China, Hong Kong, India, Indonesia,
3359 Saudi Arabia, and Taiwan calendars.
3360 - Added ECB maintenance dates for 2012 and 2013.
3361 - Greatly improved performance of business/252 day counter. The
3362 previous implementation would count the business days between
3363 two dates at each invocation. The new implementation caches
3364 dynamically the count of business days for whole months and
3365 years, so that after a while only the first and last few days
3366 are counted.
3367
3368 INSTRUMENTS
3369 - The AssetSwap instrument now supports non-par repayment.
3370 - Added specialized class for Italian CCTEU (certificato di
3371 credito del tesoro).
3372 - Added CPI-linked swaps, bonds, and cap/floors.
3373
3374 CASH FLOWS
3375 - Added CashFlows::npvbps() method to calculate NPV and BPS in a
3376 single loop to improve performance.
3377
3378 INDEXES
3379 - Better detection of forecast/past fixings for inflation indexes.
3380 When an interpolated index is asked for a fixing at the
3381 beginning of a month, the fixing for the following (which would
3382 have zero weight in the interpolation) is no longer required.
3383 Also, if a fixing is loaded in the index time series, it can be
3384 used even its observation lag has not fully elapsed.
3385
3386 TERM STRUCTURES
3387 - Vastly improved the performance of piecewise yield curve
3388 bootstrap. Anchoring the evaluation date (see below) provides a
3389 further improvement.
3390 - Moved CPI-volatility interface from experimental folder to the
3391 core library.
3392
3393 MATH
3394 - Added Newton 1-D solver with finite difference derivatives.
3395 - Improved interface for linear least-square regression (thanks to
3396 Slava Mazur).
3397
3398 FINITE DIFFERENCES
3399 - Added TR-BDF2 scheme (thanks to Fabien Le Floc'h).
3400 - Moved stable parts of 2D finite-difference framework from the
3401 experimental folder to the core library.
3402
3403 UTILITIES
3404 - Added resetEvaluationDate() and anchorEvaluationDate() methods
3405 to enable/disable change of evaluation date at midnight,
3406 respectively. Anchoring the evaluation date also improves the
3407 performance of some calculations.
3408
3409 PATTERNS
3410 - Fixed possible problem in LazyObject notification logic. The
3411 previous implementation would pass obsolete information to
3412 observers that asked for data in their update() method (which is
3413 not advised, but possible). This is no longer the case.
3414
3415 EXPERIMENTAL FOLDER
3416
3417 The ql/experimental folder contains code which is still not fully
3418 integrated with the library or even fully tested, but is released
3419 in order to get user feedback. Experimental classes are
3420 considered unstable; their interfaces might change in future
3421 releases.
3422
3423 New contributions for this release were:
3424 - Spread option and related engine (thanks to IMAFA/Polytech'Nice
3425 students Meryem Chibo and Samad Abdessadki).
3426 - Writer-extensible option and related engine (thanks to
3427 IMAFA/Polytech'Nice students Delphine Bouthier, Marine Casanova,
3428 and Xavier Caron).
3429 - Levy engine for continuous-averaging Asian options (thanks to
3430 IMAFA/Polytech'Nice students Yasmine Lahlou and Amine Samani).
3431 - Simple Virtual Power Plant and related finite-difference (FD)
3432 engine (thanks to Klaus Spanderen).
3433 - FD solver and vanilla spread engine for Kluge-Ornstein-Uhlenbeck
3434 process (thanks to Klaus Spanderen).
3435 - Added generic n-dimensional FD solver (thanks to Klaus Spanderen).
3436 - Added FD pricing engine for a simple storage option based on an
3437 exponential Ornstein Uhlenbeck process (thanks to Klaus
3438 Spanderen).
3439 - Added vanilla and swing option FD pricer for Kluge model (thanks
3440 to Klaus Spanderen).
3441 - Added FD pricing engine for a simple swing option based on the
3442 Black-Scholes model (thanks to Klaus Spanderen).
3443
3444 <strong>Release 1.1 - May 23rd, 2011</strong>
3445
3446 PORTABILITY
3447 - Added support for Microsoft Visual C++ 2010.
3448 - Fixed m4 macro for %QuantLib detection. It now works also when asked
3449 for versions such as 1.1 (as opposed to 1.1.0).
3450
3451 DATE/TIME
3452 - Added Russian calendar.
3453 - Revamped time-series iterators (thanks to Slava Mazur.) Iterators
3454 on dates and values were added, as well as C++0X-style cbegin() and
3455 cend() iterators.
3456
3457 INSTRUMENTS
3458 - Added a few inspectors to zero-coupon inflation swaps.
3459 - Added Kirk approximation for two-asset spread options.
3460 - Added specialized BTP class (Italian government bonds) and related
3461 RendistatoCalculator class to help instantiation of this type of
3462 FixedRateBond.
3463 - Added analytic pricing engine for the piecewise-constant
3464 time-dependent Heston model.
3465 - Added paymentCalendar to FixedRateBond, possibly different
3466 than the one used for accrual-date calculation.
3467
3468 PROCESSES
3469 - Added Quadratic Exponential discretization scheme for the Heston
3470 process, including martingale correction.
3471
3472 INDEXES
3473 - Added inspector for discounting curve to swap index (thanks to Peter
3474 Caspers.)
3475 - Added exogenous discounting to all swap indexes.
3476 - Added SONIA index.
3477 - Added HICPXT indexes.
3478
3479 TERM STRUCTURES
3480 - Added time-based interface to inflation curves.
3481 - Piecewise zero-spreaded term structure can now manage spread with
3482 any compounding (thanks to Robert Philipp.)
3483 - FittedBondDiscountCurve now works with any BondHelpers, not only
3484 FixedRateBondHelpers.
3485 - Added Svensson curve-fitting method (thanks to Alessandro Roveda.)
3486
3487 MATH
3488 - Added Ziggurat random-number generator (thanks to Kakhkhor
3489 Abdijalilov.)
3490 - Added experimental copula-based random-number generators (thanks to
3491 Hachemi Benyahia.)
3492 - More performant implementation of inverse cumulative distribution
3493 (thanks to Kakhkhor Abdijalilov.)
3494 - More performant mt19937 implementation (thanks to Kakhkhor
3495 Abdijalilov.)
3496 - Added more copulas (thanks to Hachemi Benyahia.) The new formulas
3497 are for Ali-Mikhail-Haq copula, Galambos copula, Husler-Reiss
3498 copula, and Plackett copula.
3499 - Added autocovariance calculation (thanks to Slava Mazur.)
3500
3501 MONTE CARLO
3502 - Improved LSM basis system (thanks to Kakhkhor Abdijalilov.)
3503
3504 UTILITIES
3505 - Reworked Null class template (thanks to Kakhkhor Abdijalilov.) The
3506 new implementation avoids the need for a macro on 64-bit systems and
3507 automatically covers all floating-point and integer types.
3508
3509 EXPERIMENTAL FOLDER
3510
3511 The ql/experimental folder contains code which is still not fully
3512 integrated with the library or even fully tested, but is released in
3513 order to get user feedback. Experimental classes are considered
3514 unstable; their interfaces might change in future releases.
3515
3516 New contributions for this release were:
3517 - 2D finite-difference Bates engine based on the partial integro
3518 differential equation.
3519 - 2D finite-difference engine for Black-Scholes processes (including
3520 local volatility.)
3521 - Black-Scholes process with support for vega stress test (thanks to
3522 Michael Heckl.)
3523 - Extended Ornstein-Uhlenbeck process.
3524 - Margrabe option (thanks to IMAFA/Polytech'Nice students Marius Akre,
3525 Michael Benguigui, and Yanice Cherrak.)
3526 - Simple chooser option (thanks to IMAFA/Polytech'Nice students
3527 Clement Barret, Fakher Braham, and Mohamed Amine Sadaoui.)
3528 - Generalized Hull-White model (thanks to Cavit Hafizoglu.) The
3529 generalized model can take piecewise-constant parameters instead of
3530 constant ones. A matching generalized Ornstein-Uhlenbeck process was
3531 also added.
3532 - Variance-gamma implementation (thanks to Adrian O'Neill.)
3533 Contributed classes include a variance-gamma process and model (with
3534 data but no behavior at this time) and a couple of working engines
3535 for European options.
3536 - Hybrid products in the McBasket framework (thanks to Andrea Odetti.)
3537 Path pricers now take a vector of YieldTermStructures that contains
3538 the (possibly stochastic) yield curves.
3539 - Delta calculator for FX options (thanks to Dimitri Reiswich.)
3540
3541 <strong>Release 1.0.1 - September 17th, 2010</strong>
3542
3543 Bug-fix release.
3544
3545 <strong>Release 1.0 - February 24th, 2010</strong>
3546
3547 PORTABILITY
3548 - Fixes for x64 Visual Studio compilation (thanks to Craig Miller.)
3549 - Enabled language extensions in Visual Studio projects.
3550 - Prevented make errors with older shells (thanks to Walter Eaves.)
3551
3552 DATE/TIME
3553 - Changes to end-of-month adjustment. In a schedule, the Unadjusted
3554 convention now supersedes a non-null calendar and causes dates to
3555 roll on the unadjusted end of month (possibly a holiday.)
3556 - Added new date-generation rule for CDS (thanks to Jose Aparicio.)
3557 - Fix for CDS fair-upfront calculation (thanks to Jose Aparicio.)
3558 Previously, fair-upfront calculation required a non-null upfront
3559 to begin with. This is no longer the case.
3560
3561 INSTRUMENTS
3562 - Fixed discounting of dividends on convertible-bond grid (thanks to
3563 Benoit Houzelle and Samuel Lerouge.)
3564
3565 CASH FLOWS
3566 - A number of CashFlows methods now return a meaningful result even
3567 if the passed leg is empty.
3568
3569 PROCESSES
3570 - Changed default discretization for Heston process. The new
3571 default (giving a better performance) is quadratic exponential
3572 with Martingale correction.
3573
3574 TERM STRUCTURES
3575 - Removed ambiguous parRate member functions from YieldTermStructure
3576 interface.
3577
3578 EXAMPLES
3579 - Added market-model example.
3580
3581 EXPERIMENTAL FOLDER
3582
3583 The ql/experimental folder contains code which is still not fully
3584 integrated with the library or even fully tested, but is released in
3585 order to get user feedback. Experimental classes are considered
3586 unstable; their interfaces might change in future releases.
3587
3588 New contributions for this release were:
3589 - Longstaff-Schwartz algorithm for basket products including coupon
3590 payments (thanks to Andrea Odetti;)
3591 - added sparse incomplete LU preconditioner for 2D finite-difference
3592 models (thanks to Ralph Schreyer.)
3593
3594
3595 <strong>Release 0.9.9 - November 2009</strong>
3596
3597 PORTABILITY
3598 - Fixes for 64-bit compilation.
3599 - Fixes for Sun Solaris compilation (thanks to Andreas Spengler.)
3600
3601 CASH FLOWS
3602 - Added overnight-index coupon.
3603 - Added inflation coupons.
3604 - Parameterized CashFlows functions with explicit flag specifying
3605 whether to include settlement-date cash flows.
3606 - Added cash-flow related flags to Settings class. They determine
3607 whether or not to include today's and/or settlement date's cash
3608 flows. They can be overridden while calling CashFlows functions.
3609
3610 DATE/TIME
3611 - Added EUWAX calendar.
3612 - Updated 2009 holidays for China, Hong Kong, India, Indonesia,
3613 Singapore, and Taiwan.
3614 - Removed Easter Monday from Canadian holidays (thanks to Matt Knox.)
3615 - Added weekend-only calendar.
3616
3617 INDEXES
3618 - Added EONIA index.
3619 - Added French HICP and Australian CPI inflation indexes.
3620
3621 INSTRUMENTS
3622 - Added overnight-index swaps (including helper for yield-curve bootstrap.)
3623 - Added inflation cap/floors (including interface for inflation cap/floor
3624 volatility structures.)
3625 - Added inspectors for previous and next coupon dates to Bond class.
3626 - Added implied z-spread calculation for bonds (thanks to Nathan Abbott.)
3627 - Added inspector to see whether a bond is still tradable (as opposed
3628 to not expired.)
3629 - Added constructor for fixed-rate bonds taking a generic InterestRate
3630 instance (thanks to Piter Dias.)
3631 - Added upfront to credit default swaps, including application to CDS
3632 helpers (thanks to Jose Aparicio.)
3633 - Added conventional CDS spread calculation (thanks to Jose Aparicio.)
3634 - Enabled non-spot inflation swaps.
3635 - Migrated asset swaps to pricing-engine framework.
3636 - Migrated inflation swaps to pricing-engine framework.
3637 - Migrated old average-strike Asian option pricer to pricing-engine
3638 framework (thanks to IMAFA students Jean Nkeng, Adrien Pinatton,
3639 and Alpha Sanou Toure.)
3640
3641 PRICING ENGINES
3642 - Added builders for a few Monte Carlo engines.
3643 - Most Monte Carlo engines can now specify either relative or absolute
3644 target tolerance.
3645 - Some Monte Carlo engines can now specify either an absolute number
3646 of time steps or a number of time steps per year.
3647 - Added choice of evolver scheme to finite-difference vanilla engines.
3648
3649 MATH
3650 - Implemented Parabolic and Fritsch-Butland cubic interpolations.
3651 - Added BFGS optimizer (thanks to Frederic Degraeve.)
3652 - Added 1D and 2D kernel interpolation (thanks to Dimitri Reiswich.)
3653 - Added Akima and overshooting-minimization spline algorithms (thanks
3654 to Sylvain Bertrand.)
3655 - Added FFT implementation (thanks to Slava Mazur.)
3656
3657 RANDOM NUMBERS
3658 - Added Luescher's luxury random number generator (a proxy for Boost
3659 implementation.)
3660
3661 TERM STRUCTURES
3662 - Added hook to swap-rate helpers for external discounting term
3663 structure (thanks to Roland Lichters.)
3664 - Added seasonality to inflation term structures (thanks to Piero Del
3665 Boca and Chris Kenyon.)
3666
3667 EXPERIMENTAL FOLDER
3668
3669 New contributions for this release were:
3670 - risky bonds and asset-swap options (thanks to Roland Lichters;)
3671 - spreaded hazard-rate curves (thanks to Roland Lichters;)
3672 - compound options (thanks to Dimitri Reiswich;)
3673 - refactored CDS options (thanks to Jose Aparicio;)
3674 - finite-differences solver for the hybrid Heston Hull-White model,
3675 including calibration (thanks to Klaus Spanderen;)
3676 - finite-differences Asian-option engines (thanks to Ralph Schreyer;)
3677 - machinery for default-event specification (thanks to Jose Aparicio;)
3678 - recursive CDO engine (thanks to Jose Aparicio.)
3679
3680
3681 <strong>Release 0.9.7 - November 18th, 2008</strong>
3682
3683 PORTABILITY
3684 - Microsoft Visual C++ configurations have been renamed. The
3685 default Debug and Release configurations now link to the DLL
3686 version of the common runtime library. The names of other
3687 configuration should now be more descriptive.
3688 - Fixes for Solaris build.
3689
3690 BONDS
3691 - Added bond example (thanks to Florent Grenier.)
3692 - Added support for amortizing bonds (thanks to Simon Ibbotson.)
3693
3694 CASH FLOWS
3695 - Added two more cashflow analysis functions (thanks to Toyin Akin.)
3696
3697 DATE/TIME
3698 - Added bespoke calendar.
3699
3700 INDEXES
3701 - Added GBP/USD/CHF/JPY swap-rate indexes.
3702 - Fixed USD LIBOR calendar (settlement, not NYSE.)
3703
3704 MARKET MODELS
3705 - Added first displaced-diffusion stochastic-volatility evolver.
3706
3707 PRICING ENGINES
3708 - Monte Carlo average-price options now uses past fixings correctly.
3709
3710 QUOTES
3711 - added LastFixingQuote, a Quote adapter for the last available
3712 fixing of a given index.
3713
3714 EXPERIMENTAL FOLDER
3715
3716 New contributions for this release were:
3717 - time-dependent binomial trees (thanks to John Maiden.)
3718 - a new multidimensional FDM framework based on operator splitting
3719 using Craig-Sneyd, Hundsdorfer or Douglas schemes (thanks to
3720 Andreas Gaida, Ralph Schreyer, and Klaus Spanderen.)
3721 - implementations of Black-variance curve and surface taking a set
3722 of quotes as input (thanks to Frank Hövermann.)
3723 - synthetic CDO engines (thanks to Roland Lichters.)
3724 - variance options, together with a Heston-process engine (thanks
3725 to Lorella Fatone, Francesca Mariani, Maria Cristina Recchioni,
3726 and Francesco Zirilli.)
3727 - a commodity framework, including instruments such as energy
3728 futures and energy swaps (thanks to J. Erik Radmall.)
3729 - quanto-barrier options (thanks to Paul Farrington.)
3730 - amortizing bonds (thanks to Simon Ibbotson.)
3731 - a perturbative engine for barrier options (thanks to Lorella
3732 Fatone, Maria Cristina Recchioni, and Francesco Zirilli.)
3733
3734 <strong>Release 0.9.6 - August 6th, 2008</strong>
3735
3736 Bug-fix release for %QuantLib 0.9.5. It fixes a bug that would
3737 cause bootstrapped term structures to silently switch to linear
3738 interpolation when log-linear was requested.
3739
3740 <strong>Release 0.9.5 - July 30th, 2008</strong>
3741
3742 CREDIT FRAMEWORK
3743
3744 New credit framework due to the joint efforts of StatPro Italia,
3745 Roland Lichters, Chris Kenyon, and Jose Aparicio. The framework
3746 currently include:
3747 - Interface for default-probability term structure and adapters for
3748 hazard-rate and default-density structures.
3749 - Flat hazard-rate curve.
3750 - Interpolated hazard-rate and default-density curves.
3751 - Credit-default swaps (mid-point and integral engines.)
3752 - Bootstrapped piecewise default-probability curve.
3753 - CDS example.
3754
3755 PORTABILITY
3756 - Added support for Microsoft Visual C++ 2008 (Boost 1.35 is required
3757 for this compiler.)
3758 - Fixes for Cygwin build.
3759
3760 EXPERIMENTAL FOLDER
3761
3762 The new ql/experimental folder contains code which is still not
3763 fully integrated with the library, but is released in order to get
3764 user feedback. Experimental classes are considered unstable;
3765 their interfaces are likely to change in future releases. The
3766 folder currently include:
3767 - Generic MC basket option (thanks to Andrea Odetti.)
3768 - CDS option (thanks to Roland Stamm.)
3769 - Nth-to-default swap (thanks to Roland Lichters.)
3770 - Extended Black-Scholes-Merton process (thanks to Frank H&ouml;vermann.)
3771 - Quanto-adjusted coupons and averaged coupons (thanks to Toyin Akin.)
3772 - Callable bonds (thanks to Allen Kuo.)
3773 - New framework for volatility term structures.
3774 - Sensitivity analysis functions.
3775
3776 CALENDARS
3777 - Added 2008 holidays for China, India, Indonesia, Singapore, and Taiwan.
3778 - Added one-off holiday (President Reagan's and Ford's funerals) to
3779 NYSE calendar.
3780 - Fixed South Korea calendar (thanks to Charles Chongseok Hyun.)
3781
3782 CURRENCIES
3783 - Added Peruvian currency.
3784
3785 DATES
3786 - Added date-generation rules for CDS schedules (i.e., rolling to the
3787 20th of the month.)
3788
3789 INDEXES
3790 - Added SEK LIBOR index.
3791
3792 INSTRUMENTS
3793 - Ported Himalaya and Everest options to pricing-engine framework
3794 (thanks to the IMAFA students at Polytech'Nice Sophia:
3795 J&eacute;r&ocirc;me Bessi, S&eacute;bastien Bonifaci, Benjamin
3796 Degerbaix and Renaud Pentel.)
3797
3798 MATH
3799 - Added matrix determinant.
3800 - Added QR matrix decomposition.
3801 - Added a number of copulas (thanks to Marek Glowacki.)
3802 - Added constrained cubic spline.
3803 - Implemented derivative and second derivative of log-interpolations.
3804 - Added Gauss-Lobatto integration.
3805 - Added student-t distribution (thanks to Roland Lichters.)
3806
3807 MODELS
3808 - Added calibrated GJR-GARCH model (thanks to Yee Man Chan.)
3809 - Added Feller constraint to Heston model.
3810
3811 PRICING ENGINES
3812 - Refactored variance-swap engines (the underlying stochastic process
3813 is now passed to the pricing engine.)
3814 - Added GJR-GARCH pricing engines for vanilla options (thanks to Yee
3815 Man Chan.)
3816
3817 PROCESSES
3818 - Added Euler end-point discretization (thanks to Frank H&ouml;vermann.)
3819 - Added GJR-GARCH process (thanks to Yee Man Chan.)
3820 - Added Bates process.
3821
3822 TERM STRUCTURES
3823 - Added turn-of-year effect to yield-curve bootstrapping (generalized
3824 to multiple jumps at arbitrary dates.)
3825 - Added local bootstrap of forward rates (thanks to Simon Ibbotson.)
3826 - Disabled copies of interpolated curves (the existing behavior was
3827 incorrect. A fix to re-enable copying will be included in a future
3828 release.)
3829
3830 VOLATILITY
3831 - Added constant cap/floor term volatility structure.
3832 - Added stripped optionlet.
3833
3834
3835 <strong>Release 0.9.0 - December 24th, 2007</strong>
3836
3837 PORTABILITY
3838 - Fixes for MSYS and Cygwin build.
3839 - Fixes for VC++ build with CLR support enabled.
3840 - Dropped MetroWerks CodeWarrior support.
3841
3842 CALENDARS
3843 - Fix for business-days calculation (thanks to Piter Dias.)
3844 - Updated Hong Kong's holidays for 2008 and China's for 2007.
3845 - Added new holiday to Canadian calendars (thanks to Matt Knox.)
3846 - Fixed joint-calendar specification (thanks to Jay Walters.)
3847 - Split Canadian calendar into settlement and TSX (thanks to Matt Knox.)
3848 - Added Brazilian exchange calendar (thanks to Richard Gomes.)
3849 - Fixes for the Brazilian calendars (thanks to Piter Dias.)
3850
3851 CASH FLOWS
3852 - Added average-BMA coupon (thanks to Roland Lichters.)
3853 - Fixed-rate coupons can now accept an InterestRate instance (thanks
3854 to Piter Dias.)
3855 - implemented cash-flow vector builders as helper classes to ease
3856 skipping default parameters and single/multiple inputs.
3857
3858 DATES
3859 - Extended date range up to year 2199.
3860 - Fixed period comparison (thanks to Chris Kenyon.)
3861 - Fixed short date formatting (thanks to Robert Lopez.)
3862 - Enhanced period algebra.
3863
3864 INDEXES
3865 - Added BMA index (thanks to Roland Lichters.)
3866 - Added inflation indexes (thanks to Chris Kenyon.)
3867 - Added historical interest-rate index analysis.
3868
3869 INSTRUMENTS
3870 - Added BMA swaps (thanks to Roland Lichters.)
3871 - Added year-on-year and zero-coupon inflation swaps (thanks to
3872 Chris Kenyon.)
3873 - Fixed stub-date management and backward date generation for
3874 fixed-rate bonds (thanks to Toyin Akin.)
3875 - Added clean/dirty bond-price calculation from Z-spread.
3876
3877 LATTICES
3878 - Fixed Tsiveriotis-Fernandes tree initialization (thanks to John Maiden.)
3879
3880 MATH
3881 - Added multi-dimensional cost function for least-square problems
3882 (thanks to Guillaume Pealat.)
3883 - Added histogram class (thanks to Gang Liang.)
3884 - Added log-cubic interpolation.
3885 - Fixed conjugate-gradient bug.
3886 - Fixed nested Levenberg-Marquardt bug.
3887
3888 PRICING ENGINES
3889 - Refactored option engines (the underlying stochastic process is now
3890 passed to the pricing engine.)
3891 - Refactored bond, cap/floor, swap, and swaption engines (the discount
3892 curve is now passed to the pricing engine.)
3893 - Added Heston/Hull-White analytic and Monte Carlo engines for
3894 vanilla options.
3895 - Fixed bug in blackFormulaCashItmProbability in case of non null
3896 displacement.
3897
3898 PROCESSES
3899 - Added hybrid Heston/Hull-White process.
3900 - Fixed joint-process bug.
3901
3902 QUOTES
3903 - Added forward-swap quote.
3904
3905 RANDOM NUMBERS
3906 - Fixed ordering of primitive polynomials for Sobol/Levitan and
3907 Sobol/Levitan/Lemieux methods.
3908 - Added JoeKuoD5, JoeKuoD6 and JoeKuoD7 direction integers for
3909 Sobol generator.
3910 - Added Kuo, Kuo2 and Kuo3 direction integers for Sobol generator.
3911 - Added class to generate low-discrepancy sequences using a lattice rule.
3912
3913 TERM STRUCTURES
3914 - Added discount curve fitted on bond prices (thanks to Allen Kuo.)
3915 - Added BMA-swap rate helper (thanks to Roland Lichters.)
3916 - Made SwapRateHelper forward-start enabled.
3917 - Added universal term-structure bootstrapper (thanks to Chris Kenyon.)
3918 - Added abstract inflation term structures (thanks to Chris Kenyon.)
3919 - Added piecewise inflation curves (thanks to Chris Kenyon.)
3920
3921
3922 <strong>Release 0.8.1 - June 4th, 2007</strong>
3923
3924 PORTABILITY
3925 - Version 0.8.1 adds support for Boost 1.34 on Linux systems. If
3926 you are using version 0.8.0 on Windows systems, you do not need
3927 this upgrade.
3928
3929
3930 <strong>Release 0.8.0 - May 30th, 2007</strong>
3931
3932 PORTABILITY
3933 - Version 0.8.0 is the last %QuantLib release to support the
3934 Metrowerks CodeWarrior compiler (which was discountinued by
3935 Metrowerks.) If you use such compiler and want support to
3936 continue, you can volunteer for maintaining the necessary
3937 patches: contact the %QuantLib developers for information.
3938
3939 SOURCE TREE
3940 - Files and folders in the source tree have been reorganized
3941 (hopefully for th ebetter.) If you only included
3942 <ql/quantlib.hpp>, all changes were taken care of for you. if
3943 you included specific headers, you might want to check its
3944 current location; in particular, all folder names are now
3945 lowercase.
3946
3947 CALENDARS
3948 - Added 2007 holidays for Indonesia, Saudi Arabia, and South Korea
3949 calendars.
3950
3951 CASH FLOWS
3952 - Added floater range-accrual coupons.
3953
3954 INDEXES
3955 - Added EuriborSwapFixB family.
3956
3957 INSTRUMENTS
3958 - Added capped/floored floating-rate bond. It can also be used for
3959 reverse floaters.
3960 - Added delta, gamma and theta to binomial option engines (thanks
3961 to Steve Cook.)
3962 - Refactored basket engines to allow for more payoffs.
3963
3964 LIBOR MARKET MODEL
3965 - This release includes an experimental implementation of a Libor
3966 market model developed with Mark Joshi. Improvements since
3967 release 0.4.0 include normal forward-rate market model,
3968 lognormal CMS market model, lognormal coterminal-swap market
3969 model, and calibration to caplets and coterminal swaptions. The
3970 interface of the model and its integration with the bulk of the
3971 library are still in development.
3972
3973 MATH
3974 - Adaptive Gauss-Kronrod integration added.
3975 - Added Higham's nearest correlation matrix method (thanks to Neil
3976 Firth)
3977 - Refactored optimization framework.
3978
3979 PROCESSES
3980 - Added new discretization schema to Heston process.
3981
3982 UTILITIES
3983 - The Handle class was split into RelinkableHandle (behaving like
3984 the old Handle class) and Handle (which is notified when its
3985 copies are relinked, but cannot itself be relinked.) The former
3986 can safely be returned from inspectors.
3987
3988
3989 <strong>Release 0.4.0 - February 20th, 2007</strong>
3990
3991 PORTABILITY
3992 - Starting with release 0.4.0, the Borland free compiler 5.5 and
3993 Microsoft Visual C++ 6.0 are no longer supported. If you use
3994 one of these compilers and want support to continue, you can
3995 volunteer for maintaining the necessary patches: contact the
3996 %QuantLib developers for information.
3997
3998 CALENDARS
3999 - Added 2007 holidays for Hong Kong, India, Singapore, and Taiwan
4000 exchanges.
4001
4002 LIBOR MARKET MODEL
4003 - This release includes an experimental implementation of a Libor
4004 market model developed with Mark Joshi. Improvements since
4005 release 0.3.14 include the use of quasi-random number generators
4006 and the calculation of Greeks and of upper bounds for
4007 instruments with early-exercise features. The interface of the
4008 model and its integration with the bulk of the library are still
4009 in development.
4010
4011 INSTRUMENTS
4012 - Added helper classes to make it easier to instantiate swaps,
4013 caps/floors, and CMS instruments.
4014
4015 INTEREST RATES
4016 - Added capped/floored floating-rate coupons (including convexity
4017 adjustment.)
4018
4019 MATH
4020 - Curve, domain and surface interfaces added.
4021
4022 PROCESSES
4023 - Added reversion level to Ornstein-Uhlenbeck process (thanks to
4024 Roland Lichters.)
4025
4026 VOLATILITY TERM STRUCTURES
4027 - Added stripping of caplet-volatility term structure from cap
4028 quotes.
4029 - Improved SABR interpolation and calibration.
4030
4031
4032 <strong>Release 0.3.14 - November 6th, 2006</strong>
4033
4034 PORTABILITY
4035 - Version 0.3.14 is the last %QuantLib release to support the Borland
4036 free compiler 5.5 and Microsoft Visual C++ 6.0. If you use one
4037 of these compilers and want support to continue, you can volunteer
4038 for maintaining the necessary patches: contact the %QuantLib
4039 developers for information.
4040
4041 LIBOR MARKET MODEL
4042 - This release includes an experimental implementation of a Libor
4043 market model developed with Mark Joshi. The interface and its
4044 integration with the bulk of the library are still in development.
4045
4046 CURRENCIES
4047 - Added Romanian new lev.
4048
4049 DATES, CALENDARS, AND DAY COUNTERS
4050 - Added all serial 3M IMM futures (thanks to Toyin Akin.)
4051 - Reworked the Schedule class so that it follows market
4052 conventions more closely.
4053 - Added business/252 day-count convention (thanks to Piter Dias.)
4054
4055 INTEREST RATES
4056 - Added base swap-rate class and a number of actual swap rates.
4057 - Added constant-maturity swap coupons (including convexity
4058 adjustment.)
4059
4060 INSTRUMENTS
4061 - Added asset swaps.
4062 - Added face amount to bonds (defaulting to 100.)
4063
4064 MATH
4065 - Added hypersphere and lower-diagonal salvaging algorithms
4066 (thanks to Yiping Chen.)
4067
4068 PRICING ENGINES
4069 - Added Longstaff-Schwartz Monte-Carlo algorithm for
4070 American/Bermudan equity options with deterministic interest
4071 rates.
4072
4073 TERM STRUCTURE
4074 - Added piecewise-spreaded yield curve (thanks to Roland Lichters.)
4075
4076
4077 <strong>Release 0.3.13 - July 31st, 2006</strong>
4078
4079 CALENDARS
4080 - Added NERC calendar (thanks to Joe Byers.)
4081
4082 INSTRUMENTS AND PRICING ENGINES
4083 - Added continuous fixed and floating lookback options (thanks to
4084 Warren Chou.)
4085 - Added FRA and forward fixed-coupon bonds; examples provided
4086 (thanks to Allen Kuo.)
4087 - Added variance swaps (thanks to Warren Chou.)
4088 - Added composite instrument; example provided.
4089 - Added cash-settled swaption pricing in Black swaption engine;
4090 test provided.
4091 - Added discrete dividends and soft callability to convertible bonds.
4092
4093 INTEREST RATES
4094 - Fixed business-day conventions for Euribor and LIBOR indices
4095 (following below one month, month-end from one month onwards.)
4096
4097 MODELS
4098 - Added more complex market parameterizations and performance
4099 improvements for Libor market model (thanks to Klaus Spanderen.)
4100
4101 PROCESSES
4102 - Renamed BlackScholedProcess to GeneralizedBlackScholedProcess;
4103 specialized classes added for Black-Scholes, Merton, Black and
4104 Garman-Kohlhagen processes.
4105 - Added Hull-White and G2 processes for Monte Carlo simulation
4106 (thanks to Banca Profilo.)
4107
4108 RANDOM NUMBERS
4109 - Added possibility to skip directly to the n-th item in a Sobol
4110 sequence (thanks to Richard Gould.)
4111
4112 MATH
4113 - Added SABR interpolation for volatilities.
4114 - Added general linear least-squares regression (thanks to Klaus
4115 Spanderen.)
4116
4117
4118 <strong>Release 0.3.12 - March 27th, 2006</strong>
4119
4120 CALENDARS
4121 - Added Brazilian calendar (thanks to Piter Dias.)
4122 - Added Argentinian, Icelandic, Indonesian, Mexican, and Ukrainian
4123 calendars.
4124
4125 INSTRUMENTS AND PRICING ENGINES
4126 - Added convertible bonds (thanks to Theo Boafo.)
4127 - The cash flows returned by the Bond::cashflows method now
4128 include the redemption.
4129 - SimpleSwap can now be set an engine. If none is set, the old
4130 cash-flow-based calculation is used.
4131 - Generalized McVanillaEngine so that it can manage n-dimensional
4132 processes; it now subsumes McHestonEngine.
4133 - Added pricing of Bermudan options on binomial trees (thanks to
4134 Enrico Michelotti.)
4135 - Separated accrual and payment conventions for bonds.
4136 - Modified basis-point sensitivity calculation so that it returns
4137 the cash variation for a basis-point change in rate (it used to
4138 return the figure to be multiplied by the variation in order to
4139 obtain the same result.)
4140
4141 MODELS
4142 - Added weights to short-rate model calibration (thanks to Enrico
4143 Michelotti.)
4144 - Added Libor market model (thanks to Klaus Spanderen.)
4145
4146 OPTIMIZATION
4147 - Added Levenberg-Marquardt optimization method (thanks to Klaus
4148 Spanderen.)
4149
4150 EXAMPLES
4151 - Merged American and European option examples; added Bermudan
4152 option.
4153 - Added convertible-bond example (thanks to Theo Boafo.)
4154
4155
4156 <strong>Release 0.3.11 - October 20th, 2005</strong>
4157
4158 GLOBAL FEATURES
4159 - Added configuration option for adding current function
4160 information to error messages.
4161 - Added hook for multiple sessions to Singleton.
4162
4163 CALENDARS
4164 - Added Bombay and Taipei calendars.
4165
4166 CURRENCIES
4167 - Added new Turkish lira.
4168
4169 INDEXES
4170 - More accurate LIBOR calendars (thanks to Daniele de Francesco.)
4171 - Added DKKLibor, EURLibor, and NZDLibor indexes.
4172 - Added TRLibor index (thanks to Sercan Atalik.)
4173
4174 PRICING ENGINES
4175 - Added Bates stochastic-volatility model; tests provided (thanks
4176 to Klaus Spanderen.)
4177 - Added vega to analytic discrete-averaging Asian engine; test
4178 provided (thanks to Gary Kennedy.)
4179 - Added stochastic process for caplet Libor market model; tests
4180 provided (thanks to Klaus Spanderen.)
4181
4182 TERM STRUCTURES
4183 - Added fixed-coupon bond helper for curve bootstrapping (thanks
4184 to Toyin Akin.)
4185
4186 MATH
4187 - Added tabulated Gauss-Legendre quadratures (thanks to Gary
4188 Kennedy.)
4189 - Added more precise implementation of bivariate cumulative normal
4190 distribution (thanks to Gary Kennedy.)
4191
4192
4193 <strong>Release 0.3.10 - July 14th, 2005</strong>
4194
4195 GLOBAL FEATURES
4196 - The suggested syntax for setting and registering with the global
4197 evaluation date is now:
4198 \code
4199 Settings::instance().evaluationDate() = date;
4200 registerWith(Settings::instance().evaluationDate());
4201 \endcode
4202
4203 CALENDARS
4204 - Istanbul calendar added (thanks to Serkan Atalik.)
4205
4206 LATTICE FRAMEWORK
4207 - Faster implementation of binomial and trinomial trees.
4208
4209 MONTE CARLO FRAMEWORK
4210 - Added generic multi-dimensional stochastic process.
4211 - Added stochastic process array (thanks to Klaus Spanderen.)
4212 - Multi-path generator now takes a generic stochastic process;
4213 tests provided.
4214 - New Path class implemented which stores asset values rather than
4215 variations; this makes pricers independent on whether or not
4216 log-variations were calculated. The new class is enabled when
4217 QL_DISABLE_DEPRECATED is defined; the old class is used
4218 otherwise.
4219
4220 INSTRUMENTS
4221 - Multi-asset option now takes a generic stochastic process.
4222
4223 MODELS
4224 - Added Heston stochastic-volatility model; tests provided (thanks
4225 to Klaus Spanderen.) Provided code include:
4226 - a corresponding stochastic process;
4227 - analytic and Monte Carlo option-pricing engines;
4228 - parameter calibration.
4229
4230 CASH FLOWS
4231 - Cash-flow analyses such as NPV, IRR, convexity and duration added
4232 (thanks to Charles Whitmore.)
4233
4234 MATH
4235 - Added Gaussian orthogonal polynomials and Gaussian quadratures;
4236 tests provided (thanks to Klaus Spanderen.)
4237 - Convergence statistics added; tests provided (thanks to Gary
4238 Kennedy.)
4239
4240
4241 <strong>Release 0.3.9 - May 2nd, 2005</strong>
4242
4243 GLOBAL FEATURES
4244 - QL_SQRT, QL_MIN etc. deprecated in favor of std::sqrt,
4245 std::min...
4246 - Added a tentative tracing facility to ease debugging.
4247 - Formatters deprecated in favor of output manipulators. A number
4248 of data types can now be sent directly to output streams.
4249 - Stream-based implementation of QL_REQUIRE, QL_TRACE and similar
4250 macros. Together with manipulators, this allows one to write
4251 simpler error messages, as in:
4252 \code
4253 QL_FAIL("forward at date " << d << " is " << io::rate(f));
4254 \endcode
4255
4256 INSTRUMENTS
4257 - Improved Bond class
4258 - yield-related calculation can be performed with either
4259 compounded or continuous compounding;
4260 - added theoretical price based on discount curve;
4261 - fixed-rate coupon bonds can define different rates for each
4262 coupon;
4263 - added zero-coupon and floating-rate bonds (thanks to StatPro.)
4264 - Option instruments now take a generic StochasticProcess;
4265 however, most pricing engines still require a
4266 BlackScholesProcess. They should be checked to see whether the
4267 requirement can be relaxed. Following this change,
4268 Merton76Process no longer inherits from
4269 BlackScholesProcess. This avoids erroneous upcasts.
4270 - Partial fix for Bermudan swaptions with exercise lag (thanks to
4271 Luca Berardi for the report and discussion.)
4272 - Fix for analytic cap/floor engine; caplets/floorlets whose
4273 fixing is in the past are now calculated correctly (thanks to
4274 Aurelien Chanudet.)
4275
4276 CALENDARS
4277 - Added Bratislava and Prague calendars.
4278
4279 INDICES
4280 - Fixed calendars for LIBOR fixings (thanks to Daniele De
4281 Francesco.)
4282
4283 FINITE_DIFFERENCES FRAMEWORK
4284 - Migrated finite-difference pricers to pricing-engine framework
4285 (thanks to Joseph Wang.)
4286
4287 YIELD TERM STRUCTURES
4288 - Added generic piecewise yield term structure. Client code can
4289 choose what to interpolate (discounts, zero yields, forwards)
4290 and how (linear, log-linear, flat) by instantiating types such
4291 as:
4292 \code
4293 PiecewiseYieldCurve<Discount,LogLinear>
4294 PiecewiseYieldCurve<ZeroYield,Linear>
4295 PiecewiseYieldCurve<ForwardRate,Linear>
4296 \endcode
4297 - Interpolated discount, zero-yield and forward-rate curves can
4298 now be set any interpolation.
4299 - FlatForward can now take rates with compounding other than
4300 continuous.
4301 - Fix for extrapolation in zero-spreaded and forward-spreaded
4302 yield term structure (thanks to Adjriou Belak for the report.)
4303
4304 MATH
4305 - Added backward- and forward-flat interpolations.
4306
4307
4308 <strong>Release 0.3.8 - December 22nd, 2004</strong>
4309
4310 REQUIRED PACKAGES
4311 - Boost version 1.31.0 or later is now required.
4312
4313 DOCUMENTATION
4314 - Documentation now includes a FAQ page.
4315
4316 GLOBAL FEATURES
4317 - Global evaluation date added through Settings class. Used for
4318 index-fixing and exchange-rate lookup.
4319 - added InterestRate class, which encapsulate the interest rate
4320 compounding algebra. It manages day-counting convention,
4321 compounding convention, conversion between different
4322 conventions, and discount/compounding factor calculations. It
4323 also has its own formatter.
4324
4325 INSTRUMENTS
4326
4327 - Bond and FixedCouponBond classes added (thanks to Jeff Yu)
4328 providing price/yield conversions; tests provided.
4329
4330 DATE, CALENDARS, AND DAY COUNT CONVENTIONS
4331 - Reworked Date interface. Added nextWeekday() and nthWeekday()
4332 static methods to the class Date. Added nextIMM() for the
4333 calculation of the next IMM date.
4334 - Added WeekdayFormatter and FrequencyFormatter
4335 - Added "1/1" day counter. The Actual365 is deprecated: as per
4336 ISDA documentation "Actual/365" is the same as
4337 "Actual/Actual". Use the ActualActual class instead, or the
4338 Actual365Fixed class.
4339 - Added dayCounterFromString(std::string) to QuantLibFunctions.
4340 - Improved Beijing calendar (thanks to Zhou Wu.)
4341
4342 CURRENCIES AND FX RATES
4343 - Added currency classes; CurrencyTag replaced in library code.
4344 - Added money class providing arithmetic with or without
4345 conversions; tests provided.
4346 - Added exchange-rate class; tests provided.
4347 - Added exchange-rate manager with smart rate lookup, i.e., able
4348 to derive a missing exchange rate as a chain of provided rates;
4349 tests provided.
4350
4351 MONTE CARLO FRAMEWORK
4352 - Added Faure low-discrepancy sequence (thanks to Gianni Piolanti;)
4353 tests provided.
4354 - Added randomized (shifted) low discrepancy sequences that will
4355 be used for randomized quasi Monte Carlo.
4356 - Added SeedGenerator class, for random generation of seeds when
4357 they are not given by the user.
4358 - Added the implementation of Sobol sequences using the
4359 coefficients of the free direction integers as provided by
4360 Bratley and Fox, who credited unpublished work of Sobol's and
4361 Levitan's.
4362 - Added an implementation of Sobol sequences using the
4363 coefficients of the free direction integers of Lemieux, Cieslak,
4364 and Luttmer. Coefficients for d<=40 are the same as in
4365 Bradley-Fox. For dimension 40<d<=360 the coefficients have been
4366 calculated as optimal values based on the "resolution"
4367 criterion. The values has been provided by Christiane Lemieux,
4368 private communication, September 2004.
4369 - PathGenerator now works correctly with processes describing S
4370 instead of log S. Geometric Brownian process added (thanks to
4371 Walter Penschke.)
4372
4373 LATTICE FRAMEWORK
4374 - Reworked the DiscretizedAsset interface.
4375
4376 PRICING ENGINES FRAMEWORK
4377 - Added pricing engine for American options with Ju quadratic
4378 approximation.
4379 - Average-price Asian pricers have been deprecated. New equivalent
4380 pricing engines added.
4381
4382 FIXED INCOME
4383 - Added current coupon to discretized swap and cap/floor.
4384 - Added IndexManager as a singleton (will replace
4385 XiborManager--already obsoleted in library code.)
4386 - Added DayCounter parameter to ParCoupon (to be used for accruing
4387 spreads and past fixings.) When missing, it defaults to that of
4388 the term structure.
4389 - Added compilation flag to select default floating-coupon type.
4390 - IndexedCoupon can now take a generic index rather than a Libor
4391 (thanks to Daniele De Francesco.)
4392 - Added hooks for convexity adjustment in floating-rate coupons;
4393 implemented adjustment for InArrearIndexedCoupon.
4394
4395 YIELD TERM STRUCTURE
4396 - TermStructure renamed to YieldTermStructure (the former name was
4397 deprecated.)
4398 - New base class BaseTermStructure which can calculate its
4399 reference date based on the global evaluation date.
4400 YieldTermStructure, BlackVolTermStructure,
4401 LocalVolTermStructure, CapFlatVolatilityStructure,
4402 CapletForwardVolatilityStructure, and
4403 SwaptionVolatilityStructure are now derived from
4404 BaseTermStructure so that they inherit its functionality.
4405
4406 PATTERNS
4407 - Added Singleton pattern.
4408
4409 MATH
4410 - Added N-dimensional cubic spline (thanks to Roman Gitlin.)
4411 - Added CovarianceDecomposition class (decomposes a covariance
4412 matrix into standard deviations and correlations)
4413
4414 MISCELLANEA
4415 - Renamed RelinkableHandle to Handle.
4416
4417 PORTABILITY
4418 - Support for Dev-C++ IDE added.
4419 - Fixes for gcc 2.95 added (thanks to Michael Dirkmann.)
4420
4421
4422 <strong>Release 0.3.7 - July 23rd, 2004</strong>
4423
4424 <center>IMPORTANT</center>
4425
4426 %QuantLib now depends on the Boost library (www.boost.org).
4427
4428 You will need a working Boost installation in order to compile and
4429 use %QuantLib. Instructions for installing Boost from sources are
4430 available at <http://www.boost.org/more/getting_started.html>.
4431 Pre-packaged binaries might be available from other sources.
4432 Google is your friend (or Debian, or Fink...)
4433
4434 <HR>
4435
4436 DATE, CALENDARS, AND DAY COUNT CONVENTIONS
4437 - Working on differentiating calendars depending on country or
4438 exchange, instead of city.
4439 - Added Italy (Settlement, Exchange),
4440 United Kingdom (Settlement, Exchange, Metals),
4441 United States (Settlement, Exchange, GovermentBond), Xetra.
4442 - Milan, London, and NewYork calendars have been deprecated.
4443 - Added (old-style) calendars: Beijing, Hong Kong, Riyadh, Seoul,
4444 Singapore, Taiwan.
4445 - RollingConvention has been renamed BusinessDayConvention, as for
4446 ISDA definitions.
4447
4448 MATH
4449 - Added rounding algorithms as per OMG enumeration/definition.
4450
4451 TEST SUITE
4452 - Moved to Boost unit test framework. CppUnit is no longer needed.
4453 - Added test for quanto and forward compound engines.
4454 - Added test for roundings.
4455 - Added test for discrete dividend European options.
4456 - Added test for cliquet options.
4457
4458 MISCELLANEA
4459 - enable/disableExtrapolation() methods were added to a few classes
4460 such as TermStructure. They make it possible to persistently allow
4461 extrapolation without the need of specifying it at every method
4462 call.
4463 - Added user-configurable flag to disable usage of deprecated
4464 classes.
4465
4466 PORTABILITY
4467 - Fink package available
4468 - Visual C++ 7.x project files added
4469
4470
4471 <strong>Release 0.3.6 - April 15th, 2004</strong>
4472
4473 Bug-fix release for %QuantLib 0.3.5. A bug was removed where calls
4474 to impliedVolatility() would break the state of the option and of
4475 all options sharing the same stochastic process.
4476
4477
4478 <strong>Release 0.3.5 - March 31th, 2004</strong>
4479
4480 BOOST SUPPORT
4481 - When available, %QuantLib 0.3.5 now uses parts of the Boost
4482 library. The presence of Boost is detected automatically under
4483 Unix/Linux systems; on Windows systems, it must be enabled by
4484 uncommenting the relevant line in ql/userconfig.hpp.
4485
4486 - In the next %QuantLib release, the presence of the Boost library
4487 will be mandatory.
4488
4489 MONTE CARLO FRAMEWORK
4490 - Modified MultiPath interface to remove drifts. They are now in
4491 the stochastic processes.
4492 - Preliminary implementation of Longstaff-Schwartz least-squares
4493 - Monte Carlo pricer for European basket options
4494 - Brownian-bridge bugs fixed
4495 - StochasticProcess base class and derived classes (diffusion,
4496 jump-diffusion, etc.) have been created.
4497
4498 PRICING ENGINES FRAMEWORK
4499 - Pricing engines now use Payoff and Exercise classes.
4500 - American basket options.
4501 - Binary barrier option replaced by vanilla option with digital payoff.
4502 - Stulz engine for max and min basket calls and puts on two assets.
4503 - American binary option added (a.k.a. one-touch, american digital,
4504 americal barrier, etc.) with different payoffs (cash/asset at
4505 hit/expiry, etc.)
4506 - Added engine for Merton 1976 jump-diffusion process.
4507 - Added Bjerksund and Stensland approximation for American option
4508 (still unstable.)
4509 - Added Barone-Adesi and Whaley approximation for American option.
4510 - Improved Black formula engine with more greeks added.
4511 - Discrete geometric asian option.
4512 - Added Leisen-Reimer binomial tree.
4513
4514 SHORT RATE MODELS
4515 - Model renamed to ShortRateModel. A typedef is provided for backward
4516 compatibility--it will be removed in subsequent releases.
4517
4518 VOLATILITY FRAMEWORK
4519 - bug fix for short time (0<=t<=Tmin) interpolation
4520
4521 OPTIMIZATION FRAMEWORK
4522 - Method renamed to OptimizationMethod. A typedef is provided for
4523 backward compatibility--it will be removed in subsequent releases.
4524
4525 PATTERNS
4526 - Composite pattern
4527
4528 MATH
4529 - Improved cubic spline interpolation. It now handles end conditions
4530 such as first derivative value, second derivative value, not-a-knot.
4531 Hyman filter for monotonically constrained interpolation has been
4532 implemented. Primitive calculation has been enabled in
4533 addition to derivative and second derivative.
4534 - Primitive, first derivative, and second derivative functions are available
4535 for linear interpolator.
4536 - Singular value decomposition improved.
4537 - Added bivariate cumulative normal distribution.
4538 - Added binomial coefficient calculation, binomial distribution,
4539 cumulative binomial distribution, and Peizer-Pratt inversion (method 2.)
4540 - Added beta functions.
4541 - Added Poisson distribution and cumulative distribution.
4542 - Added incomplete gamma functions.
4543 - Added factorial calculation.
4544 - Added rank-reduced square root and improved pseudo-square root
4545 of square symmetric matrices.
4546 - Added Cholesky decomposition.
4547
4548 TEST SUITE
4549 - Added test for cubic spline interpolation.
4550 - Added test for singular value decomposition.
4551 - Added test for two-asset baskets using the Stulz pricing engine.
4552 - Added test for Monte Carlo American cash-at-hit options.
4553 - Added test for jump-diffusion engine.
4554 - Added test for American and European digital options.
4555
4556 MISCELLANEA
4557 - Inner namespaces have been deprecated.
4558 - Added frequency enumeration, including 'once'.
4559 - MarketElement renamed to Quote.
4560 - Handling strike=0.0 where possible.
4561 - More Payoff classes have been introduced: gap, asset-or-nothing,
4562 cash-or-nothing. Payoff is now extensively used.
4563 - Exercise class is now polymorphic. More derived classes have been
4564 introduced, and they are now extensively used.
4565 - Introduced QL_FAIL macro.
4566 - Added calendar for Copenhagen
4567 - 14 April 2004 (election day) added to Johannesburg calendar as
4568 a one-off holiday.
4569 - Documentation generated with Doxygen 1.3.6.
4570 - Win32 installer generated with NSIS 2.0.
4571
4572
4573 <strong>Release 0.3.4 - November 21th, 2003</strong>
4574
4575 MONTE CARLO FRAMEWORK
4576 - MC European in one step with strike-independent vol curve (hopefully)
4577 - Path pricer for Binary options. It should cover both European and
4578 American style options. Also known as: Digital, Binary, Cash-At-Hit,
4579 Cash-At-Expiry.
4580 - Path pricers for barrier options
4581
4582 PRICING ENGINES FRAMEWORK
4583 - More options moved to the new pricing engine framework: binary, barrier
4584 - Changed setupEngine() into setupArguments(args)
4585 - Moved pricing-engine machinery up to Instrument class
4586
4587 FIXED INCOME
4588 - New basis-point sensitivity functions
4589 - Added Swap::startDate() and maturity()
4590 - Cap/floor fixing days taken into account
4591
4592 SHORT RATE MODELS
4593 - An additional constraint can now be passed to the calibration
4594
4595 VOLATILITY FRAMEWORK
4596 - Visitable volatility term structures
4597
4598 OPTIMIZATION FRAMEWORK
4599 - Added composite constraint
4600
4601 PATTERNS
4602 - Visitor, Alexandrescu-style (saves some code duplication)
4603
4604 MATH
4605 - Added more integration algorithms contributed by Roman Gitlin
4606 - Relaxed constaints on interval boundaries for integration algorithms
4607 - Interpolation traits
4608
4609 TEST SUITE
4610 - Added implied cap/floor term volatility test
4611 - Added test for binary options in PricingEngine Framework.
4612 - Added tests for Barrier options in PricingEngine Framework. Some Monte
4613 Carlo tests, but not comprehensive.
4614
4615 MISCELLANEA
4616 - Conditionally allowed negative yields (disabled by default)
4617 - Null calendar and simple day counter for reproducing theoretical
4618 calculations
4619 - Fixed for VC++.Net compilation
4620 - Added spec file for RPMs
4621 - Added global flag for early/late payments
4622 - Enabled test suite for Borland
4623 - Removed OnTheEdge VC++ configurations
4624 - Added VC++ configurations for static and dynamic Multithread libraries
4625 - Upgraded to use Doxygen 1.3.4
4626
4627
4628 <strong>Release 0.3.3 - September 3rd, 2003</strong>
4629
4630 MONTE CARLO FRAMEWORK
4631 - Re-templatized Monte Carlo model based on traits.
4632 - New path generator based on DiffusionProcess, TimeGrid,
4633 and externally initialized random number generator.
4634 - Added Halton low discrepancy sequence.
4635 - Added sequence generators: random sequence generator creates
4636 a sequence generator out of a random number generator.
4637 InvCumGaussianRsg creates a gaussian sequence generator out of a
4638 uniform (random or low discrepancy) sequence generator.
4639 - RNG as constructor input constructor( long seed) deprecated.
4640 - Mersenne Twister random number generator added
4641 - Old PathPricers, PathGenerators, etc are available with a trailing _old
4642 - Added J&auml;ckel's Brownian Bridge (not used yet.)
4643 - Sobol Random Sequence Generator. Unit and J&auml;ckel.
4644 - Added randomized Halton sequences.
4645
4646 FINITE DIFFERENCE FRAMEWORK
4647 - Old class Grid no longer exists, use CenteredGrid to obtain the
4648 same result.
4649
4650 LATTICE FRAMEWORK
4651 - Abstracted discretized option.
4652 - Additive binomial trees. All binomial trees now use DiffusionProcess.
4653 - Added Tian binomial tree.
4654
4655 PRICING ENGINES FRAMEWORK
4656 - Partially implemented.
4657 - Quanto forward compounded engines.
4658 - Integral (european) pricing engine.
4659
4660 YIELD TERM STRUCTURE
4661 - ZeroCurve: a term structure based on linear interpolation of
4662 zero yields.
4663
4664 FIXED INCOME
4665 - Up-front and in-arrear indexed coupon.
4666 - Specific implementation of compound forward rate from zero yield.
4667 - Added compound forward and zero coupon implementations.
4668 - Added Futures rate helper with specified maturity date.
4669 - Added bucketed bps calculation.
4670 - Added swap constructor using specified maturity date as well as
4671 added functionality in Scheduler.
4672 - Added date-bucketed basis point sensitivity based on 1st derivative
4673 of zero coupon rate.
4674
4675 OPTIMIZATION FRAMEWORK
4676 - Solvers now take any function. ObjectiveFunction disappeared.
4677
4678 PATTERNS
4679 - Abstracted lazy object.
4680 - Abstracted the curiously recurring template pattern.
4681
4682 DATE AND CALENDARS
4683 - Added joint calendars.
4684 - Tokyo, Stockholm, Johannesburg calendar improved.
4685 - "MonthEndReference" business day rolling convention. Similar to
4686 "ModifiedFollowing", unless where original date is last business
4687 day of month all resulting dates will also be last business day of
4688 month.
4689 - Added basic date generation starting from the end.
4690
4691 MATH
4692 - Added Gauss-Kronrod integration algorithm.
4693 - Added primitive polynomial modulo 2 up to dimension 18 (available up
4694 to dimension 27.)
4695 - Added BicubicSplineInterpolation.
4696 - Numerical Recipes algorithm is back since there is a problem with
4697 Nicolas' code: it is unable to fit a straight line, it waves around
4698 the line.
4699 - Prime number generation.
4700 - Acklam's approximation for inverse cumulative normal distribution
4701 function (replaced Moro's algorithm as default.)
4702 - Added error function.
4703 - Improved Cumulative Normal Distribution function using the
4704 error function.
4705 - Matrix pseudo square algorithm using salvaging algorithm(s).
4706 - Added SequenceStatistics.
4707 - Major Statistic reworking.
4708 - Added DiscrepancyStatistic that inherits from SequenceStatistic and
4709 extends it with the calculation of L2-discrepancy.
4710 - HStatistics.
4711 - Added first and second derivative ot cubic splines.
4712
4713 RISK MEASURES
4714 - Introduced semiVariance and regret.
4715 - Redefinition of average shorfall (normalization factor now is
4716 cumulative(target) instead of 1.0)
4717
4718 MISCELLANEA
4719 - QuEP 9 "generic disposable objects" implemented.
4720 - Added test suite.
4721 - Dataformatters extended to format long integers, Ordinal numerals,
4722 power of two formatting.
4723 - Exercise class adopted.
4724 - Added user configuration section.
4725 - Inhibited automatic conversion of Handle<T> to RelinkableHandle<T>.
4726 - Diffusion process extended.
4727 - Added strikeSensitivity to the Greeks.
4728 - BS does handle t==0.0 and sigma==0.0.
4729 - TimeGrid has been reworked.
4730 - Added payoff file for Payoff classes. Added Cash-Or-Nothing and
4731 Asset-Or-Nothing payoff classes.
4732 - Upgraded to use Doxygen 1.3.
4733
4734 <strong>Release 0.3.1 - February 4th, 2003</strong>
4735
4736 FINITE DIFFERENCE FRAMEWORK
4737 - partially implemented QuEP 2 (http://quantlib.org/quep.shtml)
4738
4739 VOLATILITY FRAMEWORK
4740 - added Black and local volatility interface
4741
4742 PRICING ENGINES FRAMEWORK
4743 - partially implemented QuEP 5 (http://quantlib.org/quep.shtml)
4744
4745 YIELD TERM STRUCTURE
4746 - interface revisited
4747 - added discrete time forward methods
4748 - added DiscountCurve (loglinear interpolated) and CompoundForward term
4749 structures
4750 - ForwardSpreadedTermStructure moved under QuantLib::TermStructures
4751 namespace
4752
4753 FIXED INCOME
4754 - Modified coupons so that the payment date can be after the end of the
4755 accrual period
4756
4757 MISCELLANEA
4758 - added/verified holidays of many calendars
4759 - added new calendars
4760 - added new currencies
4761 - more date formatters
4762 - added Period(std::string&)
4763 - it is now possible to advance a calandar using a Period
4764 - added LogLinear Interpolation
4765 - the allowExtrapolation boolean in interpolation classes has been removed
4766 from constructors and added to the operator()
4767 - Renamed Solver1D::lowBound and hiBound
4768 - bug fixes
4769
4770 BUILD PROCESS
4771 - More autoconfiscated time functions and types
4772 - Migrated to latest autotools
4773 - added patches for Darwin and Solaris
4774
4775
4776 <strong>Release 0.3.0 - May 6th, 2002</strong>
4777
4778 MONTE CARLO FRAMEWORK
4779 - Path and MultiPath are time-aware
4780 - McPricer: extended interface, improved convergency algorithm
4781
4782 FINITE DIFFERENCE FRAMEWORK
4783 - added mixed (implicit/explicit) scheme, from which Crank-Nicolson,
4784 ImplicitEuler, and ExplicitEuler are now derived
4785 - Finite Difference exercise conditions are now in the
4786 FiniteDifferences folder/namespace
4787 - Finite Difference pricers now start with 'Fd' letters
4788 - BSMNumericalOption became BsmFdOption
4789
4790 LATTICE FRAMEWORK
4791 - introduced first version of the framework
4792 - CRR and JR binomial trees
4793
4794 VOLATILITY FRAMEWORK
4795 - early works on reorganization of vol structures
4796
4797 YIELD TERM STRUCTURE
4798 - new TermStructure class based on affine model
4799 - yield curves can be spreaded in term of zeros
4800 (ZeroSpreadedTermStructure) and forwards
4801 (ForwardSpreadedTermStructure)
4802 - Added dates() and times() to PiecewiseFlatForward
4803 - discount factor accuracy in the yield curve bootstrapping is an
4804 input
4805 - added single factor short-rate models (Hull-White, Black-Karasinski)
4806 - added two factor short-rate models framework
4807 - cap/floor and swaption calibration helpers
4808 - added bermudan swaption pricing example (including BK and HW
4809 calibrations)
4810
4811 FIXED INCOME
4812 - cap/floor and swaption tree pricer
4813 - cap/floor analytical pricer
4814 - vanilla swaption Jamshidian pricer
4815 - Added accruedAmount() to coupons
4816 - Made cash flow vector builders into functions
4817
4818 OPTIMIZATION FRAMEWORK
4819 - added conjugate gradient, simplex
4820
4821 PATTERNS
4822 - implemented QuEP 8 and 10
4823
4824 MISCELLANEA
4825 - added allowExtrapolation parameter to interpolaton classes
4826 - added 2D bilinear interpolation
4827 - better spline interpolation algorithm
4828 - Added non-central chi-square distribution function.
4829 - Improved Inverse Cumulative Normal Distribution using Moro's
4830 algorithm
4831 - Introduced class representing stochastic processes
4832 - added isExpired() to Instrument interface
4833 - added functions folder and namespace for %QuantLibXL and any other
4834 function-like interface to %QuantLib
4835 - Handle is now castable to an Handle of a compatible type
4836 - added downsideVariance to the Statistics class
4837 - kustosis() and skewness() now handles the case of stddev == 0 and/or
4838 variance == 0
4839 - added Correlation Matrix to MultiVariateAccumulator
4840 - enforced MS VC compilation settings
4841 - added "-debug" to the QL_VERSION version string ifdef QL_DEBUG
4842 - "make check" runs the example programs under Borland C++
4843 - fixed compilation with "g++ -pedantic"
4844 - Spread as market element
4845 - new calendars introduced
4846 - new Xibor Indexes introduced
4847 - Added optional day count to libor indexes
4848 - Shortened file names within 31 char limit to support HFS
4849
4850
4851 <strong>Release 0.2.1 - December 3rd, 2001</strong>
4852
4853 MONTE CARLO FRAMEWORK
4854 - Path and MultiPath are now classes on their own
4855 - PathPricer now handles both Path and MultiPath
4856 - MonteCarloModel now handles both single factor and
4857 multi factors simulations.
4858 - McPricer now handles both single factor and
4859 multi factors pricing. New pricing interface
4860 - antithetic variance-reduction technique made possible in Monte Carlo
4861 for both single factor and multi factors
4862 - Control Variate specific class removed: control variation
4863 technique is now handled by the general MC model
4864 - average price and average strike asian option refactored
4865 - Sample as a (value,weight) struct
4866 - random number generators moved under RandomNumbers folder and
4867 namespace
4868
4869 FINITE DIFFERENCE FRAMEWORK
4870 - BackwardEuler and ForwardEuler renamed ImplicitEuler and
4871 ExplicitEuler,
4872 respectively
4873 - refactoring of TridiagonalOperator and derived classes
4874
4875 YIELD TERM STRUCTURE AND FIXED INCOME
4876 - Added some useful methods to term structure classes
4877 - Allowed passing a quote to RateHelpers as double
4878 - added FuturesRateHelpers (no convexity adjustment yet)
4879 - PiecewiseFlatForward now observer of rates passed as MarketElements
4880 - Unified Date and Time interface in TermStructure
4881 - Added BPS to generic swap legs
4882 - added term_structure+swap example
4883 - Fixing days introduced for floating-coupon bond
4884
4885 PATTERNS
4886 - Added factory pattern
4887 - Calendar and DayCounter now use the Strategy pattern
4888
4889 VARIOUS
4890 - used do-while-false idiom in QL_REQUIRE-like macros
4891 - now using size_t where appropriate
4892 - dividendYield is now a Spread instead of a Rate (that is: cost of
4893 carry is allowed)
4894 - RelinkableHandle initialized with an optional Handle
4895 - Worked around VC++ problems in History constructor
4896 - added QL_VERSION and QL_HEX_VERSION
4897 - generic bug fixes
4898 - removed classes deprecated in 0.2.0
4899
4900 INSTALLATION FACILITIES
4901 - improved and smoother Win32 binary installer
4902
4903 DOCUMENTATION
4904 - general re-hauling
4905 - improved and extended Monte Carlo documentation
4906 - improved and extended examples
4907 - Upgraded to Doxygen 1.2.11.1
4908 - Added man pages for installed executables
4909 - added docs in Windows Help format
4910 - added info on "Win32 OnTheEdgeRelease" and "Win32 OnTheEdgeDebug"
4911 MS VC++ configurations
4912 - additional information on how to create a MS VC++ project based on
4913 %QuantLib
4914
4915 <strong>Release 0.2.0 - September 18th, 2001</strong>
4916
4917 - Library:
4918 - source code moved under ql, better GNU standards
4919 - gcc build dir can now be separated from source tree
4920 - gcc 3.0.1 port
4921 - clean compilation (no warnings)
4922 - bootstrap script on cygwin
4923 - Fixed automatic choice of seed for random number generators
4924 - Actual/actual classes
4925 - extended platform support (see table in documentation)
4926 - antithetic variance-reduction technique made possible in Monte
4927 Carlo
4928 - added dividend-Rho greek
4929 - First implementation of segment integral (to be redesigned)
4930 - Knuth random generator
4931 - Cash flows, scheduler, and swap (both generic and simple) added
4932 - added ICGaussian random generator
4933 - generic bug fixes
4934 - Installation facilities:
4935 - improved and smoother Win32 binary installer
4936 - better distribution
4937 - debian packages available
4938 - Documentation:
4939 - general re-hauling
4940 - added examples of using %QuantLib and of projects based on QL
4941
4942 <strong>Release 0.1.9 - May 31st, 2001</strong>
4943
4944 - Library:
4945 - Style guidelines introduced (see http://quantlib.org/style.shtml)
4946 and partially enforced
4947 - full support for Microsoft Visual Studio
4948 - full support for Linux/gcc
4949 - momentarily broken support for Metrowerks CodeWarrior
4950 - autoconfiscation (with specialized config.*.hpp files for platforms
4951 without automake/autoconf support)
4952 - Include files moved under Include/ql folder and referenced as
4953 "ql/header.hpp"
4954 - Implemented expression templates techniques for array algebra
4955 optimization
4956 - Added custom iterators
4957 - Improved term structure
4958 - Added Asian, Bermudan, Shout, Cliquet, Himalaya, and Barrier
4959 options (all with greeks calculation, control variated where
4960 possible)
4961 - Added Helsinki and Wellington calendars
4962 - Improved Normal distribution related functions: cumulative, inverse
4963 cumulative, etc.
4964 - Added uniform and Gaussian random number generators
4965 - Added Statistics class (mean, variance, skewness, downside variance,
4966 etc.)
4967 - Added RiskMeasures class: VAR, average shortfall, expected shortfall,
4968 etc.
4969 - Added RiskStatistics class combining Statistics and RiskMeasures
4970 - Added sample accumulator for multivariate analysis
4971 - Added Monte Carlo tools
4972 - Added matrix-related functions (square root, symmetric Schur
4973 decomposition)
4974 - Added interpolation framework (linear and cubic spline interpolation
4975 implemented).
4976 - Installation facilities:
4977 - Added Win32 GUI installer for binaries
4978 - Documentation:
4979 - support for Doxygen 1.2.7
4980 - Added man documentation
4981
4982 <strong>Release 0.1.1 - November 21st, 2000</strong>
4983
4984 Initial release.
4985
4986*/