Sequence/docs

Supported Exchanges

Sequence connects to three venue classes through dedicated edge servers deployed near each venue's infrastructure. Every class shares the same SDK surface: quote, buy, sell, cancel, amend, decrease, batch, stream, graph, deploy_algo. Per-venue execution differences surface through a mode field on results (native_atomic vs cancel_replace, auto_settled vs relayer_submitted, etc.) rather than forcing branching in user code.


Centralized exchanges (CEX spot + perps)

ExchangeRegionCCInstrumentsDeploy unitsStatus
BinanceAP Northeast (Tokyo)APSpot + USD-M futuresvenue-edge-binance, venue-edge-binance-perpLive
CoinbaseUS East (Virginia)USSpotvenue-edge-coinbaseLive
KrakenEU West (Ireland)EUSpotvenue-edge-krakenLive
OKXAP Northeast (Tokyo, colocated)*APSpot + SWAPvenue-edge-okx, venue-edge-okx-perpLive
BybitAP Northeast (Tokyo, colocated)*APSpot + linear perpsvenue-edge-bybit, venue-edge-bybit-perpLive
BitgetAP Northeast (Tokyo)APSpotvenue-edge-bitgetLive
Crypto.comAP Northeast (Tokyo)APSpotvenue-edge-cryptocomLive

* OKX and Bybit edges currently colocate on the Binance Tokyo box rather than running in their venue's own region. ap-southeast-1 (Singapore, Bybit) and ap-east-1 (Hong Kong, OKX) are reserved CIDR blocks for future expansion when latency profiling justifies the move.

All CEX edges share a single binary (venue-edge-cex) selected at startup via VENUE=<name>. Spot and perp on the same exchange run as separate processes but share a single VenueId — they connect to different WebSocket hosts (e.g. stream.binance.com vs fstream.binance.com) but show up in the API as one venue, with the instrument_type field discriminating spot vs perp updates.

Adding a new CEX means implementing ~200-400 LOC against the CexVenue trait (WS URL, subscribe frame, parse, order format, sign) — zero changes to the kernel.

On-chain perps

ExchangeRegionCCInstrumentsDeploy unitStatus
HyperliquidUS East (Virginia)USPerps (USDC)venue-edge-hyperliquidLive

Hyperliquid uses the same venue-edge-cex binary with a bespoke WS trading channel + L1 signing. Orders travel over the same uniform CexVenue + OrderTransport traits.


Prediction markets

ExchangeRegionAuthenticationNative AmendNative BatchSettlementStatus
KalshiEU West (Dublin)RSA-PSS + SHA-256/portfolio/orders/{id}/amend at transport layer; graph SDK/API still reports CancelReplace/portfolio/orders/batched (20 ops atomic) at transport layer; graph SDK/API still serialAuto on-venueLive
PolymarketEU West (Dublin)EIP-712 + HMAC-SHA256 L2❌ Cancel+replace only✅ CLOB POST /orders batch (15 orders, best-effort per-order result; transport-supported)On-chain CTF redemptionLive

Both behind the same SDK verbs. The mode field on results (AmendMode::NativeAtomic vs CancelReplace, BatchMode::Serial vs NativeAtomic, RedeemMode::AutoSettled vs RelayerSubmitted) surfaces the real execution path so queue-sensitive strategies can branch. Graph-level SDK batching is still serial today even where the lower venue transport has native batch support. See Prediction Markets for the venue-specific detail.


Decentralized exchanges

Sequence supports on-chain execution across 6 networks and 11+ protocols.

EVM chains

NetworkBlock TimeProtocols
Ethereum~12sUniswap V2/V3, Curve, Balancer V2, DODO V2, PancakeSwap V3
Arbitrum~0.25sUniswap V3, Camelot, TraderJoe LB
Base~2sUniswap V3, Aerodrome, Maverick V2
Optimism~2sUniswap V3, Velodrome
Polygon~2sUniswap V2, Balancer V2, Curve

The DEX edge discovers pools automatically and routes through whichever protocol offers the best price for a pair.

Tip

Arbitrum has the fastest block times on EVM. Ethereum mainnet has the deepest liquidity but the highest gas costs.

Solana (native DMA)

Solana execution uses native Direct Market Access with local routing across Raydium CPMM/CLMM/V4 and Orca Whirlpool. All quoting and transaction building happens locally — no external aggregator dependency (Jupiter, etc.). Supports split routing across multiple pools, 2-hop paths through intermediate assets, and MEV-protected landing via Jito bundles.


Edge architecture (common across classes)

Every venue edge:

  1. Maintains a WebSocket connection for real-time L2 order book data (CEX, prediction markets) or RPC subscriptions (DEX).
  2. Uses the venue's native order channel — REST, WS trading, FIX, or on-chain transaction — for order submission.
  3. Deploys in the same region as the venue's matching engine (for CEX/prediction) or in a VPC close to the RPC provider (for DEX).
  4. Publishes BBO, L2 book, trades, and private fills over CC-LINK to the region's CC.
  5. Implements the same CexVenue / OrderTransport trait surface — so adding a venue never modifies the kernel.

All venue data is visible from any region — CCs mirror BBO + depth + balance reservations via the peer-link mesh (port 6001). An order submitted to the US CC can route to Binance in Tokyo if the SOR determines Tokyo has the best price after factoring peer-link RTT.

Venue-initiated discovery

Prediction-market edges (Kalshi, Polymarket) subscribe to lifecycle channels (market_lifecycle_v2, new_market). When the venue announces a new market, the edge enqueues it into drain_pending_new_symbols(); the framework runner picks it up within hundreds of ms and registers the PairSpec with CC. Users can quote and trade the fresh market within one tick of it going live on the exchange — no waiting for the 15-min polling cadence.


