Python library for visualizing options.
pandas, numpy, matplotlib, seaborn, yfinance
Use the package manager pip to install opstrat.
pip install opstrat
import opstrat
op.__version__
If you are using an older version upgrade to the latest package using:
pip install opstrat --upgrade
Used for plotting payoff diagram involving multiple options.
op_type: kind {'c','p'}, default:'c'
Opion type>> 'c': call option, 'p':put option
spot: int, float, default: 100
Spot Price
spot_range: int, float, optional, default: 5
Range of spot variation in percentage
strike: int, float, default: 102
Strike Price
tr_type: kind {'b', 's'} default:'b'
Transaction Type>> 'b': long, 's': short
op_pr: int, float, default: 10
Option Price
Option type : Call
Spot Price : 100
Spot range : +/- 5%
Strike price: 102
Position : Long
Option Premium: 10
op.single_plotter()
Green : Profit
Red : Loss
Strike Price : 450
Spot price : 460
Option type : Put Option
Position : Short
Option Premium : 12.5
op.single_plotter(spot=460, strike=460, op_type='p', tr_type='s', op_pr=12.5)
spot: int, float, default: 100
Spot Price
spot_range: int, float, optional, default: 20
Range of spot variation in percentage
op_list: list of dictionary
Each dictionary must contiain following keys:
'strike': int, float, default: 720
Strike Price
'tr_type': kind {'b', 's'} default:'b'
Transaction Type>> 'b': long, 's': short
'op_pr': int, float, default: 10
Option Price
'op_type': kind {'c','p'}, default:'c'
Opion type>> 'c': call option, 'p':put option
Options trading that involve:
(a)selling of a slightly out-of-the-money put and
(b)a slightly out-of-the-money call of the same underlying stock and expiration date.
spot_range=+/-20%
spot=100
Option 1:Short call at strike price 110
op_type: 'c','strike': 110 'tr_type': 's', 'op_pr': 2
Option 2 : Short put at strike price 95
'op_type': 'p', 'strike': 95, 'tr_type': 's', 'op_pr': 6
op.multi_plotter()
An iron condor is an options strategy consisting of two puts (one long and one short) and two calls (one long and one short), and four strike prices, all with the same expiration date.
stock currently trading at 212.26 (Spot Price)
Option 1: Sell a call with a 215 strike, which gives 7.63 in premium
Option 2: Buy a call with a strike of 220, which costs 5.35.
Option 3: Sell a put with a strike of 210 with premium received 7.20
Option 4: Buy a put with a strike of 205 costing 5.52.
op1={'op_type': 'c', 'strike': 215, 'tr_type': 's', 'op_pr': 7.63}
op2={'op_type': 'c', 'strike': 220, 'tr_type': 'b', 'op_pr': 5.35}
op3={'op_type': 'p', 'strike': 210, 'tr_type': 's', 'op_pr': 7.20}
op4={'op_type': 'p', 'strike': 205, 'tr_type': 'b', 'op_pr': 5.52}
op_list=[op1, op2, op3, op4]
op.multi_plotter(spot=212.26,spot_range=10, op_list=op_list)
ticker: string, default: 'msft' stock ticker for Microsoft.Inc
Stock Ticker
exp: string default: next option expiration date
Option expiration date in 'YYYY-MM-DD' format
spot_range: int, float, optional, default: 10
Range of spot variation in percentage
op_list: list of dictionary
Each dictionary must contiain following keys
'strike': int, float, default: 720
Strike Price
'tr_type': kind {'b', 's'} default:'b'
Transaction Type>> 'b': long, 's': short
'op_type': kind {'c','p'}, default:'c'
Opion type>> 'c': call option, 'p':put option
Strangle on Microsoft stock
Stock ticker : msft(Microsoft Inc.)
Option 1: Buy Call at Strike Price 250
Option 2: Buy Put option at Strike price 225
op.yf_plotter()
Strangle:
A simultaneous purchase of options to buy and to sell a security or commodity at a fixed price, allowing the purchaser to make a profit whether the price of the security or commodity goes up or down.
Stock ticker : AMZN(Amazon Inc.)
Option 1: Buy Call at Strike Price 3070
Option 2: Buy Put option at Strike price 3070
op_1={'op_type': 'c', 'strike':3070, 'tr_type': 'b'}
op_2={'op_type': 'p', 'strike':3070, 'tr_type': 'b'}
op.yf_plotter(ticker='amzn',
exp='default',
op_list=[op_1, op_2])
Figure can be saved in the current directory setting save=True
Filename with extension has to be provided as file.
If no filename is provided, the figure will be saved as fig in png format.
op.single_plotter(save=True,file='simple_option.jpeg')
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
Stackoverflow Community
Ran Aroussi : yfinance
Daniel Goldfarb : mplfinance