// SETTLEMENT — THE FEED ITSELF

The settlement feed
these markets resolve on.

Not a reconstruction and not a label. The Chainlink Data Streams values these markets settle on, tick by tick as published through the venue’s relay — the decimal value, and the upstream fixed-point figure beside it whenever the relay sends one, with each market’s strike and settled outcome alongside. Where a market’s strike and the stream it settles on are both present, you can recompute the result from the raw prices; where either is missing, the archive says so rather than filling it in.

collecting since2026-06-08
Polymarket assets·
included datasets5
strike + outcomeper market

The streams

The settlement streams the archive ships. Which one settles a market is a property of that market: read raw.cryptoMarketConfig.twapLookbackSeconds from its row in the markets dataset and pick the matching stream. Do not infer it from the date — that rule has changed once already.
prices
Settlement feed, tick by tick (instantaneous Chainlink stream)
twap60s
TWAP 60s settlement stream — settles both 5-minute and 15-minute markets
twap30s
TWAP 30s settlement stream — settled 5-minute markets before they moved to the 60s lookback; still archived daily
markets
Per-market metadata, strike and settlement outcome
klines
OHLC candles derived from the settlement feed, with a tick count — no trade volume; the settlement feed is a price feed

Why this is the part that matters

01

Why a rounded float is not enough

Each tick carries the decimal value and, whenever the relay publishes it, the upstream fixed-point integer string beside it. A price rounded to a float is a price you can no longer settle with: the markets are decided by a comparison against a strike, and near the strike the rounding is the answer. Where the fixed-point figure is the one the relay sent, it is the input to that comparison rather than a rendering of it.

02

An honest null beats a plausible guess

The markets dataset carries each market’s settled outcome and the strike it had to cross, and every strike names the tick it came from. When no tick can establish it, the field is null rather than a value borrowed from a nearby one.

A guessed strike is worse than a missing one: it is indistinguishable from a real one, and it quietly flips the sign on every trade that sat near the boundary.

How to pull it

Same /v1/files call as everything else, filtered to the settlement streams. Leave the date out and you get the newest day your key reaches.
BASH
# the settlement streams, newest day your key can reach
curl -H "Authorization: Bearer $OT_KEY" \
     "https://outcometick.com/v1/files?venue=polymarket&dataset=prices,twap60s"

# per-market strike and settled outcome
curl -H "Authorization: Bearer $OT_KEY" \
     "https://outcometick.com/v1/files?venue=polymarket&dataset=markets&asset=btc"

# download one — the listing hands back each file’s url
URL=$(curl -s -H "Authorization: Bearer $OT_KEY" \
     "https://outcometick.com/v1/files?venue=polymarket&dataset=twap60s" \
     | jq -er '.files[0].url')
curl -L -H "Authorization: Bearer $OT_KEY" "$URL" -o twap60s.csv.gz

You can check the settlement side before paying for it. The public sample archive carries the same streams in the same formats — recompute a market's outcome from the raw prices and see whether you land where we did.

Your strategy can check us in the backtester

Call ctx.assert_outcome and the report tells you where your reading of the rules and the venue’s differ — a difference worth understanding before any P&L below it means anything. No calls, no checks: the runner does not second-guess your strategy.

Related