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
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.
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.
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
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.