# Perpetual markets `PERP` opens the Board. Its tabs are Board, Rankings, Compare, History and Evidence. A market or underlying opens that market's History: `PERP BTC`, `PERP TSLA`, or `PERP hyperliquid:xyz:TSLA`. `DES` on a stock or a coin lists its perpetual markets under Perpetuals, one row per venue: a venue's settlements (USDT, USDC, coin-margined) and Hyperliquid's builder dexes are one row, read from its deepest contract, with the venue's whole open interest and 24h volume. The Contract column names that contract's settlement or dex and how many more the row stands for (`USDT +2`). Rows run deepest first; past the first four, and below 2% of the asset's open interest, markets fold behind a `N smaller markets` row that shows them. Premium is against the oracle for a coin and against the stock's last price for a stock (`vs last`): the stock's own quote while its market is open, that quote is real-time and the contract tracks that very listing, otherwise the price Gloom Cloud last read for the contract's own reference, or its close while its market is shut. A contract on another listing of the issuer (GOOGL's seen from GOOG, BRK.A's from BRK.B) always keeps Gloom Cloud's figure. `PERP%` reads the same way. Quote cards (`QQ`, when tall enough) show the deepest venue's contract in one line. Clicking a venue (in `DES` also from the pane menu) opens `PERP` on that market's History; a market opened before keeps its own pane, which comes back to that market whatever it was showing. Watchlists and portfolios can show the same contract in two optional columns, `PERP%` (premium versus the stock's last price) and `FUND 8H` (funding per eight hours), added from the pane's Columns setting. The whole list is looked up in one request and refreshed every minute, and the rows in view follow their contracts' quotes; a stock with several contracts shows its current one with the most open interest, and a stock without one, or a fund, shows a dash. Clicking either figure, or the pane menu's `Open PERP` entry for the selected row, opens `PERP` on that market. ## In watchlists, quotes and search A perpetual market is a listing on its venue, so it goes anywhere a ticker does: watchlists and portfolios (`PF`, `AW`, `watchlist add`, `portfolio add`), `quote`, `compare`, `ticker`, `history`, charts, the command bar and saved layouts. Type it as PERP names it, `binance:BZUSDT` or `hyperliquid:xyz:BRENTOIL` (or Hyperliquid's own `xyz:BRENTOIL`), or as the listing it is saved under, the contract's symbol on its venue: `BZUSDT:BINANCE`, `BTC:HYPERLIQUID`, and `XYZ-BRENTOIL:HYPERLIQUID` for a market on a Hyperliquid builder dex. The venue is the exchange, so the same contract name on two venues is two listings, and a venue's spot pairs (`ETH/USD` on Binance) stay coins. dYdX has no spot market, so its pairs are its perpetuals: `BTC-USD:DYDX` is dYdX's BTC contract. `gloom search brent` and the command bar list perpetual markets beside the other listings, by symbol and by what they track: `brent` finds Hyperliquid's BRENTOIL and Binance's BZ. A perpetual row shows its mark price in the contract's quote currency, the move over the last 24 hours against the price a day before, and its funding per eight hours in the `FUND 8H` column (`PERP%` stays a stock's premium; a stock perpetual's row shows its own). Its Ticker column shows the contract as the venue writes it (`BZUSDT`, `xyz:BRENTOIL`). Prices, funding and open interest stream from the venue's own socket on Hyperliquid, Binance, Bybit and OKX, and are read from the other venues about once a minute and marked delayed; the market never closes. Binance's socket carries no open interest, so a Binance row keeps the minute's figure, and is marked stale when that figure is. A market whose socket goes quiet for a minute is marked stale until the next read. The same quote feeds the row, `DES`, `PERP`, the quote header and a chart's last bar. Up to 60 perpetual listings stream at once across every pane, those on screen first; the rest keep the minute's read. Streaming follows realtime crypto access, which is open to everyone, signed in or not. `Enter` on the row, or `Open PERP` in its pane menu, opens `PERP` on that market's History, as the stock columns do; `Shift+Enter` still opens its research pane. In `DES` and `QQ` the contract line gives its funding, open interest, premium versus oracle and when the venue was read. `gloom quote` adds the same under a Contract heading, and `--json` carries it as `perpetualContract`. `gloom watchlist show` adds a Fund 8H column to a list that holds a perpetual market, and `--json` and `--csv` a `fundingRate8h` field. Latest values of any one market are free, as in PERP; history is Pro. A free account's chart, `history` or PERP History of the market says `Full history requires Gloom Pro.` Venues quote in stablecoins (USDT, USDC), which are never converted into dollars: a holding in one keeps its price and cost in that currency, and a portfolio's total and weights leave it out as an unpriced holding. Stock links follow the selected listing and only appear when its underlying identity is confirmed. The same ticker on another exchange may belong to another company. A linked cross-listing still uses the perpetual's own reference listing, currency and share units for its premium. **Board** lists markets by venue: mark, funding per interval, premium, USD open interest and its 24h change, the share of accounts net long (Long %), APR, the 24h price move and when it was observed. Filter by asset class and venue, sort by open interest, funding, OI change, premium or long share, and search by market. The venue filter offers the venues in the result. **Rankings** shows five lists of up to ten markets: highest and lowest 8h funding, 24h OI surges, premium dislocations and closed-market dislocations. **Compare** shows one base asset on every venue that lists it, including each venue's Long %, so accounts' positioning on Binance, Bybit and OKX reads side by side. The search takes the asset. The spread line is the highest minus the lowest 8h funding in percentage points, naming both venues, and the contract when a venue lists several. With one venue there is no spread. The footer dates what is on screen by venue, because each venue is polled on its own: `Binance 02:15 · Bybit 02:24 UTC · oldest 9 min · delayed · funding = current estimate, pays 08:00 UTC`. Each time is that venue's newest observation, `oldest` is the age of the venue furthest behind, and the funding part says whether a rate is the venue's current estimate (and when it pays), its last paid rate, or a continuous rate. `gloom fn PERP` and `gloom shot PERP` end with the same line. Free preview rows and Pro rows are dated the same way. `live` takes the place of `delayed` while every row on screen moves with its venue's socket, each priced by it within the last minute. A view that also shows a row no socket carries (Deribit, or Bybit's inverse contracts) stays `delayed`, each venue still dated by its newest observation. Enter on a Board, Rankings or Compare row opens that market in History. Switching to History or Evidence takes the selected row; switching to Compare takes its base asset. This is a **Pro dataset**. Free accounts see a fixed preview: three markets per asset class on the Board, which is also all Compare can show, three per ranking, and latest values for any one market. The lock line says how many more markets Pro shows; in `fn PERP` it is the one closing Pro line, ending `· gloom.sh/cloud`, and a table the free view leaves empty is left out of the text report rather than printed empty (JSON keeps it, marked `locked: true`). A market's History says on that line what free shows and what Pro adds: `Pro: Free shows the latest funding, OI and premium (basis: fn CTM BTC). Gloom Pro adds Binance BTC history and every market on 4 venues · gloom.sh/cloud`, the basis pointer only for an asset `CTM` has a basis for, and the venue count from the venues Gloom Cloud reports collecting. The server counts hidden markets across every venue, so with `--venue` the line names the venue and gives no count. Full history, rankings and the complete universe require Pro. Trading and order routing belong to a separate plugin. History offers paid funding, collected open interest, mark/oracle premium, hourly candles and the long/short account share (L/S) with 1D, 7D, 30D, 90D and 365D windows. The market field takes a base asset, underlying symbol, canonical market identity or a Market column label such as `SP500 · XYZ` (the same market as `xyz:SP500`) and shows the one market it names; it does not list partial matches. A name the board does not spell is read as the market it stands for: a pair (`BTC-USD`, `BTC/USD`, `BTCUSD`) as its base asset, and a plain name (`bitcoin`, `ethereum`, `brent`) as the contract it names, with `Showing BZ for "brent". Also on the board: BRENTOIL · XYZ.` in `fn` (`brent` is BZ on the Binance board and BRENTOIL on Hyperliquid's xyz dex). A symbol or base asset as typed is never reread (`BTCUSDT` stays Binance's contract). A name nothing matches fails with the board markets nearest to it (`fn PERP brentt` suggests BRENTOIL · XYZ), or the usual examples when it is free text. With `--venue` in `fn`, a base asset opens that venue's contract (`fn PERP BTC --venue hyperliquid`), including one outside the free board preview, and the report says which venue it shows when the venue has none (`Kraken has no BTC contract in the free preview; showing Binance.`). An unqualified symbol prefers its default crypto contract, then the xyz stock contract. Use the canonical identity for another contract or venue. A name no market carries shows the pane's empty state; `gloom fn PERP XYZZY` fails with `No perpetual market matches "XYZZY"` and suggests markets that work. Evidence keeps observation time, source time, units, confidence, contract constraints and correction records. `o` opens the primary source. For a market on a listed stock or fund, `d` opens its description (the `DES` already open for that listing, if any), `g` its price chart and `f`, for a stock, its financial analysis; Evidence's Ticker row opens the same description. Markets without a listed underlying (crypto, an index such as SP500, commodities, currencies) have none of these keys. `a` opens the existing event-alert form with the market prefilled. Choose funding per eight hours, 24h open-interest change, premium versus oracle, or closed-market premium, then an above/below threshold in percent. The alert uses the existing cloud rule synchronization, crossing, cooldown and delivery history. Delivery requires Pro. Delisted or stale contracts are excluded from rankings and alerts. History keeps the same figures for every series: the series itself, its change over the range, the mark and open interest. L/S shows the latest long share, the long/short ratio and the 24h change in percentage points once history reaches back a day; its table adds the short share and the ratio. When every point of a series shares one observation basis, the legend names it and the table leaves the column out. Evidence groups the market, funding, open interest, positioning (the long/short reading), the listed underlying (for stock perpetuals) and the contract terms. ## Coverage and interpretation The enabled venues are Hyperliquid, Binance, Bybit and OKX. Hyperliquid carries its default crypto perpetuals plus every public HIP-3 dex returned by discovery, including stock, index, energy, metal and FX contracts. Binance, Bybit and OKX carry their crypto perpetuals and the commodity and equity perpetuals they list, as the board shows. Classification is conservative; unclassified contracts retain their identity. Availability of a perpetual does not establish eligibility to trade it or ownership of its referenced asset. The venue name in Evidence identifies the contract's trading venue, not a routing data provider. Adapters for Deribit, Coinbase International, Kraken and dYdX stay off until they are enabled. Compare shows every enabled venue that lists the asset. A single row means only one comparable contract has been collected; it is not a cross-venue spread. Inverse, linear and quanto contracts and their collateral currencies remain distinct. Stablecoin quote currencies are not silently converted into fiat prices. Funding rates are fractions in REST/JSON and percentages in the pane. Raw funding always carries its interval and current/last-paid/continuous basis. Eight-hour funding is `raw × 8 / intervalHours`. Simple APR is `raw × 24 × 365 / intervalHours`: each market's current rate times its payments a year at its own interval, `1h rate × 24 × 365` for an hourly market and `8h rate × 3 × 365` for an eight-hour one; neither measure compounds nor predicts future realized yield. A report that shows the APR % column says so in a footnote under the table in `fn PERP`, naming the interval of the markets shown (`APR = current 1h rate × 24 × 365: a simple annualisation of the current funding rate, not funding actually paid.`), or each formula when they differ (`APR annualises each market's current rate at its own interval (1h rate × 24 × 365, 8h rate × 3 × 365), not funding actually paid.`). The pane's Evidence tab annotates its Funding 8h / APR row with the market's own formula. Predicted funding remains separate and unavailable when not reported. History explicitly distinguishes source-paid funding from collected current-rate snapshots and normalizes each observation using its own interval. Open interest is shown in base units and USD. The board's 1h/24h percentage changes compare **base open interest from Gloom's own snapshots**, so mark-price moves cannot manufacture an OI surge. A rolling five-minute OI baseline cache supports those 1h/24h comparisons independently of the retained history sampling tier. USD notional changes are separate JSON fields. A missing sufficient-age baseline remains null. Funding and candles backfill only history the API actually exposes; source hourly funding and candle records are retained separately at their actual timestamps. No historical OI is inferred from candles or fabricated before collection began. Long % is the venue's own share of all accounts on the contract that are net long, in that venue's hourly bucket. Binance and Bybit publish the long and short shares; OKX publishes only the long/short ratio, so its shares are derived as `ratio / (1 + ratio)` and Evidence says so. The definitions are each venue's, so the same figure on two venues is a comparison of crowds, not one market-wide number. Shares can sum to less than 100% when a venue counts flat accounts. Hyperliquid, Binance coin-margined contracts and Bybit USDC contracts publish no per-contract account ratio and show `--`; Evidence gives the reason. Binance and Bybit stamp a closed hour; OKX stamps the hour still forming, and its newest value can change until that hour closes. Venues are not aligned by timestamp: Evidence shows each reading's bucket time. Binance publishes no bucket for an hour without activity, and a reading more than three hours old is dimmed as stale. The latest reading is part of the free preview; its history is Pro, begins at Gloom's first collection, and History says "Collecting" until it has points to draw. Oracle premium is `mark / oracle - 1`. Underlying premiums use the mapped equity's separately dated last price, the contract price multiplier and compatible currencies. Closed-market premium appears only with a known closed or extended underlying session. A stale, missing or mismatched reference yields null. A perpetual mark can move while the underlying exchange is closed; its premium is not a forecast of the next opening price. The Evidence view states the underlying session and reference date. Discovery and latest values refresh roughly once a minute. Retained history is sampled by USD open-interest rank within each venue, across its dexes: the top 10 markets every five minutes, the next 40 every 15 minutes, and the remainder hourly. Newly discovered markets are recorded immediately. Sampled detail is retained for 30 days, hourly buckets through 400 days, and daily buckets thereafter. Buckets retain their sample count and first/last observation times; chart values are last observations in each bucket, not averages. Source corrections supersede earlier records, preserving evidence. CSV headers name the series units: funding and premium values are percent, their changes are percentage points, open interest is USD, and prices retain the quote currency. JSON remains in fractions. Refreshes advance the lookback window; a result capped at 5,000 observations is marked incomplete, and a smaller range can be requested. Timestamps are UTC. Empty history means collection has not yet supplied that series; gaps are not zero values. ## CLI and REST ```sh gloom fn PERP # the board gloom fn PERP --asset-class crypto --venue bybit --sort funding gloom fn PERP --asset-class crypto --sort long-short gloom fn PERP --tab rankings gloom fn PERP ETH --tab compare --json gloom fn PERP --tab history --json # shows BTC and says so in data.metadata.notices gloom fn PERP BTC --tab history --days 30 --json gloom fn PERP TSLA --tab evidence --json gloom shot PERP --tab board --width 1280 --height 540 --output perps.png ``` The pane-function REST interface exposes the same headless bundle and options. Cloud dataset routes are `/cloud/perps/board`, `/history`, `/rankings`, `/compare?baseAsset=BTC`, `/market?marketId=...`, `/equity/:symbol`, and `POST /equities`, which looks up the listings of a whole watchlist or portfolio at once. History takes `marketId`, ISO `from`/`to`, `resolution=auto|minute|hour|day`, and `limit`. The `minute` resolution returns retained sampled detail; it does not promise an observation every minute. JSON preserves canonical market identity, confidence, flags, source links, observation timestamps, raw rates and intervals, currencies, preview locks and correction provenance.