← Blog
Research

The state Hyperliquid's cross-section carries — and what an agent can't do with it

Carry, positioning and size in Hyperliquid's daily cross-section keep their edge after a publication lag — order-flow timing doesn't. Gross IC, one regime, and the honest split for an MCP-connected agent.

An MCP server that hands an agent a row of candles is a JSON wrapper with extra steps. The interesting question is whether the Hyperliquid cross-section — every coin's funding, positioning, open interest and order flow, on one completed bar — carries anything a machine can actually act on after the lag it takes to publish. We measured it two ways, and the answer splits into three clean classes. Only one of them survives a delay, and it is not the one that looks like "fast flow."

Three classes, not one

Cross-sectional rank IC, univariate, computed on the full Hyperliquid universe. "Retention" is how much of the forward IC is left after entry is moved one hour later — the question a client actually cares about: is the signal still there when I can trade it?

ClassExamples1h ICRetentionRead
No signalnet_taker_open_1h, taker_flip_net, pos_aggressor_delta_1h−0.001 … −0.003—Not a decay story — there is no edge to lose. The order-flow level hypothesis, as measured, is unsupported.
Same-bar microstructuretaker_imbalance, close_vwap_dev, close_in_range, oi_change_pct_1h, buysell_imbalance, d_cvd−0.011 … −0.0400.03–0.21Real 1h IC, but a large backward placebo — the bar's own move leaking into the label. Contemporaneous; after any entry delay it is gone.
Durable statelog_volume, log_open_interest, funding_rate (+ windowed funding_paid_7d / funding_rate_7d_avg), whale_long_account_share, whale_net_position, account_ls_ratio, d_open_interest−0.059 … +0.040 (24h)0.89–1.01The product. IC strengthens with horizon and survives the delay — hourly grain, 24-hour horizon.

The fast class doesn't "decay" like a slow alpha. It's contemporaneous: on the 13-month sample close_vwap_dev posts a forward IC of −0.029 but a backward IC of +0.049 — the "edge" is the bar's own move, gone to −0.0008 after a one-hour delay. buysell_imbalance and d_cvd are the same shape. A half-life curve fitted to the forward IC flatters this signal, because the forward window overlaps the mechanism that produced it. The delay test is the instrument that doesn't lie. The cross-section those numbers are measured on is the one the playground ranks in your browser — one free key, no client to install.

One factor sits awkwardly in the middle: mom_1h (ret_1h) is a real short-term reversal that survives delay — IC −0.013 at 24h with t −7.9 after the entry is moved — but it's small and likely below round-trip cost. Real, durable, and not worth the spread.

What actually survives

Here is the durable class at its proper horizon, from the 13-month sample. These are 24-hour forward ICs, and every one keeps essentially all of its edge after a one-hour entry delay.

Factor24h forward ICtWhat it is
log_volume−0.059−27.8size / illiquidity
cum_funding+0.04026.0funding carry (see note below)
log_open_interest−0.047−22.5size / illiquidity
whale_long_account_share+0.01614.6positioning
funding_rate+0.01412.2funding carry
account_ls_ratio+0.0106.1positioning
whale_net_position+0.0076.7positioning
d_open_interest+0.0056.3the small OI build

Two honest caveats on that table, before anyone over-reads it. log_volume and log_open_interest have the largest IC but are a size/illiquidity bias, not a harvestable edge — the trade that collects them pays for it in costs and liquidity risk. And cum_funding, the strongest carry number in the table, is a muddled size+carry mix, not clean carry: its rank correlation with the funding rate is only +0.16 (daily) / +0.25 (hourly), while its correlation with open-interest size is +0.325 — it's partly a size/listing-age proxy. Use the windowed fields (funding_paid_7d, funding_rate_7d_avg) for a carry signal instead.

Every field the intelligence layer can rank, screen or query — name, unit, grain and signal class — is defined in the field dictionary.

The lag is the whole story

