hyperliquid.predictions.markets table contains every Hyperliquid HIP-4 prediction-market outcome at the token-side grain. Each outcome has two rows, one per token in the YES/NO pair. The primary key is coin, the native side-token identifier (e.g. #54760).
HIP-4 has three market categories:
price_binary: auto-generated price-threshold outcomes (Recurring), parameterized by an underlying asset, a target price, an expiry, and a recurrence period.categorical: outcomes that belong to a parent question with multiple named choices and a fallback “Other”.binary: standalone named outcomes with no parent question.
Table Columns
| Column Name | Description |
|---|---|
| project | Top-level project namespace (hyperliquid). |
| protocol | Protocol within the project (hyperliquid_hip4). |
| chain | The blockchain network (hyperliquid). |
| market_title | Human-readable title for the row. |
| category | Market type. One of ‘price_binary’, ‘categorical’, ‘binary’. |
| sub_category | Underlying asset for Recurring outcomes (e.g. ‘BTC’). NULL otherwise. |
| coin | The HL-native side-token identifier (e.g. ‘#54760’). Primary key. |
| encoding | HL-canonical numeric encoding for the side-token. |
| asset_id | HL-canonical numeric identifier for the side-token. |
| token_name | The fee-token symbol form (e.g. ‘+5476’) used in fee_token for opens. |
| token_side | Which side of the outcome’s YES/NO pair the row represents (0 or 1). |
| side_label | Display label for this row’s token_side (e.g. ‘Yes’, ‘No’, or a categorical label). |
| outcome_id | HIP-4 outcome identifier (shared by both token sides). |
| outcome_name | Outcome display name from the HL API. The literal string ‘Recurring’ marks HL’s auto-generated price-binary outcomes. |
| outcome_description | Outcome description string. For Recurring outcomes this is a structured pipe-separated payload (class:...|underlying:...|expiry:...|targetPrice:...|period:...). For named outcomes this is free-form prose. |
| side_specs | VARIANT array with one entry per token side, each holding that side’s label. |
| is_recurring | True for HL’s auto-generated price-binary outcomes. |
| class | The market class for Recurring outcomes (e.g. ‘priceBinary’). NULL for non-Recurring outcomes. |
| underlying | The asset whose price the outcome resolves against (e.g. ‘HYPE’, ‘BTC’). NULL for non-Recurring outcomes. |
| target_price | The target price for Recurring outcomes. Stored as VARCHAR. token_side=0 resolves YES iff underlying price >= target_price at expiry; token_side=1 resolves YES iff price < target_price. NULL for non-Recurring outcomes. |
| period | The recurrence cadence (e.g. ‘15m’, ‘1h’, ‘1d’). NULL for non-Recurring outcomes. |
| expiry_ts | Resolution timestamp (UTC). NULL for non-Recurring outcomes. |
| question_id | Parent question ID. NULL for Recurring / orphan outcomes. |
| question_name | Question name from the HL API. |
| question_description | Question description from the HL API. |
| fallback_outcome | The outcome ID representing the parent question’s fallback / “Other” choice. |
| named_outcomes | VARIANT array of outcome IDs grouped under the parent question. |
| settled_named_outcomes | VARIANT array of outcome IDs that have settled (winning side). |
| is_named | True when this outcome is one of the parent question’s named outcomes. |
| is_fallback | True when this outcome is the parent question’s fallback outcome. |
| event_ticker | Stable cross-side event identifier. Use for COUNT(DISTINCT) when reporting markets/events traded so a multi-outcome question counts as one event, not many token-side rows. |
| is_winner | True for the winning side of a settled outcome. NULL while unsettled. |
| is_settled | True once the outcome has been resolved on-chain. |
| settled_at | Settlement timestamp (UTC). NULL while unsettled. |
| resolution_outcome | The winning side_label when is_settled. |
| market_status | One of ‘active’ (open), ‘closed’ (expired, awaiting settlement), ‘settled’ (resolved). |
| active | True when the market is currently open for trading. |
| closed | True when the market is no longer accepting new trades. |
| end_date | Market end date (UTC). |
| unique_id | Deterministic unique identifier per row. |
| _created_at | Row creation timestamp. |
| _updated_at | Row last update timestamp. |