Metadata-Version: 2.1
Name: american-options
Version: 0.1.4
Summary: Added new payoffs
Home-page: https://american_options.readthedocs.io/
Author: Przemysław Adamski, Katarzyna Hasal, Kacper Toczek
Author-email: kat.hasal99@gmail.com
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: chaospy
Requires-Dist: pandas
Requires-Dist: matplotlib
Requires-Dist: sklearn
Requires-Dist: tqdm

# American Options Library

The Library that is using various methods to price the variety of options of american type.



### Installation

```

pip install american_options

```



### Get started

How to obtain option price with this library:



```Python

from american_options import Option, Underlying



#Set up your parameters

n_sims = 10000   

T = 1

sigma1 = 0.4

sigma2 = 0.8

r = 0.06

N = 255

spot1 = 100

spot2 = 120

K1 = 100

K2 = 110

```



First you need to create assets you want to write options on. You can do this in following way:

```Python

# Instantiate an Underlying object

asset1 = Underlying(spot_price=100, r=0.07)

asset2 = Underlying(spot_price=120, r=0.07)



```

Next step is to calibrate assets for the use of different models. 

```Python

# Calibrate created assets

asset1.calibrate_GBM(sigma=0.4, values_per_year_GBM=N)

asset1.calibrate_JD(sigma=0.4, jump_intensity=1/3)

asset2.calibrate_GBM(sigma=0.4, values_per_year_GBM=N)

asset2.calibrate_JD(sigma=0.2, jump_intensity=1/2)



```

Now create options, for that we need payoff functions as well. You can import some of them from payoffs module:

```Python

from american_options.payoffs import *



option1 = Option(underlyings=asset1, payoff_func=lambda trajectory: payoff_creator_1d(trajectory, Call_Payoff, K=100, barrier=True, barrier_level=140), T=1)

option2 = Option(underlyings=(asset1, asset2), payoff_func=lambda trajectories: double_max_put(trajectories, 100), T=1)

```



And finally obtaining a price!

```Python

# Pricing with state space partitioning method

option1.ssp(n_sims=10000, mode='JD')

option2.ssp(n_sims=10000, mode='GBM')



# pPricing with Longstaff-Schwartz method

option1.LS(n_sims=10000, mode='JD')

option2.ssp(n_sims=10000, mode='GBM')

```
