Skip to content
01

A UK buy-in, priced member by member.

One NVIDIA RTX 4090 and an Intel i9-13900KF (24 cores, 32 threads) in the same machine, October 2026.

A UK buy-in, priced member by member

1.5 trillion member-paths in 41 s

  • 2.5 million members on 600,000 paths of longevity, gilts and inflation, valued a year at a time: 10¹⁴ member-years.
  • One RTX 4090, end to end; slowest of three runs 44.4 s.
  • 137× faster than the same algorithm in hand-optimised C on all 32 threads of the same machine's i9-13900KF.
  • The GPU and the CPU interpreter agree to every printed digit on the deterministic case.
  • Synthetic scheme, illustrative mortality basis.
Hensel, one RTX 40900:00 / 41 s
Hand-optimised C, all 32 CPU threads0:00 / 93 min

Replayed with both clocks sped up by the same 164×: the GPU bar fills in a blink; the CPU bar takes 34 seconds of your time.

02

The SOA's nested-stochastic benchmark, every rung measured.

Seven implementations of one variable-annuity model, on the same 190,000 policies and the same machine. The published reference is the vectorised NumPy; the best CPU code we wrote is fused Julia on 32 threads.

  1. Python, naive loops27.4 ms
  2. NumPy, vectorised (the SOA reference)789.7 µs
  3. Julia, naive572.5 µs
  4. Julia, broadcast224.6 µs
  5. Julia, fused, 1 core28.24 µs
  6. Julia, fused, 32 threads1.48 µs
  7. Henselian, one RTX 409028 ns
Time per policy and inner scenario, on a log scale, so equal lengths are equal factors. Same model, same data, same machine.

Nested stochastic variable annuities

28,000× the SOA's reference implementation

  • The Society of Actuaries' nested-stochastic VA valuation on the full 190,000-policy Gan and Valdez portfolio.
  • 0.0283 µs per policy-scenario on one RTX 4090, against 789.7 for the vectorised NumPy reference on the same machine.
  • 52× faster than the best CPU code we wrote, fused Julia on all 32 threads.
  • Cross-checked against the Julia kernel to 2.3 × 10⁻⁶.