# poly-maker

Open-source maker-only quoting bot for Polymarket political markets, rebuilt for V2.

*https://predictionmarkets.tools/tools/poly-maker · Trading Clients, SDKs & Bots*

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | warproxxx |
| Category | Trading Clients, SDKs & Bots |
| Job | automation |
| Website | https://github.com/warproxxx/poly-maker |
| Pricing model | open-source |
| Free tier | true |
| Open source | true |
| Licence | MIT |
| Self-hosted | true |
| Tested hands-on | false |
| Last updated | 2026-10-01 |

### Availability

| Field | Value |
| --- | --- |
| Jurisdictions | asia, latam |
| Open to US persons | false |
| KYC required | false |

### Markets

| Field | Value |
| --- | --- |
| Subjects | politics |
| Settlement | crypto |
| Resolved by | none |

### Economics

| Field | Value |
| --- | --- |
| Taker fee | none |
| Maker fee | none |
| Liquidity model | clob |
| Platforms | cli |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | false |
| WebSocket | false |
| Scripting | none |
| Python | true |
| MCP server | false |
| Export | csv |

### Capabilities

Yes: screening, order_book, automation, live_trading, paper_trading, portfolio_tracking, alerts

No: charting, backtesting, calibration_scoring, cross_venue, news, tax_reporting

*Verified: pricing 2026-09-30; availability 2026-09-30; capabilities 2026-09-30.*

## What it is

