The measurement
A tokenized stock trades around the clock. The market that prices the share underneath it does not. When New York is shut, a market maker cannot hedge, so the quote widens - and the holder who needs out pays for it. Median spread across every quoted name: 235 bp while the US market is shut, 11 bp while it is open.
Every row is a median across every quoted symbol of that type in every snapshot taken during that phase. Phase is decided from the venue timestamp, not from the clock on the machine that ran the crawl.
| Market phase | Listed 30d+ | Listed under 30d | Crypto control | Ratio | Snapshots |
|---|---|---|---|---|---|
| open | 6.7 bp | 13.1 bp | 12.7 bp | 0.5x | 1812 |
| pre | 109.3 bp | 945.6 bp | 12.4 bp | 8.8x | 1236 |
| post | 74.3 bp | 348.5 bp | 12.4 bp | 6.0x | 768 |
| overnight | 63.2 bp | 397.0 bp | 12.4 bp | 5.1x | 2271 |
| weekend | 111.9 bp | 443.9 bp | 12.5 bp | 9.0x | 2395 |
Why the control column matters. The crypto pairs trade on the same venue, through the same matching engine, under the same fee schedule. Their liquidity has no reason to care whether the NYSE is open. If both columns moved together the effect would be venue-wide and this whole site would be wrong.
Splitting the closed window into pre-market, after-hours and the genuinely shut hours was expected to flatter the overnight figure: the reference venue quotes in pre and post, thinly, so a maker can still hedge there. It did the opposite. Established names sit at 6.7 bp while New York trades, 63.2 bp in the shut hours, 74.3 bp after the close - and 109.3 bp in the pre-market, the widest of the four. The hour before the opening bell is the most expensive time to leave a tokenized stock, and it is the hour a holder reacting to overnight news is most likely to be trying to.
Splitting by how long a name has been listed was not cosmetic. Overnight, names listed thirty days or more sit at 63 bp; names listed more recently sit at 397 bp - 6x wider. A median over every listed name blends the two into 235 bp, which is why it moves when Bitget lists in bulk rather than when liquidity changes. Listing age predicts overnight spread better than anything else measured here, and a new listing is exactly the position a holder is least likely to know is expensive to leave.
A median spread is not a cost. It is the price of the first share, not of the position. What the position costs depends on size, and that is the method page. Whether the quote behind the spread is real at all is the validation page.
The desk on the front page needs JavaScript and a POST, which makes it unreadable to anyone browsing with scripts off. This is one real run of it, recorded and written into this page as plain HTML — the same question a holder would ask, and the answer that came back, including the parts that did not work.
Captured 2026-09-22T16:48:17+00:00 from POST /api/ask on the live site. A recording of one moment, not a live figure. The book it was priced against has moved since.
what does leaving 40k of TSLA cost?
11 bp to leave 40,000 USDT - about 43 USDT. 0.8 bp of that is the book, 10 bp the assumed taker fee.
Split as bounds: 1× 10.76–10.76 bp, 4× 10.13–10.76 bp, 12× 10.13–10.76 bp. The best case assumes the book refills between clips; the worst assumes it never does.
Leaving 40,000 USDT of RTSLAUSDT costs about 11 bp (43 USDT) in one clip, with the open book as it stands.
what does leaving 5k of RIOT cost?
>12 bp to leave 5,000 USDT - about >6 USDT. 2.0 bp of that is the book, 10 bp the assumed taker fee.
Split as bounds: 1× 12.02–12.02 bp, 4× 12.02–12.02 bp, 12× 12.02–12.02 bp. The best case assumes the book refills between clips; the worst assumes it never does.
Leaving 5,000 USDT of RRIOTUSDT costs about >12 bp (>6 USDT) in one clip, with the open book as it stands. The venue showed no depth for this symbol, only a top-of-book quote, so this is a floor and the real cost is higher.
Why two names. The first fills: the book carries the
whole order and the answer is a price. The second does not, and the desk
degrades to a floor it marks with > rather than quoting a
number it cannot stand behind. A single worked example would only have shown
the half that works.
We cannot validate the liquid names, and that is the honest state of it. The validation page excludes 6 symbols — RNVDAUSDT, RTSLAUSDT, RAAPLUSDT, RMSFTUSDT, RSYKUSDT and RPBRUSDT — because two of the venue's own volume feeds disagree about them: the candle volume runs 11.8× to 23.8× the 24h turnover the ticker reports for the same symbol. Which feed is right is not something this project can settle from outside, and scoring a prediction against a number that may be wrong would be worse than not scoring it. So the overnight widening holds as a quote, across every name the crawl can see. It is not yet established as a fill on the names most people actually hold. Those are the symbols where it matters most, and they are the ones still outstanding.
This gate moves. It is re-measured on every build from the last twenty-four hours, and a name that passes it today can fail tomorrow: on 2026-09-28 it excluded six symbols in the morning and two by the afternoon. So this section reports what the last run found rather than a settled state, and the overnight widening is stated as a quote wherever it has not been scored as a fill.
Every figure on this site comes through one HTTP client, and a bug in that client would look exactly like a property of the market. Since the argument here is that the venue's own numbers do not always agree with each other, the same scepticism is owed to our own reads. So the same exit is priced a second time through the Bitget Agent Hub CLI — a different SDK, in a different process, with no credentials — and both are costed by the same code, so any gap is the book and not the arithmetic.
Both clients asked for the same 25,000 USDT exit, 2026-10-22T10:45:40+00:00. 9 of 9 could be compared; 9 agree within 0.5 bp.
| Symbol | This site | Agent Hub | Gap | Verdict |
|---|---|---|---|---|
| RNVDAUSDT | 11.84 bp | 11.84 bp | 0.00 bp | agree |
| RTSLAUSDT | 12.42 bp | 12.42 bp | 0.00 bp | agree |
| RAAPLUSDT | 11.46 bp | 11.46 bp | 0.00 bp | agree |
| RMSFTUSDT | 13.88 bp | 13.88 bp | 0.00 bp | agree |
| RSYKUSDT | 130.82 bp | 130.82 bp | 0.00 bp | agree |
| RPBRUSDT | 46.67 bp | 46.67 bp | 0.00 bp | agree |
| BTCUSDT | 10.00 bp | 10.00 bp | 0.00 bp | agree |
| ETHUSDT | 10.02 bp | 10.02 bp | 0.00 bp | agree |
| SOLUSDT | 11.29 bp | 11.20 bp | 0.09 bp | agree |
What agreement does and does not prove. It does not prove the cost is right; both clients read the same exchange and would inherit the same error. It does rule out our transport as the explanation, which was previously unchecked. The two reads are sequential and seconds apart on a live book, so a sub-bp gap is the market moving between them rather than a disagreement — which is why the threshold exists and is printed rather than hidden. The failures are the interesting rows: where the Hub cannot return a two-sided book at all, that is a second client independently finding the same thinness that got those names excluded from validation.