Implied Volatility Checks for Stale or Inconsistent Option Quotes
Article Quant Q&A · Author: opt
Summary
The document discusses implied-volatility calculations from option-chain prices and spot values sampled at potentially different times. Its example shows a call quote below its discounted intrinsic value, so the inputs violate the no-arbitrage lower bound and cannot produce a valid Black–Scholes implied volatility. A stale option quote or a mismatched spot observation is a plausible cause; the example alone cannot establish which input is wrong.
Key ideas
- An option price below its no-arbitrage intrinsic value is inconsistent with the pricing inputs.
- Asynchronous spot and option observations can make implied-volatility inversion fail.
- Put-call parity can be used to infer a spot value consistent with a call and put at the same strike.
- Implied volatility should be checked by repricing the option with the recovered volatility and the same time units.
- A straddle near the money can reduce sensitivity of implied volatility to spot errors, though the document notes this depends on the instrument and market conditions.
Tags
Full text
# Some questions about implied volatilities and how to generate theoretical prices when market prices are not available
# Some questions about implied volatilities and how to generate theoretical prices when market prices are not available
I am building a little Excel file that take some option prices in input and plots the volatility smile/surface. I have a script that reads market prices from the option chain for 3 different maturities and save the option prices in an Excel file. Each time I save option prices I also save the price of the underlying (in this case the DAX index).
I have two problem. The first should be easy to solve, but I just ask you if I'm right. Basically when maturity approaches, the B&S IV that I get applying the Newton-Raphson algorithm is very very low. Roughly, for an ATM position I get something around 5%. Is it because I have to scale up this figure by square root of time to have an annualized value? Or the IV is already annualized and i just have to see for some other error somewhere else?
The second problem is more tricky to me. When I extract the prices from the chain I have noticed that when I then calculate the IV for some strike I always get error (the numerical algorithm fails to converge to the solution). As said, I always use the underlying price at the moment the chain has been extracted so that data should be fine.
Is it possible that is just because for some strikes the option prices weren't updated? Weirdly this happens also for some strike that are not deep OTM. But, if this is the case, what would be the best way to proceed? My goal is plot an updated volatility smile for each maturity.
Should I calculate the price for those strike that I suspect weren't up to date at the moment of the download (I would identify these strikes by looking at those contract for which I'm not able to calculate the IV)?
But to calculate the theoretical price I still need an IV to input in the B&S formula... So should I interpolate the volatilities that I already have and the use the interpolated IV to calculate the missing prices?
For example, this morning with EuroStoxx trading at 3100.94 I recorded for the Call striking at 2825 a bid price of 273.6 and an ask price of 276.8. The time to maturity of the contract is 0.37534246575342467 and if I use r=0.01 I cannot find a solution for the IV. I think it's just because the price wasn't updated to basically these bid/ask call prices are not in sync with the underlying. But it's just a guess.
## Answer by David Durrleman (score 2, accepted)
https://quant.stackexchange.com/a/16156
Based on the example you gave, it seems that indeed your inputs are inconsistent. The intrinsic call value is $S-e^{-rT}K = 286.52355\dots$, which is higher than the market value, implying that there exists an arbitrage.
Instead, one of your inputs is probably wrong. Even if the interest rate is set to $0$, the intrinsic call value is still above your bid, so I can probably safely assume that the problem is not with the interest rate.
So it has to be with the spot price, or at least the consistency between the spot and call price as you've identified. One of the reasons could indeed be that you've sampled both values at different times.
It can be quite hard to find consistent price feeds for both option and spot prices. One alternative when you have a good enough option feed, is to look at both call and put prices at a given strike, and imply the spot from put-call parity $S = C - P + e^{-rT}K$, where $C$ is the price of the call, and $P$ is the price of the put. The spot price obtained from this method is guaranteed to yield a valid implied vol for these option prices.
As an aside, to improve the accuracy of your implied vol calculation a little bit further if there is a chance of inconsistency between your spot and option price (either when your read the spot directly or you obtain it from put-call parity), I would make sure to use the instrument whose implied vol is least sensitive to the spot. For an instrument with value $V$, it is easy to get $$\frac{\partial\sigma(S)}{\partial S} = -\frac{\partial V}{\partial S}/\frac{\partial V}{\partial\sigma} = -\frac{\Delta}{\nu}$$ So in order to minimize the error in implied volatility due to the error in spot price, you want to use a calibration instrument with the smallest absolute value for the above. When close to the money, straddles minimize this quantity with their delta being close to 0, whereas out-of-the-money instruments should be used when the spot is further above or below the strike.
I can't really comment on your first issue (is your implied vol annualised or not) because it depends on the specific computation you are using to obtain it. However, what you can do to make sure your computation is correct, is to plug the implied vol in the black scholes formula and check that you can back out the price you started with. If the value you used for $T$ in that formula is expressed in years, and you can accurately get back your starting value, then you can rest assured that the implied vol you obtained is indeed annualised.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.