liquidity
Real-time option order book quality and spread pricing across strikes.

what it shows
liquidity measures order book quality across option contracts for each selected expiration. It combines bid-ask spread width and resting order size into a single composite score.
A low score indicates a tight spread and deep quote sizes (high liquidity). A high score indicates wide spreads or thin depth (liquidity stress).
liquidity score calculation
skewbot calculates a liquidity score for each active contract:
liquidity_score = relative_spread_pct / (sqrt(avg_size) + ε)
where:
relative_spread_pct = ((ask - bid) / midpoint) * 100
avg_size = (bid_size + ask_size) / 2
ε = small constant to prevent division by zeromarket buckets
Individual contract scores are aggregated into four distinct surface buckets:
| Bucket | Description | Normal state |
|---|---|---|
| OTM Calls | Out-of-the-money call contracts | Liquid, tight spreads |
| OTM Puts | Out-of-the-money put contracts | Liquid, high quote participation |
| ITM Calls | In-the-money call contracts | Wider spreads, lower quote size |
| ITM Puts | In-the-money put contracts | Wider spreads, lower quote size |
Each bucket calculates the mean liquidity score of all qualifying strikes at every compute tick.
reading the chart

The y-axis represents the raw liquidity penalty score. The x-axis is time.
Watch for these signals:
- Spike across all buckets: Market makers pulling quotes or widening spreads ahead of macro data or volatility events.
- OTM put liquidity degradation: Downside tail protection becoming expensive to transact due to one-sided demand.
- OTM call liquidity degradation: Upside squeeze activity causing rapid quote withdrawal.
rules of thumb
- You'll notice that the removal of liquidity tends to repel price (e.g. removing OTM put liquidity pushes price up, and removing OTM call liquidity pushes price down).
See also: liquidity controls →