Skip to content
Victor Ly

Polymarket market making

An automated market maker on the central limit order book of Polymarket, a prediction-market exchange, built and operated for GuruPolymarket, the account it trades under. It quotes index, commodity and event markets priced from its own models, and is paid for providing liquidity rather than for taking a view.

  • Python
  • asyncio
  • IBKR TWS API
  • WebSocket
  • Polygon PoS
  • Docker
  • systemd
  • Pyth Network

Net result

+$39,866

Sum of the other four figures

Liquidity rewards

$43,480

358 payouts across 257 separate days

Rebates & yield

$2,141

Maker and taker rebates, holding yield, referral

Trading P&L

−$4,072

Realised on closed positions · −0.08% of notional

Fees

−$1,683

Exchange fees on fills · −0.03% of notional

$4.95M notional (face value) · $2.88M traded in cash · 2,924 markets

P&L breakdown from the account's betmoar dashboard as of 2026-10-12, cross-checked against Polymarket's public API.

Public record

  • P&L breakdown on betmoar

    An independent Polymarket analytics site. The same split as this page — rewards (labelled LP), rebates, trading and fees — in the Overall PnL panel below the chart and calendar. It is live, so it will have moved on since 2026-10-12.

  • Transfers on Polygonscan

    The raw on-chain record: every settlement and payout as a token transfer, including each daily liquidity reward.

  • Polymarket profile

    The venue's own page for the account. Its profit figure opens on the past day and leaves out rewards and rebates, which are listed one by one under Activity.

Wallet 0x26519b47…b48c3471

betmoar allows visitors without a connected wallet a few views a day. If it shows its limit, Polygonscan has the same account's full on-chain record.

01

The problem

Polymarket pays a daily budget to whoever provides the best orders on a market. The revenue is that budget. The risk is that someone trades against you and leaves you holding a position that settles at zero.

So the whole thing is a pricing question. To know which orders are safe to leave on the book you need your own estimate of the odds — and the venue's own midpoint cannot be it, because the midpoint is exactly the number you are trying to second-guess.

02

How it works

  1. 01Price it independently

    Each market is priced from live market data and my own models rather than from the venue's midpoint, with every quote traceable back to the estimate that produced it.

  2. 02Decide what risk to hold

    The models carry an explicit uncertainty around them, and the system only quotes where the trade is worth taking across that whole range. When the uncertainty is wide, it quotes less — by design.

  3. 03Quote, requote, and step back

    Orders sit briefly and are reassessed continuously. Positions that do get taken are worked out promptly, position limits cap what can accumulate, and the system stops quoting a market entirely rather than trading against its own signals.

03

Risk and reliability

Most of the engineering here is not the quoting logic. It is everything that stops the quoting logic from running on bad information.

Liveness is not correctness

A market-data gateway once died while every conventional health check still reported fine, and the system quoted against a frozen tape. It now watches several independent signals that data is genuinely moving, and any one of them failing pauses every market.

Fail closed, and never cancel the protection

When data is in doubt, price lookups fail rather than return a stale value. Quoting stops; the orders that protect existing positions stay exactly where they are.

Limits that bind

Per-market position caps, a circuit breaker, and a hard stop when the model and the order book disagree by more than the model's own uncertainty allows.

04

Operations

It runs as systemd services on an always-on cloud VM, with the broker gateway containerised, a watchdog above it, and alerting to a phone. Behind it sit standalone verification harnesses that replay the awkward cases — frozen clocks, session boundaries, partial fills, feed death — and a runbook written for whoever has to fix it at seven in the morning, who is also me.

Days paid
257
Reward payouts
358
Months live
12

05

Beyond index markets

The same engine has also quoted sports, esports and event markets on the venue. The instruments differ, the mechanism does not: price it yourself, size it to the uncertainty, and stop when the edge is gone.

06

Reading the numbers

Cumulative liquidity rewards$43,480
2025-092026-10

A cumulative rewards curve rising from near zero in late 2025 to $43,480 by October 2026.

Liquidity rewards by month, cumulative from the first payout.

Over the period the system earned $43,480 in liquidity-provider rewards and $2,141 in rebates and yield. Trading lost $4,072 and fees cost $1,683, leaving $39,866 net.

The monthly curve is worth reading plainly too. The first months earned almost nothing while the models and the risk controls were being built, monthly rewards grew to a peak of $9,596, then fell back as the venue's reward budgets and the competition changed. That is the headline risk here: it is small, venue-dependent, and the edge gets competed away. A good business for one person, and not a career.

On the code

The repository is private while the system is live. The results are public at the links above, and I am happy to walk through the architecture or the modelling in an interview.