# Polymarket up/down order-book tape — contribution to archive.pendulumflow.com

Provenance: devpyle (github.com/devpyle). Recorded on our own host ("clawdave", x86_64, single machine)
by a Go recorder subscribed to the Polymarket CLOB WebSocket market channel
(wss://ws-subscriptions-clob.polymarket.com/ws/market) for the up/down tokens of
the crypto Up-or-Down markets we track: BTC, ETH, SOL, XRP, BNB, DOGE, HYPE; 5-minute,
15-minute and 1-hour markets. NOT venue-wide: only those tokens.
Hours covered (UTC, inclusive): 2026-08-15T10 → 2026-08-18T05. One folder per hour.

Timestamps: `ts` is int64 milliseconds since the Unix epoch, UTC, stamped at OUR receipt
(single host, NTP-disciplined). Against the archive's V3 venue stamps our tape measured
~80 ms behind the venue on 2026-09-15 (p95 230–800 ms). Not de-duplicated across hosts.
Prices are float32 (compare with a 1e-3 tolerance, never equality). `token_id` is the
CLOB token id as a decimal string. `asset` is our label (e.g. SOL-USD).

Files are Parquet (zstd), schema preserved from our compacted daily store. Families:

- best_bid_ask: top of book per token on every change (ts, asset, token_id, best_bid, best_ask).
- clob_l2: 5-level book snapshot per token per change, our side label (side = UP/DOWN token),
  bidN/askN prices, bidN_sz/askN_sz sizes, spread, imbalance.
- poly_trades: last_trade_price events (ts, asset, side, price, size, token_id, market_id,
  trade_id/maker/taker/fee where the feed carried them — often empty).
- market_events: market discovery/registry rows (event, market_id, condition_id, title,
  asset, token_ids JSON list, end_date) — the map from token_id to market.

Row counts per family (hours with rows / rows):
- best_bid_ask: 68 hours, 114,500,868 rows, 452,358,864 bytes
- clob_l2: 68 hours, 335,015,149 rows, 8,410,060,521 bytes
- poly_trades: 68 hours, 9,989,283 rows, 248,880,543 bytes
- market_events: 68 hours, 20,772 rows, 3,060,437 bytes

Source store: <path stripped> (daily compaction of the raw recorder chunks; no rows dropped,
duplicates from recorder restarts possible). Exported by scripts/pendulum_gap_export.py.
Contact: the archive maintainer has our email from the offer thread.
