aadc-quantlib-tracing
The aadc-quantlib build that can tell you which line of C++ produced each
number.
This is the same QuantLib 1.38 with Real = idoubleNG, from the same sources as
aadc-quantlib, compiled through the AADC source-tracing
pass. The prices and sensitivities are identical. 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?".
Install
pip install aadc-quantlib-tracing
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.
Release files for aadc-quantlib-tracing 1.38.9
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.38.9-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.38.9-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.38.9-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.38.9-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.38.9-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
Total release size: 223.3 MB
Release files / aadc_quantlib_tracing-1.38.9-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.38.9-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 44.7 MB |
| Tags | CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6f000051b2b63b104ce6acc6e4ac4e53ddb50b8e29db44d9a6c1ce8b2dcaf529
|
|
BLAKE2b-256 checksum How to use checksums |
c8159963886b6c12033be7e90cb5e2edd2f64398416619f45b3d338f919d11af
|
| 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.38.9-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.38.9-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 44.7 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d79a8b9db22cf0deb59361b0b00187948d9ca644bbe0eeb4bd1ad14b5326fe29
|
|
BLAKE2b-256 checksum How to use checksums |
f470035a477b0c84531396fc2ff6e75c5e1db1c2d3f455cfafe29dcd002fd3a0
|
| 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.38.9-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.38.9-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 44.7 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e7cd9000a0eca6d4853b97268d84c03f963c0df99a4249a2b1dde3e39e1b6742
|
|
BLAKE2b-256 checksum How to use checksums |
7ddc316b9c6c756a9d18d1c52e47c4834f154cf23f613e6ead46b752db2ab53d
|
| 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.38.9-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.38.9-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 44.6 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
73e3881837c1a86500600402138c06b60a282e7a26be86bcc6d2070eae54faae
|
|
BLAKE2b-256 checksum How to use checksums |
463a54322d00f2d403228bfb28d4ee0cdfd8405d3e2dacbf1a6328e7bf276dcf
|
| 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.38.9-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | aadc_quantlib_tracing-1.38.9-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 44.6 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d68d7882c57c27f632fd5f5f74f1d7c3a3bb5564d7ef377b4b6796897205d9b0
|
|
BLAKE2b-256 checksum How to use checksums |
efd22f32f7e480ea7ab825a3b2a2904eebce2a0c88b6250a4574be6b1b260575
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|