Recipe 28 of 30
How often does Up win on 5-minute BTC markets, by hour of day?
One /settlements/bulk call with slug_prefix=btc-updown-5m- and two weeks of from_ms returns about 4,000 markets; group winning_outcome by the UTC hour of the start time in each slug.
Every settled 5-minute BTC market carries its winner in winning_outcome and its window's start in the slug, as unix seconds. Two weeks of them, about 4,000 markets, fit in one 5,000-row page of GET /v1/polymarket/settlements/bulk; a jq tail groups them by the UTC hour of the start and gives Up's share of wins in each hour. The full parameter list is on Settlements in bulk.
Quick answer
Ask for two weeks of the family in one page and group it by hour.
# two weeks of settled 5-minute BTC markets, Up's share of wins per UTC hour of the window start
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&from_ms=1791652883201&limit=5000" \
| jq '.settlements | map(select(.winning_outcome != "")) | group_by(.slug | ltrimstr("btc-updown-5m-") | tonumber % 86400 / 3600 | floor) | map({utc_hour: (.[0].slug | ltrimstr("btc-updown-5m-") | tonumber % 86400 / 3600 | floor), markets: length, up_share: ((map(select(.winning_outcome == "Up")) | length) / length * 1000 | round / 1000)})'Example response
Captured from the live API on 2026-10-24 at 17:22 UTC. 4,031 markets with has_more false, folded by the call's jq tail into 24 hours, trimmed to 5. From 2026-10-10 to 2026-10-24 Up won 2,013 markets and Down 2,018. Every hour held 167 or 168 markets, and Up's share ran from 45.2% (03:00, 10:00 and 18:00 UTC) to 58.3% (02:00 UTC).
[
{"utc_hour": 0, "markets": 168, "up_share": 0.464},
{"utc_hour": 1, "markets": 168, "up_share": 0.494},
{"utc_hour": 2, "markets": 168, "up_share": 0.583},
{"utc_hour": 3, "markets": 168, "up_share": 0.452},
{"utc_hour": 4, "markets": 168, "up_share": 0.536}
]Variations
The whole history. Without from_ms the walk starts at 2026-01-01; follow next_cursor until has_more is false, about 17 pages, and
group the rows you collected the same way.
# page 1 of every settled 5-minute BTC market
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000"By day of the week. 1970-01-01 was a Thursday, so (start / 86400 + 4) % 7 is the weekday with Sunday as 0.
# Up's share of wins per UTC weekday, Sunday = 0
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&from_ms=1791652883201&limit=5000" \
| jq '.settlements | map(select(.winning_outcome != "")) | group_by((.slug | ltrimstr("btc-updown-5m-") | tonumber / 86400 | floor) + 4 | . % 7) | map({weekday: ((.[0].slug | ltrimstr("btc-updown-5m-") | tonumber / 86400 | floor) + 4 | . % 7), markets: length, up_share: ((map(select(.winning_outcome == "Up")) | length) / length * 1000 | round / 1000)})'Another coin or window length. Change the prefix and the ltrimstr together, for example eth-updown-15m-.
# two weeks of 15-minute ETH outcomes
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=eth-updown-15m-&from_ms=1791652883201&limit=5000"Before you rely on it
168 markets an hour is mostly noise
With 168 markets in an hour, a fair coin lands outside 42.4% to 57.6% one time in twenty, so across 24 hours about one
hour is expected to fall outside that band by chance, as 02:00 does here. Test a pattern on a second, separate period before trading it. The
hour is UTC and comes from the slug, which holds the window's start; from_ms filters on the resolution time, a
minute or two after each window closes.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. No MCP tool lists settlements in bulk. The polymarket_settlement tool answers for one market at a time, at 1 credit a call.
How did the Polymarket market 0x8c1824d3201d570703ff6a9ac47374327f53b873665abc3f68998704b96bec51 resolve?