Filtering Option Data for Calibration and No-Arbitrage Checks
Summary
The document explains how to screen listed-option observations before calibrating a pricing model. It describes filters based on low average prices, wide bid-ask spreads, extreme moneyness, and very short or long times to expiry. These rules aim to remove noisy or illiquid quotes and options whose limited time value could distort estimated parameters. The cited sample also excludes observations that violate no-arbitrage conditions.
For moneyness, the response recommends scaling by strike and defining the percentage differently for calls and puts, so deep in-the-money positions remain interpretable. It considers limiting maturities to near-term contracts reasonable when the analysis targets liquid options. Suggested checks include put-call parity and comparing an option’s price with the discounted value of its intrinsic payoff. These are sample-selection guidelines, not universal thresholds: suitable filters depend on the dataset, market, and calibration objective.
Key ideas
- Option calibration samples can be screened for low prices, wide spreads, extreme moneyness, and unsuitable expiries.
- Percent moneyness should use strike as the denominator and account for whether the contract is a call or put.
- Put-call parity provides a joint no-arbitrage check for calls and puts.
- Option prices should not fall below the discounted value of their intrinsic payoff.
- Liquidity-based expiry cutoffs are practical choices that depend on the study’s objective.
Tags
Full text
# Calibration data selection - basic rules
# Calibration data selection - basic rules
Hey I found following rules for selecting data for calibration (source: "Kou Jump Diffusion Model: An Application to the Standard and Poor 500, Nasdaq 100 and Russell 2000 Index Options" by Wajih Abbasi1 , Petr Hájek , Diana Ismailova , Saira Yessimzhanova , Zouhaier Ben Khelifa , Kholnazar Amonov):
> The final sample is obtained by applying five filters. First, all the options with an average price <50 cents were removed. Then the options with a spread which is the difference between the ask price and bid price divided by the mid-price of this option, where that spread represents more than 50% of the average call price are removed. These first two filters are meant to eliminate calls with a large spread in relation to bid-ask quotations reported by the database. We also removed options with a moneyness which deviates from the range (−10%, 10%). Indeed, the options that are deep out-of-the-money (OTM) or deep-in-the-money (ITM) are illiquid and have a low time value which substantially affects the predictive power of the estimated parameters value. Next, we eliminated options with <6 days or over 100 days to expiration. The former have almost zero time premiums while the latter are illiquid. Finally, all options that do not meet the noarbitrage assumption are eliminated. The majority of observations eliminated correspond to deep ITM calls.
I have some questions:
- In the case of moneyness we need to have $\frac{|\rm{strike}-S_0|}{S_0}\le0.1$ right?
- Is it okay that we remove all options with maturity longer than 100 days?
- How to check which options do not meet the noarbitrage assumpion?
## Answer by kurtosis (score 3, accepted)
https://quant.stackexchange.com/a/57451
If $S_t$ is the underlier price at time $t$ and $K$ is the strike price, the percent moneyness is $\frac{S_t-K}{K}$ for a call and $\frac{K-S_t}{K}$ for a put. Otherwise, the percentages for puts and calls would be confusing. A put option on the stock of a bankrupt firm (so $S_t=0$) should be 100% in-the-money. If we divided by $S_t$, the percent moneyness would be infinite. Sinilarly, dividing by $S_t$ for a call option means that a deep-in-the-money option could never be 100% in-the-money even if the underlier were 100$\times K$.
Removing options with maturities over 100 days means keeping only the near-to-expiry quarterly options as well as the next-to-expire options once within a couple weeks of them becoming the near-to-expiry options. This is very reasonable and smart because it prevents the analysis from being skewed by less liquid options.
How to check if an option does not meet no-arbitrage assumptions? First, if put-call parity does not hold, the put and call jointly fail the no-arbitrage assumption. Also, an option should be worth more than $PV[\max(0,S_t-K)]$ (for calls) or $PV(\max(0,K-S_t)]$ (for puts).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.