Most Polymarket bots do not make money. Of the 2,500 wallets that traded Polymarket's Bitcoin Up or Down markets around the clock over four weeks, 32% finished in profit after fees and rebates, and the typical one lost $59. The profitable ones had three things in common: they traded both sides of a window, filled mostly as makers and were large enough for rebates to matter. We pulled every fill in the 5-minute and 15-minute markets, 14.6 million trades from 53,321 wallets, and worked out what each wallet kept. It is the same test we apply to our own Polymarket trading bot, and its public account is in the data below.
The sample is the 28 days from September 6 to October 3, 2026. A wallet counts as a bot here when it traded in at least 20 of the 24 hours of a day, on three or more days, because nobody does that by hand. Below: how much of the market the bots are, who made money, whether the winners repeat, why win rate is the wrong number to look at, and a script to check any bot's wallet yourself. Last updated October 4, 2026.
Key takeaways
- Bots are the market. 4.7% of wallets trade around the clock, and they do 70% of the volume.
- Two in three lose. 32% of the always-on bots were in profit after fees and rebates, 28% before rebates. The median bot lost $59.
- As a group the bots came out about even. They took $1.1 million from everyone else before fees, paid $2.5 million in taker fees and got $1.5 million back in rebates. Everyone else lost $3.0 million.
- The winners quote. 49% of the bots that fill almost only as makers were in profit, against 26% of the bots that only take.
- Results repeat, but weakly. A bot in profit over the first two weeks was in profit over the next two 47% of the time; a bot that was losing, 24%.
- Win rate tells you nothing. 786 bots won 70% or more of their windows, and 31% of them made money.
- A profile's "Total PnL" is counted before fees. Check the wallet instead; the script is below.
Table of contents
- What we measured
- How much of the market is bots
- Are Polymarket bots profitable
- Where the profit goes
- Do the same bots keep winning
- What the profitable bots have in common
- Polymarket win rate: why a high one proves nothing
- What maker and taker rebates change
- Our own Polymarket bot results in the same data
- Does Polymarket allow bots
- How to check a Polymarket bot before you trust it
- FAQ
- Methodology and sources
What we measured
Polymarket opens a Bitcoin Up or Down market every 5 minutes and another every 15. Each has two shares, Up and Down, and the one that turns out right pays $1 (how these markets work). We took every market that opened in the 28 days: 8,064 five-minute windows and 2,688 fifteen-minute ones, with 14.6 million trades and $471 million of volume counting both sides of each trade.
For every wallet in every window we added up one number:
result = sells − buys − taker fees + $1 for each share held on the winning side
Takers, whose orders cross the spread, pay a fee of shares × 0.07 × price × (1 − price). Makers, whose resting orders get hit, pay nothing. Before fees the market is zero-sum: across all wallets the results in a window add up to zero. After fees they add up to minus the fees, which came to $4.6 million over the 28 days.
Then we added rebates. Polymarket returns 20% of the taker fees to makers and a further share to high-volume takers, and for the busiest wallets the rebates are larger than the trading profit.
The wallets fall into three groups:
- Always-on bots. Traded in at least 20 of the 24 UTC hours on at least 3 of the 28 days.
- Regular traders. Not around the clock, but in 100 or more windows. A mix of part-time bots and active people.
- Occasional traders. Everyone else, with fewer than 100 windows.
Two cautions. A wallet is not a person: one operator can run several wallets, and some of the top ones clearly do. And "always-on" is the kind of bot this data can prove is a bot. A script that trades two hours a day is counted with the people.
How much of the market is bots
| Group | Wallets | Share of wallets | Share of volume | Taker share of their volume | Median windows traded |
|---|---|---|---|---|---|
| Always-on bots | 2,500 | 4.7% | 69.7% | 40% | 1,133 |
| Regular traders | 7,398 | 13.9% | 23.8% | 74% | 223 |
| Occasional traders | 43,423 | 81.4% | 6.6% | 81% | 5 |
One wallet in twenty does more than two thirds of the trading. The bots are also the ones resting in the order book: 60% of their volume is maker fills, and they supplied 85% of all the maker volume in these markets. The other two groups mostly take. When a person clicks Buy in a Bitcoin Up or Down market, the other side of the trade is usually a bot.
Volume is concentrated further up as well. The ten largest wallets did 16% of it and the hundred largest 45%.
Are Polymarket bots profitable
| Group | Before fees | Taker fees | Rebates | Result | In profit |
|---|---|---|---|---|---|
| Always-on bots | +$1,126,053 | $2,481,947 | $1,546,288 | +$190,394 | 32% |
| Regular traders | −$663,426 | $1,537,680 | $186,665 | −$2,014,441 | 23% |
| Occasional traders | −$462,627 | $581,278 | $32,858 | −$1,011,047 | 26% |
| Everyone | $0 | $4,600,905 | $1,765,810 | −$2,835,095 | 26% |
"Result" is what was left after fees and rebates, and "In profit" is the share of wallets that finished above zero on that measure. Read across the first row. Before fees the bots took $1.1 million from the other two groups. They paid $2.5 million in taker fees, which left them $1.4 million down, and rebates brought them back to slightly above zero. As a group, 2,500 bots traded $328 million in four weeks and kept $190,000.
The bottom row is the cost of playing. Traders paid $4.6 million in fees, $1.8 million came back as rebates, and $2.8 million stayed with Polymarket.
The group total hides a wide spread:
More than a third of the bots, 909, finished within $100 of zero. Most of those trade a few dollars a window; the median bot's volume per window was under $10. Of the rest, 1,054 lost more than $100 and 537 made more than $100.
One wallet moves the group total by itself. An always-on market maker in the 15-minute markets lost $561,000, the largest loss in the data. Without it the bots would be $751,000 up instead of $190,000. That is why the share in profit and the median say more than the sum.
The other groups did worse. Regular traders lost $2.0 million, 23% of them finished in profit, and the median one lost $48. The median occasional trader, with five windows, lost $4. Among all the wallets that are not always-on, size helped: 24% of those averaging under $20 a window were in profit, against 63% of the 103 wallets averaging more than $2,000.
Where the profit goes
Among the bots the gains are concentrated in a few wallets:
- The median bot lost $59. The bot at the 75th percentile made $48, the one at the 90th $1,266 and the one at the 95th $5,006.
- 70 bots made more than $10,000, and 32 lost more than $10,000.
- The ten best bots took 26% of all the bots' gains. The ten worst took 50% of the losses.
The ten best results among the always-on bots:
| Wallet | Volume | Taker share | Both sides | After fees | Rebates | Result |
|---|---|---|---|---|---|---|
0x3048...7537 | $6,256,812 | 78% | 99% | +$20,031 | $83,975 | +$104,006 |
0x32ed...8ec3 | $2,293,466 | 22% | 68% | +$74,702 | $11,570 | +$86,272 |
0xb27b...5b82 | $6,881,430 | 5% | 100% | +$48,481 | $34,701 | +$83,182 |
0x3725...ad88 | $1,985,445 | 20% | 63% | +$71,427 | $10,158 | +$81,585 |
0xc533...69a9 | $3,293,792 | 82% | 95% | +$33,211 | $44,935 | +$78,146 |
0xc2ad...40ed | $2,116,229 | 21% | 66% | +$66,925 | $10,795 | +$77,720 |
0x41e2...a354 | $4,914,267 | 83% | 97% | +$30,325 | $37,300 | +$67,625 |
0xcd30...2dd0 | $2,623,199 | 1% | 98% | +$41,686 | $11,823 | +$53,509 |
0x0ca4...77a6 | $1,772,974 | 83% | 86% | +$27,805 | $24,217 | +$52,022 |
0x21f4...691d | $13,678,638 | 29% | 99% | −$31,233 | $82,090 | +$50,857 |
"Both sides" is the share of a wallet's windows in which it bought both Up and Down. Three things stand out. All ten did that in most of their windows. For four of them rebates were more than half of the result, and the tenth lost money on its trades and reached the list on $82,000 of rebates. And the wallets ranked second, fourth and sixth traded nearly the same windows with the same mix, so they are probably one operator with three wallets and about $246,000 between them.
Not every large winner was an always-on bot. Of the 100 best results in the whole sample, 63 were always-on bots, 21 were regular traders and 16 were occasional traders. Four wallets outside the bot group made more than $50,000 each, in two to eleven days of trading and with more than $1,000 a window.
Do the same bots keep winning
A bot that made money for a week may have been lucky. With four weeks we can check whether results carry over.
1,479 of the bots traded in all four weeks. If each week were a coin flip, 6% of them would finish all four in profit and 6% none:
| Weeks in profit | Bots | Share | Coin flips |
|---|---|---|---|
| None | 295 | 20% | 6% |
| 1 | 435 | 29% | 25% |
| 2 | 345 | 23% | 38% |
| 3 | 259 | 18% | 25% |
| All 4 | 145 | 10% | 6% |
Both ends are heavier than chance. One bot in ten won every week and one in five lost every week, so losing repeats more reliably than winning.
Split the period in half and the picture is the same. Of the bots in profit over the first two weeks, 47% were in profit over the next two. Of the bots that were losing, 24%. A good first fortnight doubled the odds of a good second one, and still left them slightly worse than a coin flip. The rank correlation between a bot's return in the first half and in the second was 0.20.
The clearest pattern is who was still running at the end. 1,104 wallets were always-on in the first week:
| In the last week | Bots | In profit over the 28 days | Median result |
|---|---|---|---|
| Still always-on | 642 | 52% | +$16 |
| Trading less | 169 | 18% | −$125 |
| Gone | 293 | 24% | −$59 |
More than a quarter of the bots running in the first week had stopped trading by the fourth, and the ones that stopped were mostly the ones that were losing. The same shows up when bots are sorted by how many days they ran:
| Days always-on | Bots | In profit |
|---|---|---|
| 3 to 6 | 1,155 | 23% |
| 7 to 13 | 640 | 24% |
| 14 to 20 | 347 | 45% |
| 21 to 28 | 358 | 61% |
This is survivorship, and it cuts both ways. A bot that has run for months has probably not been losing. But the bots you can see running today are the ones nobody switched off, so their results overstate what a new bot should expect.
What the profitable bots have in common
Three traits separate the bots in profit from the rest.
They quote instead of taking.
| Share of volume filled as taker | Bots | In profit | Median return on volume |
|---|---|---|---|
| Under 10% | 608 | 49% | −0.09% |
| 10% to 50% | 299 | 34% | −0.76% |
| 50% to 90% | 466 | 22% | −1.46% |
| Over 90% | 1,127 | 26% | −1.06% |
They trade both sides of a window.
| Windows with both Up and Down bought | Bots | In profit | Median return on volume |
|---|---|---|---|
| Under 20% | 1,816 | 29% | −1.10% |
| 20% to 80% | 577 | 36% | −0.71% |
| Over 80% | 107 | 59% | +0.21% |
They trade more than pocket money.
| Average volume per window | Bots | In profit | Median return on volume |
|---|---|---|---|
| Under $50 | 2,074 | 27% | −1.18% |
| $50 to $250 | 358 | 53% | +0.11% |
| $250 to $1,000 | 58 | 62% | +0.17% |
| Over $1,000 | 10 | 90% | +0.30% |
Size does not make a bot profitable by itself. The largest loss in the data belongs to the last row, and people put more money behind a bot that already works, while a bot running at $10 a window is often somebody's test. But size is also what earns rebates, and the section on rebates below comes back to that.
The fee explains most of the first table. This is what buys were worth at settlement across the whole market, by the price paid:
| Price paid | Maker buys | Taker buys, after the fee |
|---|---|---|
| Under 10¢ | +4.1% | −17.6% |
| 10¢ to 30¢ | +0.1% | −5.5% |
| 30¢ to 50¢ | −2.4% | −4.8% |
| 50¢ to 70¢ | +0.4% | −0.9% |
| 70¢ to 90¢ | +0.2% | −1.3% |
| 90¢ and up | +0.4% | −0.2% |
Taker buys lost money in every price range and lost most on cheap shares, where the fee is the largest part of the stake. Maker buys came out within half a percent of zero in four ranges out of six, before rebates. The taker losses are about the size of the fee itself, which is 4.9% of the stake at 30¢ and 3.5% at 50¢. Put another way, the prices in these markets are close to fair, and a taker pays the fee on top.
Polymarket win rate: why a high one proves nothing
| Share of windows won | Bots | In profit |
|---|---|---|
| Under 40% | 348 | 24% |
| 40% to 50% | 482 | 30% |
| 50% to 60% | 602 | 41% |
| 60% to 70% | 282 | 28% |
| 70% and up | 786 | 31% |
786 bots won at least 70% of the windows they traded, and 69% of those still lost money. The share in profit is highest in the plain 50% to 60% band.
The reason is the price. A share bought at 90¢ wins nine times in ten, and loses money if it wins only 89 times in a hundred. What a taker needs is a win rate above the price plus the fee:
| Price paid | Taker fee per share | Fee as a share of the stake | Win rate to break even as a taker | As a maker |
|---|---|---|---|---|
| 10¢ | 0.63¢ | 6.3% | 10.6% | 10% |
| 30¢ | 1.47¢ | 4.9% | 31.5% | 30% |
| 50¢ | 1.75¢ | 3.5% | 51.75% | 50% |
| 70¢ | 1.47¢ | 2.1% | 71.5% | 70% |
| 90¢ | 0.63¢ | 0.7% | 90.6% | 90% |
| 95¢ | 0.33¢ | 0.35% | 95.3% | 95% |
A bot that buys favorites late in the window will show a 90% win rate and can still be losing. Judge a bot by dollars after fees, not by its share of wins. Our 5-minute and 15-minute studies measure how often a lead of a given size actually holds, which is the number to set against the price.
What maker and taker rebates change
For the bots, rebates were worth more than trading. Over the 28 days the always-on bots lost $1.36 million after fees and received about $1.55 million in rebates: $811,000 as makers and $735,000 as takers.
- Maker rebates. 20% of the taker fees in a market go back to the makers whose orders were filled, in proportion to the fees their fills generated. They are paid daily.
- Taker rebates. Since May 28, 2026, takers get part of their fee back by tier. The published tiers depend on 30 days of weighted volume across Polymarket and run from 3% at $2,000 to 50% at $10 million.
95 bots lost money on their trades and finished in profit only because of rebates. At the top the effect is larger: the best result in the data made $20,000 from trading and $84,000 from rebates.
Rebates are also why a small account cannot copy a large one. The same orders at a hundredth of the size pay the same fee rate and get a lower tier's share of it back.
Our own Polymarket bot results in the same data
Our bot runs on a public account, @dangerously-skip-permissions, so it is one of the 2,500. Its numbers in these markets over the same 28 days:
| Measure | Our account |
|---|---|
| Windows traded | 7,415 |
| Volume | $3,293,792 |
| Taker fees paid | $82,747 |
| Result after fees | +$33,211 |
| Rebates | $44,935 |
| Result after fees and rebates | +$78,146 |
| Rank among the 2,500 always-on bots | 5 |
By week the result was +$24,316, +$19,556, +$15,577 and +$18,697. All four weeks were in profit, and another four weeks would give different numbers. More than half of the result is rebates, which depend on volume, as the section above explains. Since the account opened in July 2026 it has made $99.2K after $179.5K of taker fees, plus $95.7K in rebates (to October 11, 2026).
That is one account with its own settings and capital, not a forecast for anyone else's. We show it because a bot seller should pass the test this article applies to everyone: a public wallet, counted after fees.
Does Polymarket allow bots
Yes. Automated trading is a supported use of Polymarket, not a loophole:
- The API and SDKs are official. Polymarket documents its order book API and maintains its own TypeScript and Python SDKs. Its docs list bots among the things the TypeScript SDK is for.
- The limits are sized for machines. The published limit for placing orders is 200 a second, sustained.
- The fee system pays for it. Maker rebates go to whoever keeps resting orders in the book, and the taker rebate tiers run up to $10 million of weighted volume a month.
What Polymarket restricts is behavior, for bots and people alike. The rebate terms name wash trading, self-matching and other inauthentic trading as breaches of the Terms of Service, and Polymarket can take rebates and tier status away for them. Marketable orders on crypto markets are held for 150 ms before they match, which gives resting quotes a moment to be cancelled; that is a speed bump for takers, not a ban on automation. And access depends on where you live. Polymarket is not available in every jurisdiction, and placing the orders through a script does not change that.
How to check a Polymarket bot before you trust it
- Ask for the wallet, not a screenshot. Every Polymarket account is a public wallet with a public history. Someone who runs a working bot can give you the address.
- Read the result after fees. The "Total PnL" on a Polymarket profile does not subtract taker fees. On October 11, 2026 our own profile showed $278.3K; after $179.5K of fees the account had made about $99K. Count rebates separately, because they depend on volume you may not have.
- Look at more than one good week. In our data a bot that was in profit over two weeks was in profit over the next two less than half the time.
- Check where your key lives. A bot signs orders with your private key, so the key should stay in a file on your own machine. In March 2026 StepSecurity reported a hijacked GitHub organization handing out Polymarket trading bots that stole wallet keys. On May 20, 2026 nine npm packages posing as Polymarket trading tools were published that read
PRIVATE_KEYfrom a project's.envfile and sent it to a remote server. - Run it on paper first. A bot should prove itself against the live order book before it touches money. See what paper trading mode is and risk management before going live.
The script for the first two steps uses only Polymarket's public data API and works on any wallet:
import time
import requests
DATA = "https://data-api.polymarket.com/v2"
WALLET = "0xc53375ff94e96100f2b30a4b5775db35218d69a9" # any public wallet
DAYS = 28
def get(path, **params):
r = requests.get(f"{DATA}/{path}", params=params, timeout=30)
r.raise_for_status()
return r.json()
def rebates(wallet, since):
"""Maker and taker rebates actually paid to the wallet since a timestamp."""
total = 0.0
params = {"user": wallet, "type": "MAKER_REBATE,TAKER_REBATE",
"start": since, "limit": 1000}
while True:
page = get("activity", **params)
total += sum(row["usdc_size"] for row in page["data"])
cursor = page["pagination"]["next_cursor"]
if not cursor:
return total
params = {"user": wallet, "cursor": cursor}
since = int(time.time()) - DAYS * 86400
# One cumulative point per day. realized_pnl is profit after taker fees;
# fees is a negative running total.
points = get("user-pnl", user=WALLET, interval="max", fidelity="1d")["data"]["points"]
points = [p for p in points if p["timestamp"] >= since]
first, last = points[0], points[-1]
daily = [b["realized_pnl"] - a["realized_pnl"] for a, b in zip(points, points[1:])]
traded = [d for d in daily if d]
print(f"{WALLET[:10]}, last {DAYS} days")
print(f" result after fees ${last['realized_pnl'] - first['realized_pnl']:+,.0f}")
print(f" taker fees paid ${first['fees'] - last['fees']:,.0f}")
print(f" rebates received ${rebates(WALLET, since):,.0f}")
print(f" days in profit {sum(d > 0 for d in traded)} of {len(traded)}")
print(f" worst day ${min(traded):+,.0f}")
Run on October 11, 2026 against our account, across all the markets it trades, it printed:
0xc53375ff, last 28 days
result after fees $+36,304
taker fees paid $93,190
rebates received $50,544
days in profit 23 of 28
worst day $-971
Twenty-three winning days out of 28, and a worst day that gave back $971. Even a bot near the top of this sample has losing days, which is why a bot needs position limits and a daily stop as much as it needs an entry signal.
Our Polymarket trading bot is a Python script you run on your own machine or VPS, built for the 5-minute and 15-minute Bitcoin Up or Down markets (how the 5-minute setup works). It has directional, maker and two-sided modes with every threshold in a config file you control, a paper trading mode that fills against the real order book, a daily-loss kill switch and exposure cap, and Telegram reports with CSV exports. Your private key stays in a local .env file; we never see it. The account above is where we run it in public. One payment, no subscription, full source code.
FAQ
Do Polymarket bots work?
Some do, most do not. In our 28-day sample of the BTC Up or Down markets, 32% of 2,500 always-on bots finished in profit after fees and rebates, and the median bot lost $59. The profitable ones mostly quoted both sides as makers, traded $50 or more a window and kept running for the whole period.
Are Polymarket trading bots profitable?
As a group, barely. The always-on bots made $1.1 million before fees, paid $2.5 million in taker fees and received $1.5 million in rebates, which left them $190,000 up on $328 million of volume. 70 bots made more than $10,000 and 32 lost more than $10,000.
Does Polymarket allow bots, or ban them?
It allows them. Polymarket publishes its trading API, maintains official SDKs and pays maker rebates to accounts that quote all day. What it can penalize is behavior such as wash trading and self-matching, and trading from a restricted jurisdiction breaks its terms whether or not a script places the orders.
What win rate does a Polymarket bot need?
More than the price it pays plus the fee. A taker buying at 50¢ needs to win 51.75% of the time, and at 90¢ 90.6%. A maker pays no fee and needs only the price. In our data 786 bots won 70% or more of their windows and 69% of them lost money.
How much do Polymarket bots make?
The median always-on bot lost $59 in 28 days. A quarter made more than $48, a tenth more than $1,266 and one in twenty more than $5,006. The best single wallet made $104,000, of which $84,000 was rebates.
Is the profit on a Polymarket profile after fees?
No. "Total PnL" on a profile does not subtract taker fees and does not include rebates. Our own account showed $278.3K on October 11, 2026; after $179.5K of fees it had made about $99K, and rebates added $95.7K.
Are free Polymarket bots from GitHub safe?
Some are not. Security researchers reported fake Polymarket bots that stole wallet keys in March and May 2026, through a hijacked GitHub organization and through npm packages. Read the code that touches your private key before you run anything, keep the key in a local file, and test with a wallet that holds very little.
Methodology and sources
Data. Polymarket's public data API, data-api.polymarket.com/v2/trades, for every BTC Up or Down 5-minute and 15-minute market that opened from September 6 to October 3, 2026 UTC: 10,752 windows, 14,639,853 trades, 42,659,807 wallet-sides of those trades and 53,321 wallets. Window ids and outcomes came from the Gamma API. The feed has no maker or taker field, so each window was pulled twice, once with all rows and once with taker rows only, and the taker rows were flagged by matching.
Results. A wallet's result in a window is its sells minus its buys minus taker fees, plus one dollar for every share it held on the winning outcome. The taker fee is shares × 0.07 × price × (1 − price), which we checked against the fee recorded on individual fills. Before fees every window must add up to zero across all wallets; the worst window in the sample was off by one cent.
Rebates. Maker rebates follow the published formula, 20% of a market's taker fees split by each maker's fee-equivalent. Taker rebates depend on a wallet's tier across all of Polymarket, so for 10,918 wallets (every bot, every wallet with 100 or more windows and every wallet that paid $100 or more in fees, together 95% of all fees) we read the rebates actually paid and counted them in proportion to the share of the wallet's fees paid in these markets. One-off tier bonuses are left out.
Check. 1,698 wallets traded nothing else on Polymarket in the period: their volume and fees in these markets match their totals. For them our result after fees is within 19 cents of Polymarket's own realized-profit series for the median wallet, and within $28 for nine in ten.
Limits. (1) Wallets are not people, and one operator can run several. (2) "Always-on" finds bots that run around the clock; a bot that trades a few hours a day lands in the other groups. (3) Four weeks is one market regime, and a wallet's result over four weeks is noisy. (4) Only BTC 5-minute and 15-minute markets are counted, not a wallet's results elsewhere on Polymarket. (5) Fills show what traded, not the orders that were placed and cancelled. (6) A share moved between wallets is counted where it was traded.
Sources. Polymarket trading fees; Maker Rebates Program; Taker Rebate Program; Data API v2 migration guide; SDKs and APIs; rate limits; predictions changelog (taker delay, order limits); StepSecurity on the hijacked dev-protocol GitHub organization; OSV advisory MAL-2026-4212.
This article is educational and is not financial advice. It describes public trading histories and makes no claim about anyone's future results, including our own account's. Prediction markets are risky and most short-term traders lose money. Polymarket is not available in every jurisdiction; check the rules where you live before trading.
