PyFENG: [Py]thon [F]inancial [ENG]ineering
PyFENG provides an implementation of the standard financial engineering models for derivative pricing.
Implemented Models
Black-Scholes-Merton (BSM) and displaced BSM models:
Analytic option price, Greeks, and implied volatility.
Bachelier (Normal) model
Analytic option price, Greeks, and implied volatility.
Constant-elasticity-of-variance (CEV) model
Analytic option price, Greeks, and implied volatility.
Stochastic-alpha-beta-rho (SABR) model
Hagan’s BSM vol approximation.
Choi & Wu’s CEV vol approximation.
Analytic integral for the normal SABR.
Closed-form MC simulation for the normal SABR.
Hyperbolic normal stochastic volatility (NSVh) model
Analytic option pricing.
Heston model
FFT option pricing.
Almost exact MC simulation by Glasserman & Kim and Choi & Kwok.
Schobel-Zhu (OUSV) model
FFT option pricing.
Almost exact MC simulation by Choi
Rough volatility models
Rough Heston MC by Ma & Wu
About the Package
Uses
numpyarrays as basic datatype so computations are naturally vectorized.Purely Python without C/C++ extensisons.
Implemented with Python class.
Intended for academic use. By providing reference models, it saves researchers’ time. See PyFENG for Papers in Related Projects below.
Installation
pip install pyfeng
For upgrade,
pip install pyfeng --upgrade
Code Snippets
In [1]:
import numpy as np
import pyfeng as pf
m = pf.Bsm(sigma=0.2, intr=0.05, divr=0.1)
m.price(strike=np.arange(80, 121, 10), spot=100, texp=1.2)
Out [1]:
array([15.71361973, 9.69250803, 5.52948546, 2.94558338, 1.48139131])
In [2]:
sigma = np.array([[0.2], [0.5]])
m = pf.Bsm(sigma, intr=0.05, divr=0.1) # sigma in axis=0
m.price(strike=np.array([90, 95, 100]), spot=100, texp=1.2, cp=np.array([-1,1,1]))
Out [2]:
array([[ 5.75927238, 7.38869609, 5.52948546],
[16.812035 , 18.83878533, 17.10541288]])
Related Projects
Commercial versions (implemented and optimized in C/C++) for some models are available. Email the author at pyfe@eml.cc.
PyFENG for Papers is a collection of Jupyter notebooks that reproduce the results of financial engineering research papers using PyFENG.
FER: Financial Engineering in R developed by the same author. Not all models in
PyFENGare implemented inFER.FERis a subset ofPyFENG.
Base Classes:
Single-Asset Models:
- Black-Scholes-Merton Model
- Bachelier (Normal) Model
- Constant Elasticity of Variance (CEV) Model
- Stochastic Volatility Inspired (SVI)
- Hyperbolic Normal Stochastic Volatility (NSVh) Model
- Stochastic-Alpha-Beta-Rho (SABR) Model
- SABR Model with Integration
- SABR Monte Carlo
- Heston Model
- Stochastic Volatility with Fourier Inversion
- Schöbel-Zhu (OUSV) Model
- GARCH Model
- Rough Heston Model
- 3/2 Stochastic Volatility Model
Multi-Asset and Path-Dependent Models: