Settle & Tape Public audit
Report
SAT-P001
Issued
2026-09-17
Subject
Open-source bot, public data
Data window
Aug 13 – Sep 16, 2026
Public audit · pre-registered · no client data

The viral 5-minute BTC bot: the market already prices the favourite correctly

Subject: an open-source Polymarket bot for BTC Up/Down 5-minute markets (Novals83/5min-btc-polymarket) that circulated widely in September 2026 alongside a claim of $250 turned into $13,000. The idea: late in the 5-minute window, buy the side that is already winning at 0.80–0.99. We tested the idea as described in posts and the rule as actually written in the repository.

VerdictNO EDGE

Across 7,120 markets the late favourite wins almost exactly as often as its price says it should. What is left is smaller than the taker fee. Holding to settlement loses 0.3% to 1.3% per dollar risked out of sample. The rule as coded in the repository, which sells 20 seconds before the end, loses about 3%. The $250 to $13,000 claim cannot be verified and is not supported by the data.

Markets tested7,120
Holdout, hold to settle−0.66%
Repository rule−2.8%
Variants passing0 / 8

1 — What the code actually does

The posts describe a momentum filter: enter about two minutes before the close when BTC has moved $70–100 from the open, buy the leading side at 0.80–0.99, and hedge at a 95/5 skew. The repository is different, and says so itself.

ElementAs described in postsAs written in the repository
EntryLeading side at 0.80–0.99, about 120 s before closeWhichever side has an ask ≥ 0.70, with at least 60 s left, fill-and-kill order
Momentum filterBTC moved $70–100 from the openDocumentation only. Not implemented in the strategy code
ExitHold to settlement, small hedge at 95/5Sell at best bid 20 s before the end, stop-loss at 25–30% below entry. Never held to settlement

We therefore registered both versions: four variants of the described idea, a no-filter control, a larger-move variant, the repository rule as written, and the repository entry held to settlement.

2 — Data and rules of the test

ItemChoice
QuotesBest bid, best ask and top-of-book size for both outcomes from the public market WebSocket, 0.1 s timestamps
OutcomeThe official resolution of each market, not a price feed of our own
FeesTaker fee of 0.07 × p × (1 − p) per share on every fill, as charged on these markets
SplitFirst 20 days for discovery, last 8 days held out and read once
StatisticsBootstrap confidence intervals clustered by calendar day, Benjamini–Hochberg at q = 0.10 over the 8 variants, minimum 30 trades per cell
Pre-registrationHypotheses, variants and decision rule hashed before any outcome was computed: sha256 95a8a299…c6b7984b
Excluded8 days with known collector defects, listed in the pre-registration

3 — Results, net of fees, per dollar risked

VariantHoldout nWin rateAvg priceNet95% CI
T−120 s, move ≥ $70, 0.80–0.99, hold26295.4%0.953−0.26%−4.62 to +3.23
T−90 s, same16697.6%0.967+0.76%−1.92 to +2.90
T−60 s, same5496.3%+1.78%−3.09 to +6.17
T−120 s, no filter (control)1,16691.5%0.916−0.66%−1.96 to +0.68
T−120 s, move ≥ $10011394.7%−1.59%−7.64 to +2.77
Repository entry (ask ≥ 0.70), hold1,96685.8%0.860−1.26%−2.43 to −0.07
Repository rule as written (exit T−20 s, stop-loss)6,435*87.4%−2.80%−3.30 to −2.28

* Full period, exit at the last known bid before T−20 s. Read literally with a fresh quote required at T−20 s, the same rule shows −35.8%, but that number is inflated by a selection effect described in finding F-03. We report the corrected figure.

The two small positive rows do not survive the registered break test: with the five best days removed, T−90 s falls to −2.10% and T−60 s to −2.02%. No variant passes the multiple-testing correction.

4 — Why it fails: the favourite is priced correctly

Ask price band at T−120 sMarketsAvg askFavourite wonNet after fee
0.80 – 0.855910.82081.6%−1.75%
0.85 – 0.907510.87187.6%−0.30%
0.90 – 0.951,0370.92291.3%−1.47%
0.95 – 0.991,5410.97297.1%−0.36%

A 0.972 favourite needs to win 97.4% of the time to break even after the fee. It won 97.1%. A high win rate is what a correctly priced favourite looks like. It is not evidence of an edge.

5 — Findings

F-01
Critical

The advertised filter is not in the code

Evidence
The $70–100 move condition appears only as reference text in the strategy profile. The entry test is a price threshold on the ask.
Effect
Anyone running the repository is not running the strategy described in the posts. In our data the filter adds nothing either way: net results by move size do not separate winners from losers.
F-02
High

The early exit costs about two points and protects nothing

Evidence
Selling at the bid 20 s before the close pays a second taker fee and the spread. Same entries held to settlement: −1.26%. With the exit and stop-loss: −2.8% to −3.2%.
F-03
Medium

A trap for anyone backtesting this

Evidence
Book snapshots on this feed arrive with trades. Once a market is decided, trading stops and snapshots thin out: a quote fresher than 3 s exists for 91% of markets at T−120 s but only 15% at T−20 s.
Effect
Requiring a fresh quote near the close selects the undecided, volatile markets and overstates reversals. It turned −2.8% into −35.8% in our first pass. The opposite mistake, filling stale quotes, overstates profit.
F-04
Note

Size is not the constraint

Evidence
Median size at the best ask was 180–500 shares. The strategy fails on expectancy, not on liquidity.

6 — Limits of this audit

BTC 5-minute markets only. Twenty-eight valid days, one of which was a Federal Reserve decision day. Fills are assumed at the quoted ask with no queueing or latency, which favours the strategy. We did not run the bot with money and did not inspect anyone’s account. The profit claim in circulation is unverifiable from public information, so we make no statement about how it was produced.

Appendix — Method

Rule variants, fee model, split and decision rule were written and hashed before outcomes were joined. Outcomes come from the venue’s official resolutions. Confidence intervals by bootstrap clustered on calendar day. Break tests: drop the five best days, fees × 1.5, reprice at the next snapshot, exclude the central-bank day. Sensitivity analyses run after the fact are labelled as such and carry no decision weight.

Want the same treatment for your own bot? Request an audit or read a full sample report.