Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bbcho/finoptions-dev
https://github.com/bbcho/finoptions-dev
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bbcho/finoptions-dev
- Owner: bbcho
- License: mit
- Created: 2021-07-01T04:22:34.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-01T18:00:25.000Z (11 months ago)
- Last Synced: 2024-11-07T23:46:40.571Z (about 2 months ago)
- Language: Jupyter Notebook
- Size: 3.97 MB
- Stars: 207
- Watchers: 5
- Forks: 20
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-quant - finoptions - Complete python implementation of R package fOptions with partial implementation of fExoticOptions for pricing various options. (Python / Financial Instruments and Pricing)
README
# finoptions
Python implementation of the R package fOptions for use in energy trading. Changes include coverting the package to OOP as well as Finite Difference Methods for Option greeks for all Options.
To install package run:
```
pip install finoptions
```## Working with finoptions
Vanilla Options are found at the root of the package. For example, to run a Generalized Black Scholes Option:
```python
import finoptions as foopt = fo.GBSOption(10.0, 8.0, 1.0, 0.02, 0.01, 0.1)
opt.call() # to get call price
opt.put() # to get put price
opt.summary() # for a printed summary of the option
opt.greeks() # to get the greeks for the option# to calculate implied volatility, omit the sigma argument and then
# call the volatility method
opt = fo.GBSOption(10.0, 8.0, 1.0, 0.02, 0.01)opt.volatility(2)
```All options follow the same format for calls, puts, greeks and summaries. GBSOption uses the analytic solution to calculate to the greeks, but for all other options the finite difference method is used.
## Calculating Options for Multiple Inputs
The vanilla options are capable of calculating calls, puts, vols and greeks for multiple inputs at the same time by passing numpy arrays of values as parameters. Currently this only works for the vanilla options.
```python
import finoptions as fo
import numpy as npopt = fo.GBSOption(10.0, np.arange(5,15), 1.0, 0.02, 0.01, 0.1)
opt.call() # to get call price
opt.put() # to get put price
opt.summary() # for a printed summary of the option
opt.greeks() # to get the greeks for the option
```## Implemented Methods
### Vanilla Options
- Black-Scholes-Merton Option
- Black 1976 Option
- Miltersen Schwartz Option### American Options
- Roll-Geske-Whaley Calls on Dividend Paying Stocks
- Barone-Adesi and Whaley Approximation
- The Bjerksund and Stensland (1993) American Approximation Option### Garch Options
- The Heston-Nandi Garch Option Model### Tree Options
- Cox, Ross and Rubinstein (1979) Binomial Tree Model
- Jarrow and Rudd (1983) Binomial Tree Model
- Tian (1993) Binomial Tree Model
- Trinomial Tree Model### Spread Options
- Rubinstein Binomial Tree Generic Spread Option Model#### Bionomial Tree Spread Options
- Maximum Spread Option Model
- Minimum Spread Option Model
- Spread Option Model
- Dual-strike Option
- Reverse dual-strike option
- Portfolio options
- Options to exchange one asset for another
- Relative performance options
- Product options### Monte Carlo Options
- Monte Carlo simulation framework (see example)## Notebooks
To see example notebooks, please see github repo found here:https://github.com/bbcho/finoptions-dev/tree/main/notebooks