DENOM

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.

  1. How much of each stock's float is locked inside memecoin pools. The corner itself.
  2. 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.
  3. Whether the tokenized stock still tracks the real one. It can only come away while the US market is shut.
  4. 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
Why a share of the float and not a dollar total. Dollars move with the share price, so a dollar figure goes up on a day when nothing happened. The share of the float only moves when somebody adds or removes shares, which is the event worth watching.

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:

TestWhy
Liquidity under $8,000Its price is whatever it was when somebody last touched it.
Volume under $5,000 in 24hSame reason, from the other direction.
Pool younger than 24 hoursA 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 moveA 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 minutesA 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.

A pool between two tokenized stocks is not a corner. Shares of one stock sitting in a pool quoted against another are locked in the same mechanical sense, and no memecoin is involved, so they are reported separately rather than counted in. Left in, one stock read as forty nine percent cornered with another tokenized stock named as the largest memecoin holding it.

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.

The float is not fixed. One stock on this chain went from 82,286 tokenized shares one evening to 73,846 the next morning. Shares are minted and redeemed continuously. A corner divided by yesterday's float reads about nine points light, which is the difference between agreeing with published figures and quietly contradicting them.

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:

Where the data comes from

Four public sources. No keys, no accounts, nothing paid for.

WhatSource
Pools, prices, liquidity, volumeDexScreener, chain id robinhood
Token supply and holder countsBlockscout, robinhoodchain.blockscout.com
Real share pricesYahoo Finance chart API
Earnings datesNasdaq 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.

QueryAccepts
chainrobinhood
kindstock, crypto
sortbasis, worst, move, volume, liquidity

Returns the top 60 rows with the unsliced count in total.

The rest

What this does not do

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.