Skip to content

auto-differentiation/QuantLibAAD

Repository files navigation

QuantLib-Risks: QuantLib with XAD Automatic Differentiation in C++

GitHub Workflow Status PRs Welcome

As a demonstrator of integration of the XAD automatic differentiation tool with real-world code, the latest release of QuantLib can calculate risks 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. The xad-forge library provides Forge-based backends for this purpose, including vectorized AVX execution. See the xad-forge README for guidance on when JIT compilation is beneficial.

The repository includes a swaption benchmark that demonstrates a hybrid workflow: curve bootstrapping with XAD's tape, followed by Monte Carlo pricing with JIT-compiled evaluation, comparing tape-based, JIT, and JIT-AVX performance.

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++
  • QuantLib-Risks: 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.