Here's the part that usually gets glossed over. The published hourly cross-section is not "the last hour." The raw trade tape is readable within minutes of the hour closing — but the cross-section is built from the settled funding and position snapshots, which the venue only finalises about an hour after the hour, and assembling those snapshots into the per-hour cross-section adds roughly another hour and a half on top. So a 1h row is roughly 1.5–2.5 hours behind the bar it describes, and the query tools return the last completed hour, one behind by design. The study's delay test moves entry only one hour, which is the optimistic case. For the microstructure class that's fatal: 79–97% of the IC is already gone at one hour, and at two-plus it's effectively zero. For the state class it's irrelevant, because retention is ~1 over 24h. Same grain, opposite verdict — which is exactly why the hourly feed should be read as state, not timing.

What I actually run on it

This isn't a thought experiment — I run a small beta-neutral book over this cross-section as my own dogfood. It rebalances once per completed daily bar, long and short the durable factors, kept dollar-neutral, beta-neutral and cluster-neutral. The mechanics are deliberately boring and honest:

  • Rank, don't level. Scores are rank-normalised, so a saturated factor (a wall of ties) collapses to one coefficient instead of a fabricated gradient.
  • Neutrality is a projection, not a hope. The weights are the minimum-norm projection of the signal onto dollar + beta + cluster neutrality, so the book holds as much of the signal as the constraints allow.
  • The vol target only ever scales down. It's the risk dial, never a way to force bigger legs.
  • Refuse rather than paper over. Fewer than three legs (a two-leg book can't be dollar- and beta-neutral at once — it's a geometric fact, not a policy), or a hedge that forces a leg against its own signal, both produce an explicit refusal. A refusal is a valid output.
  • The one hourly input is a ±1 state flag at weight 0.03. pnl_imbalance breaks ties; it cannot create a view, and a continuous factor always carries the ordering.

And two findings I'd want you to have if you build the same thing. First, the funding sign is easy to get backwards: mild elevation is a continuation signal — you get paid to be long the side that's paying — and only the extreme tail (funding past ~25% annualised) starts to look like a fade candidate. "Funding up = fade" is wrong. Second, I tested a mean-reversion leg and closed it: over 13 months it didn't clear the bar, so the book is continuation-only. There is no fade mode, and I'm not hiding one behind a "regime" switch.

It's profitable right now. I want to be precise about what that means: it's a first-person observation over a single market regime, not a validated strategy, and it says nothing about what you would make. I'm telling you what I run and what I've found, not selling you a signal — there isn't one to sell.

The caveats, stated plainly

  • Every IC here is gross. No fees, funding, slippage or borrow. The best 1h spreads are inside round-trip cost; the 24h state factors survive better on turnover, but the number you'd actually keep is lower than the number printed.
  • One regime. The hourly study is 484 hours (18 days, 293 coins, one regime, Sep–Oct 2026). The 13-month sample is 9,057 hours and 207 coins, but its positioning features are computed on only 5 of 7 months (schema drift), and its t-statistics are the naive ICIR·√n, not block-bootstrap.
  • Survivorship. The universe is currently-listed coins; delisted markets are not in the sample.
  • Coins move together. Cross-sectional dependence means the effective sample is closer to the number of hours than the number of rows.

What an agent can and cannot do with it

An agent canAn agent cannot
Rank and screen the daily cross-section on durable state — carry, positioning, size/liquidity — with percentiles and z-scores computed where the data lives.Time entries off the hourly grain. The fast class is gone by the time it's published.
Measure funding divergence, pull per-coin series, read the live market, and feed a daily-rebalanced neutral book — the thing I run.Get a forecast, a "buy this" signal, or a get-rich-quick edge. None of those ship, because the data doesn't support them.
Separate state from timing — treat the hourly feed as a state and disconfirmation feed, and the daily feed as the tradeable ordering.Harvest the size/illiquidity bias as an edge — costs and liquidity risk eat it.

That split — durable state, not fast flow — is the whole design of the intelligence layer. It ranks the cross-section, screens on the durable factors, and names the completed grain every answer covers, so an agent can't quietly mistake the newest published bar for a real-time one. Get a key and ask it yourself — a free key ranks every market over the trailing week.