QuantLib
: a free/open-source library for quantitative finance
fully annotated source code - version 1.38
Loading...
Searching...
No Matches
pages
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ö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ö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ö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érôme Bessi, Sé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ö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äckel's Brownian Bridge (not used yet.)
4643
- Sobol Random Sequence Generator. Unit and Jä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
*/
Generated by
Doxygen
1.9.5