PyFENG: Python Financial ENGineering¶
PyFENG is the python implemention of the standard option pricing models in financial engineering.
Black-Scholes-Merton (and displaced diffusion)
Bachelier (Normal)
Constant-elasticity-of-variance (CEV)
Stochastic-alpha-beta-rho (SABR)
Hyperbolic normal stochastic volatility model (NSVh)
About the package¶
It assumes variables are
numpy
arrays. So the computations are naturally vectorized.It is purely in Python (i.e., no C, C++, cython).
It is implemented with python class.
It is intended for, but not limited to, academic use. By providing reference models, it saves researchers’ time.
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=[90, 95, 100], spot=100, texp=1.2, cp=[-1,1,1])
Out [2]:
array([[ 5.75927238, 7.38869609, 5.52948546],
[16.812035 , 18.83878533, 17.10541288]])
Others¶
See also FER: Financial Engineering in R developed by the same author. Not all models in
PyFENG
is implemented inFER
.FER
is a subset ofPyFENG
.
- Black-Scholes-Merton Model
- Constant Elasticity of Variance (CEV) Model
- Bachelier (Normal) Model
- Hyperbolic Normal Stochastic Volatility (NSVh) Model
- Stochastic-Alpha-Beta-Rho (SABR) Model
- SABR Model with Integration
- Stochastic volatility with Fourier inversion
- Gamma distribution-related Models
- Multiasset Models
- Multiasset Monte-Carlo Models
- Asset Allocation Models