Skip to content

Assets & tick sizes

How asset IDs are constructed for perps, spot, and outcome markets, and how to respect tick and lot sizes.

Updated Nov 4, 2026Builders1 min read
On this page

Every order references an integer asset ID. The ID namespace determines the market type.

Asset ID ranges

RangeMarket typeExample
0–999Perpetuals0 = BTC-PERP
10000+Spot10000 = first spot pair
20000+Outcome markets20000 = first outcome

For perps, the ID is the index in the universe array returned by meta. For spot, the ID is 10000 + index in spotMeta.universe.

Spot example

If HYPE/USDC is at index 107 in spotMeta.universe, the asset ID is 10107.

code
asset = 10000 + spot_index

Do not assume the index is stable across networks. Always read spotMeta and match by name.

Tick and lot size

MarketTickLot
BTC-PERP0.5 USDC0.0001 BTC
ETH-PERP0.05 USDC0.001 ETH
SOL-PERP0.01 USDC0.01 SOL
Long-tail perps0.0001 USDC1 unit

Metadata returns tickSize and lotSize. Prices and sizes must be exact multiples; the exchange rejects anything else with Invalid price or Invalid size.

Price formatting

Use decimal strings, not floating point. JavaScript numbers lose precision above 2^53 and introduce rounding artifacts in the last decimal.

code
const price = new Decimal(mid).toFixed(tickDecimals);
const size = new Decimal(notional).div(price).toFixed(lotDecimals);

Market metadata

code
{
  "universe": [
    {
      "name": "BTC-PERP",
      "szDecimals": 4,
      "maxLeverage": 40,
      "onlyIsolated": false,
      "tickSize": "0.5",
      "lotSize": "0.0001"
    }
  ]
}

Was this page helpful?