# Crypto Ticker Format

<Callout type="info" title="Market Maker Reference">
  This specification defines the ticker format for crypto price prediction markets. Use this as the authoritative reference for ticker generation and parsing.
</Callout>

## Overview

Crypto prediction market tickers follow a standard Gemini format for price threshold contracts:

```
GEMI-{Event}-{Contract}
```

## Ticker Structure

| Component | Description | Example |
|-----------|-------------|---------|
| `GEMI` | Gemini prediction market prefix | `GEMI` |
| `Event` | Underlying asset + optional duration + expiry datetime | `BTC2603230800` or `BTC05M2602251745` |
| `Contract` | Price threshold condition | `HI105000` or `UP` |

**Full Ticker Examples:**
- `GEMI-BTC2603230800-HI105000` (daily contract)
- `GEMI-BTC05M2602251745-UP` (5-minute contract)
- `GEMI-BTC15M2602251745-UP` (15-minute contract)

<Callout type="caution" title="Legacy Format for Short-Duration Contracts">
  Short-duration contracts (5-minute and 15-minute) previously embedded the strike price in the contract segment (e.g., `GEMI-BTC05M2602251745-HI66750`). This format is being phased out in favor of the `UP` contract type, where the strike price is returned in the API response instead of encoded in the ticker. You may still encounter the legacy `HI{PRICE}` format for older contracts.
</Callout>

## Event Format

The event identifies the underlying crypto asset and its expiry.

### Structure

```
{UNDERLYING}[{DURATION}]{EXPIRY}
```

### Components

| Component | Format | Description |
|-----------|--------|-------------|
| `UNDERLYING` | `[A-Z]+` | Crypto asset symbol (e.g., `BTC`, `ETH`, `SOL`, `XRP`) |
| `DURATION` | `05M` or `15M` | **Optional.** Duration marker for 5-minute or 15-minute interval contracts. Omitted for all other durations. |
| `EXPIRY` | `YYMMDDHHmm` | Expiry date and time in UTC |

### Expiry Format

```
YYMMDDHHmm
```

| Position | Part | Description |
|----------|------|-------------|
| 1-2 | `YY` | Year (e.g., `26` for 2026) |
| 3-4 | `MM` | Month (01-12) |
| 5-6 | `DD` | Day (01-31) |
| 7-8 | `HH` | Hour in 24hr UTC (00-23) |
| 9-10 | `mm` | Minute (00-59) |

**Examples:**
- `BTC2603230800` = BTC expiring March 23, 2026 08:00 UTC
- `BTC05M2602251745` = BTC 5-minute contract expiring February 25, 2026 17:45 UTC
- `BTC15M2602251745` = BTC 15-minute contract expiring February 25, 2026 17:45 UTC

### Duration Markers

For **5-minute and 15-minute interval contracts only**, a duration marker is inserted after the underlying asset symbol:

| Duration | Marker | Format | Example Event |
|----------|--------|--------|---------------|
| 5 minutes | `05M` | `{UNDERLYING}05M{EXPIRY}` | `BTC05M2602251745` |
| 15 minutes | `15M` | `{UNDERLYING}15M{EXPIRY}` | `BTC15M2602251745` |
| All others | *(none)* | `{UNDERLYING}{EXPIRY}` | `BTC2603230800` |

<Callout type="note" title="Duration Marker Rules">
  - Only `05M` and `15M` markers are supported (zero-padded to 3 characters)
  - All other durations (1 day, 1 week, etc.) omit the duration marker
  - The marker `5M` without leading zero is **not** recognized—it must be `05M`
</Callout>

## Supported Underlyings

| Asset | Symbol | Description |
|-------|--------|-------------|
| Bitcoin | `BTC` | Bitcoin price in USD |
| Ethereum | `ETH` | Ethereum price in USD |
| Solana | `SOL` | Solana price in USD |
| XRP | `XRP` | XRP price in USD |

<Callout type="note" title="Asset Availability">
  Additional assets may be added. Check [List Events](/rest-api/prediction-markets/events/list-events) for the current list of available markets.
</Callout>

## Contract Format

Gemini crypto prediction contracts use one of two contract types depending on the duration:

| Contract Type | Format | Used For | Strike Price Source |
|---------------|--------|----------|---------------------|
| `UP` | `UP` | Short-duration contracts (5-minute, 15-minute) | API response |
| `HI{PRICE}` | `HI` + encoded price | Daily and longer contracts | Embedded in ticker |

### `UP` Contract (Short-Duration)

For 5-minute and 15-minute contracts, the contract segment is `UP`. An `UP` contract resolves YES if the underlying asset's price is at or above the strike price at expiry. The strike price is the asset's price at the start of the contract window and is not encoded in the ticker.

```
UP
```

<Callout type="info" title="Strike Price for UP Contracts">
  The strike price for `UP` contracts is available through the event response and the [Get Strike Price for Event](/rest-api/prediction-markets/events/get-event-strike) endpoint once it has been captured.
