Interactive Benchmark

Python Implementations

From naive loops to JIT compilation and AADC acceleration

Performance Comparison

Trades
101001K
Scenarios
10K100K500K

Why AAD Scales Better

Bump-and-revalue cost grows linearly; AAD stays constant

Greeks Scaling: NumPy vs AADC

AAD computes ALL Greeks in constant time regardless of count

Greeks Bump Evaluations AAD Evaluations AAD Advantage
3 4 ~1.4 3x
10 11 ~1.4 8x
50 51 ~1.4 36x
100 101 ~1.4 72x

Bump-and-revalue requires N+1 evaluations for N Greeks, while AAD computes all Greeks in ~1.3 evaluations (1 forward + ~0.3 adjoint overhead).

Bump-and-Revalue (NumPy)

Requires N+1 evaluations for N Greeks. At 50 Greeks, NumPy needs 51 model evaluations.

AAD (AADC)

Requires ~1.4 evaluations regardless of Greek count. One forward pass + one adjoint sweep.

Code Changes Required

AADC requires minimal changes to your existing Python code

Basic → AADC
+176 lines added
781 → 957 total lines

Add AADC imports, wrap inputs as idouble, and call kernel recording APIs. Your model logic stays unchanged.

What Changes
  • Import aadc module
  • Wrap inputs: spot = idouble(spot)
  • Record kernel: kernel = aadc.record(...)
  • Request Greeks: kernel.greeks(['delta', 'rho', 'vega'])
  • No changes to pricing logic
  • No manual differentiation

Related Resources

Benchmark Environment

All benchmarks executed on enterprise-grade server hardware

System Configuration

CPU2x Intel Xeon Platinum 8280L @ 2.70GHz
Cores56 physical (28 per socket), 112 threads
Architecturex86_64, Cascade Lake
L3 Cache77 MiB (38.5 MiB per socket)
RAM283 GB DDR4
OSLinux kernel 6.1.0-13-amd64 (Debian)
CPU Features: AVX-512, AVX2, FMA, AES-NI

Test Configuration

ModelAsian Option Monte Carlo
DynamicsGeometric Brownian Motion (GBM)
Timesteps252 (daily over 1 year)
GreeksDelta, Rho, Vega (3 sensitivities)
Threads8 (configurable)
SIMDAVX2 (4 doubles/instruction)
Note: AVX-512 (8 doubles/instruction) provides ~1.7x additional speedup on supported hardware

Compilers & Versions

GCC12.2.0 (Debian)
Clang14.0.6 (Debian)
Python3.11.2
NumPy1.26.x
AADC2.0.0
C++ compiled with -O3 -march=native -std=c++17