Journal of Computational Finance

Risk.net

Adjoint algorithmic differentiation tool support for typical numerical patterns in computational finance

Uwe Naumann and Jacques du Toit

  • The naive application of adjoint algorithmic differentiation (AAD) tools to practically relevant problems in Computational Finance often yields infeasible memory requirement and suboptimal computational cost.
  • Robust, scalable and sustainable AAD solutions need to exploit typical data dependence patterns and mathematical semantics of commonly used numerical kernels.
  • The dco/c++ software tool facilitates the development of production-grade AAD solutions through intuitive application programming interfaces built upon an extensive range of functionalities including adjoints of arbitrary order, tape compression, and support for parallelism.
     

We demonstrate the flexibility and ease of use of C++ algorithmic differentiation (AD) tools based on overloading through application to numerical patterns (kernels) arising in computational finance. While adjoint methods and AD have been known in the finance literature for some time, there are few tools capable of handling and integrating with the C++ codes found in production. Adjoint methods are also known to be very powerful but have potentially infeasible memory requirements. We present several techniques for dealing with this problem and demonstrate them on numerical kernels that occur frequently in finance. We build the discussion around the mature AD tool dco/c++, which is designed to handle arbitrary C++ codes and be highly flexible; however, the sketched concepts can certainly be transferred to other AD solutions including in-house tools. An archive of the source code for the numerical kernels as well as all the AD solutions discussed can be downloaded from an accompanying website. This includes documentation for the code and for dco/c++. Trial licences for dco/c++ are available from Numerical Algorithms Group Ltd.

Sorry, our subscription options are not loading right now

Please try again later. Get in touch with our customer services team if this issue persists.

New to Risk.net? View our subscription options

You need to sign in to use this feature. If you don’t have a Risk.net account, please register for a trial.

Sign in
You are currently on corporate access.

To use this feature you will need an individual account. If you have one already please sign in.

Sign in.

Alternatively you can request an individual account here