Polymarket: https://polymarket.com/@abrownfox001?tab=activity
GitHub: https://github.com/abrownfox0/abrownfox001-twap60-prediction-trigger-system
Telegram: https://t.me/abrownfox001
What the system actually is
@abrownfox001 is a BTC 5-minute Up/Down specialist.
It is not a 94–99¢ convergence farmer.
It is not a copy-trader.
It is not a multi-market spray bot.
The live loop is:
- Discover the current
btc-updown-5m-*slot - Read latest Chainlink TWAP against the slot-open reference
- Convert that into a directional probability
- Enter only in the 45–55¢ band
- Re-score every 10–30 seconds
- Scratch weak tickets near breakeven
- Redeem only the legs that still have conviction at resolution
The TypeScript reference engine in the repo is split the same way:
| Module | Role |
|---|---|
src/index.ts |
Process entry point |
src/engine.ts |
Slot lifecycle: enter → hold → scratch → redeem |
src/twapFeed.ts |
Chainlink TWAP stream via Polymarket RTDS (30s window on 5m) |
src/signal.ts |
TWAP-based P(up) vs slot-open |
src/cexFeed.ts |
Auxiliary CEX mid for lead-lag |
src/markets.ts |
Gamma discovery of btc-updown-5m-{ts}
|
src/clob.ts |
CLOB v2 books + limit/taker execution |
src/config.ts |
Runtime knobs |
Why TWAP is the whole design
After the August 2026 cutover, 5-minute crypto Up/Down markets no longer settle on a last tick.
They settle on a 30-second Chainlink TWAP.
That one change invalidates a large class of bots:
- last-price spike hunters
- expiry-wick snipers
- models labeled on a single CEX close
If the venue settles on TWAP, the forecast target must be TWAP.
The engine therefore treats three prices as first-class state:
-
open_ref— slot-open reference -
twap_now— latest official 30s TWAP -
book_mid— current Up/Down mid on the CLOB
The directional question is not “is Binance ticking up?”
It is “is the settlement path currently pointing above or below the open reference?”
CEX mid is only an auxiliary lead-lag input. It is never the resolution source.
The slot as a state machine
Every 5-minute market is a short-lived process, not a standing order book strategy.
SlotOpen
-> WaitForSignal
-> Accumulate (BUY 45–55¢)
-> ReScore (every 10–30s)
-> Scratch (~breakeven SELL) if conviction decays
-> Hold if conviction holds
-> Redeem if held side wins
That design has two consequences.
First, most markets never become a resolution bet. Weak reads get flattened. In public samples this shows up as a large number of same-market buy+sell pairs at almost identical prices.
Second, the resolved book is a filtered subset. That is why a held-side win rate can look better than raw signal accuracy. The system is not trying to be right on every slot. It is trying to avoid paying $0 on the weak ones.
Why entries stay near 50¢
At p ≈ 0.50, binary EV is roughly:
[
EV \approx 0.50 \times (2w - 1)
]
A 60.7% held-side win rate at a 50¢ entry is about +10.7% of stake before the extra lift from:
- buying some winners slightly below 50¢
- scratching losers before they go to $0
That is a different economic engine from buying 99¢ and clipping 1%.
Fees hurt 99¢ farming immediately.
At 50¢, the binding constraints are signal quality, fill quality, and whether you hold the wrong ticket.
Observed live pattern from public samples:
- ~90% of fills in the 45–55¢ band
- typical clip size ~$50–175
- buys earlier in the slot (median ~47s after open)
- sells later (median ~226s) as conviction is re-checked
That timing is intentional. The first seconds of a 5m book are often thin. Waiting a bit is how the engine sources size near fair value instead of lifting a sparse open.
The three layers that have to stay in sync
A directional 5m bot dies when these drift apart:
- Clock layer — know exactly when the slot opened and when it ends
- Oracle layer — consume the same TWAP the venue will use to resolve
- Execution layer — get filled near 50¢ without turning the signal into slippage
Most “I have a BTC direction model” projects fail on layer 2 or 3, not layer 1.
They train on the wrong close.
Or they get the direction right and pay 58¢ for a 52¢ idea.
Or they never scratch, so one late flip wipes several good tickets.
The scratch rule is not profit-taking. It is a filter:
- signal intact → hold to redeem
- signal decayed → flatten near entry
- feed stale / clock uncertain → do nothing
Doing nothing is a first-class action.
What this series will cover next
- Part 2 — TWAP feed engineering: RTDS, reconnects, freshness gates, open-reference handling
- Part 3 — Signal contract: what P(up) is allowed to mean, and what it is not allowed to do
- Part 4 — Execution: CLOB v2 fills, rate limits, clip sizing, intra-slot timing
- Part 5 — Risk and live ops: scratch logic, halt conditions, and how I read the public activity feed
The calibrated signal weights stay private. The control loop does not need to.
If you are building a similar engine, start with the settlement definition, not the model. If your target is not the official TWAP path, the rest of the stack is optimizing the wrong game.
Not financial advice. Paper or micro-size first.
If you have more questions, please feel free to contact me at any time: https://t.me/abrownfox001
My Polymarket Activity: https://polymarket.com/@abrownfox001?tab=activity
#Polymarket #TradingBot #TWAP #BTC #AlgoTrading #PredictionMarkets #CLOB #QuantTrading
Top comments (0)