Skip to content

Commit

Permalink
Added Lab 8, 9, 10
Browse files Browse the repository at this point in the history
  • Loading branch information
deepakgouda committed Apr 24, 2019
1 parent af0a7bf commit b327bac
Show file tree
Hide file tree
Showing 66 changed files with 208,878 additions and 52,121 deletions.
201,282 changes: 201,282 additions & 0 deletions Data/NIFTYoptiondata.csv

Large diffs are not rendered by default.

1,255 changes: 1,204 additions & 51 deletions Lab08/.ipynb_checkpoints/Lab08-checkpoint.ipynb

Large diffs are not rendered by default.

792 changes: 792 additions & 0 deletions Lab08/.ipynb_checkpoints/Options-checkpoint.ipynb

Large diffs are not rendered by default.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/ABB.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/AXISBANK.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/BALMLAWRIE.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/BHARTIARTL.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/CUMMINSIND.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/EMAMILTD.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/GODREJIND.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/HDFCBANK.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/HEROMOTOCO.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/HINDUNILVR.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/INFY.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/IOC.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/ITC.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/LUPIN.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/M&M.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/MAHABANK.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/NTPC.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/SBIN.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/SHREECEM.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/BSEData/TCS.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/ABB.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/AXISBANK.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/BALMLAWRIE.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/BHARTIARTL.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/CUMMINSIND.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/EMAMILTD.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/GODREJIND.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/HDFCBANK.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/HEROMOTOCO.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/HINDUNILVR.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/INFY.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/IOC.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/ITC.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/LUPIN.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/M&M.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/MAHABANK.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/NTPC.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/SBIN.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/SHREECEM.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/NSEData/TCS.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/bsedata1.csv

This file was deleted.

1,234 changes: 0 additions & 1,234 deletions Lab08/Data/nsedata1.csv

This file was deleted.

492 changes: 250 additions & 242 deletions Lab08/Lab08.ipynb

Large diffs are not rendered by default.

Binary file modified Lab08/Lab08.pdf
Binary file not shown.
133 changes: 133 additions & 0 deletions Lab08/Lab08.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
import numpy as np
from pandas import read_csv

from scipy.stats import norm

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def getS0(name='', market='BSE', index=False):
fields=['Close']
if index:
data = read_csv('./Data/'+market.lower()+'data1.csv', usecols=fields, index_col=False)
else:
data = read_csv('./Data/'+market+'Data/'+name+'.csv', usecols=fields, index_col=False)
return data.iloc[-1]['Close']

def getHistoricalVolatility(data):
close = np.array(data['Close'])
change = np.zeros(len(close)-1)
for i in range(1, len(close)):
change[i-1] = (close[i]-close[i-1])/close[i-1]
historicalVolatility = np.std(change)*(252**0.5)
return historicalVolatility

def getCall(S, K, r, t, sig):
d1 = (np.log(S/K)+t*(r+(sig**2)/2))/(sig*(t**0.5))
d2 = d1-sig*(t**0.5)
Nd1 = norm.cdf(d1)
Nd2 = norm.cdf(d2)
C = S*Nd1 - K*np.exp(-r*t)*Nd2
return C

def getPut(S, K, r, t, sig):
d1 = (np.log(S/K)+t*(r+(sig**2)/2))/(sig*(t**0.5))
d2 = d1-sig*(t**0.5)
Nd1 = norm.cdf(-d1)
Nd2 = norm.cdf(-d2)
P = K*np.exp(-r*t)*Nd2 - S*Nd1
return P

def model(name='', market='BSE', index=False, num_fig=0):
fields=['Close']
if index:
data = read_csv('./Data/'+market.lower()+'data1.csv', usecols=fields, index_col=False)
else:
data = read_csv('./Data/'+market+'Data/'+name+'.csv', usecols=fields, index_col=False)

if(index):
print('\t\t'+market+'Index')
else:
print('\t\tStock : '+stock+' Market : '+market)
##################Q1####################
lastMonth = data.iloc[len(data)-21:]
sig = getHistoricalVolatility(lastMonth)
print("Historical Volatility = ", sig)

##################Q2####################
S0 = data.iloc[-1]['Close']
A = np.arange(0.5, 1.6, 0.1)
K = S0
r = 0.05
t = 126/252

callPrice = np.zeros(len(A))
putPrice = np.zeros(len(A))

for i, a in enumerate(A):
callPrice[i] = getCall(S0, a*K, r, t, sig)
putPrice[i] = getPut(S0, a*K, r, t, sig)

print('Call Price = ', end='')
print(np.round(callPrice, 2))
print('Put Price = ', end='')
print(np.round(putPrice, 2))
print('\n')

##################Q3###################
S0 = data.iloc[-1]['Close']
A = 1
K = A*S0
r = 0.05
t = 126/252
T = 21
start = len(data)-T
volatility = []
callPrices = []
putPrices = []

while(start >= 0):
monthlyData = data[start:-1]
sig = getHistoricalVolatility(monthlyData)
volatility.append(sig)
C = getCall(S0, K, r, t, sig)
P = getPut(S0, K, r, t, sig)
callPrices.append(C)
putPrices.append(P)
start = start-T

x = np.arange(1, len(volatility)+1)
y = np.array(volatility)
z_call = np.array(callPrices)
z_put = np.array(putPrices)

fig = plt.figure()
ax = fig.add_subplot(111+num_fig, projection='3d')
ax.scatter(x, y, z_call, c='b', marker='o', label='Call Option')
ax.scatter(x, y, z_put, c='r', marker='o', label='Put Option')

ax.set_xlabel('Time (in number of months)')
ax.set_ylabel('Volatility')
ax.set_zlabel('Option Prices')
ax.legend()
if index:
plt.title(name+' Market = '+market)
else:
plt.title('Stock = '+name+' Market = '+market)
plt.show()

stock_name=['ABB', 'AXISBANK', 'BALMLAWRIE', 'BHARTIARTL',
'CUMMINSIND', 'EMAMILTD', 'GODREJIND',
'HDFCBANK', 'HEROMOTOCO', 'HINDUNILVR',
'INFY', 'IOC', 'ITC', 'LUPIN', 'M&M',
'MAHABANK', 'NTPC', 'SBIN', 'SHREECEM', 'TCS']

market_name = ['BSE', 'NSE']

model('', 'BSE', index=True)
model('', 'NSE', index=True)


for i, market in enumerate(market_name):
for j, stock in enumerate(stock_name):
model(stock, market, num_fig=0)
Loading

0 comments on commit b327bac

Please sign in to comment.