🆕 How Market-Making, Hedging, and Cross-Exchange Rebalancing Actually Work
Market making your own crypto exchange? Learn how hedging bots balance risk and what happens when users trade against your liquidity

Summary: In this crypto exchange operator playbook we learn how to use a mix of market‑maker automation, external liquidity routing, and strong flagship pairs to scale liquidity. We also cover how to measure spread and depth targets per market. Monitor and adjust daily, and you should aim to shift liquidity responsibilities toward your user base over time.
In plain terms: Make every market feel liquid. This means tight prices, quick fills, steady books. Ensure each tradable market has professional‑grade liquidity: tight spreads, sufficient depth at the top of book, reliable execution during volatility, and a plan to scale without central risk.
Centralized trading platforms, crypto order‑book spot exchanges; adapt thresholds for derivatives.
When traders say a market “feels good,” they usually mean the following are true:
High liquidity produces tighter spreads and faster fills. Poor liquidity increases slippage and pushes users to competitors.

Numbers that prove liquidity is real, not just window dressing.
Use tighter bands for BTC‑USDT/ETH‑USDT; allow wider bands for small caps.
Quick rules you can apply without a meeting.
Use these in this order for new pairs. Steps (1) and (2) can run in parallel.
Start here when launching or reviving a pair.
What: Run a bot that maintains quotes around mid, with target spread and inventory rules.
Why: Keeps the book active 24/7, reduces empty books at off‑hours.
How: Connect a Market Maker bot:
https://docs.hollaex.com/advanced/market-making-bot/
Initial parameters (example for BTC‑USDT):
Verification:
Exceptions:
Rollback:
Monitoring:
Use when you need depth urgently. At launch, during promos, or for thin books.
What: Mirror or route to external venues or market makers to deepen the book.
Why: Immediate depth and narrower spreads, especially at launch.
How (HollaEx®): Many market making services such as Wintermute and others can provide a service for filling your orderbooks.
Routing rules (examples):
Verification:
Exceptions:
Rollback:
Monitoring:
Alternative to orderbooks:
If your team or resources are small consider operating simple broker style markets, not an orderbook, and setup an OTC price. The HollaEx® system allows the market maker or operator to define what account to source the funds (inventory) for both buy and sell side. This is a drastically simpler way to provide liquidity as there isn't complex orderbook price levels to manage.

These are your storefront windows; keep them immaculate.
What: Keep BTC‑USDT and ETH‑USDT as your highest‑quality books.
Why: They set user trust for the whole exchange.
How:
Verification:
Exceptions:
Rollback:
Monitoring:
Turn this on when growth outpaces today’s routing and throughput.
What: Use multi‑venue aggregation, smarter routing, and higher‑throughput engines.
Why: Handle growth without liquidity bottlenecks.
How (HollaEx®): Explore Enterprise options:
https://hollaex.com/exchange/enterprise
Verification:
Exceptions:
Rollback:
Monitoring:
The endgame: most quotes come from your own users.
What: Over time, shift reliance from automation/routing to your user base.
Why: Healthier books and lower long‑run costs.
How:
Verification:
Exceptions:
Rollback:
Monitoring:
Ensure you have a clear hedging strategy and a well-defined rebalancing process. Allocate a portion of your liquidity budget to hedge exposure on external platforms.
For example, if your market-making bot accumulates too much BTC or too much USDT due to users trading with your bot, that imbalance can be offset on another exchange. A separate hedging bot can be configured to mirror the opposite side of trades executed by the market-making bot when its orders are filled.
So, if the market-making bot sells BTC, the hedging bot can simultaneously (or shortly after) buy back BTC at a better price on Binance or another exchange. This simple mirrored flow effectively hedges your trades so the market-making bot is not left with a large unbalanced position when users aggressively buy or sell against it.
Like with the market making bot, an operator must make an account on an outside exchange, preferably with low trading fees and business account. This account should generate API key with trading allowed. The bot should watch for all the trades of the market making bot it wants to hedge against and do the opposite trade on the same market pair on the outside exchange. The API secret key should only be kept secret and only used by the hedging bot. The HollaEx® OTC broker has a built in hedging mechenism.

