I lost enough market-making on Polymarket to buy a decent used car. Not a great one. A decent one.
All to answer one question: why can a handful of wallets make markets here forever and print — while I copied the playbook line for line and just bled?
Seven versions of the bot. Real money on every one. What I finally understood was the exact opposite of what I set out to prove.
Full breakdown — code, order book, trade logs — below. 👇
—
Here's the theory. This part matters.
Polymarket binaries settle at $1 if you're right, $0 if you're wrong.
So in principle you can make a two-sided market: rest a bid on UP and a bid on DOWN at the same time. As long as your two legs cost less than $1 combined, you pocket the difference no matter which side wins.
That's the whole market-maker fantasy. On paper it's free money.
—
There was a wallet I'd been watching. Thousands of rounds. An equity curve so smooth it barely had a drawdown.
I figured: reverse-engineer her, copy her, done.
So the core of my bot was one rule — only quote when both legs cost under a dollar:
python
# only make a market when the combined cost of both legs < $1
def should_quote(up_bid, dn_bid):
combined = up_bid + dn_bid
return combined < 0.96 # leave a margin
Clean. Obviously correct. I let it run.
—
It bled.
v4, v5, v6 — I kept tuning. Out of every 8 rounds, 5 came back with both legs costing MORE than a dollar. Out of every 8, three lost on both sides at once.
I stared at the logs. Every line of the logic was right. So why was the account red?
—
So I stopped tuning my bot and pulled the whale's fills apart instead.
The number that came back broke my mental model of the entire game:
her inventory ratio between the two sides was 0.98. Basically one-to-one. Balanced. Every round.
Mine wasn't. Mine was violently lopsided — and I finally saw why. The back of my neck went cold.
—
Here's the killer nobody warns you about. It isn't price. It's fills.
I'd been obsessing over one condition — combined cost under $1. That's not one condition. It's three, chained together, and I only knew about one:
Layer 1 — price: both legs must cost < $1. (necessary) Layer 2 — inventory: your two sides must fill roughly equal. (also necessary) Layer 3 — direction: you can't get filled only on the losing side.
Watch what happens when Layer 1 holds but Layer 2 breaks:
combined cost 0.94 — under a dollar, looks safe. but inventory 100 vs 20. if the heavy side loses, you're down ~$36 on the round.
"Combined cost under a dollar" was fake protection the whole time. The math does not care that your price was safe if your size is on the wrong side.
—
And it gets worse. Why does retail always end up lopsided?
Queue position.
BTC ticks up. UP goes to 70¢, DOWN to 30¢. On the winning side (UP), the whale is sitting at best bid. I'm resting behind her, a few cents back, several dollars deep in the queue. Sellers hit her first. I never get filled on the side that wins.
On the losing side (DOWN)? I'm at the front. Everyone dumping the side that's dropping — they dump it straight onto me.
So by construction: I get filled on the losers, missed on the winners. Layer 3 breaks → Layer 2 auto-breaks → and Layer 1 being "safe" saves nothing.
That's adverse selection. In plain terms: my limit orders only got filled once the market had already moved against them. I wasn't earning the spread. I was paying a tax to everyone who could see one tick further than me.
It's poker where you're forced to show your hand first — and the only players who call are the ones already beating you.
—
And before you write this off as bad luck — it wasn't. I made it worse.
At one point I "fixed" the imbalance by topping up whichever leg was more unfilled. Which meant I was systematically adding to my position on the side that was losing. I built a bot to help me lose faster. Genuinely impressive engineering, wrong direction. I have the logs.
—
Then I tried to out-trade the problem with a martingale.
308 rounds: +2,637. The next 28 rounds: −3,606.
Doubling into a negative-expectancy game doesn't fix the expectancy. It just decides how loud the explosion is when it goes.
—
So here's the thing I set out to disprove, and couldn't.
The whale wasn't printing because she had a secret signal. She was printing because she was structurally the market maker — at best bid, filling both sides, inventory balanced, actually earning the spread.
I was standing in the same market, running the "same" strategy, and I was the exit liquidity. The spread I thought I was earning was the adverse-selection tax I was paying.
Making a market and being the market's mark look identical from the outside. The only thing that separates them is which side of the fill you land on — and retail is almost always on the wrong side.
The mechanism is real. It's just that in the one spot retail can actually reach it, it's already been picked clean.
—
For the makers reading this: if you've ever run a two-sided book on any venue — did you actually measure your fill ratio between the two sides? Or did you assume "combined cost under a dollar" was enough, the way I did?