Catalog PyPI
PACKAGE EXPLORERView in registry

aadc-quantlib

PyPI

QuantLib 1.38 with Real = AADC-NG idoubleNG, SWIG-wrapped for Python

aadadjointalgorithmic-differentiationautomatic-differentiationderivativesgreekspricingquantitative-financequantlibrisk
Versions collected1
Direct dependencies1From release 1.38.10
Last observed20 Oct, 16:52 UTC

README

Version 1.38.10 documentation

aadc-quantlib

QuantLib 1.38 with exact AAD sensitivities, from Python.

aadc-quantlib is a build of QuantLib 1.38 whose Real type is the AADC-NG active double (idoubleNG), SWIG-wrapped for Python. You price with the QuantLib API you already know; the aadc core records the pricing as it runs and replays it compiled — with exact first-order sensitivities of every output with respect to every input, no bumping, no re-pricing per input.

Install

pip install aadc-quantlib

Wheels ship for CPython 3.10 through 3.14 on Linux (x86-64 and arm64), macOS (Apple Silicon) and Windows (x64). The aadc core package is a declared dependency and installs alongside; both must come from the same package index so that exactly one libaadc-ng runtime image is loaded per process.

The import is aadc_quantlib, not QuantLib

from aadc_quantlib import QuantLib as ql

This package deliberately does not install itself under the QuantLib name, so it can coexist in one environment with PyPI's own QuantLib distribution. Existing import QuantLib code can opt in explicitly:

import aadc_quantlib
aadc_quantlib.install_as_quantlib()   # makes `import QuantLib` resolve to this build

Example: a European option, price and delta

import aadc
from aadc_quantlib import QuantLib as ql

d = ql.Date(15, 6, 2026)
ql.Settings.instance().evaluationDate = d
ts = ql.YieldTermStructureHandle(ql.FlatForward(d, 0.03, ql.Actual365Fixed()))
vs = ql.BlackVolTermStructureHandle(
    ql.BlackConstantVol(d, ql.TARGET(), 0.20, ql.Actual365Fixed()))

s = aadc.idouble(100.0)
f = aadc.Functions()
f.start_recording()
sa = s.mark_as_input()
o = ql.VanillaOption(ql.PlainVanillaPayoff(ql.Option.Call, 100.0),
                     ql.EuropeanExercise(ql.Date(15, 6, 2027)))
o.setPricingEngine(ql.AnalyticEuropeanEngine(
    ql.BlackScholesProcess(ql.QuoteHandle(ql.SimpleQuote(s)), ts, vs)))
npv = o.NPV()
na = npv.mark_as_output()
f.stop_recording()

r = aadc.evaluate(f, {na: [sa]}, {sa: [100.0]}, 1)
print(float(npv), r[1][na][sa][0])
# 9.413403383853023 0.5987063256829239

The second number is the option's delta, taken from the recorded tape by adjoint differentiation. It agrees with central finite differences to about 1e-11 — and unlike bumping, one recorded replay yields the sensitivity to every marked input at once.

Licence in one paragraph

Proprietary. The AADC engine this wheel records into is free for non-commercial and academic use only; everything else — including commercial evaluation and any calculation whose output reaches a book, a client report or a regulator — is Production Use and needs a commercial licence from MatLogica. The binding text is the licence shipped inside the wheel at <dist-info>/licenses/LICENSE.txt, never this summary. The wheel also redistributes QuantLib, QuantLib-SWIG and other third-party components in binary form; each component's licence text is reproduced verbatim in licenses/THIRD-PARTY-NOTICES.txt beside it. Commercial licences and questions: info@matlogica.com.

Which QuantLib is this?

QuantLib 1.38, patched so Real = idoubleNG and rebuilt against the AADC-NG runtime. ql.__version__ reports the QuantLib version; importlib.metadata.version("aadc-quantlib") reports the wheel version.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.38.1029 Sept 20261

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 16:52 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:e0f5bccb0eec6a34908f4f382dfd02d43c5ad6caab1a574f94f3201147f7dce6