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.
01Consensus prices
reading| 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| Stock |
|---|
| reading |
03How to read it
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.
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.
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// 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