OracleRead only, no wallet neededRefreshes every 6 seconds

One price for every stock token

Every Uniswap v3 pool of every Robinhood stock token, read in one call and folded into one consensus price, beside a 30 minute TWAP, dispersion and depth.

Stocksreadingwith two or more pools
Poolsreadinglive of all tracked
Median gapreadingdispersion across stocks
Widestreadinglargest dispersion
ETHreadingWETH/USDG 0.01% pool
BlockreadingRobinhood Chain

01Consensus prices

reading
Consensusreading
Consensus price, 30 minute TWAP of the deepest pool, dispersion, depth and pool count for every stock token
Reading every pool in one call

Consensus is the depth-weighted mid of a stock's live pools (both sides above $200). TWAP is the 30 minute time-weighted price of its deepest pool, from the pool's own oracle; when that pool cannot look back 30 minutes the column says how far it could, or spot. Dispersion is the highest pool price over the lowest, minus one, in basis points. Open means at least one route clears its pool fees at mid.

02Pools vs consensus

each cell: pool price minus the stock's consensus, in bps
Heat tablepools
Deviation of every pool from its stock's consensus price in basis points
Stock
reading

03How to read it

Consensus

One number per stock

Each live pool votes with its depth: the smaller of its two sides in dollars. A deep USDG pool moves the consensus; a thin 1% WETH pool barely does. WETH pools are priced in dollars through the WETH/USDG 0.01% pool.

TWAP

Harder to push

The TWAP averages the deepest pool's tick over 30 minutes, so one large swap barely moves it. When the TWAP and the consensus disagree, a pool was pushed recently. That is usually the moment a cycle pays.

Dispersion

Gap is not profit

A wide dispersion is a signal, not a trade. A route has to clear the fee of every pool it touches, and thin pools lose the edge to price impact. The app quotes the exact cycle before anyone signs.

04Read it yourself

any contract or script can read the same pools
Read the poolsno key, no fee
// every Uniswap v3 pool answers these views; batch them through Multicall3
function slot0()           returns (uint160 sqrtPriceX96, int24 tick, ...)   // spot price
function liquidity()       returns (uint128)                                // in-range liquidity
function observe(uint32[]) returns (int56[] tickCumulatives, ...)           // TWAP: observe([1800, 0])
function balanceOf(pool)   returns (uint256)                                // on each token: the depth

// the same read this page runs, from the site's own module
import { readUniverse, twapsUsd } from '/js/chain.js';
const u = await readUniverse();              // every stock, every pool, one eth_call
const t = await twapsUsd(u.stocks, 1800);   // deepest pool per stock, one eth_call

Prices here are what the pools say, not a feed with an owner. They move when someone trades. When the chain cannot be read, the page shows the last scan with its date.

Close a gap

When a pool drifts from the consensus, a flash cycle closes the gap and pays whoever runs it. No capital, one transaction.

Launch app