# Data freshness and honesty

> Rollups versus the tape, coverage flags, attribution, and the flags that mark wash volume, impostors and suspect pools.

Source: https://getchord.xyz/docs/concepts/data-freshness/

Every number in a read endpoint comes from Chord's own index of the chain: every swap event on every venue, decoded and priced at index time, stored as a tape, and rolled up by hour, token and venue. Nothing is fetched from a third-party price API on the request path.

## Tape and rollups

- The **tape** is one row per swap: block, transaction, venue, pool, token, side, size, USD, price and the attributed wallet. Trade tapes, wallet PnL and positions read it.
- The **rollups** sum the tape by hour per token and venue, and by day per chain. `/arc/*`, `/rh/*`, boards and overviews read only rollups, so they answer in milliseconds and never scan the tape.
- **Live layers** sit on top where seconds matter: Arc prices are pushed from the chain head over WebSocket, and the Arc top-wallets board keeps the last minutes of trades in memory between rebuilds (`live` in the response).

## Coverage flags

Rollup answers carry a `coverage` object. Read it before you trust a quiet number.

| Field | Meaning |
| --- | --- |
| `recentAt` | The most recent hour the rollup has processed. |
| `stale` | True when `recentAt` is older than the lane's freshness bar. A quiet chart with `stale: true` is a lane that stopped, not a market that stopped. |
| `floorHour` | The oldest hour rolled up so far. Windows reaching further back undercount. |
| `genesisHour` | The chain's first indexed hour. |
| `backfillComplete` | True once `floorHour` reached genesis. |

Other families expose the same idea in their own words: the holder ledger says `tracked` and `complete`; `/lp/status` shows each lane's cursor against the chain head; `/arc/status` shows the pool index cursor and whether discovery reached genesis. `updatedAt` on any answer is when the server built it.

## Attribution

A swap's wallet is the account that initiated the transaction, resolved through routers, aggregators and account-abstraction executors. On Robinhood Chain, routers and executors were 71 % of transactions in a day before attribution landed; publishing a "top wallets" board of routers would have been a lie. So: `wallets`, `traders`, `providers` count attributed wallets only, and bots are removed from rankings by cadence, nonce rate and behaviour (`botsRemoved` on the board says how many).

## Honesty flags

Chord flags rather than hides, and sorts flagged rows below clean ones.

| Flag | Where | Rule |
| --- | --- | --- |
| `flags: ["wash"]` | token rows | ≥ $5k of volume from ≤ 2 wallets, or ≥ $50k from fewer than 5. A fake ARGUS once printed "$9.97M" from ten $500k self-trades in one second. |
| `flags: ["impostor"]` | token rows | An unlisted token wearing a listed or trusted symbol. |
| `suspect` | pool rows | Turnover no honest pool reaches (24h volume ÷ TVL above 300×, or above 50× with under 25 traders), dust TVL under real volume, or fewer than five wallets printing over $10k. Hidden from `/lp/pools` unless `flagged=1`. |
| `token0.impostor` / `token1.impostor` | pool rows | A symbol that copies the chain's anchor (a "USDC" that is not the predeploy). |
| `screened` | `/arc/graduated` | Launches removed by each screen: impostor symbols, launch farms (one creator, many pools), no sells, too few traders, no trades. |
| `jit` · `unreconciled` | positions | Opened and closed within seconds (a swap trick); dollars out far above dollars in (the tape missed an add). Shown, never scored. |

Forged pools — forks emitting Swap events with no USDC actually moving — are dropped from the tape entirely when detected.

## Prices

`priceUsd` on a token row is the last trade on the token's **dominant venue** for the day, not a blend; a thin fork cannot move it. Market cap is `totalSupply × price` and is fully diluted, because nothing on-chain says what is locked. Candles are built from the tape (`source: "db"`); a token with too few trades for a bucket has no candle rather than a fake one.
