PyFENG: [Py]thon [F]inancial [ENG]ineering

PyPI version Documentation Status Downloads

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 numpy arrays 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]])

Author

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 PyFENG are implemented in FER. FER is a subset of PyFENG.

Indices and tables