I've been experimenting with automated trading strategies for Polymarket, particularly the short-duration BTC Up/Down markets.
One strategy I found interesting combines BTC momentum detection with dynamic TWAP execution.
The basic idea is:
Don't buy simply because BTC is moving. Buy when BTC momentum suggests an outcome is underpriced on Polymarket—and stop buying when that edge disappears.
This post explains the idea from a builder's perspective: the problem, the strategy, how I think about the system, and what I learned while designing it.
A 5-minute BTC prediction market looks straightforward.
You choose:
and wait for the market to resolve.
But predicting direction isn't enough.
Imagine my model estimates:
UP probability = 72%
while the Polymarket UP contract is trading around:
$0.61
There may be an interesting difference between the estimated probability and the market price.
But if the contract is already trading at:
$0.71
the situation is completely different.
So I wanted the bot to answer two questions:
1. Is BTC showing meaningful short-term momentum?
2. Is that information already reflected in the Polymarket price?
That became the foundation of the strategy.
The Strategy
The system has four main stages:
BTC Market Data
↓
Momentum
↓
Probability
↓
Market Price
↓
Dynamic TWAP
The important part is that each component has a different job.
Determines whether there is a directional signal.
Converts the signal into an estimated UP/DOWN probability.
Determines whether there is potentially enough edge.
Controls how the position is entered.
How I Detect Momentum
I'm interested in short-term BTC movement rather than long-term trends.
Some of the features I would monitor include:
10-second return
30-second return
60-second return
EMA slope
Volume acceleration
Order-book imbalance
A simplified momentum calculation could look like:
momentum = (
0.25 * return_10s +
0.35 * return_30s +
0.40 * return_60s
)
For example:
10s return = +0.05%
30s return = +0.11%
60s return = +0.18%
EMA slope = positive
Volume = increasing
Order book = bullish
The important thing isn't the exact formula.
The idea is to combine several short-term measurements instead of relying on one price movement.
Momentum Is Not the Entry
This is where the strategy differs from a simple momentum bot.
A typical strategy might do:
BTC goes up
↓
Buy UP
I don't want to do that.
Instead:
BTC goes up
↓
Momentum increases
↓
Estimate probability
↓
Compare with Polymarket price
↓
Is there enough edge?
For example:
Model probability = 72%
UP market price = $0.61
Potential difference:
72% - 61% = 11 percentage points
But:
Model probability = 72%
UP market price = $0.71
Now the potential difference is much smaller.
The same BTC signal can therefore produce completely different trading decisions.
Why TWAP?
Once I have a potential opportunity, there's another problem:
How much should I buy immediately?
Suppose the target position is:
600 UP shares
Buying all 600 at once can increase:
So instead, I can spread the entry:
600 shares
↓
50
50
50
50
...
over a period of time.
That's the TWAP part.
But I don't want a completely mechanical TWAP.
The Important Part: Dynamic TWAP
A normal TWAP essentially says:
"I have 600 shares to buy, so I will buy them over 60 seconds."
My approach is different:
"I want to buy up to 600 shares while the edge still exists."
That's a big difference.
Imagine:
Target = 600 UP
The bot buys:
50
50
50
50
50
50
Now the position is:
300 / 600
But BTC momentum starts weakening:
+0.68
↓
+0.55
↓
+0.39
↓
+0.18
The bot stops.
It doesn't force itself to purchase the remaining 300 shares just because the original target was 600.
This is one of the most important design principles in the strategy:
The position target is conditional on the signal remaining valid.
A Simple Example
Imagine a new 5-minute BTC market opens.
BTC = $100,000
UP = $0.48
DOWN = $0.52
BTC begins moving higher.
The system sees:
10s return +0.05%
30s return +0.11%
60s return +0.18%
EMA slope Positive
Volume Increasing
Order imbalance Bullish
The model produces:
Momentum score = +0.68
Then the probability model estimates:
UP probability = 71%
Meanwhile:
UP price = $0.58
The strategy sees a potentially attractive difference.
It starts the TWAP.
If momentum continues:
Momentum ↑
Probability ↑
Edge remains
↓
TWAP continues
If momentum reverses:
Momentum ↓
Probability ↓
Edge disappears
↓
TWAP stops
The bot doesn't need to finish the original order.
Why I Think This Is Interesting for Polymarket
The interesting part isn't simply momentum.
It's the interaction between two markets:
BTC market
↓
Information
↓
Prediction probability
↓
Polymarket price
BTC can move first.
Polymarket traders then react.
The prediction-market price changes.
That creates a constantly changing relationship:
BTC moves
↓
Momentum changes
↓
Probability changes
↓
Polymarket reprices
↓
Edge changes
The opportunity can therefore be very short-lived.
This makes execution just as important as prediction.
What Can Go Wrong?
There are several obvious failure modes.
BTC can make a short-term move and immediately reverse.
+0.05%
+0.12%
+0.20%
↓
-0.10%
-0.25%
The model can enter just before the reversal.
The model might correctly identify bullish BTC momentum, but the UP contract may already have moved from:
$0.48 → $0.65
At that point, the signal may no longer provide enough edge.
The theoretical edge might look attractive, but actual execution can reduce it substantially.
A 72% probability estimate is still only an estimate.
If the model isn't properly calibrated, the apparent edge may be misleading.
Five-minute markets don't give you much time.
Data latency, calculation latency, and order execution latency can all matter.
What I Would Measure
If I were evaluating this as a real trading product, I wouldn't focus only on win rate.
I'd track:
Signal-time edge
Execution-time edge
Average entry price
Slippage
TWAP completion rate
Expected value
Profit factor
Maximum drawdown
Position size
Execution latency
One metric I find particularly interesting is:
How much of the theoretical edge survives execution?
For example:
Signal edge: +10%
Execution edge: +6%
Realized edge: +3%
That immediately tells us there is a gap between the model and the actual trading system.
The model might be fine.
The execution might be the problem.
From Strategy to Product
This is also where I think the project becomes interesting from an Indie Hackers perspective.
The trading strategy is only one part of the product.
A usable system also needs:
Market Data
↓
Signal Engine
↓
Probability Model
↓
Risk Engine
↓
Execution Engine
↓
Position Manager
↓
Monitoring
↓
Dashboard
A profitable idea isn't enough.
You need a system that can:
That's where most of the engineering work starts.
What I Would Build Next
The first version can be relatively simple.
Start with:
BTC returns
+
Momentum score
+
Probability estimate
+
Market price
+
Dynamic TWAP
Then gradually add:
Better probability calibration
↓
Better execution logic
↓
Latency monitoring
↓
Advanced risk controls
↓
Backtesting
↓
Live performance analytics
I would rather have a simple strategy with reliable execution than a complicated model running on unreliable infrastructure.
The Main Lesson
The biggest lesson from this strategy is that prediction and execution shouldn't be separated.
A signal might be correct, but if the market has already adjusted, there may be no trade.
A trade might have a theoretical edge, but poor execution can destroy it.
And an order might have a target size, but that target becomes irrelevant if the original signal disappears.
So the system needs to continuously connect:
Signal
↓
Probability
↓
Price
↓
Execution
↓
Risk
That's the architecture I find most interesting.
Final Takeaway
The strategy can be summarized very simply:
Use BTC momentum to identify directional information, compare that information with the current Polymarket price, and use dynamic TWAP to participate only while the edge remains valid.
The interesting part isn't trying to predict every 5-minute BTC market.
It's trying to find the moments when BTC information and prediction-market pricing temporarily disagree.
Then enter gradually.
If the edge remains, continue.
If the edge disappears, stop.
That's the strategy.
And from a product-building perspective, the next challenge isn't just making the model smarter.
It's building the infrastructure that can execute the idea quickly, safely, and consistently.
I'm currently interested in improving the probability model, execution logic, and risk controls around this type of short-duration Polymarket strategy.
If you're building prediction-market bots, market-making systems, or similar event-driven trading infrastructure, I'd be interested to hear how you're approaching execution and signal validation.
🤝 Collaboration & Contact If you’re interested in building trading bots, buy trading bots, collaborating, exploring strategy improvements, or discussing about this system, feel free to reach out.
I’m especially open to connecting with:
Quant traders Engineers building trading infrastructure Researchers in prediction markets Investors interested in market inefficiencies
📌 GitHub Repository This repo has some Polymarket several bots in this system. You can explore the full implementation, strategy logic, and ongoing updates about 5 min crypto market here:
https://github.com/Benjam1nCup/Polymarket-trading-bot-python-V2
💬 Get in Touch
If you have ideas, questions, or would like to collaborate or want these trading bots, don’t hesitate to reach out directly. Feedback on your repo (based on your description & strategy)
Contact Info Telegram https://t.me/BenjaminCup
tags: #polymarket,#trading,#bot,#architecture,#tutorial,#TWAP