Repository navigation
Downloads:
Changes for QuantLib 1.44
As announced, it is no longer possible to choose the Boost implementation of any and optional. Only the std implementation can be used.
Features deprecated in release 1.39 were removed in this release; see #2659 for a full list.
A number of features were deprecated in this release and will be removed in a future release (probably release 1.49):
- The
ext::anyandext::any_castaliases; usestd::anyandstd::any_cast. - The
ext::optionalandext::nulloptaliases; usestd::optionalandstd::nullopt. - The constructor of
MakeCapFloortaking a strike and/or a forward start; use the other constructor plus thewithStrikeand/orwithForwardStartmethods. - The constructors of
MakeCmstaking a spread and/or a forward start; use the other constructor plus thewithIborSpreadand/orwithForwardStartmethods. - The constructors of
MakeOIStaking a fixed rate and/or a forward start; use the other constructor plus thewithFixedRateand/orwithForwardStartmethods. - The constructors of
MakeVanillaSwaptaking a fixed rate and/or a forward start; use the other constructor plus thewithFixedRateand/orwithForwardStartmethods. - The constructors of
InverseCumulativeStudenttaking an accuracy and/or a number of iterations, now unused; use the other constructor. - The unused
nominalTermStructure_data member ofZeroCouponInflationSwapHelper. - The
Italy::Exchangeelement of theItaly::Marketenumeration; the exchange follows the TARGET calendar. - The
QL_DEPRECATEDmacro; use[[deprecated("message")]]and suggest an alternative in the message.
We were still able to test this release with Visual C++ 2017. Due to limitations of our available CI environments, this might not be the case for future releases.
Finally, in a couple of release we will be changing the default of the QL_NULL_AS_FUNCTIONS macro from undefined to defined.
What's Changed
- Set version to 1.44-dev by @lballabio-bot in #2658
- Remove features deprecated in version 1.39 by @lballabio in #2659
- Use the passed
paymentAdjustmentin the OIS fixed leg by @jmishin in #2649 - Deprecated unused data member in zero-coupon inflation helper by @lballabio in #2661
- Use Boost for inverse cumulative Student t distribution by @mpwaser in #2650
- Add
<vector>header totime/calendars/islamicholidays.cppby @eddelbuettel in #2662 - Deprecate
ext::any,ext::optionaland friends by @lballabio in #2660 - Automated fixes by clang-tidy by @lballabio-bot in #2668
- Use make_shared in pricing engines by @jewonj0620 in #2636
- Observe term structure in extended CIR model by @jewonj0620 in #2663
- Vanilla swaps should calculate the spot date from the actual evaluation date, even if it's a holiday by @Excal-rs in #2653
- Add
QL_REQUIRE_EXPLICIT_EVALUATION_DATEswitch by @kp9991-git in #2644 - Add optional rounding precision to
OvernightIndexedSwapandMakeOISby @sergioUjo in #2666 - Update copyright list in license by @github-actions[bot] in #2669
- Add explanatory comment to
defaultProbabilitycalculations by @AIM-IT4 in #2670 - Preserve ATM vols in SABR swaption-cube calibration by @kp9991-git in #2656
- Add Hong Kong holidays for 2026 by @DMZ22 in #2673
- Allow using OIS-Ibor basis helpers to bootstrap overnight curve by @kp9991-git in #2674
- Clarify documentation of expected tranche loss units by @AIM-IT4 in #2672
- Add CMA-ES optimizer by @colalb1 in #2654
- Add Indonesia holidays for 2015-2026 by @DMZ22 in #2676
- Use dirty price in
CallableBondeffective duration and convexity by @AIM-IT4 in #2671 - Rough Heston model with semi-analytic Fourier pricing engine and fractional ODE solver by @colalb1 in #2648
- Add September 28 2026 Chuseok substitute holiday to South Korean calendar by @AIM-IT4 in #2680
- Reduce temporary allocations in numerical methods by @jewonj0620 in #2677
- Use the default calculation of the trade date in CDS helpers by @lballabio in #2698
- Check for non-zero leg BPS in
FloatFloatSwapfair-spread calculations by @AIM-IT4 in #2678 - Add Singapore exchange holidays for 2027 by @PureSaber in #2687
- Fix calendar and day-count documentation typos by @PureSaber in #2689
- Add Padé approximation for the Riccati equation in the rough Heston model by @colalb1 in #2682
- Automated fixes by clang-tidy by @lballabio-bot in #2681
- Bump actions/stale from 10 to 11 by @dependabot[bot] in #2707
- Use a consistent interface for Heston and rough Heston models by @lballabio in #2708
- Return handles by reference from accessors by @eltoder in #2703
- Fix convertible-bond dividend indexing after settlement by @wenn-id in #2702
- Optimize Jamshidian root finding by @jewonj0620 in #2664
- Add Malaysia calendar by @LZ1153 in #2704
- Update copyright list in license by @github-actions[bot] in #2711
- MTM Cross Currency Basis Swap instruments by @kp9991-git in #2642
- Update copyright list in license by @github-actions[bot] in #2713
- Overnight-index swaption support in GSR model by @kp9991-git in #2655
- Add November 4, 2026 election day to South Africa calendar and group all election days together by @igitur in #2697
- Allow defining
globalGuess()in bootstrap traits by @eltoder in #2714 - Update Saudi Arabia calendar: Founding Day and Eid Al-Adha through 2029 by @PureSaber in #2688
- Automated fixes by clang-tidy by @lballabio-bot in #2720
- Guard against zero leg BPS in CPI and YoY inflation swap fair-rate and fair-spread calculations by @PureSaber in #2692
- Guard against zero leg BPS in
FixedVsFloatingSwapfair-rate and fair-spread calculations by @PureSaber in #2690 - Add lifted (multi-factor Markovian) approximation for the Riccati equation in the rough Heston model by @colalb1 in #2709
- Overnight-index support in caplet stripping by @kp9991-git in #2705
- Fix wedge acceptance test in
ZigguratGaussianRngby @jlmoya in #2722 - Add
DerivedYieldTermStructurehelper classes by @eltoder in #2715 - Pseudo-deprecate
QL_DEPRECATEDby @lballabio in #2725 - Sync qldefines.hpp.cfg with original header by @lballabio-bot in #2727
- Additional parameters for basis-swap rate helpers by @kp9991-git in #2696
- More conventions for const-notional XCCY swap and helper by @kp9991-git in #2723
- Stop overnight-index future accrual at holiday maturity by @AIM-IT4 in #2726
- Automated fixes by clang-tidy by @lballabio-bot in #2721
- Add
OvernightOvernightBasisSwapRateHelperclass by @kp9991-git in #2700 - Remove misleading comment by @cuiyeshuai in #2734
- Document the meaning of seed = 0 in
SobolRsg,HaltonRsgandRandomSequenceGeneratorby @advitrocks9 in #2738 - Allow choice of leg for margin in Ibor-Overnight rate helper by @kp9991-git in #2735
- Use HTTPS for external links in example and test-suite READMEs by @Hei-MaoM in #2744
- Fix American call approximations with negative risk-free rates by @mkzung in #2728
- Add initial
AGENTS.mdand some additional Markdown files by @ralfkonrad in #2498 - Fix parameter order in
CommodityTypeconstructor by @mameikagou in #2742 - Fix NaN from
JuQuadraticApproximationEngineat zero risk-free rate by @ChanithaAbey in #2739 - Notify observers when an inflation volatility quote changes by @mkzung in #2747
- Don't enable OpenMP
parallel-forfor small tree steps inTreeLattice::stepbackby @Abhayindia in #2745 - Remove 2026-09-28 from the South Korean calendar by @gs-scott-kim in #2741
- Fix AD type compatibility issues by @auto-differentiation-dev in #2750
- Fix null-deref crash in
XabrSwaptionVolatilityCube::fillVolatilityCube()by @quantales in #2753 - Avoid spurious OIS future helper notifications by @sdacek in #2759
- Use
enuminstead ofenum classfor a couple of inner enumerations by @lballabio in #2762 - Deprecate most optional arguments in
MakeVanillaSwapconstructor and similar by @lballabio in #2763 - Fix lost coupon when a callability falls on a coupon date by @advitrocks9 in #2748
- Add implementation of stub IBOR coupons by @kp9991-git in #2730
- Return the European value for an American put when early exercise is never optimal by @mkzung in #2754
- Handle vanishing volatility in the Barone-Adesi-Whaley and Ju American engines by @Abhayindia in #2755
- Fix binomial trees silently returning zero or NaN prices by @mkzung in #2729
- Fix bug in Farlie-Gumbel-Morgenstern copula by @losterbr in #2767
- Update copyright list in license by @github-actions[bot] in #2770
- Scale the differencing gap in
SmileSection::densityanddigitalOptionPricewith the strike by @quantales in #2768 - Fix treatment of
SimpleThenCompoundedandCompoundedThenSimpleinCashFlowsmethods by @pcaspers in #2667 - Align probability-curve jump handling with the yield-curve implementation by @Abhayindia in #2771
- Fix duplicated words in documentation comments by @geographybuff in #2773
- Avoid iterating over all entries on observable disconnect by @kp9991-git in #2765
- Cache the Riemann-Liouville quadrature weights in the rough Heston engine by @colalb1 in #2758
- Fuse predictor and corrector reduction loops in
FractionalAdams::solveby @colalb1 in #2761 - Avoid test-setup antipatterns that are no longer needed by @lballabio in #2777
- Automated fixes by clang-tidy by @lballabio-bot in #2786
- Fix hybrid annealing temperature termination by @losterbr in #2783
- Correctly initialize nominal in the
MakeSwaptionconstructor taking a fixing date by @toprak8128312 in #2790 - Fix out-of-bounds accesses in
ExtendedBlackVarianceSurface::setVariancesby @Abhayindia in #2793 - Update copyright list in license by @github-actions[bot] in #2795
- Modernize Python scripts used in CI checks by @losterbr in #2784
- Accept Bachelier prices that round to intrinsic in the implied-vol inversion by @Abhayindia in #2792
- Improve test coverage for normal distribution + minor edge-case fix by @losterbr in #2781
- Fix
SmileSectionRNDCalculatortail quantiles for smiles with fat wings by @quantales in #2772 - Add Philippines calendar by @LZ1153 in #2789
- Saturate
ErrorFunctionto exactly 1 for |x| >= 6 by @sizzywizzy in #2799 - Added
OvernightIndexedFundingRateHelperhelper by @kp9991-git in #2746 - Fix
modifiedBesselFunction_kat integer order and for large arguments by @Abhayindia in #2800 - Rework check in fitted bond curve tests by @lballabio in #2778
- Fix the unsafe CRT call sites and stop suppressing C4996 by @ralfkonrad in #2801
- Pin
ccache-actionto v1.2.24 to stop the Node 20 deprecation warning by @ralfkonrad in #2802 - Compile the sources as UTF-8 instead of suppressing C4819 by @ralfkonrad in #2803
- Move the C26812 suppression into the analysis ruleset by @ralfkonrad in #2804
- Replace CMA-ES Eigendecomposition with a Cholesky factorization by @colalb1 in #2756
- Fix convexity term in
CashFlows::basisPointValueby @uppalbh in #2769 - Fix NaN in
GaussLaguerreIntegrationfor large orders by @heykav in #2779 - Narrow the C++17 deprecation silencing to the macros boost needs by @ralfkonrad in #2809
- Improve test coverage for calendars by @losterbr in #2806
- Improve test coverage for distributions by @losterbr in #2805
- Report binomial greeks as not provided when a tree collapses to one price by @mkzung in #2811
- Floor the Ju approximation at the exercise value by @mkzung in #2812
- Remove code duplication in
Null<T>by @eltoder in #2810 - Improve performance and test coverage of perturbative barrier-option engine by @losterbr in #2807
- Keep the digital American at-hit price finite and accurate at low volatility by @mkzung in #2815
- Keep the binary barrier price finite at low volatility by @mkzung in #2816
- Floor the QD+ and QD fixed-point American engines at the exercise value by @mkzung in #2813
- Address some Codacy warnings by @losterbr in #2782
- Keep Gauss-Hermite and hyperbolic quadrature weights finite at high orders by @Abhayindia in #2819
- Add intraday support to
yearFractionToDatewhen the day counter allows it by @klausspanderen in #2818 - Allow specifying fixed-rate day count convention in
OISRateHelperby @eltoder in #2821 - Check the payoff type in the FD vanilla engines by @khorser in #2825
- Expose the instruments underlying three more rate helpers by @khorser in #2824
- Added tanh-sinh Fourier integration by @klausspanderen in #2823
- Automated fixes by clang-tidy by @lballabio-bot in #2831
- CMS-market calibration bug fix and increased coverage by @losterbr in #2828
- Fix multiple-resets swap schedules and helper pillar by @AIM-IT4 in #2833
- Add new Italian holiday by @lballabio in #2836
- Keep
Periodcomparison consistent for negative months and years by @WatchTree-19 in #2830 - Fix asset ITM probabilities at zero standard deviation by @WatchTree-19 in #2829
- Expand calendar test coverage by @losterbr in #2832
- Give Bjerksund-Stensland a value where beta is one by @mkzung in #2814
- Keep the RS implied-standard-deviation approximation finite by @Abhayindia in #2835
- Return a zero implied standard deviation from Li-RS at intrinsic by @Abhayindia in #2838
- Set version to 1.44-rc by @lballabio-bot in #2857
- Set version to 1.44 final by @lballabio-bot in #2887
New Contributors
- @jmishin made their first contribution in #2649
- @mpwaser made their first contribution in #2650
- @Excal-rs made their first contribution in #2653
- @AIM-IT4 made their first contribution in #2670
- @DMZ22 made their first contribution in #2673
- @PureSaber made their first contribution in #2687
- @wenn-id made their first contribution in #2702
- @LZ1153 made their first contribution in #2704
- @jlmoya made their first contribution in #2722
- @cuiyeshuai made their first contribution in #2734
- @advitrocks9 made their first contribution in #2738
- @Hei-MaoM made their first contribution in #2744
- @mkzung made their first contribution in #2728
- @mameikagou made their first contribution in #2742
- @ChanithaAbey made their first contribution in #2739
- @Abhayindia made their first contribution in #2745
- @gs-scott-kim made their first contribution in #2741
- @losterbr made their first contribution in #2767
- @geographybuff made their first contribution in #2773
- @toprak8128312 made their first contribution in #2790
- @sizzywizzy made their first contribution in #2799
- @uppalbh made their first contribution in #2769
- @heykav made their first contribution in #2779
- @khorser made their first contribution in #2825
- @WatchTree-19 made their first contribution in #2830
Full Changelog: v1.43...v1.44