Logic for ATM Strike

difference.append((Strike_Price - stock_price))
l = 0
neg_list = []
while l < len(difference):
if difference[l] < 0:
neg_list.append(difference[l])
l += 1
else:
l += 1
ki = (difference.index(max(neg_list))) * 10
ATM_Strike = Strike_Price[difference.index(max(neg_list))]
print(“ATM STRIKE:”)
print(Strike_Price[difference.index(min_difference)])

def atm_strike(n,m):
    a = (n // m) * m
    b = a + m
    return int(b if n - a > b - n else a)

def futname(name):
    mydate = datetime.datetime.now()
    name = name+mydate.strftime("%y")+mydate.strftime("%b")+"FUT"    
    return name.upper()

def fut_ltp(var2):
    var5='NFO:'+futname(var2)
    return kite.ltp(var5)[var5]['last_price']

atm_strike(bnltp,100)

bnltp=fut_ltp("BANKNIFTY")

Here is how we do for BankNIFTY. Please write full code. Otherwise, it looks like junk. kite.ltp() is a function of kite connect to fetch LTPs.

How is m decided, is it the difference between two Strike like in case of BN it is 100, in case of Nifty its 50 ?

1 Like
  1. Scan the Option chain.
  2. Take the strike price nearest to the LTP.
  3. Take the strike price second nearest to the LTP.
  4. If 2=3, then take the strike price third nearest to the LTP.

m is difference between these two strike prices!