Methodology

Where Astra's prices come from, how one price per asset is formed, and what its confidence and status mean.

Astra publishes one USD price per asset, built from the live order books of several exchanges. This page explains how. Statuses covers what each status serves.

Sources

Crypto assets are read from the public market-data streams of Binance, OKX, Bybit, Coinbase, Kraken and Bitstamp, and from Hyperliquid for assets native to it. Every market on every venue is listed explicitly; nothing is matched by ticker at runtime, so a different token that happens to share a symbol never votes.

sources in GET /v1/status and GET /v1/feeds is the number of venues behind the current price.

One observation per venue

  • An observation is the mid of the best bid and ask, with half the spread as its uncertainty. Last trades are never used: one small print moves them.
  • Each venue casts one vote per asset, however many markets it lists for it.
  • A venue is left out of an update when its connection is down, it reports maintenance, the market is halted, its quote is too old or arrives late, its book is crossed or too wide, or its price sits far from the other venues. A venue that drops is out at once, and back once it is healthy again.

Everything in USD

USD is the unit, not a market. USDT and USDC are priced from USD markets only; other assets are priced from USD, USDT or USDC markets, each converted at that stablecoin's own index at that instant. A stablecoin is never assumed to be worth $1: a depeg is published as the stablecoin's own price and does not leak into ETH or BTC.

Aggregation: the vote median

Each venue places three equal votes, at its bid-side edge (mid − half spread), its mid and its ask-side edge (mid + half spread). The price is the median of all votes. Venues are weighted equally, not by volume: volume can be wash-traded, and weighting by it would let one venue decide a small set.

With equal weights, moving the price takes more than half of the venues. A minority of manipulated or broken venues cannot move it.

There is no step limit. A real crash passes straight through; the median of independent venues is the guard against manipulation, not a delay.

Confidence

conf is the larger distance from the price to the 25th and the 75th percentile of the votes. Wide spreads and venues that disagree both widen it. It is expressed in the same units as price.

Status

  • trading: enough independent venues voted and the confidence is tight enough relative to the price.
  • degraded: either condition failed. The last trading price is kept and frozen on the Hermes routes.
  • market_closed: the asset's market session is closed; the price is frozen at its last in-session value.
  • reference: the price comes from a single source. Read it for information; never liquidate on it.

A price is re-sent every second even when it has not changed, so a feed that goes silent is a fault, and /v1/status marks it stale.

Tokenized stocks

US exchange data is licensed, and few crypto venues list stock tokens, so stocks use a different shape.

  • Live votes are share prices from Hyperliquid HIP-3 stock perpetuals and Bybit xStocks where those markets trade enough.

  • The anchor is the issuer's Chainlink feed on Robinhood Chain. It updates rarely, so it does not vote. It fences the index instead: the price must stay close to it, and it counts towards the quorum. Without the anchor, or outside its fence, the stock is degraded.

  • A stock with only its issuer feed and no live venue is reference.

  • Two feeds per stock. A stock token's price is the share price times the token's on-chain ERC-8056 multiplier, which carries dividends and splits.

    • Equity.US.<TICKER>/USD is the share price, under the Pyth-compatible ID.
    • Equity.RH.<TICKER>/USD is the Robinhood token price, under its Astra ID only.

    They are equal while the multiplier is 1 and diverge once it moves.

  • Session: 24/5, Sunday 20:00 to Friday 20:00 New York time, closed on NYSE full-day holidays. Outside it the status is market_closed. Early closes are not modelled.

Reference assets: FX, metals, commodities

No free exchange besides Hyperliquid's HIP-3 markets quotes these, and one venue cannot outvote itself, so they are always reference while their session is open.

AssetFeedSession (New York time)
Euro, British poundFX.EUR/USD, FX.GBP/USD: dollars per unitFX: Sunday 17:00 to Friday 17:00
Japanese yenFX.USD/JPY: yen per dollar, not a USD priceFX
Gold, silver, platinum, palladiumMetal.XAU/USD, Metal.XAG/USD, Metal.XPT/USD, Metal.XPD/USDCME Globex: Sunday 18:00 to Friday 17:00, daily break 17:00–18:00, closed on CME holidays
Copper, WTI and Brent crude, natural gasCommodities.COPPER/USD, Commodities.WTI/USD, Commodities.BRENT/USD, Commodities.NATGAS/USDCME Globex

Orientation follows Pyth. The source books keep quoting through weekends; the session is what freezes the price.

What Astra does not do

  • Prices are not signed; there is no on-chain verification. See Compatibility.
  • ema_price is Astra's own moving average, not Pyth's. See Statuses.

On this page