TF Quant Finance: 基于TensorFlow的量化金融库
目录
简介
这个库提供了高性能组件,利用TensorFlow的硬件加速支持和自动微分功能。该库将为基础数学方法、中层方法和特定定价模型提供TensorFlow支持。覆盖范围将在未来几个月内扩大。
该库分为三个层次:
-
基础方法。 核心数学方法 - 优化、插值、根查找、线性代数、随机和准随机数生成等。
-
中层方法。 常微分方程和偏微分方程求解器、伊藤过程框架、扩散路径生成器、Copula采样器等。
-
定价方法和其他量化金融特定工具。 特定定价模型(如局部波动率(LV)、随机波动率(SV)、随机局部波动率(SLV)、Hull-White(HW))及其校准。 利率曲线构建、收益描述和日程生成。
我们的目标是使库组件在每个层次上都易于访问。每一层都将附有许多可独立于高级组件运行的示例。
安装
开始使用该库最简单的方法是通过pip包。
请注意,该库需要Python 3.7和TensorFlow >= 2.7。
首先,请按照TensorFlow安装说明安装最新版本的TensorFlow。 例如,你可以安装TensorFlow:
pip3 install --upgrade tensorflow
然后运行
pip3 install --upgrade tf-quant-finance
你可能还需要使用--user
选项。
TensorFlow培训
如果你不熟悉TensorFlow,一个很好的入门方式是以下自学TensorFlow介绍笔记本:
开发路线图
我们正在努力扩大该库的覆盖范围。正在积极开发的领域包括:
- 伊藤过程:定义伊藤过程的框架。 包括从过程中采样路径和求解相关的后向柯尔莫戈罗夫方程的方法。
- 实现以下特定过程/模型:
- 布朗运动
- 几何布朗运动
- 奥恩斯坦-乌伦贝克过程
- 单因子Hull-White模型
- Heston模型
- 局部波动率模型
- 二次局部波动率模型
- SABR模型
- Copula:支持定义和从Copula中采样。
- 模型校准:
- Dupire局部波动率校准
- SABR模型校准
- 利率曲线拟合:用于收益率曲线引导和单调凸插值方案的Hagan-West算法。
- 支持日期、日计惯例、假期等。
示例
请参见tf_quant_finance/examples/
获取端到端示例。它包括以下教程笔记本:
- Black-Scholes模型下的美式期权定价
- 通过欧拉方案进行蒙特卡洛模拟
- Black Scholes:价格和隐含波动率
- TFF中的前向和后向模式梯度
- 使用Brent方法进行根搜索
- 优化
- 掉期曲线拟合
- 向量化和XLA编译
以上链接将在Colab中打开Jupyter笔记本。
贡献
我们热切希望与你合作!请参阅CONTRIBUTING.md获取贡献指南。本项目遵循TensorFlow的行为准则。参与即表示你同意遵守此准则。
开发
本节面向希望为库贡献代码的开发人员。如果你只对使用该库感兴趣,请按照安装部分的说明进行操作。
开发依赖项
该库有以下依赖项:
- Bazel
- Python 3(Bazel默认使用Python 3)
- TensorFlow版本 >= 2.7
- TensorFlow Probability版本在v0.11.0和v0.12.1之间
- Numpy版本1.21或更高
- Attrs
- Dataclasses(如果你的Python版本 >= 3.7则不需要)
该库需要Bazel构建系统。请按照你的平台的 Bazel安装说明进行操作。
你可以使用pip3 install
命令安装TensorFlow和相关依赖项:
pip3 install --upgrade tf-nightly tensorflow-probability==0.12.1 numpy==1.21 attrs dataclasses
常用命令
克隆GitHub仓库:
git clone https://github.com/google/tf-quant-finance.git
运行以下命令后
cd tf_quant_finance
你可以使用bazel test
命令执行测试。例如,
bazel test tf_quant_finance/math/random_ops/sobol:sobol_test
将运行sobol_test.py中的测试。
测试使用Python 3版本运行。请确保你可以在Python 3 shell中运行import tensorflow
。否则,测试可能会失败。
构建自定义pip包
以下命令将从源代码构建自定义pip包并安装它:
# sudo apt-get install bazel git python python-pip rsync # 对于Ubuntu。
git clone https://github.com/google/tf-quant-finance.git
cd tf-quant-finance
bazel build :build_pip_pkg
./bazel-bin/build_pip_pkg artifacts
pip install --user --upgrade artifacts/*.whl
社区
-
GitHub仓库:报告错误或提出功能请求。
-
TensorFlow博客:及时了解TensorFlow团队的内容和社区最佳文章。
-
tf-quant-finance@googlegroups.com:该库的公开邮件列表,用于讨论和提问。
-
TensorFlow Probability:该库将利用TensorFlow Probability(TFP)中的方法。
免责声明
Google不官方支持此产品。该库正在积极开发中,接口可能随时发生变化。
许可证
该库根据Apache 2许可证授权(参见LICENSE)。该库使用的Sobol原始多项式和初始方向数根据BSD许可证授权。