Example code:
1. Install dependency:
pip install ccxt
2. Simple hedging bot example (Python)
import ccxt
import time
# =========================
# CONFIG
# =========================
HEDGE_EXCHANGE_ID = "binance" # e.g. "binance", "kucoin", etc.
API_KEY = "YOUR_BINANCE_API_KEY"
API_SECRET = "YOUR_BINANCE_API_SECRET"
# Safety settings
MAX_NOTIONAL_PER_TRADE = 10_000 # in quote currency (e.g. USDT)
SLIPPAGE_BPS = 20 # 20 bps (0.20%) allowed slippage
# =========================
# EXCHANGE SETUP
# =========================
def init_hedge_exchange():
exchange_class = getattr(ccxt, HEDGE_EXCHANGE_ID)
exchange = exchange_class({
"apiKey": API_KEY,
"secret": API_SECRET,
"enableRateLimit": True,
})
exchange.load_markets()
return exchange
hedge_exchange = init_hedge_exchange()
# =========================
# CORE HEDGING LOGIC
# =========================
def hedge_trade(trade):
"""
Mirror a trade from your market-making bot on an external exchange.
Expected trade dict structure:
{
"symbol": "BTC/USDT",
"side": "buy" or "sell", # what YOUR MM bot did
"amount": 0.01, # base amount (e.g. BTC)
"price": 65000.0, # fill price on your MM venue
"id": "optional-mm-trade-id"
}
"""
symbol = trade["symbol"]
mm_side = trade["side"]
amount = float(trade["amount"])
mm_price = float(trade.get("price", 0)) # optional
# Opposite side for hedging
hedge_side = "sell" if mm_side == "buy" else "buy"
# Basic notional check
if mm_price > 0:
notional = amount * mm_price
if notional > MAX_NOTIONAL_PER_TRADE:
print(f"[SKIP] Notional {notional} exceeds limit {MAX_NOTIONAL_PER_TRADE}")
return
# Make sure the symbol exists on hedge exchange
if symbol not in hedge_exchange.markets:
print(f"[WARN] Symbol {symbol} not found on hedge exchange. Skipping.")
return
# Get current orderbook to have an idea of fair price & slippage
orderbook = hedge_exchange.fetch_order_book(symbol)
best_bid = orderbook["bids"][0][0] if orderbook["bids"] else None
best_ask = orderbook["asks"][0][0] if orderbook["asks"] else None
if best_bid is None or best_ask is None:
print("[WARN] Empty orderbook, skipping hedge.")
return
mid_price = (best_bid + best_ask) / 2
# Simple slippage check against MM fill price, if available
if mm_price > 0:
diff = abs(mid_price - mm_price) / mm_price * 10_000 # in bps
if diff > SLIPPAGE_BPS:
print(f"[WARN] Slippage {diff:.1f} bps > {SLIPPAGE_BPS} bps, skipping hedge.")
return
print(f"[HEDGE] MM {mm_side} {amount} {symbol} @ {mm_price}, "
f"placing {hedge_side} hedge on {HEDGE_EXCHANGE_ID} at market.")
try:
# Use market order for simplicity; in production you'd likely want limit orders.
order = hedge_exchange.create_order(
symbol=symbol,
type="market",
side=hedge_side,
amount=amount,
)
print(f"[OK] Hedge order placed: {order['id']}")
except Exception as e:
print(f"[ERROR] Failed to place hedge order: {e}")
# =========================
# INTEGRATION EXAMPLE
# =========================
def on_mm_trade_filled(trade):
"""
This function should be called by your MM bot whenever an order is filled
on your own exchange.
"""
# Here you could add filters (symbols, min size, etc.)
hedge_trade(trade)
# =========================
# DEMO / TEST
# =========================
if __name__ == "__main__":
# Simulated trade coming from your market making bot
simulated_trade = {
"symbol": "BTC/USDT",
"side": "sell", # your MM bot sold BTC to a user
"amount": 0.01,
"price": 65000.0,
"id": "mm-trade-12345",
}
on_mm_trade_filled(simulated_trade)
on_mm_trade_filled({
"symbol": symbol,
"side": side, # "buy" or "sell" from MM bot perspective
"amount": filled_amount,
"price": fill_price,
"id": trade_id,
})
That function just forwards the trade to the hedging logic, which places the opposite order on the hedge venue.
A five‑minute morning checklist for on‑call or ops.
What to do when reality misbehaves.
Safe retreat plan if a change backfires.
The small set of alerts that matter—each tied to an action.
Before you call a market “ready,” confirm these are ticked.
Bottom line: good markets are built, not found. Liquidity is not one switch. It is a system: automated quotes, external depth, strong anchors, and incentives that attract natural flow. Start with automation, add routing to hit targets, and let user demand take over as markets mature.
HollaEx® links from this playbook:
Related playbooks:
Modular Crypto Exchanges: The New Blueprint for Building Customizable Trading Platforms