MM bot infrastructure

Polymarket Market Making Bot — What It Takes to Quote Both Sides Profitably

A Polymarket market-making bot quotes both sides of an order book and earns the spread. Building one requires inventory management, two-sided quoting, sub-second cancel/replace, and stale-market detection. Here is what PredictEngine handles for you.

What is a Polymarket market making bot?

A Polymarket market-making bot quotes both sides of an order book — bid and ask — around a fair-value estimate, with the goal of earning the spread when buyers and sellers cross your quotes. Instead of taking a directional view, the bot collects the bid-ask spread as compensation for providing liquidity.

On Polymarket's CLOB, market making works the same way it does in traditional markets, with one twist: every contract is binary (YES + NO sum to $1), and quotes are denominated in cents between 0.01 and 0.99. A market maker on a 0.42 / 0.45 quote sits on both sides of the book, refreshes when prices move, and books $0.03 of expected spread per share filled — minus adverse selection.

The reason MM is interesting on Polymarket: many markets are illiquid, spreads are wide (sometimes 5-15 cents), and traditional MM bots focus on the top 50 markets only. The mid-tail of Polymarket markets is under-served and can pay out steady edge to a properly-built MM bot.

Why building a Polymarket market maker yourself is hard

Market making has more moving parts than a directional bot because you are always exposed on both sides. The required infrastructure:

  • Two-sided quoting — for every market you make, you maintain a live bid and a live ask. Both have to be on the book simultaneously. If either expires or fills, you reload immediately or you stop making.
  • Fair-value estimation — your bid/ask are placed around a midpoint estimate. Bad midpoint = you are quoting too wide (no fills) or too tight (adverse selection eats you).
  • Inventory risk — when your bid fills, you are long YES. When your ask fills, you are short YES (long NO). You manage net exposure so a one-sided fill streak does not blow up your bankroll.
  • Cancel/replace latency — Polymarket's CLOB lets you cancel orders, but the round trip takes 100-400ms. Faster bots will fill your stale quotes before you can pull them. Cancel/replace timing is a real edge.
  • EIP-712 order signing — every quote and every cancel is a signed message. High-frequency MM means high-frequency signing, which means low-overhead signer code.
  • Stale-market detection — Polymarket sometimes pauses markets, freezes resolution, or shows a market as live when settlement has effectively happened. Quoting a stale market guarantees adverse fills.
  • Partial-fill handling — your $200 quote at 0.42 gets a $50 fill. Now you have $150 left on the book, an inventory position of 119 YES shares, and need to decide: re-quote, re-size, or sit.
  • Worker infrastructure / queue systems — quoting 10 markets simultaneously requires per-market workers, a shared inventory ledger, and a way to start/stop quotes without restarting the host.
  • Monitoring + reconciliation — you reconcile filled quotes against the orderbook on a loop, or your inventory state drifts from reality and you start making decisions on bad data.

Building a Polymarket MM bot from scratch vs PredictEngine

The work split between rolling your own and using PredictEngine:

ConcernBuilding yourselfPredictEngine
Two-sided quoting logicYou write the bid/ask refresh loopConfigured per market
EIP-712 signing per quoteHand-rolled via py-clob-clientHandled in service
Cancel/replace latencyYou optimize the network pathHosted near Polymarket's API
Inventory accountingYou maintain a ledgerPer-bot inventory tracking
Stale-market detectionYou poll market state on a loopBuilt-in stale-market guard
Partial-fill handlingYou write the partial-fill state machineBuilt-in reconciliation
VPS hostingYou run a serverHosted infra
Worker infrastructureYou orchestrate per-market workersMulti-market bot supported natively
Monitoring + alertsYou wire logs + pagingBuilt-in PnL + status

How PredictEngine handles market making

PredictEngine ships a market-making bot type with configurable inputs: target markets, spread width, inventory cap per side, quote refresh rate, and a maximum-loss kill switch. Under the hood, the platform handles the EIP-712 signing for every quote and every cancel, runs the cancel-replace loop on its own worker pool, and applies the platform-wide stale-market detection that ships with the scanner.

For inventory management, the bot maintains per-market net exposure and rebalances when the cap is hit — either by widening one side until adverse fills clean up the imbalance, or by issuing a corrective market order to flatten. You configure which behavior; the platform executes it.

For users who want a market-making strategy without operating a server fleet, this is the fastest path. For quant teams with sub-100ms latency requirements, py-clob-client directly is the right call — PredictEngine's hosted layer adds tens of milliseconds of round-trip overhead which is fine for most strategies but loses to in-region MM stacks.

Where Polymarket market making actually pays

A few patterns that produce consistent MM edge on Polymarket:

  • Mid-tail markets — top 20 markets are saturated; markets ranked 50-500 by volume have wider spreads and fewer competing makers.
  • Pre-event windows — markets in the hours leading up to a known catalyst (Fed decision, sports game) see two-way flow that an MM can sit on top of.
  • Resolution-uncertain markets at 0.90+ — late-stage markets where the outcome looks resolved but a small chance remains; spreads stay wide because few makers want the inventory risk.
  • Sports moneyline markets — fast-moving but predictable; an MM that adjusts mid-game to score updates can capture spread across many small trades.
  • New-market launches — first 24-48 hours of a new market have wide spreads while price discovery happens.

When to build a custom Polymarket MM bot

Custom MM infrastructure is worth building when your edge depends on sub-100ms cancel-replace latency, when you have a proprietary fair-value model that PredictEngine's defaults cannot express, or when you are running enough capital that the operational cost of your own stack is negligible relative to the spread captured.

For everyone else — anyone validating the idea, anyone running under $50k of MM capital, anyone who wants to focus on the strategy instead of the infrastructure — PredictEngine's market-making bot is the fastest path. Configure the spread, the inventory cap, and the target markets; deploy; monitor PnL. The signing, scanning, cancel/replace, and reconciliation are handled.

Run a market maker without writing the bot.

PredictEngine ships a configurable market-making bot — set the spread, the inventory cap, and the target markets. The signing, scanning, cancel/replace, and reconciliation are handled.

Frequently Asked Questions

Related