> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dune.com/llms.txt
> Use this file to discover all available pages before exploring further.

# hip4_hyperliquid.market_details

> Hyperliquid HIP-4 market reference table — one row per binary market with its question, sides, event grouping, strike, expiry, and settlement.

export const TableSample = ({tableName, tableSchema}) => <>
    <div className="hidden dark:block">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}&darkMode=true`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
    <div className="dark:hidden">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
  </>;

The `hip4_hyperliquid.market_details` table is the Hyperliquid HIP-4 market reference table. Grain: one row per `market_id`. Every market is a binary Yes/No pair. Use this table to look up what a market asks, which event it belongs to, when it expires, and how it settled. Join [`hip4_hyperliquid.market_trades`](/data-catalog/curated/prediction-markets/hip4/market_trades) on `market_id` for its fills, or on `outcome_id` = `yes_outcome_id` / `no_outcome_id` for one side.

Hyperliquid publishes most market descriptions as pipe-delimited `key:value` template parameters rather than prose. `title` and `event_title` are readable statements built from those parameters. The raw values are kept in `template`, `description` and `template_fields`.

<Note>
  Markets listed before the venue published a market registry have no name or description (`template` is null, so `title` is null too). They are real markets, not an ingestion gap.
</Note>

## Table Schema

| Column | Type | Description |
| - | - | - |
| `market_id` | `VARCHAR` | Market identifier (Hyperliquid's outcome index). One binary Yes/No contract |
| `event_id` | `VARCHAR` | Event this market is one outcome of, where the venue groups markets into mutually exclusive sets. NULL for standalone markets and while the venue has not published the grouping |
| `yes_outcome_id` | `VARCHAR` | Token that pays out when the market settles yes. Joins `market_trades.outcome_id` |
| `no_outcome_id` | `VARCHAR` | Token that pays out when the market settles no. Joins `market_trades.outcome_id` |
| `title` | `VARCHAR` | Readable one-line statement of what the market asks, built from the venue's parameters. NULL where the venue published no name, incomplete parameters, or a fallback template |
| `yes_outcome_name` | `VARCHAR` | What the Yes side is called: `Yes` on a plain binary, a team or range on others |
| `no_outcome_name` | `VARCHAR` | What the No side is called |
| `event_title` | `VARCHAR` | Name of the event this market belongs to. NULL for standalone markets |
| `template_id` | `VARCHAR` | Venue template the market was created from (e.g. `priceBinary`, `priceTouch`, `sportsTournamentParticipant`). `manual` for hand-written markets, `fallback` for an event's catch-all outcome, `recurring` for a recurring market the venue has not yet described. NULL where the venue published no name |
| `is_fallback` | `BOOLEAN` | TRUE on an event's fallback outcome, which settles yes when none of the named outcomes happens |
| `market_type` | `VARCHAR` | `standalone` or `question_outcome` (one of the mutually exclusive outcomes of an event) |
| `is_mutually_exclusive_event` | `BOOLEAN` | TRUE where exactly one of the event's outcomes settles yes. FALSE for standalone markets and where no grouping is known |
| `event_outcome_count` | `INTEGER` | Number of named outcomes in the event, excluding the fallback outcome. NULL for standalone markets |
| `outcome_position` | `INTEGER` | Published slot within the event, counting from 0. Only set on price-range events |
| `quote_token` | `VARCHAR` | Stablecoin the market is collateralised and paid out in: `USDC`, or `USDH` on the earliest markets |
| `deployer` | `VARBINARY` | Account that listed the market (or its event). NULL on markets listed by validators before permissionless listing |
| `deployer_venue` | `VARCHAR` | Namespace the deployer listed under |
| `frequency` | `VARCHAR` | Cadence of a recurring series: `fifteen_min`, `hourly`, `daily`, `weekly`, `monthly`, `annual`. NULL on one-off markets |
| `underlying` | `VARCHAR` | Symbol the market settles against, on price-based markets |
| `underlying_dex` | `VARCHAR` | HIP-3 builder dex listing the underlying, where it is not a first-party Hyperliquid market |
| `strike_type` | `VARCHAR` | How the strike is read: `greater`, `greater_or_equal`, `less`, `less_or_equal`, `between`, `structured`, `custom` |
| `floor_strike` | `DOUBLE` | Lower bound of the range the market resolves yes in, in units of `underlying` |
| `cap_strike` | `DOUBLE` | Upper bound of the range the market resolves yes in, in units of `underlying` |
| `observation_seconds` | `INTEGER` | How long the underlying must hold the strike to resolve yes. NULL where resolution is a single reading |
| `listed_at` | `TIMESTAMP` | Earliest the venue is known to have listed the market (registration, or first appearance in the registry, a trader action, or a settlement). Not the first trade |
| `scheduled_start_time` | `TIMESTAMP` | When the underlying event is scheduled to begin, where applicable |
| `expected_expiration_time` | `TIMESTAMP` | When the market is due to stop trading and resolve |
| `status` | `VARCHAR` | `active` while open, `closed` once expiration passed without a recorded settlement, `settled` once settled |
| `result` | `VARCHAR` | `yes`, `no`, `void` (both sides paid equally), or `scalar` (fractional payout). NULL until settled |
| `settlement_value_usd` | `DOUBLE` | What one Yes token paid, on a 0 to 1 scale. NULL until settled |
| `settlement_details` | `VARCHAR` | Reference value the venue settled on, where published |
| `settlement_ts` | `TIMESTAMP` | When the market settled. NULL until settled |
| `settlement_block_number` | `BIGINT` | Block the payout was made in. NULL until settled, and on markets settled with no holder to pay |
| `category` | `VARCHAR` | Unified prediction-market category: `sports`, `crypto`, `politics`, `finance`, `technology`, `culture`, `weather`, `world`, `health`, `other` |
| `category_native` | `ARRAY(VARCHAR)` | The venue's own descriptors for the market |
| `template` | `VARCHAR` | The venue's name for the market. On templated markets this is the template label; `title` is the readable form |
| `description` | `VARCHAR` | The venue's description, verbatim. Templated markets carry pipe-delimited `key:value` parameters |
| `event_description` | `VARCHAR` | Description of the parent event, verbatim |
| `template_fields` | `MAP(VARCHAR, VARCHAR)` | The market's template parameters as a key-value map |
| `event_template_fields` | `MAP(VARCHAR, VARCHAR)` | The event's template parameters as a key-value map |
| `source_updated_at` | `TIMESTAMP` | Latest the venue changed anything this row reports |
| `_updated_at` | `TIMESTAMP` | When this row was last written by the pipeline |

## Table sample

<TableSample tableSchema="hip4_hyperliquid" tableName="market_details" />

## Example query

```sql theme={null}
-- Active markets closest to expiry
SELECT
  market_id,
  event_title,
  title,
  yes_outcome_name,
  no_outcome_name,
  category,
  expected_expiration_time
FROM hip4_hyperliquid.market_details
WHERE status = 'active'
ORDER BY expected_expiration_time
LIMIT 20
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.