Skip to content

1.44

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Oct 10:44
· 31 commits to master since this release
v1.44
ab4cb47

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::any and ext::any_cast aliases; use std::any and std::any_cast.
  • The ext::optional and ext::nullopt aliases; use std::optional and std::nullopt.
  • The constructor of MakeCapFloor taking a strike and/or a forward start; use the other constructor plus the withStrike and/or withForwardStart methods.
  • The constructors of MakeCms taking a spread and/or a forward start; use the other constructor plus the withIborSpread and/or withForwardStart methods.
  • The constructors of MakeOIS taking a fixed rate and/or a forward start; use the other constructor plus the withFixedRate and/or withForwardStart methods.
  • The constructors of MakeVanillaSwap taking a fixed rate and/or a forward start; use the other constructor plus the withFixedRate and/or withForwardStart methods.
  • The constructors of InverseCumulativeStudent taking an accuracy and/or a number of iterations, now unused; use the other constructor.
  • The unused nominalTermStructure_ data member of ZeroCouponInflationSwapHelper.
  • The Italy::Exchange element of the Italy::Market enumeration; the exchange follows the TARGET calendar.
  • The QL_DEPRECATED macro; 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 paymentAdjustment in 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 to time/calendars/islamicholidays.cpp by @eddelbuettel in #2662
  • Deprecate ext::any, ext::optional and 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_DATE switch by @kp9991-git in #2644
  • Add optional rounding precision to OvernightIndexedSwap and MakeOIS by @sergioUjo in #2666
  • Update copyright list in license by @github-actions[bot] in #2669
  • Add explanatory comment to defaultProbability calculations 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 CallableBond effective 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 FloatFloatSwap fair-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 FixedVsFloatingSwap fair-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 ZigguratGaussianRng by @jlmoya in #2722
  • Add DerivedYieldTermStructure helper classes by @eltoder in #2715
  • Pseudo-deprecate QL_DEPRECATED by @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 OvernightOvernightBasisSwapRateHelper class by @kp9991-git in #2700
  • Remove misleading comment by @cuiyeshuai in #2734
  • Document the meaning of seed = 0 in SobolRsg, HaltonRsg and RandomSequenceGenerator by @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.md and some additional Markdown files by @ralfkonrad in #2498
  • Fix parameter order in CommodityType constructor by @mameikagou in #2742
  • Fix NaN from JuQuadraticApproximationEngine at 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-for for small tree steps in TreeLattice::stepback by @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 enum instead of enum class for a couple of inner enumerations by @lballabio in #2762
  • Deprecate most optional arguments in MakeVanillaSwap constructor 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::density and digitalOptionPrice with the strike by @quantales in #2768
  • Fix treatment of SimpleThenCompounded and CompoundedThenSimple in CashFlows methods 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::solve by @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 MakeSwaption constructor taking a fixing date by @toprak8128312 in #2790
  • Fix out-of-bounds accesses in ExtendedBlackVarianceSurface::setVariances by @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 SmileSectionRNDCalculator tail quantiles for smiles with fat wings by @quantales in #2772
  • Add Philippines calendar by @LZ1153 in #2789
  • Saturate ErrorFunction to exactly 1 for |x| >= 6 by @sizzywizzy in #2799
  • Added OvernightIndexedFundingRateHelper helper by @kp9991-git in #2746
  • Fix modifiedBesselFunction_k at 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-action to 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::basisPointValue by @uppalbh in #2769
  • Fix NaN in GaussLaguerreIntegration for 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 yearFractionToDate when the day counter allows it by @klausspanderen in #2818
  • Allow specifying fixed-rate day count convention in OISRateHelper by @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 Period comparison 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

Full Changelog: v1.43...v1.44