Skip to main content
Pulse runs an indexer against Hyperliquid L1 + builder dexes + HIP-4. This page covers what’s tracked, how often it updates, and the historical bounds you should expect.

What’s indexed

Coins outside the order-book sweep return 404 BOOK_NOT_COVERED, and spot pairs are not covered. Call data_coverage (MCP) for each dataset’s live window and freshness stamp.

Cutoffs

Some endpoints have hard historical floors because the underlying data collection started after Hyperliquid mainnet:
  • Risk metrics (liquidations, mark dislocations, user-action–derived signals) — clamped to 2026-01-01. Earlier since requests are silently truncated to that floor.
  • HIP-4 outcomes — clamped to 2026-05-02 (mainnet launch). Earlier since requests are silently truncated.
  • Cohort tiers — wallets not yet in the traders rollup have no tier (counted in coverage.withoutTier / untracked).
  • Builder-fee attribution — trigger-order (stop/TP) fills attribute at ledger level only, so join-attributed fills, volume and users slightly undercount (see dataNotes). Trigger-order placements are captured live since 2026-08-20 and backfilled to 2026-03-24; resolving them to fills is still largely unpopulated. Coinversa’s copy of the builder-fee ledger begins 2026-08-11. Windows that reach earlier serve revenue from the attributed rollup (a floor, ≥97% of ledger on reconciled days), and dataNotes says so. See Builder codes & attribution.
Separately from these floors, most caller-controlled windows are silently clamped to 90 days on every tier. Some routes are tighter: /live/whale-trades allows up to 24h and rejects longer windows with 400; /pulse/cohort-bias/history and /pulse/cohorts/daily-stats allow up to 30 days; HIP-4 perp-position context clamps days to 60. See Data windows and authentication.

Snapshots vs history

Current-state routes (/live/cohort-bias, /live/positioning-by-entry, cohort positions) describe open positions now and are never a history. Cohort-bias history is the hourly cohort_bias_snapshots table as stored: missing hours are absent, and a cohort with no open notional in an hour has no point (never 50%). Backfilled hours carry the wallet’s current tier (lookahead), so coverage.provenance is unknown_mixed and backtestSuitable is false — do not treat it as a point-in-time backtest. Windows: /live/cohort-bias-history up to 2160h (90d); /pulse/cohort-bias/history and /pulse/cohorts/daily-stats up to 30d; pnl_recent snapshots from 2026-05-14.

Freshness

Server cache refresh intervals by endpoint: Layer routes carry source.asOf and risk routes generatedAt, so you can measure staleness.

Live mark vs stored mark

markPx on positioning-by-entry is Hyperliquid’s live mark (markMethod: live_mark, per-dex 10 s cache, builder-dex symbols resolved on their own dex) when the feed answers. Otherwise it is the newest stored position mark (newest_position), then a notional-weighted stored mark (weighted_fallback). storedMark and markDivergencePct show how far the stored book lags. Stored notionals and liquidation distances use each wallet’s last-poll mark, and a note flags divergence above 1%. For fills themselves, polling is the wrong tool: the WebSocket pushes every fill at block cadence, with a per-subscription sequence number so you can tell when you missed one.

What’s not indexed

  • Spot trades on non-canonical pairs (@N indexes) — present in raw data, not classified into cohorts.
  • Off-chain orderflow (RFQ, OTC) — only on-chain L1 fills are captured.
  • Private user information (KYC, beneficial ownership) — addresses are public; wallets are not de-anonymized.

How recent is “recent”?

Tools that take a since parameter accept a number plus unit:
  • m — minutes (e.g. 10m)
  • h — hours (e.g. 24h)
  • d — days (e.g. 7d)
Weeks are not a unit — 2w is rejected with 400 invalid since format; use days (14d). Or use explicit startTime / endTime (unix ms or ISO date) for exact ranges. Both are silently clamped to the 90-day window on most routes (some routes are tighter; see Cutoffs) — see Data windows.