home

Get started

Concepts

How Seeryx markets work for builders: round and event slugs, timeframes, round states, the mirrored order book, prices, splits, settlement and payouts.

Markets and rounds

A crypto market is an asset and a round length: BTC 5m, ETH 1h, BNB 1d. It runs as a chain of rounds, each a separate question with its own order book, its own shares and its own outcome. GET /api/markets lists the markets.

tfLengthStarts atTrade ahead
5m5 minutesEvery multiple of 300 s (UTC)The live round and the next 10
15m15 minutesEvery multiple of 900 sThe live round and the next 10
1h1 hourEvery full hourThe live round and the next one
1d24 hours12:00 New York timeThe live round and the next one

Rounds that have not started trade too: their price at the start is still the boundary price, so an order placed early is a bet on a later window.

Round slugs

A round is named {asset}-updown-{tf}-{start}: the asset in lower case, the length, and the start in Unix seconds. The round ends at start + length.

const LENGTH = { '5m': 300, '15m': 900, '1h': 3600, '1d': 86_400 } as const;

// the live round's slug comes from GET /api/markets/{asset}/{tf}/current; the ones after it follow on
const live = await api<{ slug: string; end: number }>('/markets/BTC/15m/current');
const next = (k: number) => `btc-updown-15m-${live.end + (k - 1) * LENGTH['15m']}`; // k = 1..10

A day's round starts at 12:00 New York time (16:00 UTC in summer, 17:00 in winter) and always lasts 24 hours, so on the two days New York changes its clock rounds overlap or leave a gap of an hour: take the next day's start from GET /api/rounds/:slug or from the live round once it is listed rather than adding 86,400.

Event markets

An event market is one outcome of a question ("Will the Fed cut in December?"). Its slug starts with ev-. It trades like one long round: the same order book, orders, WebSocket and fees, with up meaning YES and down meaning NO. Trading stops at closesAt; UMA's Optimistic Oracle then settles it. GET /api/events lists them, GET /api/event-groups groups them into questions.

Round states

statusMeaningTrades
upcomingBefore its startYes, when it is among the rounds that trade ahead
liveBetween start and endUntil 5 seconds before the end ("Round is closing" after that)
livePast its end, outcome still null: the close price is being storedNo
settledoutcome is up or downNo; winning shares are paid

Event markets have open, closed (trading over, waiting for UMA) and resolved with outcome yes or no.

One book, two sides

Up and Down are one order book. A bid for Up at p is an ask for Down at 100 − p, so ?side=up and ?side=down show the same orders from either side. Two buyers can trade with each other: a buyer of Up at 60¢ and a buyer of Down at 40¢ together pay $1.00, which mints one Up and one Down share. A seller of Up and a seller of Down likewise merge their shares back into dollars.

Prices and sizes

RuleValue
PricesWhole cents from 1 to 99; tenths of a cent from 0.1 to 0.9 and 99.1 to 99.9 where finePrices of GET /api/funds is on (it is on seeryx.com). Any other price: 400 "Invalid limit"
SharesUp to 4 decimals; at a price between whole cents in steps of 0.001
Minimum order5 shares (minOrderShares of GET /api/fees): a limit order that many shares, a market buy an amount that buys them at the best ask, a sale that many or every free share you hold. Below it: 400 below_minimum
MatchingBest price first, then the oldest order; a fill is at the resting order's price

Split and merge

POST /api/split turns USDC into the same number of Up and Down shares, $1.00 a pair; POST /api/merge turns pairs back into $1.00 each. Both are free and need at least 5 pairs. A pair always pays exactly $1.00 at the end, so a market maker holding both sides can merge them to free its cash at once.

Settlement on Solana

An order matches at once and your cash and positions change in the same moment. Each fill is then settled by the Seeryx program in a Solana transaction of its own, usually within seconds. Your activity shows that transaction:

txStatusMeaning
pendingSent to Solana, not confirmed yet
confirmedSettled on chain
failedThe program refused it: the trade is undone in your account

A transaction that does not land in time is sent again. If the program refuses a settlement (an expired signature, a session over its limit) the trade is undone in your account and shows as type revert. New orders stop 5 seconds before a round's close so that every fill can settle before it.

Payouts and voids

  • Payouts are automatic. When a round or event resolves, every winning share pays $1.00 into your cash (activity type settle). Nothing needs to be claimed.
  • Crypto rounds resolve on the Binance price at the boundary second. If no result reaches Solana within 15 minutes of the close, the round is voided and every share pays 50¢.
  • Event markets resolve through UMA after trading closes. One that UMA has not settled 30 days after its close is voided and every share pays 50¢.