TF Quant Finance: TensorFlow based Quant Finance Library
Table of contents
 Introduction
 Installation
 TensorFlow training
 Development roadmap
 Examples
 Contributing
 Development
 Community
 Disclaimers
 License
Introduction
This library provides highperformance components leveraging the hardware acceleration support and automatic differentiation of TensorFlow. The library will provide TensorFlow support for foundational mathematical methods, midlevel methods, and specific pricing models. The coverage is being expanded over the next few months.
The library is structured along three tiers:

Foundational methods. Core mathematical methods  optimisation, interpolation, root finders, linear algebra, random and quasirandom number generation, etc.

Midlevel methods. ODE & PDE solvers, Ito process framework, Diffusion Path Generators, Copula samplers etc.

Pricing methods and other quant finance specific utilities. Specific Pricing models (e.g., Local Vol (LV), Stochastic Vol (SV), Stochastic Local Vol (SLV), HullWhite (HW)) and their calibration. Rate curve building, payoff descriptions, and schedule generation.
We aim for the library components to be easily accessible at each level. Each layer will be accompanied by many examples that can run independently of higherlevel components.
Installation
The easiest way to get started with the library is via the pip package.
Note that the library requires Python 3.7 and Tensorflow >= 2.4.
First, please install the most recent version of TensorFlow by following the TensorFlow installation instructions. For example, you could install TensorFlow
pip3 install upgrade tensorflow
Then run
pip3 install upgrade tfquantfinance
You maybe also have to use the option user
.
TensorFlow training
If you are not familiar with TensorFlow, an excellent place to get started is with the following selfstudy introduction to TensorFlow notebooks:
 Introduction to TensorFlow Part 1  Basics.
 Introduction to TensorFlow Part 2  Debugging and Control Flow.
 Introduction to TensorFlow Part 3  Advanced Tensor Manipulation.
Development roadmap
We are working on expanding the coverage of the library. Areas under active development are:
 Ito Processes: Framework for defining Ito processes. Includes methods for sampling paths from a process and for solving the associated backward Kolmogorov equation.
 Implementation of the following specific processes/models:
 Brownian Motion
 Geometric Brownian Motion
 OrnsteinUhlenbeck
 OneFactor HullWhite model
 Heston model
 Local volatility model.
 Quadratic Local Vol model.
 SABR model
 Copulas: Support for defining and sampling from copulas.
 Model Calibration:
 Dupire local vol calibration.
 SABR model calibration.
 Rate curve fitting: HaganWest algorithm for yield curve bootstrapping and the Monotone Convex interpolation scheme.
 Support for dates, daycount conventions, holidays, etc.
Examples
See tf_quant_finance/examples/
for endtoend examples. It includes tutorial notebooks such as:
 American Option pricing under the BlackScholes model
 Monte Carlo via Euler Scheme
 Black Scholes: Price and Implied Vol
 Forward and Backward mode gradients in TFF
 Root search using Brent's method
 Optimization
 Swap Curve Fitting
The above links will open Jupyter Notebooks in Colab.
Contributing
We're eager to collaborate with you! See CONTRIBUTING.md for a guide on how to contribute. This project adheres to TensorFlow's code of conduct. By participating, you are expected to uphold this code.
Development
This section is for developers who want to contribute code to the library. If you are only interested in using the library, please follow the instructions in the Installation section.
Development dependencies
This library has the following dependencies:
 Bazel
 Python 3 (Bazel uses Python 3 by default)
 TensorFlow version >= 2.4
 TensorFlow Probability version between v0.11.0 and v0.12.1
 Numpy version 1.19.2 or higher
 Attrs
 Dataclasses (not needed if your Python version >= 3.7)
This library requires the Bazel build system. Please follow the Bazel installation instructions for your platform.
You can install TensorFlow and related dependencies using the pip3 install
command:
pip3 install upgrade tfnightly tensorflowprobability==0.12.1 numpy==1.19.2 attrs dataclasses
Commonly used commands
Clone the GitHub repository:
git clone https://github.com/google/tfquantfinance.git
After you run
cd tf_quant_finance
you can execute tests using the bazel test
command. For example,
bazel test tf_quant_finance/math/random_ops/sobol:sobol_test
will run tests in sobol_test.py .
Tests run using Python version 3. Please make sure that you can run import tensorflow
in the Python 3 shell. Otherwise, tests might fail.
Building a custom pip package
The following commands will build custom pip package from source and install it:
# sudo aptget install bazel git python pythonpip rsync # For Ubuntu.
git clone https://github.com/google/tfquantfinance.git
cd tfquantfinance
bazel build :build_pip_pkg
./bazelbin/build_pip_pkg artifacts
pip install user upgrade artifacts/*.whl
Community

GitHub repository: Report bugs or make feature requests.

TensorFlow Blog: Stay up to date on content from the TensorFlow team and best articles from the community.

[email protected]: Open mailing list for discussion and questions of this library.

TensorFlow Probability: This library will leverage methods from TensorFlow Probability (TFP).
Disclaimers
Google does not officially support this product. This library is under active development, and interfaces may change at any time.
License
This library is licensed under the Apache 2 license (see LICENSE). This library uses Sobol primitive polynomials and initial direction numbers which are licensed under the BSD license.