Open-source · Polymarket · Crowd momentum

A Polymarket bot that
surfs the crowd

Confidence Surfing Bot trades 5-minute and 15-minute Up/Down crypto markets on Polymarket. It doesn't predict price direction — it follows the crowd when the crowd is already confident, and it holds until the market resolves. 11,717 trades in five months.

11,717
Total trades
$292
Realized P&L
~77%
Win rate
6
Coin pairs
5 mo
Live runtime

The strategy in plain English

Most Polymarket bots try to predict direction — they look at news feeds, price charts, or oracle data and guess which way the asset moves in the next five minutes. This bot doesn't do that. Instead it waits until the crowd has already made up its mind.

When one side of a 5-minute market is priced at 70 cents or above, 70% of the money in that order book is on one direction. The bot confirms that signal against a live price feed. If both agree, it buys the dominant side — tiny position, hold to resolution, repeat.

01
Only enter at 70¢ or above

Below 70¢ the market is close to a coin flip. No edge, no trade. The bot waits for the crowd to form a clear view before touching any position.

02
Follow the crowd, never fade it

If Up is at 75¢, the bot buys Up. This is pure momentum confirmation — the crowd's 75% implied confidence is the signal, not the noise.

03
Keep positions tiny

0.2 to 1.0 shares per market, roughly $0.14 to $0.83 per bet. No single trade can blow up the account. Diversification across hundreds of positions is the risk management, not stop-losses or manual exits.

04
Hold to resolution, always

Markets resolve automatically in 5 or 15 minutes via Chainlink oracle. There's almost never a reason to exit early — and at these position sizes, the math rarely justifies the transaction cost.

05
Run 24/7 across all six pairs

Crypto markets don't sleep. XRP, BNB, ETH, SOL, BTC, and DOGE all run in parallel. This volume is only possible automated — human execution at 78 trades per day across six assets is not realistic.

What markets does it trade?

Three specific market types, all on Polymarket's crypto "Up or Down" section. No election markets, no sports, no politics.

Type Window Example Notes
5-Minute 5 min XRP Up or Down 5m Most frequent, tightest windows
15-Minute 15 min BNB Up or Down 15m Higher volume, slightly more efficient
Milestone Hour Fixed time SOL Up or Down — June 11, 7PM ET Less frequent, single-event resolution
Coin pair Share of positions
XRP~44%
BNB~19%
ETH~12%
SOL~12%
BTC~6%
DOGE~6%

The math — is there actually an edge?

At 75¢ entry, you risk 75¢ to win 25¢. To break even you need to win more than 75% of trades. At 80¢ you need more than 80%. The higher you enter, the tighter the margin.

This bot's observed win rate across 11,717 trades is roughly 77%, against a 75% break-even at average entry. That 2-point gap — winning 77% when 75% breaks even — is the entire edge. It works out to about $0.025 expected value per trade, which at 78 trades per day is roughly $1.95 a day, or $58 a month. Over five months: ~$290. The actual P&L is $292. The math and the real results match.

70¢
+30¢ profit if right
Break-even: >70% win rate
75¢
+25¢ profit if right
Break-even: >75% win rate
80¢
+20¢ profit if right
Break-even: >80% win rate
83¢
+17¢ profit if right
Break-even: >83% win rate

This isn't a get-rich strategy. It's a proof-of-concept for a thin, repeatable statistical edge in a specific niche. The win rate is everything — if it drops to break-even, the strategy stops working immediately.

Risks — the honest version

This section exists because most bot repos leave it out. These are real risks, not legal boilerplate.

Short-term crypto price movement is close to random

Sub-15-minute price series have near-zero autocorrelation. The crowd's 75¢ bid reflects recent momentum — a trailing signal, not a crystal ball.

Losing streaks hurt disproportionately

At 80¢ entry, five consecutive losses at the minimum cost $4.00 and take sixteen wins to recover. The asymmetric payout demands a high win rate to stay positive.

Positions can get stuck

Some positions remain unresolved for weeks due to oracle disputes or edge-case market conditions. Capital in a stuck position earns nothing until it clears.

Taker fees can erase the edge

At 78 trades per day, taker fees compound fast. This bot uses limit orders on the maker side to collect rebates instead. Running market orders eliminates the margin.

Automation fails fast when it fails

A 24/7 bot can lose money faster than you can catch it. Circuit breakers, position size limits, and robust error handling are not optional for live deployment.

Get started

Clone the repo, configure your wallet and API keys, and run with --dry-run first to validate the signal logic against live data before risking real capital.

# clone the repo
$ git clone https://github.com/Duclos76/confidence-surfing-bot.git
$ cd confidence-surfing-bot

# install dependencies
$ pip install -r requirements.txt

# dry run first — no real orders placed
$ python run_bot.py --config config.yaml --dry-run

# go live when you're satisfied with signal quality
$ python run_bot.py --config config.yaml

Full configuration reference and architecture breakdown in the README.