Lesson 08
Theoretical Deviations: Real-World Prices
Compare a NIFTY model estimate with bid, ask and actual fills — then understand what the difference really means.

Model. Quote. Last trade. Three prices.
Option premium · ₹ per unit
Hypothetical NIFTY Call · 10:20 quote and BSM reference · assumed order book · before costs
Let’s compare like with like
Mr. Chartist will follow one hypothetical NIFTY quote from a model estimate to an assumed fill. At each stage, we will identify what the number measures before deciding what a difference means.
By the end you will be able to answer
- Which price are you comparing?
- Are the times and inputs aligned?
- What does the spread cost?
An online estimate for a used car helps you judge an offer, but it cannot buy the car. The estimate rests on assumptions about the car. The offer comes from a person, for a quantity, at a moment in time. Options have the same split. A theoretical premium is a calculated reference. A market quote is buying or selling interest that may still be there when your order arrives.
The last two lessons valued an option under stated assumptions. Now we set those values beside the order book, the list of waiting buy and sell orders. The numbers can match. They can also differ because they were taken at different times or with different inputs, because trading costs money, or because the model leaves out risks the market is pricing.
The NIFTY 50 example continues: spot and strike 25,000 points, 30 calendar days left, 6% interest, 1% dividend yield and 18% volatility. The European BSM reference is ₹565.99 per unit for the Call and ₹463.55 for the Put. Every quote, time, quantity and charge here is a teaching assumption, not live NSE data. The 10:05 and 10:20 observations belong to one hypothetical session in Indian Standard Time (IST), not to a dated trade.
Updated
Which price are you comparing?
Model value, bid, ask and last trade
MayaThe model says the 25,000 call is worth ₹565.99, but my screen shows ₹548. Which one is the price?
Four prices can sit on one screen, and each means something different. The model value is a calculated reference. A quote is interest to trade.
And ₹548?
That is the last traded price, from an earlier trade at 10:05. It is not an offer to sell now. Refreshing the screen does not make an old trade current.
So what do I look at if I want to trade right now?
A buyer who wants a fill now looks at the ask. A seller looks at the bid. Both look at the quantity shown.
Even then, a quote is what you can see, not what you are guaranteed. Another order may trade first. Use a confirmed fill to know what you really paid.
Mr. ChartistFour prices can sit on one screen, and each means something different. The premium is the option’s price. The bid is the highest price a buyer is offering. The ask, or offer, is the lowest price a seller is asking. Our 25,000 Call (C or CE) shows a hypothetical ₹560 bid and ₹570 ask at 10:20. A buyer who wants a fill now looks at the ask. A seller looks at the bid. Both look at the quantity shown.
The midpoint is the average: (₹560 + ₹570) ÷ 2 = ₹565. It is a handy reference, but nobody has promised to trade there. The last traded price, the LTP, is ₹548 from 10:05. It records an earlier trade, not an offer to sell now. Refreshing the screen does not make an old trade current.
Model, quote and last trade
The 10:20 quote surrounds a ₹565 midpoint. The ₹548 last trade belongs to 10:05; the BSM reference uses the stated 10:20 inputs.
Call · C / CE · NIFTY 50 · 25,000 CE
Past execution (LTP)
Buyer’s quoted price
Calculated with the stated inputs
Seller’s quoted price
Hypothetical same-session snapshot · times in IST · ₹ per unit · displayed quotes can change
With the 10:20 inputs, the model Call is ₹565.99: ₹0.99 above the midpoint and ₹4.01 below the ask. Setting the model against the old ₹548 LTP shows a bigger gap, but that mixes two moments. A model value can sit inside the bid–ask range or outside it. Its position alone does not make an option cheap or expensive.
A quote and its size are what you can see, not what you are guaranteed. Other orders may trade first, an order may be cancelled, or the index may move before yours reaches the exchange. NSE matches orders by price and then time, at the price of the order already waiting, and allows partial fills. Use the quote to see the interest available, and use a confirmed fill to work out what you actually paid or received.
Are the times and inputs aligned?
Compare like with like or not at all
Before you call a gap mispricing, check that both numbers describe the same thing. Match the underlying, Call or Put, strike, exact expiry and exercise style. Then match the time. A 10:20 option quote set against a spot level copied at 10:05 shows a gap even when the arithmetic is right.
Say a worksheet still holds the 10:05 NIFTY spot of 24,900, while the 10:20 spot is 25,000. Change only that input and the Call value moves from ₹513.38 to ₹565.99, a rise of ₹52.61. The gap came from a stale input. It did not mean anyone would sell a ₹565.99 option for ₹513.38.
One stale input changes the comparison
Changing only spot from 24,900 to 25,000 moves the Call reference from ₹513.38 to ₹565.99. Remaining time is fixed here to isolate the effect.
Call · C / CE · NIFTY 50 · 25,000 CE
Old spot · 10:05
Aligned spot · 10:20
Quote snapshot: 10:20
Hypothetical sensitivity · update every timestamp in a real valuation
This controlled comparison deliberately leaves remaining time unchanged so that the effect of spot is visible. A real update must also measure time from the valuation timestamp to the actual expiry timestamp, including fractions of a day. Our T = 30/365 is a calendar-day convention, not 30 trading sessions. Different conventions can yield different results; the goal is to know and align them.
Enter percentages as annual decimals: 6% as 0.06, 1% as 0.01 and 18% as 0.18. Rate and dividend yield here use continuous annual compounding. Volatility, rate and time must use consistent units. Also record whether volatility is a historical estimate, an independent scenario or an IV inferred from a particular quote. A calculator’s defaults are assumptions, even when they are hidden behind a convenient screen.
What does the spread cost?
The price of trading right now
The spread is the ask minus the bid: ₹570 − ₹560 = ₹10 per unit. If the quote does not move and you buy at ₹570 then sell at ₹560, you lose ₹10 per unit before charges. Against the ₹565 midpoint, you paid ₹5 more going in and received ₹5 less coming out. That adds up to one full spread, not two.
In practice the entry and exit quotes differ. For a closed long position, gross profit or loss is (selling fill − buying fill) × quantity. Net adds the actual charges. Real fills already contain the spread, so subtracting another spread would count it twice. Brokerage, taxes and other charges are separate lines: take them from the contract note and the current schedules, not from a fixed percentage in an example.
Take a teaching quantity of 65 units. Buy at ₹570 and later sell at ₹588: (₹588 − ₹570) × 65 = ₹1,170 gross, or ₹1,090 after an assumed ₹80 of charges. Now the unchanged-quote round trip, ₹570 in and ₹560 out: −₹650 gross and −₹730 after the same charges. Neither is a prediction, and 65 is not a promise about the current lot size.
Slippage is the gap between the price you intended or a reference price, and the price you got. Say which reference you mean. A market order takes the prices available and may fill in pieces. A limit order sets the lowest price you will sell at or the highest you will pay, but it may fill only partly or not at all. Paying the ask, walking through depth and paying charges are three separate costs. None of them is the model-price gap.
Will the quote cover your quantity?
Why the size on screen matters
A price means little without its quantity. Market depth is the buying and selling interest waiting at each price. Our hypothetical Call book offers 65 units at ₹570, 65 at ₹572 and 65 at ₹575. A marketable buy of 195 units would use all three levels, if they were still there when it arrived.
The cost is 65 × (₹570 + ₹572 + ₹575) = ₹1,11,605, an average of ₹572.33 per unit. Buying all 195 at the best ask of ₹570 would have cost ₹1,11,150, so the deeper levels add ₹455. The best ask was never an offer to sell all 195 units at one price.
One order reaches three ask levels
The static book supplies 65 units at each level. Filling 195 units costs ₹1,11,605, or ₹572.33 per unit, ₹455 above an all-at-best-ask reference.
Call · C / CE · Hypothetical Call ask book
- 3Level 3Ask 57565 units₹37,375.00Running total ₹1,11,605.00
- 2Level 2Ask 57265 units₹37,180.00Running total ₹74,230.00
- 1Best askAsk 57065 units₹37,050.00Running total ₹37,050.00
Average fill₹572.33per unit, against a best ask of ₹570.00
| Ask | Available | Filled | Cash paid |
|---|---|---|---|
| 570 | 65 | 65 | ₹37,050 |
| 572 | 65 | 65 | ₹37,180 |
| 575 | 65 | 65 | ₹37,375 |
195 of 195 units filled
Estimate for the filled quantity
Already included in the fill cost
Illustrative quantities · availability can change · no fill guarantee
This is a frozen teaching book, not a promise. Quantities change, new orders appear and price priority can give partial fills. A buy limit of ₹570 would stop any fill above ₹570, but the book would not supply all 195 units at that limit. Controlling the price and completing the quantity are different goals.
Volume counts completed trades and open interest counts contracts still open. Both are useful context, but neither shows the depth available now. A busy contract can briefly have little size on offer, and an old LTP can sit beside a new quote. Spread and depth also change with strike, expiry, time of day and market mood. A near-the-money strike is not guaranteed a tight spread or enough size for your order.
What does implied volatility explain?
What the gap tells you about the market
Implied volatility, IV, is a model run backwards: take an observed premium and solve for the volatility input that reproduces it, with the other inputs fixed. It states a price in the model’s volatility language. It is not a measured future volatility and not a guide to the size of the next move.
For our NIFTY inputs, the ₹560 bid implies about 17.789% volatility and the ₹570 ask about 18.141%. The ₹565 midpoint implies about 17.965%. So the quote gives a range of IVs, not one executable IV. Any IV you see also depends on the price used, the timestamp, the rate, the dividend assumption and the model.
A quote becomes an IV range
With the other inputs fixed, the ₹560 bid and ₹570 ask imply different volatilities. Fitting IV and repricing the same quote is a calibration check.
Call · C / CE · NIFTY 50 · 25,000 CE
Chosen price input
Solve for volatility
Reproduces the chosen price
| Price choice | ₹ per unit | Annual IV |
|---|---|---|
| Bid | ₹560.00 | 17.789% |
| Midpoint | ₹565.00 | 17.965% |
| Ask | ₹570.00 | 18.141% |
Hypothetical · model and price convention must match · not a volatility forecast
Put the midpoint’s 17.965% back into the same model with the same inputs and you recover ₹565, to rounding. That agreement comes from how IV was solved. It does not show that ₹565 is fair, cheap or dear. To judge value you need an independent volatility view, and you must still weigh execution costs and the risks that view leaves out.
Line up the IVs of different strikes with the same expiry and you get a volatility smile or skew. A smile is a curve. A skew is a slope. Cboe’s research on US equity indices shows protection against falls often carrying a higher IV than protection against rises. That is context for reading markets. It does not say every NIFTY expiry has that shape, or that every Put costs more than every Call.
Demand for protection, event risk, hedging costs and fear of sudden moves can all shape the surface, the pattern of IV across strikes and expiries. To compare contracts, use the same time to expiry and the same moneyness, meaning the strike relative to spot or forward. Raw rupee premiums at different strikes do not isolate skew. A Call and a Put at the same strike and expiry are also linked by carry, covered in the chapters below, before you call either one overpriced.
Does the model use spot or forward?
Keep the reference price consistent
Carry is the effect of financing cost and income over the option’s life. In spot BSM, r is the financing rate and q is a continuous dividend yield. The matching forward level is F = S × exp((r − q)T). With our inputs, 25,000 spot gives a same-expiry forward of 25,102.95 points.
Black’s 1976 formula prices a European option from a forward or futures level and discounts the result. With matching carry, maturity and volatility, the 25,102.95 forward gives the same Call, ₹565.99, and Put, ₹463.55. Only the input convention changed. It is not a second source of profit. A futures quote used this way needs a matching maturity and a sound link to the option.
Do not type the forward into the spot box and leave r and q unchanged. That counts carry twice, and the Call becomes ₹623.37 and the Put ₹418.06. The gap to ₹565.99 and ₹463.55 comes from mismatched inputs. Using a forward formula also does not turn an index option into one that delivers a futures position. The contract’s own terms decide settlement.
Dividends matter for stocks and indices. Replace our 1% yield with zero and the Call rises from ₹565.99 to ₹577.19 while the Put falls from ₹463.55 to ₹454.21. An index yield estimates income from the constituents. A single share pays a set amount on a set ex-date, and a continuous yield can be a poor fit for a large payment. The share price can also move on that day for other reasons.
Rates do not become negligible just because expiry is close. Change only r from 6% to 6.5% and the 30-day Call rises to ₹571.34 while the Put falls to ₹458.67. How much it matters depends on expiry, moneyness and how precise you need to be. Match the term, compounding and dividend treatment before you blame demand or the model.
What can parity check without an IV?
A test that needs no volatility input
Put–Call parity ties together European options with the same underlying, strike and expiry. With frictionless continuous-yield assumptions, C − P = S × exp(−qT) − K × exp(−rT), which also equals exp(−rT) × (F − K). It comes from matching expiry payoffs, with no volatility forecast. Our model Call minus Put is ₹102.44 per unit, so different premiums do not mean one is unfair.
Add a hypothetical Put quote of ₹460 bid and ₹470 ask beside the Call’s ₹560 and ₹570. Buying “long Call, short Put” at the displayed sides costs ₹570 − ₹460 = ₹110 per unit. Selling it receives ₹560 − ₹470 = ₹90. The ideal ₹102.44 sits between the two. A midpoint check can differ from exact parity without any executable opportunity.
Parity meets the quote sides
The ideal carry value is ₹102.44 per unit. Selling the option combination receives ₹90; buying it costs ₹110 at the assumed sides.
Same strike · same expiry · European options
Sell Call + buy Put
Call bid ₹560.00
− Put ask ₹470.00
Carry reference₹102.44
S × e−qT − K × e−rTReference is inside the option-leg quote interval.
Buy Call + sell Put
Call ask ₹570.00
− Put bid ₹460.00
Option-leg interval only · funding, other legs and costs still need checking
The ₹90 to ₹110 interval covers only the option sides. It is not a full no-arbitrage band or a trade instruction. A real test also needs executable prices and quantities for the underlying or forward, borrowing and lending rates, stock-borrow where relevant, expected income, taxes, fees, margin and settlement timing, all feasible at the same moment. A visible gap can vanish after these frictions or simply be untradeable.
Price bounds are a second check under the same idealised assumptions. The Call lies between max(S exp(−qT) − K exp(−rT), 0) and S exp(−qT). The Put lies between max(K exp(−rT) − S exp(−qT), 0) and K exp(−rT). Here the Call’s floor is ₹102.44 and the Put’s is zero. These are discounted carry bounds. They are not a rule that a European option must be worth at least today’s raw intrinsic value.
Keep the contract and the rules in view. NIFTY index options are European and cash settled. NSE individual-stock options are European with physical settlement obligations for applicable expiry positions. American options allow early exercise and need a different parity treatment. Check the latest clearing rules rather than assuming every option has the same funding and delivery needs.
How do you investigate a price gap?
A step by step way to find the cause
Start by naming the comparison, not by picking a trade. A stale LTP, an ask and a model midpoint are three different observations. Confirm the contract and timestamp, write down the inputs, then choose the price side and quantity that fit your question. “The option is ₹20 above my model” says little until you know those details.
Next, look at the live spread and depth, and find out how any quoted IV was calculated. Compare strikes on the same basis, and use parity as a check on related European contracts. If the gap survives, ask what could explain it: dividends, event risk, jumps, a changing volatility surface, the choice of model or a numerical approximation. A model difference is not yet a profit you can capture.
Check the comparison before its conclusion
Follow the evidence from contract identity to executable prices and costs. A model discrepancy alone does not establish an opportunity.
- 1
Match the contract
Underlying, right, strike, exact expiry, exercise and settlement terms.
- 2
Align the observations
Quote and underlying timestamps; consistent time, rate, yield and volatility inputs.
- 3
Read the executable sides
Bid or ask for the question, intended quantity, depth and limit constraints.
- 4
Check IV and related prices
Price source of IV; consistent moneyness; conditional European parity.
- 5
Include costs and uncertainty
Charges, both funding sides, feasible legs, margin, settlement and model risk.
An explained difference is a diagnosis, not a profit promise
Verification sequence
Last, add your entry and exit, the real charges, and the funding or settlement needs of any position. Depth you see now does not guarantee an exit later. A missing bid is a limit, not a reason to assume holding to expiry is harmless, because stock delivery can be large. A limit order can keep you out of a bad price, and it can also leave the order unfilled.
After a completed buy and sell, compare your planned reference price with the average fills and tie the net result to the contract note. Keep model error, spread, depth effects and charges in separate lines so no cost is counted twice. “The wrong price” then becomes a specific, testable explanation.
What is the model still useful for?
Why the model is worth keeping
A model turns assumptions into a calculation you can repeat. It lets you compare scenarios on equal terms and estimate sensitivities, the Greeks, such as the effect of a small change in spot, time or volatility. Those sensitivities depend on the model and its inputs too, so they do not guarantee the market’s response. The Greek lessons develop them.
Keep three kinds of uncertainty apart. Input uncertainty: we do not know the future volatility or dividend exactly. Numerical approximation: a finite tree or method may differ from its limit. Model uncertainty: the assumed price process, with continuous moves and constant volatility, may describe the market only roughly. A very precise answer can still rest on a shaky assumption.
For example, holding our other NIFTY inputs fixed, 16% volatility gives a Call value of ₹509.19 and 20% gives ₹622.83, around the 18% reference of ₹565.99. This is a sensitivity range selected by us. It is not a statistical confidence interval, a guaranteed future quote range or a valuation band that the exchange must honour. Research on uncertain-volatility models treats uncertainty explicitly; our simple scenario calculation does not implement those more elaborate methods.
The useful conclusion is a conditional one: “Under these inputs, this model gives this value, while these quote sides and quantities imply these assumed execution amounts.” That sentence leaves room to investigate a discrepancy without treating a calculated premium as money owed to a buyer or seller. Options can lose value rapidly, and identifying a model gap does not remove their risk.
Before you go
Check yourself
5 questions from this lesson. Pick an answer to see why, then slide on to the next.
Question 1 of 5
01At 10:20 a Call quotes ₹560 bid/₹570 ask; LTP ₹548 is from 10:05. Which comparison is most useful for an immediate purchase?
02An unchanged quote is ₹560 bid/₹570 ask. Buying at ₹570 and selling at ₹560 loses how much before charges?
03A static ask book has 65 units each at ₹570, ₹572 and ₹575. What is the average fill for 195 units?
04You solve IV from a ₹570 ask and reprice using the same model and other inputs. What does recovering ₹570 establish?
05Ideal European carry is ₹102.44; quoted option-leg synthetic sale and purchase amounts are ₹90 and ₹110. What follows?

