AD-HOC: A C++ Expression Template package for high-order derivatives backpropagation
Juan Lucas Rey
TL;DR
AD-HOC presents a header-only C++ AD tool that computes arbitrary high-order derivatives without source-code generation. It achieves this with static compile-time construction of a calculation tree via expression templates and a single Taylor-based backpropagation through a DAG, enabling selective derivatives and integration with existing dynamic AD tools. The approach is demonstrated on Black-Scholes with Vanna-Volga instrumentation, showing competitive runtimes compared to handwritten and code-generated baselines and scalable memory usage through compile-time analysis. Overall, AD-HOC provides a practical, open-source solution for high-order derivatives in finance, balancing performance, security, and development iteration speed.
Abstract
This document presents a new C++ Automatic Differentiation (AD) tool, AD-HOC (Automatic Differentiation for High-Order Calculations). This tool aims to have the following features: -Calculation of user specified derivatives of arbitrary order -To be able to run with similar speeds as handwritten code -All derivatives calculations are computed in a single backpropagation tree pass -No source code generation is used, relying heavily on the C++ compiler to statically build the computation tree before runtime -A simple interface -The ability to be used \textit{in conjunction} with other established, general-purpose dynamic AD tools -Header-only library, with no external dependencies -Open source, with a business-friendly license
