How every number here is worked out
This page exists so that nothing on the site has to be taken on trust. Every figure below can be recomputed from public sources, and where a choice was made about what to count, the choice is written down along with what it changes.
What this measures
Robinhood Chain was built for tokenized stocks. Memecoins took it over. A coin launched there is not quoted against a dollar, it is quoted against a tokenized share, so every buyer hands more of that share into the pool where it stays. Lock up enough of a stock's float and there is nothing left for anybody else to buy.
That is a squeeze anybody can join for the price of a token, and it is aimed at the company that issues the shares. Denom measures four things that follow from it, none of which are published anywhere else.
- How much of each stock's float is locked inside memecoin pools. The corner itself.
- Whether the issuer has minted more since we started watching. What the corner is for, and the only number here that cannot be recovered after the fact.
- Whether the tokenized stock still tracks the real one. It can only come away while the US market is shut.
- What any wallet is really exposed to. Holding a memecoin quoted in gold is holding gold.
The words
- Denominator
- Whatever a token is priced in. On this chain that is usually a tokenized stock, sometimes ether. A pool of MEME against NVDA has NVDA as its denominator.
- Float
- Every tokenized share of a stock that exists on the chain. Not the company's real share count, which is a different and much larger number.
- Locked
- Tokenized shares sitting inside memecoin pools. They are not gone, but they are not available to anybody who wants to buy the stock either, and taking them out means selling the memecoin against them.
- Cornered
- Locked shares as a percentage of the float.
- Backing
- Those locked shares valued in dollars.
- Peg
- How far the tokenized stock's on chain price is from the real share price, in percent.
- Basis
- What a token did once its denominator's own move is divided out.
Working out a corner
The whole figure is one division.
cornered = min(1, locked / supply) x 100
locked is the sum of the quote side of every pool where that
stock is the denominator. supply is every tokenized share
that exists, read from the chain. Capped at 100% because a stale reading
on one side should not be allowed to print an impossible number.
Backing follows from the same two pools rather than from a separate source, so the dollar figure and the percentage always describe the same thing:
backing = locked x price of one share on chain
Which pools count
Two different questions get asked about a pool here, and they want different answers, which is worth being explicit about because getting it wrong understates a corner by nine points.
For a corner: every pool
A pool opened this morning holding three hundred shares has taken three hundred shares off the market. A pool nobody trades has taken its shares off the market more completely than a busy one. So the locked figure counts every pool where the stock is the denominator, with no minimum size, age or volume.
The only condition is recency: a pool's shares are counted while the pool has been confirmed within the last six hours. That is deliberately longer than the rest of the board's memory, because a thin pool is only revisited when a full crawl comes back round to it, and dropping its shares in the meantime would show a float being freed that nobody freed.
For a price move: only pools that can carry one
A performance number taken from a thin or brand new pool is noise. Three deep pools on the same token agreed to within a tenth of a percent while two starving ones were twenty points apart. So the board drops a pool from its performance tables when any of these hold:
| Test | Why |
|---|---|
| Liquidity under $8,000 | Its price is whatever it was when somebody last touched it. |
| Volume under $5,000 in 24h | Same reason, from the other direction. |
| Pool younger than 24 hours | A 24 hour change for a pool that has existed for three hours is really the change since launch, and it comes back as five figures. |
| Daily move over 400% and more than 25x the six hour move | A window that did not really happen: a relisting, a repriced pool, or a feed catching up. Real moves are visible at six hours too. |
| Not confirmed in 45 minutes | A number nobody has checked recently is not a live number. |
Where the same token has several pools against the same denominator, the deepest one is used and the rest are dropped, otherwise one token appears five times disagreeing with itself.
And who is holding it
A float half locked across sixteen memecoins sounds like sixteen people. It usually is not. One coin normally holds most of it and the rest are passengers, and those are different situations: sixteen holders unwind sixteen ways and mostly do not coordinate, while one holder unwinds when one person decides to. So every stock also reports its largest single holder and what share of the locked float that one coin has.
Reading the float
Total supply is read from the chain's explorer and asked for again rather than remembered. This is the single easiest thing to get wrong here.
Supply is refreshed hourly per stock. Share issuance does not move faster than that, and asking more often would spend the outbound budget on a number that has not changed.
Working out a peg
peg = (price on chain / real share price - 1) x 100
The on chain price comes from the stock's deepest pool against a stablecoin, which is the only place its price is not itself expressed in something that moves. The real share price comes from a public quote feed.
A gap of more than 3% raises the alarm on the collateral view. Context matters more than the number: while the US market is open an arbitrageur closes any gap in minutes, so a gap that persists means the market is shut and nobody is obliged to close it. That is exactly when a memecoin holding half a company's tokenized float can drag the price somewhere the real shares never went, which is why the site says whether the market is open next to every gap it prints.
Dividing out the denominator
A token quoted in NVDA that rose while NVDA rose did not do all of that work itself. Taking the denominator out is division, never subtraction:
basis = ((1 + token / 100) / (1 + denom / 100) - 1) x 100
A token up 75.64% while the stock behind it rose 3.33% did 70.0% of its own work, not 72.31%, because it carried the stock's gain the whole way up. On small moves the difference is a rounding error. On the moves this exists to explain it is ten points.
Worth saying plainly: measured across the board, denominator moves are small enough that this rarely changes a verdict. It is kept because it is correct and because the days it matters are the days that matter, not because it is the headline.
The record
Every five minutes, for each stock, one line is appended to a file: the time, the symbol, the share of float locked, the peg, the backing in dollars, the total supply, and whether the US market was open. One file per day, one line per sample, never rewritten.
This is the only part of the site that cannot be recovered later. Every other number can be asked for again. A peg that opened at two in the morning and closed by nine is gone unless somebody was writing it down, and a supply figure is only ever published as of right now.
Issuance compares the first reading held to the most recent one. Two consequences worth knowing:
- A single reading produces no answer at all rather than a zero. A confident zero would read as the issuer holding firm when it means nobody has been watching yet. The site says how long it has been watching next to the figure.
- Readings taken before supply was being recorded are skipped rather than read as a float of zero.
Where the data comes from
Four public sources. No keys, no accounts, nothing paid for.
| What | Source |
|---|---|
| Pools, prices, liquidity, volume | DexScreener, chain id robinhood |
| Token supply and holder counts | Blockscout, robinhoodchain.blockscout.com |
| Real share prices | Yahoo Finance chart API |
| Earnings dates | Nasdaq calendar API |
A tokenized stock is identified by its name ending in
Robinhood Token, which is the issuing convention. That is far
more reliable than guessing from a three letter symbol, since half the
memecoins on the chain are using those too.
The board is crawled in the background and served out of memory, so a visitor costs nothing and no amount of traffic slows the crawl.
A page per stock
Every stock being used as a denominator has a url of its own:
/HIMS, /NVDA, and so on. It carries the share
of the float locked, the memecoins holding it and how much each has, the
record so far, whether the issuer has printed, and how far the tokenized
price is from the real share.
Those pages are rendered on the server rather than filled in by the browser afterwards. Anything that unfurls a pasted link does not run JavaScript, so a page built in the browser arrives everywhere as the same empty page name. Rendering it up front means the link itself says what is happening to that stock, which is the entire reason for giving each one a url.
The API
Everything the site shows is served from these. No key, no account, no
rate limit except on the one route that does real work per request.
Access-Control-Allow-Origin: *, so they can be called
straight from a page of your own. Responses over 1.4KB are gzipped, which
takes the board from 46KB to 12KB.
GET /api/collateral
The headline. Every stock being used as a denominator, what is locked behind it, and whether the issuer has responded.
curl https://example.com/api/collateral
{
"assets": [
{
"symbol": "HIMS",
"kind": "stock",
"supply": 73847.311, // every tokenized share that exists
"locked": 37381.391, // how many sit inside memecoin pools
"lockedInStockPairs": 0, // and how many against another stock
"cornered": 50.62, // locked as a percent of supply
"memes": 14, // separate coins holding it
"topCoin": "BONER", // the largest single holder
"topCoinShares": 35585, // how many shares that one holds
"topCoinShare": 95.2, // its share of everything locked
"backing": 1081443.65, // those shares in dollars
"onchain": 28.93, // what the pools say a share costs
"realPrice": 28.68, // what the real share costs
"peg": 0.87, // the distance between them
"minted": 0, // shares issued since we started
"mintedPercent": 0,
"watchedHours": 0, // so a zero can be read correctly
"reportsInDays": null, // next earnings, when there is one
"holders": 3132
}
],
"cornered": 10, // stocks past a quarter of their float
"stocks": 53,
"memes": 757, // distinct coins, counted once each
"backingUsd": 15400000,
"offPeg": 0,
"dueSoon": [],
"mostCornered": { "symbol": "HIMS", "cornered": 50.62, "memes": 14 },
"session": { "open": false, "shutForMinutes": 940 }
}
watchedHours matters. A minted of zero with
watchedHours of zero means nobody has been watching yet, not
that the issuer held firm.
GET /api/movers?days=5
What has changed since recording began. days is clamped to
1 through 7.
{
"movers": [{ "symbol": "MU", "from": 24.8, "to": 46.6, "change": 21.8, "hours": 6 }],
"issuance": [{ "symbol": "HIMS", "from": 58714, "to": 73846,
"minted": 15132, "percent": 25.77, "hours": 72 }],
"recorded": { "samples": 4210, "since": 1788381864143 }
}
GET /api/history/:symbol?days=5
Every reading taken for one stock. Keys are short because there are a lot of them.
{
"symbol": "HIMS",
"samples": [
{ "t": 1788381864143, // unix ms
"s": "HIMS",
"c": 44.93, // cornered, percent of float
"p": 0.99, // peg against the real share, percent
"b": 1226864, // backing in dollars
"u": 73847.311, // total supply
"o": false } // was the US market open
]
}
Samples written before supply was kept have no
u. Treat a missing one as unknown, not as zero.
GET /api/stock/:symbol?days=5
Everything about one stock in a single call: the asset, the memecoins holding it with how many shares each, and every reading recorded for it.
{
"asset": { ...as in /api/collateral },
"holders": [{ "symbol": "BONER", "address": "0x..",
"amount": 35585, "liquidity": 2423000, "pools": 1 }],
"samples": [ ...as in /api/history ],
"session": { "open": false, "shutForMinutes": 940 }
}
GET /api/wallet/:address
What an address is really long, by looking at what each of its tokens is quoted in. Limited to 20 checks per minute per IP, because this is the only route that reaches the chain rather than answering from memory. Each address is cached for 60 seconds.
GET /api/board
Every measured pool and what it did once the denominator is divided out.
| Query | Accepts |
|---|---|
chain | robinhood |
kind | stock, crypto |
sort | basis, worst, move, volume, liquidity |
Returns the top 60 rows with the unsliced count in
total.
The rest
GET /api/pair/:chain/:pairone pool by address, 404 if it is not on the board.GET /api/denominatorseverything being used to price something else, and what each did.GET /api/statscounters:pairs,denominators,beat,lost,lostShare.
What this does not do
- It only covers Robinhood Chain. A memecoin on Solana is priced in SOL, and SOL has no float to corner, no company behind it and no closing bell. There is nothing to squeeze, so there is nothing to measure.
- A new stock takes a while to appear. The corner figures themselves do not wait on the crawl, because each stock is asked directly for its pools and that is the complete list of what holds its float. What the crawl decides is how quickly a stock nobody has seen before is noticed, and the chain has more than ten thousand tokens to walk through.
- Supply refreshes hourly, so the resolution on whether anybody was forced to mint is an hour.
- A tokenized share is not a share. Nothing here is advice, and nothing here is a claim about any company. It describes what is happening inside the pools on one chain.
Running it yourself
Node 20 or newer. No database, no keys, no paid services.
npm install
npm run dev # http://localhost:8080
npm test # no network needed
npm run check # types
DATA_DIR decides where the board and the history files live,
and it wants to be a mounted volume. History is the only thing here that
cannot be refetched, so losing it on a redeploy loses it for good.
Something here wrong, or a number that does not reconcile against a source you trust? That is worth more than a compliment. The whole thing is open source.