Methodology
onchain data bank · this edition: 17 August 2026
This page is the counterpart of a claim we make everywhere else – that every answer here shows its work. It says what is collected, from whom, how often, over which windows, what quality means in this product and what happens to a number that cannot be trusted. Nothing on this page has to be taken on faith: every market state carries its own contract, its versions and its watermarks, and the shape of the current one is public at /api/snapshots/live.
What a market state is
One object per market, rebuilt every minute from the data collected up to that minute. It is not a dashboard export and not a summary: it is the same artefact the pages of this site read, the same one an agent receives over MCP, and the same one the model is given when it writes an opinion.
Every state carries, in its own meta: a fixed as_of (the minute it describes, never the minute it was built), a revision, the schema it obeys and the methodology version its numbers were computed under. Beside it stands a quality block: whether validation passed, the status of the build and how many published numbers carry a warning.
The body is seventeen sections, and they are always the same seventeen: price, price structure, order flow, price–flow response, derivatives, positioning, volatility, options, ETF, on-chain, macro events, rates, market session, the peer asset, cross-asset, economic indicators and earnings. A section that has nothing to say says so and never disappears.
Where the numbers come from
Public exchange feeds and commercial data providers, including on-chain, ETF and macro data. The composition is fixed in code, not chosen at runtime: a venue that falls over is a gap in the data and a drop in completeness, never a silent substitution by another venue.
The venues are named, the commercial providers are not. A venue is part of the meaning of a number – "spot flow" says nothing until you know which books it was taken from – so every one of them is named here and in the data itself. Which vendor we buy the daily series from changes nothing about how a number is read, so the middle column carries a dash there. Commercial source identities and the contractual provenance behind them are available to qualified institutional customers under NDA. What a reader needs in order to read a number stands beside the dash: what is taken, and how fresh it is.
| layer | source | what is taken, and how often |
|---|---|---|
| Spot order flow | Coinbase, Binance | public trade streams, read without a break and sealed into one-minute bars on the exchange's own event time – CVD, volume, OHLC and the tick count |
| Perpetual order flow | Bybit, Binance Futures | trades and liquidations over the stream, open interest and funding on the grid the venue itself publishes them on |
| Canonical price | Coinbase | closed candles – the minute is closed by the stream, the history is backfilled over REST. There is no failover to another venue, because two prices on one screen are one price too many |
| Options | Deribit, Bybit | the chain in slices through the day and trades over the stream, kept as an hourly history of every expiry |
| Implied volatility | Deribit DVOL | hourly bars of the index, and the running hour kept current |
| On-chain | – | daily NUPL and MVRV Z-score, refreshed several times a day. The provider publishes a day or two behind the chain, and the whole history arrives with every reading |
| ETF flows | – | daily net flow, value traded and net assets of the US spot ETFs of this market, followed through the publication evening in New York so that an issuer's revision lands the same night |
| Macro | – | the economic calendar of high-impact US, EU, JP and UK releases, treasury yields, cross-asset returns, economic indicators and earnings. A published figure reaches the market state within seconds of appearing |
The windows
Every window is anchored on a shared watermark – the last minute finalized by all venues of the scope – and never on "now". That is what makes a comparison between venues honest: both are asked about exactly the same minutes.
| family | windows | notes |
|---|---|---|
| Order flow | 1h, 4h, 24h, 3d, 7d, 14d | split by venue on 1h, 4h and 24h, and the equal interval before the window travels with the same three |
| Open interest | 1h, 4h, 24h, 3d, 7d, 14d | a delta only holds when the set of venues is the same at both ends of the window. The previous equal interval on 4h and 24h |
| Liquidations | 1h, 4h, 24h | Bybit publishes its full feed, Binance Futures a sampled one, so a liquidation total is a floor, not a census, and it says so |
| Short-term profile | 1m, 5m, 15m, 1h, 4h | each metric against a 30-day robust baseline (median and a robust spread, not a mean and a standard deviation) |
| Daily series | as the source publishes | ETF flows, on-chain metrics and macro releases keep the calendar of their publisher. Nothing is resampled to look denser than it is |
What quality means here
Two questions are asked in a strict order, and they are different questions.
First, does the period exist at all? A 7-day window on a market four days old is not "a 7-day window at 57%": there is no such week. Until the history reaches the start of the window the metric is warming up – its value is null and it says when it will exist.
Then, how much of it was observed? Inside a period that does exist, completeness is the share of expected source-time cells actually seen. The value published beside it is the sum or the average of what was observed only – nothing is scaled up to pretend the gap was not there.
| state | what it means |
|---|---|
| live | the value is still forming. It may change, and it exists only in live views and in an interval that has not closed |
| complete | the value was accepted by the validator: a normal feed, a normal poll, a closed bucket of the source, or an exact late backfill – a delayed delivery is a delivery, not a lesser number |
| unavailable | there is no reliable value: it stays null, the aggregates that depend on it stay null, the screen shows a dash, and the point takes no part in statistics, baselines or autoscaling |
Three rules follow from this, and they are the ones worth checking us against:
- Missing is null, never zero, and never a carried-forward or interpolated value. A zero means the market did nothing, a null means we did not see.
- A comparison against history needs the period 90% seen – a z-score or a percentile is null below that, and every sample of the baseline it stands against passes the same test. One rule judges both ends of the comparison: a statistic over a half-seen period looks exactly like a fact, and a distribution assembled by a stricter rule than the value it ranks is not a comparison either. Between 90% and 100% the number stands with its completeness beside it – read it with proportionally less confidence.
- An aggregate that lost a venue says so. Where a number is weighted across venues, an incomplete scope makes it null rather than a quietly-narrower average.
Revisions
Nothing is rewritten in place. The as_of of a state is frozen when it is built. If the same minute is rebuilt – because a late figure arrived, or a release landed inside that minute – the new state takes the next revision and points at the one it supersedes, and the old one is left exactly as it was. A referenced snapshot can be retrieved later with the same evidence. A new question reads the current market unless a specific snapshot is requested.
Providers do revise their own numbers: ETF flows are refined in the evening in New York, and a macro figure can be corrected after its release. Those corrections arrive in the next state, under a new revision, and never retroactively inside one that has already been read.
Method changes are versioned too. Each state names the methodology version its numbers were computed under and the schema they are shaped by. When a definition changes, the version changes with it rather than the meaning of an unchanged field.
How far back the data goes
A stream has no past: it begins the day its collector was started, and nothing can backfill trades nobody was listening to. A REST-backfilled series carries whatever the venue keeps, and a provider that hands over its whole history hands over all of it. So the depth is per source, and the figures below are what stood on the day of this edition.
| series | begins | why there |
|---|---|---|
| Order flow, open interest, funding, liquidations | 6 July 2026 | one-minute bars, from the day the collectors were started |
| Price, daily candles | 11 August 2024 | two years of REST backfill from the venue |
| Price, minute candles | rolling ~90 days | as deep as the venue serves over REST |
| Implied volatility (DVOL) | 24 March 2021 | the whole history of the index, as the venue keeps it |
| On-chain (NUPL, MVRV-Z) | 8 August 2015 | the provider returns the full series on every poll |
| ETF flows | 9 June 2026 | from the day this contour was started, and deeper here than at the provider itself |
| Macro calendar | 21 July 2026 | and roughly a month forward, as the provider schedules |
| Treasury yields | 8 July 2026 | from the day the macro contour was started |
The market states themselves are not kept minute by minute: the latest ones stay, and every state that was actually read by a model is pinned and kept for good – so an opinion can always be checked against the exact data it was written from. What is archived in full is the data underneath, at the depths above.
What this is not
- Not investment advice and not a trading signal. This is market data with its provenance attached.
- Not a census of liquidations. One of the two perpetual venues publishes a sampled feed, so those totals are a lower bound by construction.
- Not a claim of completeness about the market as a whole. Four venues are read for flow, one for the canonical price, two for options – the numbers describe that scope, and the scope is named in the data.
- The opinions published on this site are readings of this same artefact, generated per snapshot and stored with it. They are the model's argument, not a promise about the future.
Checking any of it
- A public summary of the current snapshot – its metadata, the status of the build and the health of every section: /api/snapshots/live?symbol=ETH (BTC). The complete state and its reading contract are delivered over MCP.
- The full state, section by section, with the reading contract that defines every field: over MCP.
- What the model said and when: the tape.
Changes
The date at the top is the edition. When a source, a window or a rule changes, it changes here and the date moves with it.