A market-making bot for the international [Polymarket](https://predictionmarkets.tools/tools/polymarket) order book, published
on GitHub by the account warproxxx under the MIT licence, where it had 1,509 stars and 493 forks
on 1 October 2026. It is a single async Python process with
a command-line interface (`polymaker`): it discovers political markets through the Gamma API,
keeps a live order book per outcome token from the market WebSocket, and rests **post-only**
quotes on both sides, so it only ever adds liquidity and never crosses the spread by design.

The mechanics, as the README lays them out:

- **Quotes are two bids.** It computes a fair value from the depth-weighted midpoint and recent
  trade flow, leans it against current inventory, and posts a bid on YES and a bid on NO whose
  prices sum to less than one dollar. When both fill, the pair can be merged back into collateral
  at the difference - an exit that does not need to sell into the book.
- **A regime machine per market.** QUIET keeps quotes inside the liquidity-rewards band, TRENDING
  widens and halves size, EVENT pulls quotes after a sweep or jump, REDUCE_ONLY exits near an
  inventory cap or an end date, HALTED cancels everything on stale data, resolution or a kill
  switch.
- **Market selection by programme scoring.** `polymaker scan` ranks political markets by the
  liquidity-reward and maker-rebate programmes' scoring against volatility and spread; you add the
  ones you want to a TOML trade list.
- **Risk caps and a dead-man switch.** Per-market, per-event-group and total exposure caps, a
  daily-loss kill switch, and Polymarket's exchange heartbeat, which cancels resting orders within
  about ten seconds if the process dies.

State - positions, orders, PnL, the market catalogue - lives in one SQLite file, and raw
WebSocket and order events are journalled to disk for later replay.

**This is the second poly-maker.** From March 2025 to April 2026 the repository held a different
program: parameters read from a Google Sheet, a Node.js helper for merging positions, and
`py-clob-client` 0.28.0 underneath. Pull request #32, merged on 5 July 2026, replaced it with the
current package, versioned 2.0.0 in `pyproject.toml`. Almost everything written about poly-maker
elsewhere, including most of its forks, describes the first one.

## Availability

The code installs anywhere Python 3.12 and `uv` do. The venue does not: it trades only on
international Polymarket, which bars US persons and a list of other jurisdictions by physical
location - the [polymarket](https://predictionmarkets.tools/tools/polymarket) card has the list and how it is enforced. Nothing in
the licence restricts the code, but a quoting bot is for placing orders, so the flags above are
that venue's reach: what stops a US reader is the account at the other end, and there is no path
from this bot to [Polymarket US](https://predictionmarkets.tools/tools/polymarket-us).

What leaves your machine while it runs: calls to Polymarket's CLOB, Gamma and data APIs, JSON-RPC
calls to a public Polygon endpoint (`polygon-bor-rpc.publicnode.com` by default), and, if you
configure one, alert posts to your webhook.

## Pricing

Free and MIT-licensed; there is nothing to buy. Running it costs what the trading costs: resting
fills pay no Polymarket fee, and any exit taken with a marketable order pays the taker fee - see
[what a trade actually costs](https://predictionmarkets.tools/guides/what-a-trade-actually-costs). The `moneydoctor` self-test
deliberately buys and sells a small amount with real money, a few cents by the README's estimate.

The operator notes in `TIPS.md` leave one number open that you should not. They give the taker
fee as `rate × p(1-p)` per share with a rate of 0.04, say the client library treats that as "4%
(≈2–3% of notional)", and warn that if the UI shows 0.4% instead, every rebate estimate is ten
times too high. The schedule on the [polymarket](https://predictionmarkets.tools/tools/polymarket) card settles it on the 4%
reading: 0.04 × 0.5 × 0.5 is one cent a contract at 50 cents, which is 2% of a 50-cent stake and
1% of the dollar the contract pays out. The 0.4% reading would be a tenth of that.

## Markets & resolution

The bot resolves nothing. Markets end through the UMA [optimistic oracle](https://predictionmarkets.tools/glossary/optimistic-oracle),
and the bot's REDUCE_ONLY and HALTED states are how it stops quoting around an end date or a
resolution rather than anything that protects inventory already held. Inventory you still own at
resolution is a directional position in whatever the oracle decides.

Scope is **political markets**: the scanner filters Gamma by the `politics` tag. Neg-risk event
groups - several mutually exclusive outcomes under one event - are handled, with their own
worst-case loss cap.

## Integrations

Python 3.12, installed with `uv`, on Polymarket's own `py-clob-client-v2` for EIP-712 order signing
and the builder relayer client for deposit-wallet operations. The wallet setting defaults to
signature type 3, the [deposit wallet](https://predictionmarkets.tools/glossary/deposit-wallet), with types 0 to 2 for older
account setups. A `doctor` command preflights the wallet, clock, WebSocket and balances before
anything goes live, and `livetest` rests one deep post-only order and cancels it.

Alerts go to any webhook that accepts a JSON POST. There is no HTTP API of its own, no MCP server
and no second venue.

## Limitations

**The author says it can lose money, and has said worse.** The current README carries a warning
that market making on Polymarket is competitive and can lose money, calls the bot a reference
implementation and a research harness, and says to test in `--paper` mode first. Between 17
January and 5 July 2026 the warning read, in the author's words, "In today's market, this bot is
not profitable and will lose money." The README also links a thread on X summarising the author's
experience of running the first version; we did not read it.

**The operator notes are a record of a loss, and a useful one.** `TIPS.md` is written from one
supervised live session on two political markets and gives the result as a loss of about 15.51
dollars in total, most of it from one oversized fill on a thin book. Its ranked failure list -
adverse selection on gapped books, orders below the reward minimum size that earn nothing,
false regime signals on quiet markets, churn that loses queue position, and a positions endpoint
that lags during fast moves - is the most concrete description of what [a bot cannot
fix](https://predictionmarkets.tools/guides/what-a-bot-cannot-fix) that we have seen published by a bot's own author.

**The key in `.env` can move the funds.** `PK` signs orders and is the key to the wallet. It sits
in a plain file beside the code; [where your key lives](https://predictionmarkets.tools/guides/where-your-key-lives) is the
background on what that exposes.

**Quiet since July.** The last commit on `main` is dated 2026-07-09, four days after the rewrite
landed; there are no releases or tags. Four issues are open. The newest real bug report, #34 of
24 July 2026, shows that the order-flow half of the TRENDING test can never fire - the flow
estimate is bounded to between -1 and 1 and every shipped threshold is above 1 - and it has had no
reply. The dependency on `py-clob-client-v2` is pinned at 1.0.2, while Polymarket has since
shipped 1.2.0 and points new projects at [polymarket-client](https://predictionmarkets.tools/tools/polymarket-client) instead.

**Half-finished by its own account.** The README lists what is not built: a replay backtester over
the journals, and any external feed such as polls, news or other venues. Merging a YES-and-NO pair
back to collateral through a Safe or proxy wallet is not wired, so for most accounts inventory
leaves through limit sells.

**One venue, one topic.** Political markets on international Polymarket, and nothing else.

**Nothing here has been run by us** - not paper mode, not `livetest`, not a fill.

## Alternatives

**The forks.** GitHub reported 493 forks on 1 October 2026, and on 30 September 2026 the most-starred of them had
one star. The great majority copy the Google Sheets version and describe themselves that way, which
puts them on the retired V1 client; `unstatusthequo/polymaker-plus`, which adds opportunity
filtering, is one of those. None is a separately maintained product, and none is carded here.

Polymarket's own older keeper, `Polymarket/poly-market-maker`, is MIT-licensed and was last pushed
to in July 2024, well before V2; it is not carded here either.

A narrower tool aimed at the same reward band: [polymarket-lp-tool](https://predictionmarkets.tools/tools/polymarket-lp-tool)
does not create orders at all, only re-prices the ones you placed by hand to keep them inside the
band the rewards programme scores, and is not open source in the legal sense.

For a different strategy on the same venue, [polymarket-alpha-bot](https://predictionmarkets.tools/tools/polymarket-alpha-bot)
looks for covering portfolios across related markets. To build your own, start from
[polymarket-client](https://predictionmarkets.tools/tools/polymarket-client); [where the liquidity comes
from](https://predictionmarkets.tools/guides/where-liquidity-comes-from) explains what a resting quote is on the other side of,
and [why your bot gets throttled](https://predictionmarkets.tools/guides/why-your-bot-gets-throttled) covers the rate limits a
quoting loop runs into first.

## FAQ

### Does poly-maker still work after Polymarket's move to CLOB V2?

The current code was rewritten for V2 in July 2026 and its README says it was live-verified end to end, from authentication to posting and cancelling orders. Anything forked from it before 5 July 2026 is the old version, built on the V1 py-clob-client that Polymarket itself now says does not work.

### Does its author claim it is profitable?

Its own documents do not claim it. From January to July 2026 the README read - In today's market, this bot is not profitable and will lose money. The current README says market making on Polymarket is competitive and can lose money, and the operator notes record a supervised live session that ended about 15.51 dollars down.

### What credentials does poly-maker need?

Two values in a local .env file - PK, the private key of the wallet that signs orders, and BROWSER_ADDRESS, the Polymarket deposit address that holds the pUSD. The key is read by the process on your machine; there is no hosted component. An optional webhook URL sends alerts to Discord, Slack or ntfy.

### Which poly-maker fork should I use?

None stands out. The repository reported 493 forks on 1 October 2026, and sorted by stars on 30 September 2026 none had more than one. Most carry the pre-July Google Sheets version, which is built on the retired V1 client.

## Background

- [What running a bot does not solve](https://predictionmarkets.tools/guides/what-a-bot-cannot-fix.md) — A bot fixes speed and consistency. Rate limits, a missing rehearsal, a field that stops arriving, a partial fill and a paused market are not coding problems.

- [Why your bot gets throttled, and what the limit is counted against](https://predictionmarkets.tools/guides/why-your-bot-gets-throttled.md) — Kalshi meters tokens per account tier; Polymarket's order book meters requests per IP and queues the excess. What each counts, and what the libraries assume.

- [Where your key lives when software trades for you](https://predictionmarkets.tools/guides/where-your-key-lives.md) — Four different credentials are all called a key, and they differ in what a copy permits. What the clients in this catalogue ask for, and what to ask them back.

## Also worth comparing

- [Kreo](https://predictionmarkets.tools/tools/kreo.md) — Telegram copy-trading bot for Polymarket whose own fee follows the venue's midpoint curve.
- [PolyBot](https://predictionmarkets.tools/tools/polybot.md) — Telegram bot for Polymarket - copy trading and your own Auto Trader rules, from a Safe.
- [PolyCop](https://predictionmarkets.tools/tools/polycop.md) — Telegram copy-trading bot for Polymarket that holds your key and charges on every fill.
- [Polymarket LP Tool (polymarket_lp_tool)](https://predictionmarkets.tools/tools/polymarket-lp-tool.md) — Re-prices your hand-placed Polymarket orders to keep them inside the reward band.
- [Alphapoly (polymarket-alpha-bot)](https://predictionmarkets.tools/tools/polymarket-alpha-bot.md) — Self-hosted scanner for covering portfolios across correlated Polymarket contracts.
- [Betmoar](https://predictionmarkets.tools/tools/betmoar.md) — A Polymarket terminal and Discord bot, with a dashboard for UMA disputes nobody else has.
