
On 2026-08-07 Polymarket’s crypto up/down markets stop settling on a closing snapshot and start settling on a time-weighted average price. This is the feed side of that change for July 2026: the PR&R (Chainlink) price tape, cycle-aligned to the 5-minute markets, with the 30-second average carried alongside the spot price it replaces — one row per second, one file per cycle.
The price history is the one the markets actually used. What the settlement rule reads off it is not.
The market resolves on the underlying price at a single instant — the close. One print decides the cycle, and the last seconds carry all the settlement risk.
The market resolves on the average price over the final 30 seconds. Single prints stop deciding cycles, and 6.1% of July 2026’s 5-minute cycles resolve to the other side.
Every second of every cycle carries the spot price the markets used and the trailing 30s and 60s averages the new rule uses instead. No joining two datasets to compare the rules.
Each cycle resolves under the snapshot rule and the TWAP rule, so you can isolate the cycles the change actually flips instead of guessing at them.
observed marks the seconds that were real feed reports; twap30_observed / twap60_observed count the real reports behind each average. Nothing carried is passed off as sampled.
The averages in here are reconstructed, not captured. That is the single most important thing to know about this dataset, so it sits above the buy button.
price column is the PR&R Chainlink feed as recorded during July 2026. Keep the rows where observed is true and you have the raw tape back, exactly.market_slug lines up 1:1 with the order-book datasets. No cycle was invented to fill a gap.window_observed, not dropped.Polymarket published the TWAP window lengths (30s for 5-minute markets). It did not publish the window edge: Chainlink states it does not publish the custom feed’s sampling boundaries, weighting, rounding or missing-input behaviour, and warns against reproducing the value without a spec. We assume the last 30 seconds strictly before close. Whether the market open also becomes an average is unstated; we assume a single snapshot at open, unchanged — if it averages too, the winner-change rate rises materially. Both assumptions are recorded in the manifest, and the generator ships inside the ZIP so you can re-run it under your own.
Same cycle, same month, same market_slug — the re-priced full-depth books for the flow that traded against this feed.
Same treatment, other cycle and month. Each is sold separately.
One row per second of the cycle, in PriceFeed_5m/<COIN>/dt=YYYY-MM-DD/<coin>-updown-5m-<cycle>.parquet:
| Field | Type | Description |
|---|---|---|
timestamp | int | Epoch seconds — one row per second of the cycle |
datetime | ts | The same instant, UTC |
price | float | Spot price, forward-filled onto a complete 1-second grid |
observed | bool | True where this second carried a real feed report |
twap30 | float | Trailing 30-second average, inclusive of this second |
twap60 | float | Trailing 60-second average, inclusive of this second |
twap30_observed | int | Real reports behind the 30s average (0–30) |
twap60_observed | int | Real reports behind the 60s average (0–60) |
settlement_twap | float | The average that settles THIS market |
twap_window_s | int | Settlement window length for this market |
resolution | str | Cadence — always 1s |
source | str | chainlink_derived_twap_from_prr_1s_spot |
market_slug | str | Join key — identical to the order-book datasets |
cycle_start | int | Cycle open, epoch seconds |
cycle_end | int | Cycle close, epoch seconds |
One row per cycle, in resolution/<COIN>.parquet. This is where both settlement rules sit side by side:
| Field | Type | Description |
|---|---|---|
coin | str | Underlying (BTC/ETH/SOL/XRP/BNB/DOGE) |
tf | str | Market cycle length (5m / 15m) |
day | date | UTC day the cycle belongs to |
market_slug | str | Join key, shared with the order-book datasets |
cycle_start | int | Cycle open, epoch seconds |
cycle_end | int | Cycle close, epoch seconds |
open | float | Opening reference — snapshot at cycle_start |
close_snapshot | float | Price AT cycle_end — the OLD rule |
twap_close | float | Mean of the final window — the NEW rule |
twap_window_s | int | Window length used (30 or 60) |
winner_snapshot | str | Up / Down under the snapshot rule |
winner_twap | str | Up / Down under the TWAP rule |
winner_changed | bool | True where the two rules disagree |
move_bp | float | Cycle move in bp, snapshot rule |
move_bp_twap | float | Cycle move in bp, TWAP rule |
observed_seconds | int | Seconds of this cycle with a real feed report |
cycle_seconds | int | Length of the cycle in seconds |
window_observed | int | Real reports inside the settlement window |