event | string | Yes | ticker |
topic | string | Yes | |
seq | string | Yes | provenance global sequence, as a decimal string |
seqTs | string | Yes | provenance sequencerTs, epoch-ns as a decimal string |
data | object | Yes | |
> lastPx | string | Yes | the last traded price ever folded, an exact decimal string in shortest form at the scale the read-out holds it at — carried across quiet windows |
> pctChange1h | string, nullable | Yes | (lastPx − window open) / window open as an exact ratio at 4 decimals (-0.0132 = -1.32%), half-up, never through floating point; “0” for a warm window with no in-window trades; null while the window warms |
> pctChange24h | string, nullable | Yes | |
> volume1h | string, nullable | Yes | base units, an exact decimal string in shortest form at the read-out’s quantity scale; null while the window warms |
> volume24h | string, nullable | Yes | |
> turnover1h | string, nullable | Yes | the window’s quote notional in quote units, an exact decimal string at priceScale + qtyScale — 128-bit sums, never through floating point. Contract-aware: spot is the price × quantity sum verbatim; a linear contract (FUTURES, PERPETUAL_SWAP, QUANTO_*) is that sum times the instrument’s contractMultiplier, rounded half-even at the same scale; an inverse contract is volume × contractValue. Null while the window warms, and null — never 0, never the raw sum — when the rule cannot value the shape (an unstated multiplier or contract value, an option, an index). |
> turnoverUsd1h | string, nullable | Yes | turnover1h valued in USD: the window’s quote notional times the quote asset’s USD rate current at the frontier (the rate consumers hold for 30 s past its publish) — “the last hour of quote turnover at today’s rate”, the documented approximation; an exact decimal string at priceScale + qtyScale + 8 (the rate’s scale). Null whenever turnover1h is null, and — when there is an amount to value — whenever no rate is current: never 0 for an unvalued amount, never the unconverted amount; a warm window with no trades is “0” here as it is in turnover1h, rate or no rate. A rate move (a changed value or route, or a return after a lapse — never the publisher’s unchanged restates) re-renders the image: raw topics at once, tiered topics at their next tick; a rate expiry shows at the next decay minute at the latest. |
> turnover24h | string, nullable | Yes | the same rule over the 24h window |
> turnoverUsd24h | string, nullable | Yes | the same USD rule over the 24h window |
> quoteUsdRate | string, nullable | Yes | the quote asset’s USD rate the USD fields were valued at, an exact decimal string at 8 decimals (USD per quote-asset unit); null when no rate is current |
> fxSource | string, nullable | Yes | how the rate was derived — IDENTITY (the quote asset is the numeraire), DIRECT (one index pair), CROSS (two legs through a bridge asset), PEGGED (a declared peg with no measured route); null when no rate is current — and null beside a rendered quoteUsdRate for a route kind this build’s schema predates (a deploy-skew sentinel: the rate and the USD fields stand, the route is unnamed), so read “no rate” from quoteUsdRate, never from fxSource alone. One of IDENTITY, DIRECT, CROSS, PEGGED. |
> high24h | string, nullable | Yes | the 24h in-window high, an exact decimal string in shortest form at the read-out’s price scale; the carried last price when the warm window has no trades; null while warming |
> low24h | string, nullable | Yes | |
> windowComplete | boolean | Yes | the 24h window’s completeness flag |
> asOf | string | Yes | the consumed event-time frontier at render, epoch-ns as a decimal string — advances on decay re-renders while seq/seqTs stand still |