</Callout>

### `HI{PRICE}` Contract (Daily and Longer)

For daily and longer-duration contracts, the strike price is encoded directly in the ticker.

```
HI{PRICE}
```

| Component | Description |
|-----------|-------------|
| `HI` | Greater than or equal to (>=) indicator |
| `PRICE` | Strike price as integer, with `D` as decimal delimiter |

### Price Encoding (`HI` contracts only)

- Whole numbers are entered as-is: `105000` = $105,000
- Decimals use `D` as delimiter: `2D20` = $2.20

| Price | Encoded |
|-------|---------|
| $105,000 | `HI105000` |
| $2.20 | `HI2D20` |
| $0.50 | `HI0D50` |
| $3,500.25 | `HI3500D25` |

## Complete Examples

### BTC Contract (Daily)

**BTC $105,000 or above, expiring March 23, 2026 08:00 UTC**

| Component | Value |
|-----------|-------|
| Prefix | `GEMI` |
| Underlying | `BTC` |
| Expiry | `2603230800` |
| Contract | `HI105000` |
| **Full Ticker** | `GEMI-BTC2603230800-HI105000` |

### BTC Contract (5-Minute)

**BTC UP, expiring February 25, 2026 17:45 UTC (5-minute interval)**

| Component | Value |
|-----------|-------|
| Prefix | `GEMI` |
| Underlying | `BTC` |
| Duration | `05M` |
| Expiry | `2602251745` |
| Contract | `UP` |
| **Full Ticker** | `GEMI-BTC05M2602251745-UP` |

### BTC Contract (15-Minute)

**BTC UP, expiring February 25, 2026 17:45 UTC (15-minute interval)**

| Component | Value |
|-----------|-------|
| Prefix | `GEMI` |
| Underlying | `BTC` |
| Duration | `15M` |
| Expiry | `2602251745` |
| Contract | `UP` |
| **Full Ticker** | `GEMI-BTC15M2602251745-UP` |

### XRP Contract

**XRP $2.20 or above, expiring March 23, 2026 15:00 UTC**

| Component | Value |
|-----------|-------|
| Prefix | `GEMI` |
| Underlying | `XRP` |
| Expiry | `2603231500` |
| Contract | `HI2D20` |
| **Full Ticker** | `GEMI-XRP2603231500-HI2D20` |

### ETH Contract

**ETH $4,500 or above, expiring April 1, 2026 12:00 UTC**

| Component | Value |
|-----------|-------|
| Prefix | `GEMI` |
| Underlying | `ETH` |
| Expiry | `2604011200` |
| Contract | `HI4500` |
| **Full Ticker** | `GEMI-ETH2604011200-HI4500` |

### SOL Contract

**SOL $250.50 or above, expiring February 28, 2026 16:00 UTC**

| Component | Value |
|-----------|-------|
| Prefix | `GEMI` |
| Underlying | `SOL` |
| Expiry | `2602281600` |
| Contract | `HI250D50` |
| **Full Ticker** | `GEMI-SOL2602281600-HI250D50` |

## Regex Patterns

### Full Ticker

```regex
^GEMI-([A-Z]+)(?:(05M|15M))?(\d{10})-(UP|HI(\d+(?:D\d+)?))$
```

**Capture Groups:**
1. Underlying asset
2. Duration marker (optional: `05M` or `15M`)
3. Expiry (YYMMDDHHmm)
4. Contract (`UP` or full `HI{PRICE}`)
5. Price (with optional decimal, only present for `HI` contracts)

> This pattern validates ticker structure only. To validate that the contract type matches the duration (e.g., `UP` for short-duration, `HI` for daily and longer), apply additional logic after parsing.

### Event Only

```regex
^([A-Z]+)(?:(05M|15M))?(\d{10})$
```

**Capture Groups:**
1. Underlying asset
2. Duration marker (optional: `05M` or `15M`)
3. Expiry (YYMMDDHHmm)

### Contract Only

```regex
^(UP|HI(\d+(?:D\d+)?))$
```

## Validation Rules

1. Ticker must start with `GEMI-`
2. Underlying must be a valid crypto asset symbol
3. Duration marker, if present, must be exactly `05M` or `15M`
4. Expiry must be a valid future UTC datetime
5. For new contracts, `UP` is used for short-duration and `HI{PRICE}` for daily and longer. Legacy short-duration contracts may still use `HI{PRICE}`.
6. Price decimal delimiter must be `D` (not `.`) for `HI` contracts

## Changelog

| Version | Effective Date | Changes |
|---------|----------------|---------|
| 1.2 | 2026-04-08 | Short-duration contracts (5-min, 15-min) use `UP` contract type; strike price moved to API response. Legacy `HI{PRICE}` format deprecated for these durations. |
| 1.1 | 2026-02-25 | Added duration markers for 5-minute (`05M`) and 15-minute (`15M`) interval contracts |
| 1.0 | 2026-02-13 | Initial specification |
