Diagnosing Implausible Implied Volatility and Greeks in Option Data
Summary
The document examines a deep out-of-the-money call whose quoted market price implies far more volatility than the data provider reports. Recalculating implied volatility with an American-option model gives a value in the vicinity of 150%, while the provider reports exactly 1%. The near-expiry option’s underlying price is well below its strike, making the provider’s reported delta of 1 and zero gamma and vega inconsistent with the displayed inputs.
The answer treats the provider’s volatility as likely erroneous or possibly a default value shown for an expired option. It recommends checking the source data rather than assuming the computed volatility is wrong. The example is a diagnostic illustration, not a general method for estimating volatility: its conclusion depends on the listed quote and inputs being accurate, and the provider’s conventions or data handling are not established.
Key ideas
- Implied volatility should be checked against the option price, underlying price, strike, and time to expiry.
- A deep out-of-the-money call priced well above intrinsic value can imply very high volatility.
- An exactly rounded volatility value may indicate a default or data-quality issue.
- Greeks that conflict with the option’s moneyness can help identify suspect market data.
- Confirm provider conventions and inputs before relying on calculated or supplied values.
Tags
Full text
# AmericanOptionImpliedVolatility strange answers for calls IV's
# AmericanOptionImpliedVolatility strange answers for calls IV's
My data provider includes the greeks. I tried to compute the IV's myself using RQuantLib and see if they match -- for Puts it's generally close, for Calls however certain values are way way off -- any ideas?
Sample data:
```
X 30824 30824
underlying MSFT
underlying_last 29.91
exchange *
optionroot MSQ071020C00022500
optionext NA
type call
expiration 2007-10-20
quotedate 2007-10-11
strike 22.5
last 7.80
bid 7.35
ask 7.50
volume 33
openinterest 4983
impliedvol 0.010000
delta 1.000000
gamma 0.000000
theta -0.246377
vega 0.000000
optionalias MSQJX
my.iv 1.0892231
maturityfrac 0.024657533
```
Impliedvol is from my data provider, my.iv is my calculation.
```
> AmericanOptionImpliedVolatility("call", 7.8, 29.91, 22.5, 0.01, 0.01, 0.024, 0.01)
[1] 1.559311
attr(,"class")
[1] "AmericanOptionImpliedVolatility" "ImpliedVolatility"
```
Notice the RQuantLib value is 1.5, my data provider gets 0.01 -- what gives?
## Answer by Luigi Ballabio (score 3)
https://quant.stackexchange.com/a/22583
The 0.01 from your provider is likely wrong, or it could be some kind of default value that gets displayed when the option expires.
According to the data you posted, you're just 9 days from expiration, and your underlying price is just about 3/4 of the strike price; that is, you're pretty out of the money. You're going to need a lot of volatility to get a price of 7.8, and in fact, online calculators (just google for "implied volatility calculator") agree with QuantLib that you're in the neighbourhood of 150%.
Also, your provider's value is suspiciously accurate. 0.010000 exactly? No non-zero decimals from root-solving? Hmm. Not to mention a delta of exactly 1 and a gamma and vega of 0. The delta, in particular, makes no sense; it can't be 1 for an option out of the money.
In short: I'd check with your provider.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.