NightWatch Labs, updated 2026-10-21
The Observatory answers two questions with measured numbers. First: does the same crypto asset trade above or below its global price on regional venues, and is that gap one you could actually act on? Second: how much do tokenized stocks and index products move while their home stock exchange is shut? This page explains what is counted, where the prices come from, and where the numbers stop being trustworthy.
The Observatory is a set of instruments rather than an article. A gauge shows the current regional premium or discount. A list counts how many price gaps are open and how many of them sit behind a closed transfer route. A route map shows which deposit and withdrawal doors are open for a chosen token. Further views cover markets that trade around the clock, a set of semiconductor names and a Frontier desk that prices private companies through perpetual contracts. Each instrument reads a public NightWatch endpoint; nothing on the page is typed in by hand.
NightWatch scanners read the public order books of centralised exchanges. For each token a venue is reduced to one number, the mid price: the average of the best bid and the best ask. Two regional venues quote in a local fiat currency. Eight large global venues quote USD-stablecoin pairs. The code tries the global venues in a fixed preference order, and the first one that has a valid quote for the token is the global reference. A quote with a crossed book (bid above ask) or a zero price is thrown away.
A token on a regional venue is only compared with a global one when they are the same asset. The first test is contract identity: both venues must list the same contract on the same chain. If identity data is missing, the code falls back to matching the ticker, but with a tighter sanity limit and a ticker-collision set of tickers known to mean different assets on different venues. Any result above 30% (identity match) or 15% (ticker match) is discarded as a probable mismatch, not published as a huge premium.
The tokenized-stock view uses a different source. Prices for tokenized equities, index and ETF perpetuals come from public market data of perpetual-contract venues, mainly builder-deployed markets on Hyperliquid, plus a small number of exchange-listed perpetuals. A name that cannot be priced is skipped; the ticker never fills a gap with an invented value.
The regional mid price is converted to US dollars, then divided by the global mid price. The result minus one, in percent, is the premium. It is computed two ways. One converts through the regional venue’s own USDT price in the local currency. The other converts through an official FX rate, which is fetched and cached; the response names the rate’s source and its as-of time.
The difference between the two is the stablecoin basis: how far USDT trades from the official rate on the regional venues, averaged over the two venues. This matters because a coin that looks 3% expensive may only reflect a USDT that is itself 3% expensive. The figure the gauge uses is the relative edge: the premium against the official rate minus the stablecoin basis. The headline is the median relative edge across the round-trip board's rows (up to 100 open gaps, largest first, plus a sample of blocked ones). Inside plus or minus 0.15% the gauge reads “in line”; below that it reads discount, above it premium. The gauge range is at least plus or minus 3 points and widens when needed.
A gap on a screen is not the same as money available. The round-trip board takes the sign of the relative edge to pick a direction (premium or discount), uses its absolute value as the gross gap, and subtracts costs to get a net figure. Costs are the taker fee on the buying venue plus the taker fee on the selling venue, from a static fee table; when a venue is missing from the table the code assumes 0.2% for that leg and says so in the row’s note. The withdrawal fee is not included, because the batch data does not carry it, and the note says that the net figure is therefore an upper bound. Net is the gap minus both taker fees; trade size is not modelled.
Each candidate is then checked against the transfer gate: the source venue must allow withdrawals and the destination must allow deposits on a shared chain. Gaps that fail are counted as blocked and reported with the most common reason. Those counts (all gaps, passing, blocked) come from the transfer-freeze summary endpoint, which is separate from the round-trip list, so the page can say how many gaps exist and how many of them could never be crossed. The same logic is explained for the One Price page in its own method page.
For a tokenized stock or index perpetual the system knows a home exchange, for example NYSE, the Tokyo exchange, Taipei, Shanghai or Hong Kong. Prices are sampled and reduced to the last tick in each 10-minute bucket. For every pair of consecutive samples the code takes the log return and assigns it to “open” or “closed” depending on whether the later timestamp falls inside the home exchange’s regular hours. Weekends, lunch breaks and full-day exchange holidays count as closed; time zones handle daylight saving automatically. Half-days are not modelled, and outside the range of the holiday calendar the code uses weekday regular hours only.
| Field | Meaning |
|---|---|
| open move | Compounded return of all samples that landed in home-exchange hours |
| closed move | Compounded return of all samples outside those hours |
| open share | Absolute open move divided by the sum of both absolute moves |
| window | 24 hours, 3 days, 7 days or 14 days |
| cross-venue spread | Highest price minus lowest price over lowest, when two or more venues quoted within 10 minutes; flagged at 1% or more |
A high closed move means the market repriced while the underlying exchange could not. That is a description of what happened, not a forecast of the next open.
Nothing here is a recommendation to trade. The numbers describe what the scanners saw.
Informational only, not investment advice. See the risk disclosure.