Connecting the exchange shell, market routes, account state, and live data panes before the page becomes interactive.
Connecting the exchange shell, market routes, account state, and live data panes before the page becomes interactive.
The maker version of lead-lag: instead of taking stale quotes, never BE the stale quote. Price your resting orders from the faster venue's mid and you quote the lagging book with information its other makers don't have yet — earning the spread without donating it.
A maker's losses concentrate in the seconds after the true price moves: your quotes are wrong and informed flow takes them (the lead-lag taker is literally hunting you). The defense is the same signal turned around: re-anchor your quotes from the leading BTC spot/index signal instead of the book you quote on. When the leader moves, your quotes move first — informed flow finds nothing stale, and the uninformed flow you do fill mean-reverts in your favor.
Combined with maker economics — zero maker fee plus the 25% rebate of every taker fee you're filled against — a maker who is never stale gets paid three ways: spread, rebate, and the absence of pick-off losses.
fair from the leader: the mirror book's mid (for binaries) or the external mark (the perp's external-fair pill source).bid = fair − half_spread, ask = fair + half_spread (POST_ONLY), sized per level.fair_adj = fair − inventory × skew — when you get long, both quotes shift down so the book sells you out of the position.HALF_SPREAD = 2 # cents each side of fair
SKEW = 0.05 # cents of fair shift per contract of inventory
SIZE = 30
MAX_INV = 150 # contracts; stop quoting the loaded side beyond this
on leader update (mirror book mid or feed.btc):
fair = mid(leader_book)
fair -= inventory * SKEW
bid = clamp(round(fair) - HALF_SPREAD, 1, 99)
ask = clamp(round(fair) + HALF_SPREAD, 1, 99)
quotes = []
if inventory < MAX_INV: quotes.append({side:"BUY", price:bid, qty:SIZE})
if inventory > -MAX_INV: quotes.append({side:"SELL", price:ask, qty:SIZE})
reconcile(native_market, quotes) # cancel out-of-band, keep in-band,
# POST_ONLY everything
on private fill:
inventory += signed_qty(fill) # next leader update re-skews quotesreconcile means: fetch your open orders (GET /v1/orders?market_id=…&status=NEW,PARTIALLY_FILLED), keep orders already at the target prices (queue position is money), cancel the rest, post what's missing. Always pass the status filter — without it a long-running bot's open orders fall out of the newest-first page and become invisible to itself.| Parameter | Starting value | Why |
|---|---|---|
| HALF_SPREAD | 2¢ | At 2¢ you offer a tighter market than casual flow needs while clearing the ~1¢ adverse-selection floor. |
| SKEW | 0.05¢/contract | 150 contracts long shifts fair 7.5¢ — strong mean-reversion pressure without quoting through the market. |
| MAX_INV | 150 | Hard inventory cap; one-sided quoting beyond it converts an MM into an unhedged directional bet. |
| SIZE | 30 | Small enough to re-quote cheaply, large enough that rebates matter. |
Related: Fees & Rewards