Jacques Du Toit

Senior Technical Consultant - Numerical Algorithms Group

Overview of Experience

Jacques joined NAG in 2009 and has worked on implementing a wide range of numerical codes for CPU, GPU and Intel Xeon Phi. 

His main research and work areas are:

  • Parallelization and multi/many core architectures
  • Arbitrage free interpolation
  • Algorithmic Differentiation
  • Computational finance in general
  • PDE solvers

Specific Technical Experience

Numerical code on GPUs

Jacques has delivered a number of numerical code projects for GPUs based around Monte Carlo applications. Key components included L’Ecuyer MRG32k3a, Mersenne Twister MT19937 and Sobol Generators, all with skip-aheads. The generators supported various distributions and were highly optimised for GPUs. The algorithms developed are suitable for many core processors in general and HPC systems.

Adjoint algorithmic differentiation on multi/many core platforms

Jacques has developed adjoint algorithmic differentiation solutions for heterogeneous platforms, in particular codes which span both CPUs and GPUs.

Training delivery

Jacques has developed training courses on writing numerical code in CUDA and OpenCL. He has delivered these courses for a range of different technical audiences in finance and other fields.

Mathematical Expertise

  • Probability Theory
  • Statistics
  • Actuarial Science
  • Financial Mathematics
  • PDEs
  • Algorithmic Differentiation

Computing Expertise

  • C/C++
  • CUDA
  • OpenCL
  • OpenMP
  • Fortran
  • Java
  • VBA


  • Ph.D, Optimal Stopping Theory and Stochastic Analysis, Manchester University
  • MSc, Financial Mathematics, Wits University, Johannesburg
  • BSc, Statistics and Actuarial Science, Wits University, Johannesburg

Papers & Talks

An extension of the change of variable formula with local time on surfaces. Du Toit, J. (2009). Research Report No. 14, Probab. Statist. Group Manchester (55 pp)

The trap of complacency in predicting the maximum. Du Toit, J. and Peskir, G. (2007). Ann. Probab. 35 (340–365)

Predicting the time of the ultimate maximum for Brownian motion with drift. Du Toit, J. and Peskir, G. (2008). Proc. Math. Control Theory Finance (Lisbon 2007), Springer (95–112). 

Selling a stock at the ultimate maximum. Du Toit, J. and Peskir, G. (2009). Ann. Appl. Probab. 19 (983–1014).

Predicting the last zero of Brownian motion with drift. Du Toit, J. Peskir, G. and Shiryaev, A. N. (2008). Stochastics 80 (229–245).

A high-performance Brownian bridge for GPUs: Lessons for bandwidth bound applications. Du Toit, (NAG Ltd).

Local Volatility FX Basket Option on CPU and GPU. Du Toit, (NAG) and Isabel Ehrlich, (Imperial College, London).

Note on Monte Carlo model sensitivities to distributions sampled by Rejection. Du Toit, (NAG).

Adjoint Algorithmic Differentiation of a GPU Accelerated Application. Du Toit (NAG), Lotz (Aachen University) and Naumann (Aachen University).

Adjoint Algorithmic Differentiation Tool Support for Typical Numerical Patterns in Computational Finance. Du Toit (NAG) and Naumann (Aachen University).

Pricing Bermudan Swaptions on the LIBOR Market Model using the Stochastic Grid Bundling Method. Du Toit (NAG) and Maree (Delft University of Technology). 

A Finite Volume - Alternating Direction Implicit Approach for the Calibration of Stochastic Local Volatility models. Du Toit (NAG) and Wyns (University of Antwerp).

Batched Least Squares of Tall Skinny Matrices on GPU. Du Toit (NAG) and Tim Schmielau (NAG). 

CVA at Scale with Adjoint Sensitivities: Combining the NAG Library with dco/c++ and Origami. Du Toit (NAG), Mosenkis (NAG), Hotchkiss (Xifintiq) and Ware (NAG).

High Performance Tape–Free Adjoint AD for C++11: Introducing dco/map, a cross–platform, accelerator ready AAD tool. Du Toit (NAG), Lotz (RWTH), Leppkes (RWTH) and Naumann (RWTH). 

From Runtime to Compile Time Adjoints C++11. Du Toit (NAG), Lotz (RWTH Aachen) and Mosenkis (NAG).