Over the last few days, I've been building and testing a Polymarket trading bot focused on BTC and ETH 15-minute markets.
The idea is surprisingly simple:
Instead of predicting where Bitcoin or Ethereum will go over the next hour, day, or week, the bot attempts to identify situations where the market already appears nearly certain about the outcome and then enters shortly before settlement.
Think of it less as directional trading and more as an attempt to capture remaining uncertainty premium.
For more information about the strategy please read this medium article
The Core Idea
Suppose a market is trading:
- YES = 0.88
- NO = 0.12
If YES wins, each YES token settles for $1.00.
Buying at 0.88 means:
- Risk: $0.88
- Payout: $1.00
- Gross Return: 13.6%
The catch is obvious:
You need to win more often than the implied probability suggests.
If the market is perfectly efficient, there should be little or no edge.
The entire strategy depends on one question:
Are prediction markets systematically mispricing near-certain outcomes during the final seconds before resolution?
Why This Is Dangerous
At first glance the strategy looks easy.
It isn't.
There are several major risks.
1. Slippage
A trade that appears available at 0.88 may actually fill at 0.91 or 0.94.
A few percentage points of slippage can completely eliminate the expected edge.
2. Fees
Small expected returns become much smaller after fees.
When many trades only generate 1–3% ROI, execution costs matter.
3. Last-Minute Reversals
Crypto can move violently in the final candle.
A market showing 95% confidence can suddenly reverse if BTC or ETH experiences a sharp move.
4. Resolution Risk
Prediction markets introduce a unique risk:
Even a correct trade can experience delays if settlement is disputed or delayed.
Bot Architecture
The bot is intentionally simple.
Stack:
- Node.js
- TypeScript
- Ubuntu
Modes:
- Paper Trading
- Backtesting
- Live Trading
Data storage:
- JSON files
- CSV exports
No database.
No Docker.
No frontend.
Everything is logged directly to the terminal and stored for later analysis.
What the Bot Tracks
For every trade the system records:
- Entry probability
- BTC/ETH spot price
- Time remaining until resolution
- Bid/ask spread
- Liquidity
- Expected fill price
- Actual fill price
- Slippage
- Latency
- Fees
- ROI
- Final outcome
Example trade:
- BTC 15m market
- 85.5% probability
- Entry 41 seconds before resolution
- Stake: $50.86
- Profit: $7.88
- ROI: 15.49%
That single trade generated more profit than many of the 98–99% probability entries combined.
Early Results
Current results:
- Trades Settled: 22
- Wins: 22
- Losses: -$13.5
- Win Rate: 100%
- Profit: +$37.84
- Account Growth: approximately +3.8%
The highest quality opportunities were not always the highest probability trades.
Some of the most profitable trades occurred when the market was pricing outcomes around 85–95% rather than 99%.
That observation surprised me.
The Most Interesting Finding So Far
The strategy's biggest challenge isn't prediction.
It's execution.
In many cases:
- The market direction was correct.
- The probability estimate was correct.
- The trade still produced very little profit.
Why?
Because entering at 98–99% probability leaves almost no remaining premium to capture.
Several trades generated less than $1 profit despite being successful.
This suggests that:
- Win rate alone is not enough.
- Expected value matters more than accuracy.
- Better entries may exist at lower probabilities if risk remains controlled.
What I'm Investigating Next
I'm now collecting enough data to analyze:
- Spread vs profitability
- Slippage vs profitability
- Liquidity vs profitability
- Entry timing vs profitability
- BTC volatility vs profitability
- ETH volatility vs profitability
The goal is to identify which variables actually drive returns rather than relying on intuition.
Final Thoughts
A 100% win rate sounds impressive.
But 22 trades is nowhere near enough data to prove an edge.
The real test will come after hundreds or thousands of trades.
For now, the most valuable outcome isn't the profit.
It's the data.
Every trade helps answer the question:
Can prediction markets become inefficient during the final moments before resolution, and if so, under what conditions?
That's the problem I'm trying to solve.
Top comments (0)