0 of 5
Some questions are still open: go back and answer them.
Questions readers ask
Common questions
01What is the difference between theoretical option price and market price?
A theoretical premium is calculated from a model and inputs. A market bid or ask is buying or selling interest for a quantity at a time; a traded price records a completed execution. They can coincide. A difference needs aligned inputs, timestamps and quote sides before it can be interpreted, and does not alone prove mispricing.
02Should I compare a NIFTY model value with LTP or bid and ask?
Record both current quote sides and their time, then select the side relevant to the question: asks for a marketable purchase and bids for a marketable sale, subject to available depth. LTP may belong to an earlier trade. The midpoint is a useful reference but has no guaranteed fill.
03Do I pay the whole bid–ask spread twice on a round trip?
With an unchanged quote, buying at ask ₹570 and selling at bid ₹560 loses one ₹10 spread per unit before charges. Against midpoint ₹565, entry loses ₹5 and exit loses ₹5. Actual fill-to-fill profit or loss already includes those execution prices, so deducting another spread would double-count the effect.
04Does high option volume or open interest guarantee liquidity?
No. Volume records completed activity and open interest counts outstanding contracts. Current depth shows outstanding price and quantity, which can change before execution. Neither historical activity nor today’s displayed depth guarantees enough size at your price or a future exit.
05Why does my calculator reproduce the market price when I enter IV?
If that IV was solved from the same premium in the same model with the same other inputs, reproducing the premium is the fitting procedure working. It is not an independent fair-value test. Bid, ask and midpoint premiums can each produce a different IV; the model and input conventions must be stated.
06Can I use NIFTY futures price in a Black–Scholes calculator?
Only with a consistent forward or futures pricing convention, matching maturity and appropriate carry assumptions. In the usual spot BSM convention, replacing spot with a carry-adjusted forward while retaining the original rate and yield counts carry again. Under deterministic carry, Black76 with the matching forward reproduces the spot BSM value; it does not change the index option’s contract terms.
07Does a Put–Call parity difference mean risk-free arbitrage?
A theoretical European parity difference is a diagnostic. Use matching underlying, strike, expiry and carry, then executable bid–ask prices and sizes for every leg. Borrowing and lending rates, income, stock borrow where needed, charges, margin, synchronized execution and settlement can reduce or eliminate an apparent opportunity. Midpoint arithmetic is insufficient.
08Are volatility skew and dividends evidence that the model is wrong?
They may reveal a simplified or mismatched assumption. Skew expresses different model-implied volatilities across strikes; a constant-volatility reference does not reproduce every surface. Expected dividends and rates affect carry and need consistent treatment, including discrete cash dividends when relevant. Diagnosing those differences does not prove a profitable trade or make IV a forecast.
