When European Options Can Trade Below Intrinsic Value
Summary
The document explains why a European option’s market price can fall below its immediate exercise value, and why such observations should not automatically be removed from an implied volatility dataset. For European options, positive interest rates can contribute to deep in-the-money puts trading below intrinsic value, while positive dividend yield can do the same for deep in-the-money calls. SPX options are European-style, so these cases can apply to SPX quotes.
The examples compare American and European call values and show how a European option can be cheaper when early exercise would benefit an American holder. The discussion also cautions that apparent violations can reflect stale or mismatched underlying prices, different assumptions for rates or carry, bid or midpoint quotes that are not executable, or trading and exercise costs. These effects are often more pronounced in option wings, where implied volatility calculations can also become implausibly large. The document offers practical diagnostics, but no broad empirical test; a below-intrinsic quote may be valid or may reflect data quality problems.
Key ideas
- European options can be priced below immediate exercise value under certain rate and dividend conditions.
- SPX options are European-style, so below-intrinsic quotes do not by themselves prove the data is invalid.
- American options generally have the early exercise feature that can prevent this pricing pattern.
- Check that option and underlying quotes are synchronized and that rates and carry assumptions are appropriate.
- Bid and midpoint prices may not represent executable market values, especially in option wings.
Tags
Full text
# Option Prices less than intrinsic value with Implied Volatility Solver
# Option Prices less than intrinsic value with Implied Volatility Solver
I have recently received a dataset with SPX options.
I tried solving for implied volatilities using a root solver. I noticed errors consistently popping up that is solvable via the answer given below: AmericanOptionImpliedVolatility - root not bracketed issue in QuantLib/R (my solutions was to remove those options in my SPX options dataset).
Is it possible for options to exist with market prices that are less than the intrinsic value of the options?
## Answer by AKdemy (score 3, accepted)
https://quant.stackexchange.com/a/81337
It's possibly for Black Scholes Merton (BSM) to have a price below intrinsic value as Enrico Schumann showed. The answer I linked in my comment above also shows this and goes into quite some detail. The screenshot below is from this answer (the shaded green area).
This is also what professional tools like Bloomberg's OVME show. Pricing a put, with made up numbers to make it easier to replicate, shows that the option price (25.87) is well below intrinsic (30).
OVMEs value can be quickly replicated with standard BSM closed form.
```
# packages
import numpy as np
from scipy.stats import norm
import pandas as pd
# Black Scholes formula
def BSM(S,K,r,d,t, sigma, cp_flag):
d1 = ((np.log(S/K) + (r - d + 0.5 * sigma **2) * t) / (sigma * np.sqrt (t)))
d2 = d1 - sigma * np.sqrt(t)
opt = cp_flag*S *np.exp(-d*t)* norm.cdf(cp_flag*d1) - cp_flag* K * np.exp(-r*t) * norm.cdf(cp_flag*d2)
return opt
s, k, t, σ, d , r , cp_flag= 240, 270, 90 /365, 0.2, 0.0, 0.1, -1
r = np.log(1+r* (90-2)/360)/t # account for ACT/360 with T+2 and make continuous (as needed in BS)
print(r)
#price option
c = BSM(s,k,r,d, t, σ, cp_flag)
pd.set_option('float_format', '{:.2f}'.format)
pd.DataFrame({"Option": ["Put"], "Price (Share)" : [c], "Instrinsic" : [k-s]})
```
As pointed out by @Ezy, in this answer, there are 2 circumstances that can lead to the value of an european option being lower than intrinsic value
- deep ITM puts in presence of positive interest rates r>0
- deep ITM calls in presence of positive dividend yield q>0
which also coincides with the 2 circumstances under which it makes sense for an american option to be exercised early.
Since SPX options are European, that is also possible for SPX options. Therefore, one should not exclude them just because they trade below intrinsic value. Also, the root solver should work in these cases. It may be that some quotes (not trades) are erroneous but this should really be the exception for SPX.
As I wrote in my comment, I suspect the actual problem is the specifications that you use. Do you use the exact time stamp of the option quote for all market data? For example, you cannot use end of day prices for the underlying, if the option quote was last updated early in the morning. You would need to use the SPX value at the exact time of the option quote.
## Answer by Enrico Schumann (score 4)
https://quant.stackexchange.com/a/81333
Those SPX options traded at the CBOE are European-style options ( https://cdn.cboe.com/resources/spx/spx-fact-sheet.pdf ). American options should in theory never trade at less than intrinsic values, but European options can. (It happens when the price is at a level where the American option would have been exercised.)
Numerical example (in R) of a call with a strike at 80; underlier is at 100:
```
library("NMOF")
vanillaOptionAmerican(S = 100, X = 80,
type = "call",
v = 0.2^2, ## variance
r = 0.01, ## interest rate
q = 0.05, ## dividend yield
tau = 1/4 ## time to maturity
)$value
## [1] 20
vanillaOptionEuropean(S = 100, X = 80,
type = "call",
v = 0.2^2, ## variance
r = 0.01, ## interest rate
q = 0.05, ## dividend yield
tau = 1/4 ## time to maturity
)$value
## [1] 19.01
```
## Answer by Brian B (score 4)
https://quant.stackexchange.com/a/81339
There are several ways this can happen to a practitioner.
To begin, let's denote by the letter $Z$ the Black-Scholes computed value of an option with zero plugged in as the volatility.
$$ Z = BS( S, \sigma=0, r, c, t) $$
This is what I, at least, prefer to call the intrinsic value, for both European and American exercise. (Other people often define it the same as exercise value).
Your problem is essentially that you are finding "market value" $M$ less than $Z$.
$$ M < Z ? $$
This can happen in a few ways
- In truth, there is no such thing as "market value" $M$, and it is common for bid prices to be strictly less than $Z$. People commonly define the mid price to be "market value" but that's not tradeable, and can of course also be less than $Z$.
- Even the offer price is less than $Z$, but not by enough for the difference to be arbitrageable.
- Your underlying price was not measured contemporaneously with option market price, so your idea of $Z$ is different from what was being used by the market makers.
- Your drift parameters (interest rate, carry cost) are sufficiently different from the market makers that your idea of $Z$ is different from theirs. Usually carry cost is the problem here.
- There are special costs associated with exercising the options (finding a short, or laying off a long position), and these are priced in differently by you and the market makers. Again your $Z$ is different.
All this stuff tends to happen in the "wings" where gamma is small. So the academics don't talk about it much. But with practical data sets it comes up all the time.
Worth noting is that the opposite problem to yours comes up about as often: implausibly large implied volatilities in the wings. This happens for basically the same reasons, e.g. a 1-tick offer price is equivalent to 1000% implied volatility.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.