Skip to content

auto-differentiation/QuantLibAAD

Repository files navigation

QuantLibAAD: QuantLib with XAD Automatic Differentiation in C++

GitHub Workflow Status PRs Welcome

Part of the XAD ecosystem - the fastest automatic differentiation library for C++. If this is useful to you, please star the core XAD repository.

As a demonstrator of integration of the XAD automatic differentiation tool with real-world code, the latest release of QuantLib can calculate risks (sensitivities) with the help of XAD. The performance achieved on sample applications is many-fold superior to what has been reported previously with other tools. This demonstrates production quality use of the XAD library in a code-base of several hundred thousand lines.

This repository contains integration headers, examples, and tests required for this integration. It is not usable stand-alone.

JIT Compilation Support

XAD is optimized for computing sensitivities efficiently in a single evaluation pass using adjoint mode. For workflows that require repeated evaluation across many scenarios — such as Monte Carlo simulations, XVA calculations, regulatory stress testing, or scenario-based risk analysis — XAD also supports recording computations into a JITGraph that can be compiled and re-evaluated efficiently using a JIT backend.

xad-codegen is a high-performance native code generation backend that compiles recorded computation graphs to optimized x86-64 machine code, with support for AVX2 SIMD vectorization (4 paths per instruction). xad-codegen is available under a separate commercial license — contact us for more information.

Getting Started

For detailed build instructions with XAD and QuantLib, please refer to the XAD documentation site.

Getting Help

If you have found an issue, want to report a bug, or have a feature request, please raise a GitHub issue.

For general questions about XAD, sharing ideas, engaging with community members, etc, please use GitHub Discussions.

Contributing

Please read CONTRIBUTING for the process of contributing to this project. Please also obey our Code of Conduct in all communication.

Related Projects

  • XAD Comprehensive automatic differentiation in Python and C++
  • QuantLibAAD: Fast risk evaluations in Python and C++

Planned Features

  • Gradually port more of the QuantLib tests and add AAD-based sensitivity calculation
  • Add more Examples

Authors

  • Various contributors from Xcelerit
  • See also the list of contributors who participated in the project.

License

Due to the nature of this repository, two different licenses have to be used for different part of the code-base. The tests and examples folders are containing code taken and modified from QuantLib where the QuantLib license applies. The ql folder contains adaptor modules for XAD, where the GNU AGPL applies. This is clearly indicated by having separate license files in each folder.