Symbol routing

Orders route only to venues that support the exact symbol requested. There are no automatic conversions between quote currencies:

SymbolRoutes to
BTC-USDKraken, Coinbase
BTC-USDTBinance, Bitget, Crypto.com, OKX, Bybit
BTC-USDCBitget, Crypto.com, OKX, Bybit, Hyperliquid
KXBTCZ-26DEC31-T99000Kalshi (YES leg)
KXBTCZ-26DEC31-T99000:NOKalshi (NO leg)
btc-updown-5m-1776537600Polymarket (YES token)
btc-updown-5m-1776537600:noPolymarket (NO token)
Warning

Submitting a BTC-USD order when you only have Binance credentials will fail — Binance does not support USD pairs. Use GET /v1/pairs/{symbol}/venues to verify venue coverage before submitting.


Venue IDs (SDK)

When writing multi-venue algos, use these constants to target specific venues. Wire IDs match the CC's VenueId + 1 (slot 0 is reserved for "default/local").

ConstantIDTarget
VENUE_KRAKEN1Kraken
VENUE_COINBASE2Coinbase
VENUE_BINANCE3Binance (spot + perp share this id)
VENUE_BITGET4Bitget
VENUE_CRYPTOCOM5Crypto.com
VENUE_BITMART6BitMart
VENUE_DEX7Generic DEX (aggregated)
VENUE_OKX8OKX (spot + perp share this id)
VENUE_BYBIT9Bybit (spot + perp share this id)
VENUE_UNKNOWN10Unknown
VENUE_DEX_ETH11Ethereum DEX
VENUE_DEX_ARB12Arbitrum DEX
VENUE_DEX_BASE13Base DEX
VENUE_DEX_OP14Optimism DEX
VENUE_DEX_POLY15Polygon DEX
VENUE_DEX_SOL16Solana DEX
VENUE_HYPERLIQUID17Hyperliquid
VENUE_POLYMARKET18Polymarket
VENUE_KALSHI19Kalshi

Spot and perp variants of the same exchange (Binance, OKX, Bybit) share a single VenueId because they're commercially one venue with the same credentials. Differentiate using the instrument_type field on market-data updates and PairSpecs — never branch on the venue id alone if you care about the spot/perp distinction.

Prediction-market venues (Kalshi, Polymarket) have dedicated venue IDs but typically you identify them by symbol format (Kalshi tickers, Polymarket slugs / token IDs) and let the CC route. Use is_dex(venue_id) and is_cex(venue_id) to classify.


Credential setup per class

Classapi_keyapi_secretpassphraseextra_json
CEX (most)API keyAPI secret
Coinbase, OKX, Crypto.com, BitgetAPI keyAPI secretPassphrase
Hyperliquidsigner_private_key, vault_address
KalshiKey ID (UUID)RSA PEM private keysubaccount (optional)
Polymarket (recommended)""""signer_private_key, optional proxy_address, builder
Polymarket (pre-derived L2)L2 API keyL2 secret (b64)L2 passphrasesigner_private_key still required
DEX (EVM)Wallet addresssigner_private_key or turnkey_*
SolanaWallet pubkeysigner_private_key or turnkey_*

For Polymarket, the recommended path is to leave the flat fields empty and let the edge derive L2 credentials from your EVM signer on first order (via /auth/derive-api-key). Only supply pre-derived L2 credentials if you've already generated them out-of-band — in that case signer_private_key is still required because orders are EIP-712 signed client-side.

All classes share the same POST /v1/credentials/{venue} endpoint — just the payload JSON differs per class. See each venue's page in the API reference for exact field names.


Checking venue status

bash
curl https://api.sequencemkts.com/v1/edges \
  -H "Authorization: Bearer $SEQ_API_KEY"

Returns connected status, last_seen_ms timestamp, and the list of symbols each venue supports. Example response includes prediction-market edges alongside CEX/DEX, and shows perp variants as separate edges sharing a commercial venue id:

json
[
  {"edge_id": "venue-edge-binance",      "region": "ap", "syms": 5,     "bbo": 5,    "age_ms": 14},
  {"edge_id": "venue-edge-binance-perp", "region": "ap", "syms": 5,     "bbo": 5,    "age_ms": 14},
  {"edge_id": "venue-edge-bybit",        "region": "ap", "syms": 5,     "bbo": 5,    "age_ms": 12},
  {"edge_id": "venue-edge-bybit-perp",   "region": "ap", "syms": 5,     "bbo": 5,    "age_ms": 12},
  {"edge_id": "venue-edge-okx",          "region": "ap", "syms": 5,     "bbo": 5,    "age_ms": 11},
  {"edge_id": "venue-edge-okx-perp",     "region": "ap", "syms": 5,     "bbo": 5,    "age_ms": 11},
  {"edge_id": "venue-edge-coinbase",     "region": "na", "syms": 5,     "bbo": 5,    "age_ms": 14},
  {"edge_id": "venue-edge-kraken",       "region": "eu", "syms": 230,   "bbo": 230,  "age_ms": 38, "remote": true},
  {"edge_id": "venue-edge-hyperliquid",  "region": "na", "syms": 229,   "bbo": 190,  "age_ms": 31},
  {"edge_id": "venue-edge-kalshi",       "region": "eu", "syms": 11000, "bbo": 6896, "age_ms": 6,  "remote": true},
  {"edge_id": "venue-edge-polymarket",   "region": "eu", "syms": 100,   "bbo": 99,   "age_ms": 30, "remote": true}
]