Simmer Market Maker

Places GTC limit orders on both sides (bid/ask) of liquid Polymarket markets. Finds active markets with >$10k 24h volume, mid-range prices, and ample time to resolve. Quotes spreads around the CLOB midpoint to capture bid/ask spread. Use when you want to passively earn spread as a market maker.

Audits

Warn

Install

openclaw skills install simmer-market-maker

Polymarket Market Maker

A market-making strategy that places GTC (Good-Till-Cancelled) limit orders on both sides of liquid Polymarket prediction markets, capturing the bid/ask spread.

Strategy

  1. Market Selection: Finds active markets with:

    • 24h volume > $10,000 (liquid enough to fill)
    • Price (YES probability) between 0.15 and 0.85 (avoids near-certain outcomes)
    • Resolves > 4 hours away (enough time to get fills)
    • No taker fees (is_paid=False) — 10% fee kills the edge
  2. Pricing: Fetches the live CLOB midpoint for each market and quotes:

    • YES buy limit at mid - 0.02 (2¢ below mid)
    • NO buy limit at (1 - mid) - 0.02 (2¢ below NO mid)
  3. Order Management: Cancels existing open orders before placing new ones each run.

  4. Limits: Max $5 per order, max 3 markets per run.

Requirements

Environment variables (required):

VariableRequiredDescription
SIMMER_API_KEY✅ YesYour Simmer API key — get it at simmer.markets/dashboard → SDK tab
TRADING_VENUEOptionalpolymarket (default) or sim for paper trading with virtual $SIM

Python dependency: simmer-sdk — install with pip install simmer-sdk

Setup

export SIMMER_API_KEY=sk_live_...         # required
export TRADING_VENUE=sim                   # optional: paper mode with $SIM
pip install simmer-sdk

Usage

# Dry run (default)
python market_maker.py

# Live trading
python market_maker.py --live

# Show current positions
python market_maker.py --positions

# Show config
python market_maker.py --config

# Set config
python market_maker.py --set max_order_usd=10.0

Config (env vars)

Env VarDefaultDescription
SIMMER_MM_MAX_ORDER_USD5.0Max USD per limit order
SIMMER_MM_MAX_MARKETS3Max markets per run
SIMMER_MM_MIN_VOL_24H10000Min 24h volume filter
SIMMER_MM_SPREAD_OFFSET0.02How far below mid to quote (2¢)
SIMMER_MM_MIN_PRICE0.15Min YES price to consider
SIMMER_MM_MAX_PRICE0.85Max YES price to consider
SIMMER_MM_MIN_HOURS_TO_RESOLVE4Min hours to resolution