Stale market data is answered as stale.
A venue that stops publishing does not stop answering. DEBYKO tells a current value from a frozen one by the venue's own timestamp, and says which it is.
A frozen quote looks like a live one.
When a venue halts trading or its feed stalls, its API often keeps returning the last values. A collector that polls every two seconds receives them every two seconds, so by its own clock they are fresh. Shown as live, the frozen venue ends up at the edge of every cross-venue comparison: the highest funding, the widest spread.
One age, one status, one reason.
- Age is counted from the venue's own timestamp, and from DEBYKO's receipt only where the venue publishes none.
- Each layer has a horizon. Polled layers: twice their interval. Layers a venue pushes only when they change: a quiet limit per venue, past which the value is no_update. Funding: its next settlement plus the grace period. Past its horizon a value is stale and leaves the value field.
- Every value has one of five statuses: present, stale, missing, not_published, off. A stale value says why: horizon_passed, connection_lost, no_update, state_lag, source_error, horizon_unknown, freshness_bound or halted.
- A stale value takes no part in a comparison: max, min and count across venues leave it out.
- allow_stale returns the value under withheld, for a post-mortem, never in the value field.
COINBASE-INTX, halted since 2026-10-01 09:00 UTC.
COINBASE-INTX stopped trading its 24 collected listings at 2026-10-01 09:00 UTC. Its values are still there; below is what DEBYKO holds for its BTC-PERP right now, layer by layer, as the snapshot gives it. Every layer is stale, with the reason, and no layer is shown as a price.
| Layer | Status | Reason | Age, from the venue's time | Last dated by the venue |
|---|---|---|---|---|
| funding | stale | halted | 8 d 10 h | 2026-10-01 09:00 UTC |
| mark | stale | halted | 8 d 10 h | 2026-10-01 09:00 UTC |
| oi | stale | halted | 8 d 10 h | 2026-10-01 09:00 UTC |
| stats | stale | halted | 8 d 10 h | 2026-10-01 09:00 UTC |
| ticker | stale | halted | 8 d 10 h | 2026-10-01 09:00 UTC |
| Venue | Values present | Values stale | Stale reasons | Listings halted |
|---|---|---|---|---|
| ASTER-PERP | 149 | 7 | 7 connection_lost | 0 |
| AVANTIS-PERP | 135 | 0 | — | 0 |
| BINANCE-USDM | 218 | 34 | 34 state_lag | 0 |
| BITGET-PERP | 150 | 0 | — | 0 |
| BYBIT-PERP | 258 | 0 | — | 0 |
| COINBASE-INTX | 0 | 0 | — | 24 |
| DYDX-PERP | 125 | 0 | — | 0 |
| GATE-PERP | 144 | 0 | — | 0 |
| GMX-PERP | 216 | 0 | — | 0 |
| HYPERLIQUID | 144 | 0 | — | 0 |
| KRAKEN-FUTURES | 588 | 0 | — | 0 |
| MEXC-PERP | 264 | 0 | — | 0 |
| NADO-PERP | 120 | 0 | — | 2 |
| OKX-PERP | 174 | 0 | — | 0 |
| SYNTHETIX-PERP | 58 | 2 | 2 horizon_passed | 0 |
| WEEX-FUTURES | 162 | 0 | — | 0 |
What the API says about it.
The API, with a key. The rate is not in the answer, only its status, reason and dates (an answer of 2026-10-09):
curl -s https://api.debyko.com/v2/snapshots \
-H "authorization: Bearer $DEBYKO_KEY" -H 'content-type: application/json' \
-d '{"where":"venue = COINBASE-INTX and base = BTC","layers":["funding"]}'
"funding": {"status": "stale", "reason": "halted", "venue_ts": "2026-10-01T09:00:00Z",
"valid_until": "2026-10-01T10:05:00Z", "anchor": "venue", "values": {}}
DQL: the BTC and ETH perpetuals where at least one venue's funding is stale.
any(venues where status(funding) = stale) where base in (BTC, ETH)
MCP, the snapshots tool:
{"where": "venue = COINBASE-INTX and base = BTC", "layers": ["funding"]}
What it does not do.
- DEBYKO does not guess that a venue is down. It reads each value's timestamp and the venue's own word on the listing; a venue that keeps sending new timestamps with unchanged values is current.
- Where a venue publishes no timestamp for a layer, age is counted from receipt, so a frozen value it keeps answering to polls looks current until its requests fail. Those venues and layers are listed on Freshness and cadence.
- The horizons are the platform's. A query can be stricter with freshness, which gives freshness_bound.