Skip to main content
This page documents the strongly-typed fields on the instrument that identify a crypto price market (product code cpc, “Cryptocurrency Contracts”). Do not parse the instrument symbol or slug — symbol formats are not part of the public contract and may change. Identify markets using the fields below. Every crypto price market settles against a published reference index, not a spot venue. Today that index is CF Benchmarks’ Bitcoin Real-Time Index (BRTI). The Retail API exposes the same terms as the typed assetPriceTerms object; see Crypto Price Market Fields.
The automated market families in Section 2 are listed in the preprod environment and roll out to production as announced in the changelog. Production currently carries the hand-listed Bitcoin markets described in Section 4.

Section 1: Common Identifying Fields

The following fields appear on every automated crypto instrument. Together they identify the asset, the reference index, the market type, the time window, and the threshold of a contract.

Field Reference

The instrument also carries display fields you can ignore for mapping: market_title, market_subtitle, event_sort_type, market_sort_order, market_color, market_dark_color, event_image, event_image_display_type, event_tags, and the CFTC reporting fields cftc_instrument_id, cftc_product_desc, cftc_binary_option_strike_price_alias. Operational fields (requires_manual_settlement, manual_settlement_*, expected_settlement_side, settlement_*) can appear while the exchange is settling an instrument and must be ignored.

crypto_market_type Enum

Treat an unknown value as a newer family: render the fields that are present and watch the changelog.

crypto_horizon Enum

Series

event_series combines asset, family and cadence. Current values:

Event Attributes

event_attributes records the strike for the exchange’s DCM record. strike_unit is USD and strike_description is the index symbol on every family except up/down, which uses strike_value: "Up" with strike_unit: "string". Price range interior buckets record the exact bounds as strike_value: "<lower>-<upper>" with evaluation_type: "==". Settlement never depends on these fields; the crypto_* metadata above is authoritative. Every family resolves each instrument independently (EVENT_OUTCOME_INDEPENDENT) except price range, whose event is mutually exclusive (EVENT_OUTCOME_MUTUALLY_EXCLUSIVE) so that exactly one bucket settles Yes. See Mutually Exclusive Collateral Return for the margin treatment.

Section 2: Market Families

All families share the same contract attributes: tick size 0.01, valid prices 0.01 to 0.99, minimum order 0.01 contract, payout $1.00 per contract, position accountability level 25,000 contracts, and a daily trade-day roll at 5:00 PM ET. Last trade is the settlement instant (interval_end); the instrument expires 30 minutes later, which leaves time for the exchange to resolve it. Source agency is CF Benchmarks.

Up/Down

Will the price close the window at or above its open?

Above/Below

Will the price be at or above $X at expiry?

Price Range

Will the price be between $A and $B at expiry?

One-Touch

Will the price reach (or dip to) $X before the end of the month?

Section 3: Identifying Markets

Use this table to identify a market from instrument metadata. Match on crypto_market_type, then read the window from interval_start / interval_end and the threshold from outcome_strike or the range bounds.

Worked Example: 15-Minute Up/Down

A settled 15-minute Bitcoin window that opened at 00:15 UTC on September 21, 2026:
To interpret this contract:
  1. crypto_market_type = "updown" → an up/down window; crypto_horizon = "15m" → 15 minutes long.
  2. interval_start / interval_end → the window ran from 00:15:00 to 00:30:00 UTC.
  3. price_to_beat = "81650.14" → the open value; crypto_settlement_price = "81730.83" → the close value.
  4. Close ≥ open, so the long side (Yes, “Up”) paid $1.00.

Worked Example: Daily Above/Below Strike

One leg of the daily ladder expiring at 5:00 PM ET on September 21, 2026:
To interpret this contract:
  1. crypto_market_type = "strike" → an above/below leg.
  2. outcome_strike = "74000" → pays if the settlement value is at or above $74,000.
  3. interval_end = "1790024400" → settles on the last-minute average before 21:00 UTC (5:00 PM ET).
  4. Every other strike of the same ladder shares event_id = "btc-above-day-2026-09-21".

Worked Example: Daily Price Range Bucket

An interior bucket of the price range ladder with the same expiry:
To interpret this contract:
  1. crypto_market_type = "range" → a price range bucket in a mutually exclusive event.
  2. crypto_range_lower / crypto_range_upper → pays if the settlement value is between $74,000.00 and $74,499.99 inclusive.
  3. The neighbouring buckets are $73,999.99 or below (crypto_range_kind = "below", no lower bound) and $74,500 to $74,999.99.

Worked Example: Monthly One-Touch

A “Dips to” leg of a monthly one-touch ladder has this shape:
To interpret this contract:
  1. crypto_market_type = "hit" with crypto_hit_direction = "low" → pays if the rolling trimmed mean is at or below the target at any point in the window.
  2. outcome_strike = "57500" → the target.
  3. interval_start / interval_end → the window runs from midnight ET on October 1 to midnight ET on November 1, 2026. The market can settle Yes early; a No is decided after interval_end.

Section 4: Hand-Listed Markets

The exchange also lists crypto markets by hand, for example the year-end Bitcoin ladders (btc-pricerange-yr-12-31-2026, btc-hitprice-high-yr-12-31-2026, btc-hitprice-low-yr-12-31-2026, btc-above-yr-12-31-2026) and the “When will Bitcoin hit $150k?” date ladder (btc-150k). These carry event_category = "CRY" and a cpc- symbol but none of the crypto_* fields, and on the Retail API they show marketType: "futures" with assetPriceTerms: null. For these markets the contract terms are only in instrument_rules (Retail description). Read that text for the index, the statistic and the settlement instant: the year-end markets settle on a 60-second 20% trimmed mean of BRTI, for example, whereas the automated above/below and price range ladders settle on a simple last-minute average.

Best Practices

  • Never parse the symbol or slug to determine the market type, window, or strike. Symbol formats are not part of the public contract.
  • Map on crypto_market_type. Treat an unknown value as a newer family: render the terms that are present and watch the changelog.
  • Read windows from interval_start and interval_end, not from the instrument’s expiration date, which is 30 minutes after settlement.
  • Treat every price as a decimal string (outcome_strike, price_to_beat, crypto_range_*, crypto_settlement_price) and convert it yourself. Compare in cents; bounds end in .99.
  • Expect price_to_beat to appear a few seconds after an up/down window opens. Re-read the instrument metadata after interval_start rather than assuming the value at listing.
  • Ladders are wide. An hourly above/below or price range ladder has 30 to 100 legs; subscribe to instrument updates via the streaming APIs to catch each new ladder as it lists.
  • Follow each market’s own rules text. Hand-listed markets and automated markets can use different statistics for the same asset.