Adjust market maker spread ranges for CEX listing compliance
A bid-ask spread exceeding 2% on a Tier-1 centralized exchange triggers a liquidity alert within 72 hours of detection.

This article outlines the mechanical configuration of spread ranges, depth parameters, and uptime thresholds required to satisfy a CEX liquidity audit. Each variable is treated as an adjustable input, mapped to a compliance check.
Calculating the Spread: The Standard Formula for CEX Compliance
The bid-ask spread is calculated using a fixed formula across major centralized exchanges:
Spread % = ((Best Ask − Best Bid) / Best Ask) × 100
The numerator is the absolute difference between the best ask price and the best bid price on the order book. The denominator is the best ask price, not the mid-price. This denominator choice inflates the spread reading during sell pressure and compresses it during buy pressure. CEXs use this formula because it produces conservative readings that protect the exchange from being cited for thin liquidity.
The compliance threshold varies by tier:
| Exchange Tier | Target Spread | Maximum Permitted Spread | Depth within 2% | Required Uptime |
|---|---|---|---|---|
| Tier 1 (Binance, OKX, Coinbase) | 0.1%–0.5% | 0.8% | $25,000–$50,000 | 98% |
| Tier 2 (Bybit, KuCoin, Gate.io) | 0.5%–1.0% | 1.5% | $10,000–$25,000 | 90%–95% |
| Tier 3 / DEX aggregators | 1.0%–2.0% | 3.0% | $5,000–$10,000 | Not enforced |
A project targeting a Tier-1 listing must set its market maker's base spread at or below 0.5% from the first hour of trading. The base spread is the resting parameter before any volatility or inventory adjustment is applied. Adjustments occur on top of this base, not as a substitute for it. A 0% spread is not achievable in practice — it produces instant arbitrage loss for the market maker and is treated as a configuration error rather than a sign of healthy liquidity.
Maintaining the 98% Uptime Threshold in Market Maker Agreements
MMAs include an uptime clause that defines the percentage of a 24-hour period the market maker must maintain the target spread. The standard range is 90% to 98%. Tier-1 exchanges typically require 98%; Tier-2 exchanges accept 90%–95%.
Uptime is calculated as the ratio of minutes in which the spread stays within the contracted range to the total minutes in the trading day. A market maker that holds the spread at 0.4% for 23 hours and 31 minutes of a 24-hour period records 98.4% uptime. The remaining 29 minutes — when the spread widens to 0.6% during a volatility spike — counts as non-compliant time.
To maintain 98% uptime, the market making configuration must include:
1. A redundant server infrastructure across at least two geographic regions, with failover triggered within 60 seconds of primary node disconnection.
2. An automated reconnection script with a retry interval of no more than 30 seconds, operating on both WebSocket and REST endpoints.
3. A pre-funded inventory buffer sufficient to cover 48 hours of one-sided order flow at the average daily fill rate.
4. A "spread guard" logic that tightens the spread automatically when the configured maximum is about to be breached, preventing the uptime counter from incrementing non-compliant minutes.
Downtime is not the only uptime risk. A spread that drifts to the upper boundary for 6 hours straight produces the same compliance failure as a complete disconnection. The uptime counter measures adherence to the spread range, not the existence of a network connection.
Configuring Order Book Depth within the 2% Price Range
Depth is the second liquidity KPI enforced by CEXs. The standard measurement is the total dollar value of resting buy and sell orders within 2% of the mid-price. For a token trading at $1.00, the 2% band extends from $0.98 to $1.02. The market maker must maintain at least $10,000 in combined bid and ask depth within this band at all times. The 2% band is the same metric used by CoinMarketCap and CoinGecko for their public liquidity rankings.
The depth requirement scales with the token's price and the exchange's tier:
- Tokens priced below $0.01: $5,000 depth within 2%
- Tokens priced between $0.01 and $1.00: $10,000–$25,000 depth
- Tokens priced above $1.00: $25,000–$50,000 depth
- High-cap tokens: $50,000+ depth, often calculated as a percentage of average daily volume (0.3%–0.5% of ADV is typical)
The market maker's order book is configured as a ladder of limit orders, not a single block. A standard configuration for a mid-cap token uses 10–20 price levels, with order size scaled linearly from the inside spread to the 2% boundary. The inside level — closest to the mid-price — carries the smallest size; the outer levels — approaching the 2% boundary — carry larger size. This structure reflects the empirical observation that fill activity concentrates within 0.5% of the mid-price, while the outer levels function as a visual liquidity reserve for the exchange's depth chart and for the public aggregators.
A $50,000 block at the 2% boundary is not equivalent to $50,000 distributed across 20 levels. The exchange's depth measurement reads the aggregate, but trader behavior is concentrated at the inside. A ladder that is too back-loaded will register as compliant on paper while offering poor fill quality in practice.
Adjusting Spread Sensitivity to Mitigate Toxic Flow and Inventory Risk
Market makers configure a "spread sensitivity" parameter that automatically widens the spread during periods of high volatility. This is not a violation of the compliance threshold — exchanges permit temporary widening during documented volatility events, provided the spread returns to the contracted range within a defined recovery window, usually 5 to 15 minutes.
The sensitivity setting operates on a volatility input, typically the realized volatility over the previous 5-minute or 15-minute window. When realized volatility exceeds a configured threshold — commonly 2× the 24-hour average — the spread widens proportionally. The widening factor is usually capped at 3× the base spread to prevent runaway inventory risk.
A working configuration for a Tier-1 listing:
- Base spread: 0.4% (within the 0.1%–0.5% Tier-1 band)
- Volatility trigger: 5-minute realized volatility exceeding 1.5%
- Spread multiplier: 2.5× during triggered periods
- Recovery timer: return to base spread within 10 minutes of volatility subsiding
- Maximum spread cap: 1.5% (still within the 2% hard compliance limit)
The multiplier is not arbitrary. It must be calibrated against historical toxicity data for the specific trading pair. Pairs that attract informed flow — typically lower-cap tokens with active derivatives markets — require a higher multiplier. Pairs dominated by retail flow tolerate a lower multiplier without measurable inventory loss. Spread sensitivity protects the market maker from toxic flow — informed orders that exploit stale quotes during rapid price moves. A market maker that does not widen its spread during volatility will be picked off repeatedly and will deplete its inventory within hours.
Navigating Exchange Liquidity Scores and Delisting Warning Tags
Binance introduced Liquidity Tags in 2023 as a public-facing indicator of order book health. OKX and Bybit operate similar internal scoring systems, though the specific algorithms are not disclosed. A token flagged with a "Liquidity Alert" tag is given a grace period — typically 7 to 30 days — to restore compliant spreads. Failure to do so results in a delisting notice. The precise grace period is set per case and is not part of the public listing documentation.
The liquidity score is a composite metric that combines:
1. Average spread over the trailing 24 hours
2. Depth within 2% of mid-price
3. Uptime percentage
4. Slippage on a simulated $10,000 market order against the resting book
A score below the exchange's internal threshold — the specific value is not public — triggers the alert. Projects can monitor their own score using the exchange's API, which returns the trailing measurements for each component. The recommended practice is to log these values every 15 minutes and to alert the market making team when any component drops below 90% of the contracted KPI. This is the same threshold used for uptime, and the same 90% figure applies to depth coverage.
The penalty structure for repeated violations is typically codified in the MMA itself. A first violation triggers a warning. A second violation within 90 days triggers a financial penalty, deducted from the market maker's performance bond. A third violation triggers a delisting review. The exact penalty amounts are not public and are negotiated per listing. Maintaining a tight spread guarantees liquidity and lower slippage — it does not, by itself, produce price growth. Liquidity and price direction are independent variables.
Closing Position
Liquidity compliance is a configuration task, not a marketing outcome. The three primary variables — spread, depth, and uptime — are adjusted through the market maker's parameter file and monitored through the exchange's API. A project that treats these as continuous operational inputs, with the same rigor applied to server uptime and order routing, will maintain its listing across Tier-1 and Tier-2 exchanges. A project that treats them as one-time launch settings will trigger a liquidity alert within the first quarter of trading.
The measurable summary: the market making configuration must specify a base spread, a depth ladder, an uptime floor, a volatility sensitivity multiplier, and a recovery timer. Each parameter is logged. Each parameter is auditable. Each parameter maps to a single line in the exchange's compliance report. Teams coordinating across jurisdictions for in-person exchange reviews or regulatory consultations — for instance, those handling UK entry authorization for London-based listing meetings — should apply the same operational discipline to travel logistics as to the market making parameters themselves.
The exchange does not negotiate the spread formula. The exchange does not negotiate the depth band. The exchange does not negotiate the uptime threshold. The exchange audits the output. The configuration is the only variable the project controls.