# Options Flow False Positives

Options flow is easy to overread. A contract can show high volume, large premium, volume above open interest, and a dramatic price move without proving informed directional demand. The job of an options-flow workflow is to surface contracts for review, then reject weak rows with clear evidence.

Use this page with [Unusual Options Activity](/unusual-options-activity), [Unusual Options Activity Scanner Model](/docs/unusual-options-activity-scanner-model), [Options Volume and Open Interest](/docs/options-volume-open-interest), [Options Chain API](/options-chain-api), [Historical Options Quotes API](/historical-options-quotes-api), and [Options Trades API](/options-trades-api).

## The main false positives

| False positive | Why it looks interesting | Why it may be weak |
| --- | --- | --- |
| Cheap far-OTM weekly | Large volume and high ticket count | Small premium and poor probability |
| Wide-spread contract | Large last price or dramatic move | Bid/ask market is expensive or stale |
| Routine ETF activity | High volume in SPY, QQQ, IWM, or TLT | Baseline liquidity is already high |
| Earnings-week crowding | Many contracts light up near the event | Activity can be routine event hedging |
| Roll or spread leg | Large prints in one contract | Single-leg view misses the structure |
| Closing activity | Volume above OI appears meaningful | Flow may reduce exposure, not create it |
| Stale last trade | Last price implies activity | No fresh quote supports the row |

The [Options Chain Scanner Architecture](/docs/options-chain-scanner-architecture) and [Options Data Provider Evaluation](/docs/options-data-provider-evaluation) docs explain how to keep scanner outputs tied to endpoint evidence.

## Direction is hard

A chain snapshot can show calls versus puts. It can show last trade, latest quote, volume, OI, IV, Greeks, and underlying price. It cannot reliably tell whether a trade was buyer-initiated or seller-initiated without deeper trade classification, quote timing, and sometimes multi-leg reconstruction.

Avoid claims such as:

- "big call buying" when the scanner only sees call volume
- "bearish put sweep" when the scanner has no order-routing or aggressor-side evidence
- "new position" when volume is above OI but OI has not updated
- "smart money" when the flow may be hedge, roll, or close

Safer labels are:

- high call volume
- high put volume
- large estimated premium
- volume above prior open interest
- tight quote context
- short-dated activity
- requires trade/quote review

These labels keep the workflow honest and easier to support.

## Quote filters

Quote quality is the first rejection gate. A high-volume contract with a wide or stale quote may be interesting for observation, but it is weak as a trade candidate or backtest candidate.

Use these filters:

| Filter | Purpose |
| --- | --- |
| Minimum bid | Avoids zero-bid exits and weak fill assumptions |
| Maximum spread percent | Rejects expensive-to-cross contracts |
| Quote age limit | Avoids stale bid/ask context |
| Midpoint availability | Supports premium and slippage estimates |
| Bid/ask consistency | Prevents invalid or crossed quote rows |

The [Quotes docs](/docs/quotes), [Why Option Quotes Matter More Than Last Price](/blog/why-option-quotes-matter-more-than-last-price), [Options Slippage Modeling](/options-slippage-modeling), and [Bid/Ask Spread Backtesting](/bid-ask-spread-options-backtesting) pages cover this layer in more depth.

## Trade filters

Trades are useful for validating activity, but prints still need context. A print can be part of a spread, a roll, a hedge, a close, or routine market-making activity.

When a scanner row is important, inspect:

- trade timestamps
- print prices
- print size concentration
- prints versus nearby bid/ask
- activity before and after the alert
- whether the contract had fresh quotes
- whether related strikes and expirations also printed

Use [Trades](/docs/trades), [Quote vs Trade Timeline](/quote-vs-trade-timeline-options), and [Historical Options Replay Runbook](/docs/historical-options-replay-runbook) for this follow-up.

## Event context

Unusual activity often clusters around events:

- earnings
- FDA decisions
- index rebalance
- macro releases
- merger headlines
- product launches
- volatility shocks
- monthly or weekly OpEx

Event context does not make a row invalid. It changes the interpretation. A high-volume line during earnings week may be normal relative to the event. A quieter line outside an obvious event window may deserve more attention. Store the event label beside the scanner artifact.

For event-driven review, continue with:

- [Historical Options Replay for Event Studies](/blog/historical-options-replay-event-study-guide)
- [NVDA Earnings Options Replay](/blog/nvda-earnings-options-replay-chain-quotes-iv)
- [OPEX Week Options Data](/blog/opex-week-options-data-what-to-measure)
- [Options Expiration Data Workflow](/options-expiration-data-workflow)

## Reject reasons

False positives become manageable when they are logged as rejects instead of hidden.

Common reject reasons:

- `wide_spread`
- `stale_quote`
- `zero_bid`
- `tiny_premium`
- `routine_liquid_contract`
- `event_crowding`
- `far_otm_lottery_ticket`
- `missing_quote`
- `missing_trade_context`
- `ambiguous_roll_or_spread`
- `plan_quote_unavailable`

Rejects belong in scanner exports, backtest artifacts, paper-trading logs, and customer-facing support notes. The [Backtesting Data Quality Checklist](/docs/backtesting-data-quality-checklist), [Backtesting Execution Realism](/docs/backtesting-execution-realism), and [Paper Trading Bot Data Stack](/docs/paper-trading-bot-data-stack) explain the same discipline for research systems.

## Review workflow

Use this sequence before escalating a scanner row:

1. Check DTE, moneyness, IV, and delta.
2. Check volume, open interest, volume/OI ratio, and premium.
3. Check bid, ask, midpoint, spread percent, and quote age.
4. Pull trades around the alert timestamp.
5. Compare prints with nearby quotes.
6. Look for related activity across nearby strikes and expirations.
7. Add event context.
8. Assign a label: monitor, reject, research, alert, or paper-candidate.

That is the difference between a scanner and a headline generator.

## Related pages

- [Unusual Options Activity Scanner](/unusual-options-activity)
- [Options Volume and Open Interest](/docs/options-volume-open-interest)
- [Build an Options Chain Scanner That Is Quote-Aware](/blog/build-options-chain-scanner-quote-aware)
- [Options Liquidity Filters](/blog/liquidity-filters-options-backtests)
- [Options Data API](/options-data-api)

## False-positive review notes

Unusual options activity is noisy. Cheap far-OTM contracts, rolls, spreads, closing trades, stale prints, earnings hedges, and wide quotes can all create impressive volume without a clean directional signal. A scanner needs to preserve the contract, score inputs, quote state, trade conditions, volume/OI pressure, premium estimate, DTE bucket, moneyness, and reject reason.

Pair this page with [Options Volume and Open Interest](/docs/options-volume-open-interest), [Option Quote and Trade Conditions](/docs/option-quote-trade-conditions), [Quotes](/docs/quotes), and [Unusual Options Activity Scanner Model](/docs/unusual-options-activity-scanner-model). The best scanner is often the one that says no clearly before it says yes loudly.
