aadc-quantlib-tracing
The aadc-quantlib build that can tell you which line of C++ produced each
number.
This is QuantLib 1.41 with Real = idoubleNG, the same AADC type as
aadc-quantlib, compiled through the AADC source-tracing
pass. What it adds is attribution: after recording, every hardcoded constant
and every frozen branch inside the library can be traced back to the C++ file,
line and enclosing function that produced it.
It is a diagnostic and model-validation build, not the production one. Install
aadc-quantlib for pricing; install this alongside it when you need to answer
"where did this number come from?".
How it differs from aadc-quantlib. This build is the level 1 integration:
stock QuantLib with Real bound to the AADC type and nothing else changed, so the
attribution points at QuantLib's own code. aadc-quantlib carries AAD-aware
replacements for some numerics (solvers, bootstraps), which record fewer frozen
branches. Prices and sensitivities agree at the point of recording. When a
recorded tape is replayed far from that point, this build follows more frozen
branches than aadc-quantlib and can drift where the production wheel would not
— treat its tapes as a diagnostic of this recording, and re-record rather than
reuse them for bump-and-replay at distant inputs.
Install
Pick the QuantLib line that matches your aadc-quantlib: the wheel's version
starts with the QuantLib version it wraps (1.38.* is QuantLib 1.38, 1.41.*
is QuantLib 1.41), and several lines are published under this one name.
pip install "aadc-quantlib-tracing==1.41.*"
An unpinned pip install aadc-quantlib-tracing resolves to the newest release
across every line, which is not necessarily the line of the aadc-quantlib you
already have.
Linux x86-64 only, CPython 3.10–3.14. There is no macOS, Windows or arm64
build: the tracing pass is an LLVM plugin that runs in one container image.
aadc-quantlib itself ships on all four platforms — only this variant is
restricted.
It installs beside aadc-quantlib rather than replacing it: separate
distribution, separate import name, so both can be present in one environment and
you choose per import. Do not expect import aadc_quantlib to pick this up.
The import is aadc_quantlib_tracing
from aadc_quantlib_tracing import QuantLib as ql
What it shows you
import aadc
from aadc_quantlib_tracing import QuantLib as ql
f = aadc.Functions()
f.start_recording(trace=True, trace_inputs_as_random=True)
# ... build and price an instrument with the QuantLib API ...
f.stop_recording()
for leaf in f.traced_leaves():
print(f"{leaf['file']}:{leaf['line']} {leaf['function']} = {leaf['value']}")
for w in f.passive_warnings():
print(f"frozen branch at {w['file']}:{w['line']}")
traced_leaves() reports the constants the library itself supplies — day-count
denominators, tolerances, comparison epsilons — each with its declaration site and
its record-time value. passive_warnings() reports every place a decision was
frozen into the tape at recording time, which is where a replay at different
inputs can silently follow the wrong branch.
Together they answer a question no amount of reading the Python can: what does this pricing actually depend on, including the parts nobody passed in?
Costs, stated plainly
- Size. ~43 MB per wheel against ~32 MB for
aadc-quantlib, and the unpacked library is substantially larger — the attribution index is ~34 MB of the shippedlibQuantLib. - Not faster. Tracing changes what the recording remembers, not how fast it
replays. Use
aadc-quantlibfor throughput. - Attribution follows inlining. It is compiled
-O2 -g, which is what makes the attribution point at real call sites. Do not expect debugger-grade stepping.
What it does not contain
The shipped library carries no DWARF debug sections and no symbol table — it is stripped like any release build. The attribution index stores source locations, not source text: no QuantLib or Matlogica source code is embedded in the wheel.
Licence
Proprietary — Matlogica. LICENSE.txt in the installed
aadc_quantlib_tracing-<version>.dist-info/licenses/ is the AADC Community Edition
Licence Agreement; non-commercial and academic use only, with commercial and
full-performance academic licences available from info@matlogica.com.
THIRD-PARTY-NOTICES.txt beside it covers QuantLib, Boost and the other bundled
third-party components.
importlib.metadata.version("aadc-quantlib-tracing") reports the wheel version.
Metadata
Release files for aadc-quantlib-tracing 1.41.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| aadc_quantlib_tracing-1.41.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| aadc_quantlib_tracing-1.41.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| aadc_quantlib_tracing-1.41.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| aadc_quantlib_tracing-1.41.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| aadc_quantlib_tracing-1.41.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
Total release size: 240.9 MB
Release files / aadc_quantlib_tracing-1.41.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.41.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 48.2 MB |
| Tags | CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1fa9a43e2aadeae281be7540892a75a4f0163aca1db0b2f3447437e310042a1a
|
|
BLAKE2b-256 checksum How to use checksums |
5d3d0239c3f6fd7e0339bf06b79fdd0c2e4db3a0834851c399b7c176d2d1ba42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / aadc_quantlib_tracing-1.41.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.41.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 48.2 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3458f7275572662f22ef36460a5beafd05d249fd5404407f6aa9ee6b73721573
|
|
BLAKE2b-256 checksum How to use checksums |
ca53a0272123d5c2324da364e89e990b6cb8fad3bc9026a9689fef379e00263d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / aadc_quantlib_tracing-1.41.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.41.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 48.2 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
92efcd649b1704b5d8abadcb11d5bd1d26deebad072d7db51cd3c0958ea352c4
|
|
BLAKE2b-256 checksum How to use checksums |
3ae4f9d936659864eebdb7b4f9afaf6d910c79c567114162ab7db5ccb59d11bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / aadc_quantlib_tracing-1.41.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.41.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 48.2 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7e29670d652bd515db531b259769b28d0f860d159e91e7468d973272691b9f37
|
|
BLAKE2b-256 checksum How to use checksums |
668f12f47b1802f9ed87228ad618fe7c99cbe0c099f23c5d05cb1f5ba7abc161
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / aadc_quantlib_tracing-1.41.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.41.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 48.2 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6e45f3640f90453ce86f7c60cd6a95f0572233a3f27c2f44aa57ef74d6a87acb
|
|
BLAKE2b-256 checksum How to use checksums |
62ffe751440e95be3f9c364e522f7322811cfb69aaeaa4c7c2266bc11343a1d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|