Skip to content

🧮 LibItoFin v0.51.0

Choose a tag to compare

@ptah-bw-technical-app ptah-bw-technical-app released this 10 Nov 15:19
· 42 commits to main since this release

0.51.0 (2026-11-10)

⚠ BREAKING CHANGES

  • interestrate: composite compoundings (SimpleThenCompounded, CompoundedThenSimple) now return an error outside the CashFlows yield methods. Affected: Rust InterestRate::{compound_factor*, discount_factor*, implied_rate*, equivalent_rate*}, FlatForward and zero_rate/forward_rate with composite, ZeroSpreadedTermStructure, CashFlows::{npv_at_z_spread, z_spread}, BondFunctions::z_spread, callable oas/clean_price_oas/effective_duration/effective_convexity; C itofin_bond_z_spread, itofin_cashflows_*z_spread, itofin_callable_bond_*oas, itofin_callable_bond_effective_{duration,convexity}; Go CleanPriceAtZSpread/DirtyPriceAtZSpread/ZSpread, callable OAS and EffectiveDuration/EffectiveConvexity; Python z_spread, *_at_z_spread, npv_at_z_spread, oas, clean_price_oas, effective_duration, effective_convexity. Compounding enum values 3/4 are kept.
  • basis-helpers: OvernightIborBasisSwapRateHelper now builds both legs backward from the unadjusted spot + tenor; maturity is the schedule end and the pillar also covers the last payment and the overnight index maturity off the last fixing. No signature change; the helper has no Go/Python/C binding.
  • basis-helpers: IborIborBasisSwapRateHelper now builds both legs backward from the unadjusted spot + tenor; maturity, pillar and implied basis move for every default helper (Go NewIborIborBasisSwapRateHelper, Python IborIborBasisSwapRateHelper). No signature change.
  • statistics: remove the public MAX_SEQUENCE_ROWS and MAX_SEQUENCE_COMPONENTS constants; SequenceStatistics no longer caps the row count (QuantLib behaviour). itofin_benchmark_beta drops its 100000-row check. (#1374)

📖 Behavior changes

not breaking, but worth knowing:

  • #1407: on a weekend or holiday evaluation date, spot and start dates for MakeOIS, MakeVanillaSwap with explicit settlement days, and the Deposit, FRA and BMA helpers can move by one day.
  • #1412: OptionletStripper2 now accepts Normal vols, and its spreads match v1.44.
  • #1410/#1411: the calendar holiday tables are updated to v1.44.

🎁 Features

  • basis-helpers: build basis swap legs backward from unadjusted spot (c780866), closes #1423 #1408
  • basis-helpers: build overnight-Ibor basis legs backward to v1.44 (2b225bd), closes #1423 #1408
  • crates: add C ABI for parameter sensitivity analysis (#1444) (110e6d4), closes #1360
  • crates: add jumps to named Piecewise curve constructors (47a8849), closes #1388 #1388 #1388
  • crates: add with_jumps_and_compounding to InterpolatedZeroCurve (efeab94), closes #1379 #1379
  • curves: add jump support to Go SDK node curves (29c6607), closes #1388
  • go: add Quote interface with derived and composite quotes (e4bbc6d), closes #1359
  • indonesia: extend holiday tables through 2026 (0ed8978), closes #1411 #1411
  • interestrate: add discount factor first and second derivatives (ec6ca33), closes #1405 #1405
  • itofin-py: add optional jumps to node curve constructors (1793ab8), closes #1388
  • libitofin-ffi: add derived and composite quotes to the C ABI (e0736a5), closes #1359
  • libitofin-ffi: add node curve with jumps C ABI twin (f53a643), closes #1388
  • optionlet: route Stripper2 pricing by source volatility type (3996ccb), closes #1412 #1412
  • quotes: add Quote base with DerivedQuote and CompositeQuote (b28b1fa), closes #1359 #1359
  • saudi-arabia: adopt QuantLib v1.44 Eid windows and Founding Day (e5f12ac), closes #1411
  • statistics: remove fixed row and component caps from SequenceStatistics (#1431) (f29c5f9), closes #1374 #1374
  • termstructures: add GlobalBootstrap::with_initial_guess_fn override (c330779), closes #1409
  • termstructures: seed GlobalBootstrap from Traits::globalGuess (a38e732), closes #1409 #1409

♨️ CI, Workflows & Configs

  • bond-analytics-native: add fixture generator for bond analytics (bf76ae3), closes #1405

🪲 Bug Fixes

  • cashflows: port QuantLib 1.44 stepwise yield analytics (b53a39a), closes #1405 #1406
  • crates: align Indonesia calendar with QuantLib v1.44 (8965ffb), closes #1411
  • crates: sync calendars with QuantLib v1.44 holiday tables (68f15d8), closes #1421 #1410 #1410
  • example: align python commit-msg regex with root config (#1436) (2106ce0), closes #1431 #1434
  • instruments: count settlement days from unadjusted evaluation date (befee59), closes #1423 #1407
  • interestrate: reject composite compoundings outside CashFlows (QuantLib 1.44) (7eb919c), closes #1406
  • optionlet: adjust exactly leg.size() optionlets in stripper2 (cafaf56), closes #1412
  • optionlet: port v1.44 OptionletStripper2 bracketed spread solve (36c862f), closes #1412
  • optionlet: propagate solve objective errors and tighten spread tolerance (aea7bd7), closes #1412
  • yields: count helper fixing days from unadjusted eval date (6532cff), closes #1423 #1407

Go bindings

Install github.com/bitbrew-dev/libitofin/sdk/go@v0.51.0 with Go 1.27.1. The native archives and SHA-256 checksums are attached below for Linux amd64, Linux arm64, macOS amd64, and macOS arm64. cgo, a C compiler, and the matching native package are required. See the installation guide.

Windows amd64 native Go package (GNU/MinGW) is available with its SHA-256 checksum; use a matching MinGW cgo compiler.