hoodpools

Methodology

How every number on this site is produced, what it excludes, and what it cannot tell you. Written so you can disagree with it specifically rather than generally.

The chain

Robinhood Chain, an Arbitrum Orbit L2, EVM chain ID 4663, mainnet since 1 July 2026. Everything is read over the public JSON-RPC endpoint. No API key, no third-party indexer, no vendor between the chain and the numbers.

Robinhood Stock Tokens are tokenized debt securities. They give economic exposure only: no voting rights, no ownership of the underlying share. Wherever this site says "tokenized stock" that is what it means.

Finding pools

Uniswap v3 pools are individual contracts, discovered from Swap logs and resolved with token0(), token1() and fee().

Uniswap v4 is a singleton. A v4 Swap log identifies its pool only by id, and the token pair lives in the Initialize event from whenever the pool was created. So the catalogue is built separately, walking the whole chain for Initialize events. Without it, most swaps land on pools whose composition is unknown: measured at 2,841 of 4,124 in an early run.

Prices

Derived from sqrtPriceX96 in the pool's most recent swap:

price = (sqrtPriceX96 / 2^96)² × 10^(dec0 − dec1)

A one-hop price comes straight from a stablecoin pair, and the busiest such pool wins.

A two-hop price is routed through a bridge, and the gate is narrow on purpose. The bridge must be ETH or a blue chip, never a stock-paired token and never another equity, and its own price must be high confidence. The result is capped at low confidence however busy the pool is, and it carries its full route, so WETH then USDG can never be mistaken for a direct quote.

This page used to say there was no second hop, on the grounds that chaining prices through thin pools compounds error. That reasoning is right and the blanket rule was still wrong: it left 104 of 156 tokens reading n/a, including every token whose only real market is against ETH. Saying nothing is not more honest than saying "about this much, through ETH, and we are not confident" — it is the same uncertainty with less information.

The two-hop method was checked before it shipped. Fifty tokens have both a direct stablecoin price and an ETH pool, so both routes could be computed and compared against each other. All fifty agreed within 5%, and most within 0.1%.

A token with no route at all — no stablecoin pair, no bridge — stays unpriced. The page says no route to a dollar rather than n/a, because "we did not measure this" and "this cannot be measured" are different statements.

These are marginal prices: what the next infinitesimal trade would pay. They are not the price you get for size. Depth is shown separately for that reason.

Fees

Read from the pool's own setting, not estimated. Two things make this less simple than it looks.

Uniswap v4 has a dynamic fee flag, 0x800000 (8388608). A pool carrying it has no fee rate at all; a hook sets one per swap. Dividing that flag by 10,000 produces 838.86%, which this site published until it was caught. Dynamic pools now show the fee actually charged, taken from the v4 Swap event itself.

Many pools carry fixed fees of 10% or more, some near 100%. Almost none of them have ever traded. Both numbers are always shown together, because the first without the second reads as "traders are being fleeced" and the data does not support that. It describes what gets deployed on this chain, not what anyone has paid.

Liquidity events, and who is behind them

The address on a Uniswap Mint, Burn or ModifyLiquidity event is not the person. Any position created through a normal interface records the position manager contract. Checked on this chain: eth_getCode returned bytecode for every distinct value. Ten contracts, zero externally-owned accounts, one appearing in 39 pools.

This site therefore reports "minting contracts" rather than "liquidity providers", and makes no claim about how concentrated real liquidity is. Resolving the human requires an ERC-721 ownerOf against the position token id, which the index does not yet carry. The wallet view sidesteps this by reading positions straight from the managers.

Windows

Every figure is measured over a stated block range, printed in the header and included in every JSON file. A number here is not a 24-hour number unless the window is 24 hours. A short window is a real limitation and is never rounded up into a comfortable label.

Token classification

ClassHow it is decided
stockERC-20 name matches a Robinhood Stock Token pattern. Inferred and spoofable until the issuer allowlist is populated, so treat the stock count as an upper bound.
stable, blueSymbol allowlist
nativeThe zero address
unknownEverything else, which in practice is stock-paired tokens

Classification coverage is the binding constraint on every claim this site makes. When only a fraction of tokens are named, a pairing looks absent when it is merely invisible. That happened: this site reported that tokenized stocks almost never pair with stock-paired tokens, and naming more counterparties turned two such pools into sixty-five.

Provenance

Every scan is a git commit. Any past number is reachable by commit hash, so "what did it say on 30 August" is answered with a reference rather than with trust. The scanner and indexer are open source.

Corrections

Published because a data product that never corrects itself is not being checked.

What this does not do