diff --git a/README.md b/README.md index c7d78c1..e90738c 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,188 @@ pip install opstrat ## Usage +## Import opstrat + ```python import opstrat +``` +## Version check +```python +op.__version__ +``` +If you are using an older version upgrade to the latest package using: +```bash +pip install opstrat --upgrade +``` + +# 1. single_plotter() +Used for plotting payoff diagram for a single option -opstrat.basic.option_plotter() # plots a basic option payoff diagram +Parameters +--- +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 + +### 1.a Default plot + +Option type : Call
+Spot Price : 100
+Spot range : +/- 5%
+Strike price: 102
+Position : Long
+Option Premium: 10
+```python +op.single_plotter() +``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/fig1.png) + +Green : Profit
Red : Loss + +### 1.b Input parameters +Strike Price : 450
+Spot price : 460
+Option type : Put Option
+Position : Short
+Option Premium : 12.5
+ +```python +op.single_plotter(spot=460, strike=460, op_type='p', tr_type='s', op_pr=12.5) +``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/fig2.png) + +# 2. multi_plotter() + +Used for plotting a single option
+Parameters +---------- +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 + +### 2.a Default plot : The short strangle + +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 + +```python +op.multi_plotter() +``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/fig3.png) + +### 2.b Example: Iron Condor (Option strategy with 4 options) + +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. + +```python +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) +``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/fig4.png) + +# 3. yf_plotter() + +Parameters +---------- +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
+ +### 3.a Default plot + +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 + +```python +op.yf_plotter() +``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/fig5.png) + +### 3.b Example: Strangle on Amazon + +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 + +```python +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]) +``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/fig6.png) + +## 4. Save figure + +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. +```python +op.single_plotter(save=True,file='simple_option.jpeg') ``` +![png](https://github.com/abhijith-git/opstrat/blob/main/readme_files/simple_option.jpeg) ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. diff --git a/opstrat/__init__.py b/opstrat/__init__.py index ec7a8d5..6c9d51d 100644 --- a/opstrat/__init__.py +++ b/opstrat/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.0.24" +__version__ = "0.0.25" __author__ = "Abhijith Chandradas" from .basic_multi import * diff --git a/setup.py b/setup.py index fec0527..f6d7c37 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ long_description = open('README.md').read() ''' -VERSION = '0.0.24' +VERSION = '0.0.25' DESCRIPTION = 'Option stategy visualizer' #LONG_DESCRIPTION = DESCRIPTION URL = 'https://github.com/abhijith-git/opstrat'