GitHub: https://github.com/abrownfox0/abrownfox001-twap60-prediction-trigger-system
YouTube walkthrough: https://www.youtube.com/watch?v=XzhugRL6BV4
Part 1 defined the engine: a BTC 5-minute specialist that buys near 50¢ and scratches weak tickets.
Part 2 is the target variable. If this layer is wrong, the rest of the stack is just a fast way to lose money.
Live profile: @abrownfox001
1. What Polymarket Pays Now
Short crypto Up/Down markets no longer resolve on a single snapshot.
They settle on Chainlink TWAP.
| Market | Settlement window now |
|---|---|
| BTC 5-minute | 60-second TWAP |
| 15-minute crypto | 60-second TWAP |
| 4-hour crypto | 60-second TWAP |
5-minute markets originally launched with a 30-second window. Markets deployed since August 14, 2026 use 60 seconds. The repo name is explicit: twap60-prediction-trigger-system.
The README still mentions 30s in older module notes. Live 5m production should treat 60s as the official series.
Important: 60 seconds is a lookback window, not how often a new report arrives.
2. The Question the Bot Must Answer
Wrong question:
Where will Binance print at the close?
Right question:
Where will the official 60-second average sit versus the slot-open reference?
A brief wick can flip a snapshot market and barely move a 60s average.
A grind that holds through the lookback can decide settlement even if the last tick snaps back.
If the signal is trained on CEX last prices, it is forecasting a variable the market no longer pays.
3. The Only Clean State
For each btc-updown-5m-* slot:
twap_open = 60s Chainlink TWAP at slot start
twap_now = latest 60s Chainlink TWAP
t_left = seconds remaining
Everything else is auxiliary.
Useful extras:
- CEX mid for lead-lag (
cexFeed.ts) - flow / book imbalance
- realized path volatility inside the slot
Not substitutes:
- last Binance print
- Coinbase close guess
- leftover 30s TWAP on new 5m markets
Both the price-to-beat and the final score must come from the same 60s family. Mix windows and you invent false wins.
4. Signal Structure
The private layer outputs a continuous probability:
[
P(up)t = f(\text{TWAP path vs } twap{open},\ \text{lead-lag},\ \text{flow},\ t_{left})
]
Design rules used in the live stack:
- Anchor to TWAP first. Direction versus open comes from the official series.
- Use CEX only as lead-lag. It can move first. It must not replace settlement.
- Make time-in-slot explicit. 52% at t=20s is not 52% at t=280s.
- Keep the output calibrated. The number has to mean probability.
- Never mix windows. Open pin, live score, and resolution labels stay on 60s.
The exact formula stays private. That is the moat. The structure does not need to be secret.
5. Reference Code Map
| Module | Job |
|---|---|
src/twapFeed.ts |
Stream official TWAP via Polymarket RTDS |
src/signal.ts |
Convert TWAP path vs open into P(up)
|
src/cexFeed.ts |
Auxiliary mid for lead-lag |
src/engine.ts |
Consume the probability and run the slot |
Production feed path:
- RTDS 60s topic / SDK
windowSeconds: 60 - exact filter form
{"symbol":"btc/usd"} - freshness checks on observation timestamps
- exact decimal / bigint handling — no sloppy floats for settlement math
If the TWAP is stale, skip the slot. Do not invent a substitute from spot.
6. The Trade Gate
The engine does not trade every twitch of the model.
if abs(P(up) - 0.5) < threshold:
wait
if ask not in 45–55¢:
wait
else:
accumulate small clip
Edge without a fair price is overpaying.
A fair price without edge is a coin flip.
7. What the 30s → 60s Cutover Changed
- The target series got smoother
- Fast spike features lost power
- Open-reference mismatch became a silent killer
- Scratch thresholds needed retuning
- Snapshot and 30s leftovers became research-only
That is why this series treats TWAP60 as the first engineering problem, not a footnote.
8. Failure Modes in the Signal Layer
- Pinning
twap_openfrom the wrong feed - Scoring 60s live while labeling on 30s or CEX close
- Treating socket heartbeat as proof of freshness
- Letting CEX mid dominate
P(up) - Trading raw model output with no threshold
- Accepting a stale TWAP because “the websocket is still up”
If this layer is wrong, no entry trick saves the book.
9. What Part 3 Covers
Once P(up) exists, the hard part becomes mechanical:
- when to enter
- how not to lift a thin book
- how often to re-score
- when to scratch
- when to let a ticket reach resolution
That is the slot lifecycle.
Links
- Repo: https://github.com/abrownfox0/abrownfox001-twap60-prediction-trigger-system
- Video: https://www.youtube.com/watch?v=XzhugRL6BV4
- Live activity: https://polymarket.com/@abrownfox001?tab=activity
Not financial advice. Always verify the live market’s official resolution source.
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 #TWAP #Chainlink #BTC #TradingBot #AlgoTrading #PredictionMarkets
Top comments (0)