Aquarians, running sanity checks like you did is important with historical options data. You will often identify odd options that have prices that seem to violate put-call parity. What is happening is that there are special options that have non-standard specifications due to dividends, special payouts, and mergers to name a few. Market data providers try to catch these but sometimes the specifications are late, not matched well in the data, or difficult to ascertain. You have identified two examples of these non-standard pricing. In the first, both ORATS and HistoricalMarketData present non-standard options prices. In the second, ORATS presents non-standards in addition to the standard options strikes > 14. The bid and ask prices are provided by the market data. Both ORATS and HistoricalMarketData calculate call and put values for each strike based on options pricing models. You will see that these values are similar. I suspect if you search on, you will find other examples of HistoricalMarketData presenting non-standard prices.
Well yeah but it's definitely wrong to include them with regular options, with no indication of the fact that they are "special". Special in what way? I purchase historical market data with the purpose of using it in identifying opportunities through automated backtests. If I have no indication whatsoever of the option being "special", how can I tell it's an error in the data or an actual opportunity? What am I paying for? Am I supposed to manually go through all these suspicious cases and somehow figure out by myself that it's just a data error? In GMQ case I shown you, allegedly I could buy a deep in the money call option worth $7 for a mere $1. That's a huge edge if it were real, but it's obviously not. Problem is there are a million such "special" cases of faulty market data which is not signaled to the end user - me, the guy who's paying for this data. I would understand if there were a flag "this is a special quote, not a regular option as God intended". So in the end I end up with a lot of work on my side totally useless because over and over again I discover that any edge I might have found in my hard-worked strategies is actually just bad data. So sorry but including "special" quotes, in the data you sell WITH NO INDICATION WHATSOEVER SO I CAN TAKE IT INTO ACCOUNT is not something I consider acceptable. It's bad data and renders it useless, yet you are charging money for it. What for then, if the data is unsuitable for backtests?
@Matt_ORATS You know, there's a saying about wine but applies just as well to historical market data. "If you pour a glass of wine into a bucket of crap you get crap. If you drop a teaspoon of crap into a barrel of wine, you get crap". A teaspoon of "special data" into the barrel of fine, historical market data.
There are nearly 1 million options and there are going to be cases where there are quotes that are non-standard or stale from the exchanges. When we backtest, we use a put-call parity flags, clear mis-pricing flags, and other methods to avoid simulating a trade. However, when we publish this data, we can not filter out all these options. Market data providers can only filter out so much and the end user needs to do the rest.
AFAIK, CBOE's data has labels for non-standard options which can be used to easily filter those out. From their FAQ: What does it mean if the root symbol contains a digit? These indicate non-standard options which are adjusted for a corporate action such as a stock split, special dividend, spin-off, or merger where the deliverable per contract delivers an amount other than a standard 100 shares. Without this type of labels, I agree that the data can only be filtered to some degree. It is very difficult to completely filter them out.