Two basic Q's that get asked on Indian fintwit frequently that get partial or tbh downright terrible answers and that I hope to answer:
1. Are call and put IVs different? The NSE otpion chain says so?
2. Why are ATM IVs different on a platform I use (or your own calcs) vs NSE?
I’m going to answer the first question here.
The put-call parity
put + spot*e^(-qT) = call + K*e^(-rT)
If there’s one thing retail traders should take for granted when they trade options, it’s that the put-call parity simply holds. It isn’t a theoretical equation. If it doesn’t hold, market makers basically make free money and TANSTAFL1. This equation holds for every strike and its call and put. There is no arb to be had.
Edit (thanks to @vohicapital):2
The K*e^(-rT) is present value of strike, but when options are done on futures (settlement is done on futures) as underlying, the put-call parity equation changes to what retail traders know:
call + strike = put + fut
You can read more about it if you want, but the quickest way is to go the NSE website, take the ATM strike and check it. This is the June chain on May 26 EOD. Spot at 16170.15
For the 16150 strike:
call - put = 432-388.5 = 43.5
futures-strike = 16189-16150 = 49
Only a difference of 5.5 pts but you can see the bid-ask spread itself is 4 pts, so you can’t really arb here.
For the 16200 strike:
call - put = 405-416 = -9
futures - strike = 16189-16200 = -11
Only a difference of 2 pts and the bid-ask spread are tighter too, so again, not much arb.
Do this for any strike and it’ll be valid all over the chain. If you find a massive difference (10-20 pts+), it’s mostly due to illiquidity and wide bid-ask on the deep ITM options. At any rate, MMs don’t leave free money like that on the table, and they can execute 4 legs much quicker and get tighter spreads than you. So don’t bother doing this stuff.
Having done this sanity check, just assume hereon that put-call parity ALWAYS holds in practice.
The BSM pricing equations
A bit of theory. Ever wonder where IVs come from? Everyone seems to take them for granted, someone like the NSE has already calculated them for you. Free stuff. But wth are IVs? They can come from many models.
You’ve probably heard of the Black-Scholes-Merton (BSM) pricing equations. They basically take in some variables, two of them being volatility (σ) and interest rate(r) and spits out the “theoretical” option price, yeah the “theoretical” stuff everyone hates. Let’s call this “implied” price, it’s the price being implied by the (σ ,r) you put in. For this discussion, we’ll ignore the other variables that go into BSM, so (σ,r)→implied price.
But we don’t care for theory, we want to trade options, we want the other way around, the prices are already here on your terminal, you want the volatility or interest rate that’s being “implied” by the price. So instead of “(σ,r)→implied price”, you want “price→implied (σ,r)”. The implied sigma is your world-famous Implied Volatility (IV).
Notice here a key fact: The choice of both σ and r will impact price and vice versa
You hate the implied price but you love implied vols, this is the bias that fintwit has because they’re so used to seeing price but not vols. Anyways, depending on which way you go, one of the sides is “implied”, i.e., theoretical. It’s theoretical because if implied volatility solved everything, we wouldn’t be sitting here talking about rVol (realized volatility).
Reversing the BSM equation is kinda like if I give you the equation y = x^2 so you can input x, but you ask me “No, I want to know what x is actually, I have the y’s with me”. So I groan and solve the equation the other way and give you: x = √y.
Unfortunately, you can’t find out the reverse equation this way for the BSM price equations. Because here’s what the call and put equations look like:
Pretty scary. It’s easy to get c and p (call and put prices) by just substituting (σ,r), but you can see from how strange the equations look, that to find out σ for a given c and p, is tough. In fact, it so happens that the equation doesn’t exist.
But we have mathematical methods to find “approximate” IVs. It’s in the domain of numerical analysis and one of the methods is using an algorithm that uses iterations, like the “Newton-Raphson” method. 3
Now you know:
IVs are approximately calculated using the BSM price equations.
The choice of both σ and r will impact price and vice versa. Just remember which side you’re solving for, that side is “Implied”.
Does BSM follow put-call parity?
It’s not a degen model, so yes it does, substitute c and p and assume q=0 for ease
put + spot*e^(-qT) = call + K*e^(-rT)
call - put = S - K*e^(-rT)
LHS = call - put
= S * N(d1) - K * e^(-rT) * N(d2) - K * e^(-rT) * N(-d2) + S * N(-d1)
= S * (N(d1) + N(-d1)) - Ke^(-rT) * (N(d2) + N(-d2)))
N(x) + N(-x) = 1, so
LHS = S - Ke^(-rT) = RHS
Hence, proved.
Combining theory and practice
So you know the put-call parity holds in practice. This means it is model-agnostic. If you make a degen pricing model, it should still obey parity. Otherwise, you can deploy an algo to price options based on your model in market but market makers wielding better models will arb the shit out of it and you’ll have to find a different job, having sucked at making pricing models.
Let’s look at the parity eqn again:
put + spot*e^(-qT) = call + K*e^(-rT)
We know the market obeys it, so let’s rewrite it for the market:
put_mkt + spot*e^(-qT) = call_mkt + K*e^(-rT)
We saw BSM pricing equations also obey the parity, so let’s rewrite the parity eqn for BSM:
put_bsm + spot*e^(-qT) = call_bsm + K*e^(-rT)
Let’s subtract the two eqns:
put_mkt - put_bsm = call_mkt - call_bsm
So you can see now that if a put trading in market deviates from its BSM price by an amount, the call trading in market deviates by the exact same amount.
deviation in put price = deviation in call price
What does that mean? Put IV = Call IV.
An example:
Let’s say you got the IV of a market-trading put_mkt as 25.
Let’s call this: put_IV = 25, you want to find the BSM put value
So you use that IV to input into BSM: put_bsm_IV = 25
You get put_bsm and you’ll find put_bsm = put_mkt (well, ofcourse, you used the same IV value duh)
But now that means: put_mkt - put_bsm = 0 = call_mkt - call_bsm
call_mkt = call_bsm
So, call_IV = call_bsm_IV
But call_bsm_IV = put_bsm_IV, so call_IV = put_IV
So from this post, the one takeaway for you is that for a single strike, call and put IVs must be the same, otherwise put-call parity gets violated and you can arb it. It has nothing to do with pricing models as the above example shows.
I’ll try to explain in a later post why they “appear” different on the NSE website. It’s way more math-y and has to do with the “how” of IV calculation and models being used rather than “why”. For now, you can atleast tell the different values you see on the NSE website is an aberration.
Peace.
There Ain’t No Such Thing As A Free Lunch
If you’re interested in deriving put-call parity for various underlyings, refer to Chapter 15 in “Sheldon Natenberg - Option Volatility and Pricing”
The intuition behind these methods is simple. Take your mobile phone in your hand. Let’s say I ask you what the length of the phone is. You don’t know anything. What do you do? Maybe you recall from high school, how big 15 cm and 30 cm rulers are, let’s say. So you see your phone is definitely less than 30 cm. The 15 cm is a bit long too but you’re not sure by how much. Let’s say you have a 5cm Rubiks cube nearby, you use that now. You see the phone fits > 2 cube lengths but < 3 cubes. So now you know, your phone length is between 10-15 cms. See how you went from knowing nothing→ < 30cms → < 15cms → >10cms but <15 cms, these are your iterations. You’ve gotten pretty close to the true value without actually measuring the phone by each centimeter. The numerical method is based on the same intuition.
Now consider that Call_IV and Put_IV are independent variables. Everything else will align accordingly right? As per Put Call Parity, the fut will be priced to accommodate this. As per NSE data, we get very different surfaces for Put_IV and Call_IV (yes even highly liquid ATM strikes). Option market arbitrage forces also apply on futures and we sometimes have contango and backwardation depending on sum vector of all forces. Call_IV and Put_IV needn't be equal at same strikes mainly because demand for calls and puts is different. IV is an indicator of the balance of demand-supply at that strike. Far OTM is dominated by higher % of short dealer gamma (long Far OTM for counterparty) in the total OI and hence much higher IV as we go far OTM. Near ATM is mainly where is the speculative play happens. Hence a lot of near ATM vega is sold as spreads. Near ATM OI is dominated by larger short positions (or long dealer gamma). Hence the skewness can be used to gauge how the market is positioned for an expected move in underlying.
with your math knowledge u r perfect fit for writing code for institution's algo. don't try to trade yourself, you will lose like anything.