What is Market Making?

A market maker simultaneously quotes a price to buy (bid) and a price to sell (ask). The difference between these two prices — the spread — is the market maker's revenue. When a buyer fills the ask and a seller fills the bid, the market maker has bought low and sold high without taking directional risk.

On LMEX, market making means placing a limit buy order below the mid-price and a limit sell order above it. The bot continuously cancels and refreshes these orders as the market moves, always maintaining its presence on both sides of the book.

The Spread Capture Mechanics

Market mid-price: $81,000

Bid spread: 0.1% → Buy order at $80,919

Ask spread: 0.1% → Sell order at $81,081

When both fill:

Bought: 0.012 BTC at $80,919 = $971.03

Sold: 0.012 BTC at $81,081 = $972.97

Gross profit: $1.94 per round trip

LMEX maker fee: 0.04% × 2 × $972 = $0.78

Net profit: $1.16 per round trip

In an active market, a well-tuned spread capture bot can complete dozens of round trips per day — generating consistent income unrelated to price direction.

Inventory Risk: The Key Challenge

The fundamental challenge of market making is inventory risk. When the market trends in one direction:

  • A rising market fills all your sell orders (you sell BTC, accumulate USDT)
  • A falling market fills all your buy orders (you buy BTC, accumulate a losing position)

You need to manage your inventory — the ratio of base asset (BTC) to quote asset (USDT) — to avoid becoming directionally exposed.

Inventory Skew

The solution is inventory skew: adjust order sizes based on your current inventory balance.

def inventory_skew(base_value, total_value, target_pct=0.5):

current_pct = base_value / total_value

deviation = current_pct - target_pct

# If over-inventoried in BTC: reduce buy size, increase sell size

bid_mult = max(0.1, 1.0 - deviation * 2)

ask_mult = max(0.1, 1.0 + deviation * 2)

return bid_mult, ask_mult

Example: 70% BTC, 30% USDT (over-inventoried)

bid_m, ask_m = inventory_skew(0.7, 1.0)

bid_mult = 0.6 (smaller buy), ask_mult = 1.4 (larger sell)

Bot naturally works back toward 50/50

When you are over-inventoried in BTC, the bot reduces its buy order size and increases its sell order size — naturally rebalancing toward the target without manual intervention.

Order Refresh

Market making requires constant order refresh. If you place orders and walk away, they become stale as the market moves and you accumulate unfavourable fills. The Spread Capture bot refreshes orders every 30 seconds by default:

1. Cancel all outstanding orders

2. Fetch the current mid-price

3. Calculate new bid and ask prices

4. Apply inventory skew to sizes

5. Place fresh orders

The refresh cycle balances responsiveness (catching up with the market) against fee costs (cancelling and replacing orders has fee implications).

Multi-Level Orders

Running multiple order levels adds depth and increases fill probability:

Level 1: Buy at $80,919  / Sell at $81,081  (0.1% spread)

Level 2: Buy at $80,838 / Sell at $81,162 (0.2% spread)

Level 3: Buy at $80,757 / Sell at $81,243 (0.3% spread)

Level 1 captures the most fills at the tightest spread. Levels 2 and 3 capture larger moves at wider spreads. The combined effect provides both frequency and profitability.

Best Pairs for Spread Capture on LMEX

| Pair | Spread Typical | Why Good |

|---|---|---|

| BTC-USDT | 0.01-0.05% | Deepest book, most fills |

| ETH-USDT | 0.02-0.08% | High volume, tight spread |

| BTC-PERP | 0.02-0.06% | Best for delta-neutral MM |

| ETH-PERP | 0.03-0.10% | Active, good oscillation |

Avoid low-liquidity pairs — wide spreads mean your orders sit unfilled, and when they do fill, adverse selection (a better-informed trader taking the other side) is more common.

Key Takeaways

  • Market making earns the bid-ask spread on every completed round trip — no directional prediction needed
  • Inventory skew automatically rebalances toward your target base/quote ratio
  • Refresh orders every 30-60 seconds to stay current with market movement
  • Multi-level orders (2-3 per side) increase fill frequency across different market conditions
  • BTC-USDT and ETH-USDT are the best LMEX pairs for Spread Capture due to depth and volume
  • The LMEX.AI Spread Capture bot handles all of this with configurable spreads and inventory targets