Skip to main content
The market object represents a prediction market. Alongside its question and outcomes, it describes the market’s current state and provides the information an integration needs to read prices, follow activity, or trade. The examples below assume you already have a market object. To find or fetch one, see Discover Markets.
Let’s say you fetched a market with fetchMarket() on a PublicClient or SecureClient:

Market Identifiers

A market has three identifiers, each used in a different context:
Read the identifiers from the market object:

Market Outcomes

Each market has YES and NO outcomes. Each outcome includes a label, current price, and CLOB token ID. The token ID connects the market to order book and trading requests.
Read both outcomes from market.outcomes:
The SDK represents each outcome with its label, price, and CLOB token ID:

Market Status

Market status tells you whether a market is currently available for trading. Check it before relying on live prices or submitting an order, since a market may exist before its order book opens and remain discoverable after it closes. It also indicates whether the market belongs to a negative-risk group, where only one of several mutually exclusive markets can resolve YES.
Read market status from market.state:
MarketState groups the market’s operational state and timing:
Use its status fields to check whether the market is ready for trading:

Identify Augmented Negative Risk

Negative-risk membership is a market-level property, but augmented negative risk is configured on the event. After confirming that the market’s negRisk value is true, fetch its event and check that augmented negative risk is enabled:
Fetch the event referenced by the market, then check its trading configuration:
See Augmented Negative Risk for how named outcomes, placeholders, and Other behave.

Trading Constraints

Every market enforces a minimum price increment, also known as the tick size, and a minimum order size. The minimum price increment defines the grid of prices you can submit; an order price must be a multiple of the active value. Orders smaller than the minimum order size are rejected.
The 0.0025 (0.25¢) increment applies only to World Cup to advance, moneyline, spreads, and totals markets. Always read the active value from the market rather than assuming a fixed increment.
Read the active constraints for a market in your integration:
Read the market’s trading constraints:
The SDK groups these constraints in MarketTrading:

Trading Fees

Some markets charge trading fees. The fee schedule determines how fees vary with price, which side pays them, and what share is returned to makers.
Read the market’s fee configuration:
The SDK exposes this configuration through MarketTrading and FeeSchedule:

Liquidity Reward Settings

Liquidity reward settings determine which resting orders can qualify for incentives and how much funding is available. An order must meet the market’s minimum qualifying size and remain within its maximum qualifying spread. See Liquidity Rewards for the scoring methodology.
Read liquidity reward settings from market.rewards:
The SDK exposes the market configuration through MarketRewards and each dated allocation through ClobRewards:

Market Timing

Market timing places a market within its expected schedule. Markets include start and end dates, while sports markets may also include the scheduled start time of the game.
Read timing data from the market’s state, trading configuration, and sports metadata:
The SDK groups these values by their role:

Liquidity and Activity

Liquidity, volume, and recent price activity describe how actively a market trades. Use them to compare markets or monitor changes over time.
Read the market’s liquidity, volume, and price summary:
The SDK groups liquidity and volume in MarketMetrics, and price activity in MarketPrices: