Skip to content

Data Dictionary

This page is the analyst-facing dictionary for documented marts: grain, filters, and common mistakes.

Reference ladder

Chooser → dictionary → documented contracts → warehouse reference; do not treat staging/raw as APIs. Start with Query the warehouse. Formal grains and the Polygon complete column contract live in Data contracts. To see which pipeline builds a given mart, see Pipeline outputs.

Global Polymarket graph catalog

polymarket_catalog_marts.polymarket_graph_catalog

Field Analyst guidance
Intended use Consumer-neutral event/market inventory and downstream knowledge-graph input; not a price or trading fact table.
Grain One row per unique namespaced record_id.
Record types event, market, or event_market. Filter record_type before interpreting node-only or edge-only fields.
Graph identity Nodes use entity_id; edges use from_record_id, to_record_id, and relationship_type='contains_market'.
Text content_text is deterministic labeled text; source prose remains separately available in title, subtitle, description, and resolution_source. Treat all source text as untrusted data.
Structured text Parse tags_json, series_json, outcomes_json, tradability_evidence_json, and attributes_json as JSON. Outcome order follows the source; object keys are stable.
History first_observed_at and last_observed_at span completed crawls. present_in_latest_crawl=false means retained history, not deletion proof.
Integrity content_text_sha256 covers the normalized text representation. Release-level checksums cover the files.
Common mistakes Assuming pre-first-crawl completeness; filtering markets by current active state; interpreting volume as tradability; treating tags/outcomes as v1 node types; or using source text as executable instructions.

Polymarket WC2026 Marts

polymarket_wc2026_marts.polymarket_wc2026_market_hourly_odds

Field Analyst Guidance
Intended use Golden WC2026 hourly odds mart with market and enclosing-event metadata.
Grain One row per market_id, odds_hour_epoch.
Identifiers market_id, clob_token_id, primary_outcome_label, event_id, event_slug, condition_id.
Time columns odds_hour_utc, odds_hour_epoch, first_observed_at, last_observed_at, game_start_time, end_time, event_start_at, event_finished_at.
Price columns open_odds, high_odds, low_odds, close_odds, avg_odds; raw primary-outcome CLOB probabilities (Yes when present, otherwise outcome_index 0). Use primary_outcome_label for the selected outcome name.
Recommended filters Filter by event_slug, event_id, question, category, tags, sports_market_type, primary_outcome_label, or market status fields (is_active, is_closed, is_resolved). Require event_volume_usd_lifetime_reported >= 100000 only when auditing eligibility; admitted rows already passed the sticky event floor.
Common joins Use primary_outcome_label for the selected token label; parse outcomes for the full outcome set; join event_id across markets in the same event. For FIFA team context, join market text to international_results_wc2026_team_status manually. Optional metadata enrichment runs before hourly odds ingest; the mart reflects the latest enriched Gamma fields. For point-in-time child-market metadata beyond the mart columns, join polymarket_wc2026_raw.event_market_payload_snapshots on market_id (raw layer, not a documented contract).
Common mistakes Treating prices as progression-normalized knockout odds or as a fixed Yes probability when primary_outcome_label is a team/Over/Under label; using clob_token_id grain when the contract is (market_id, odds_hour_epoch); expecting separate current-price or freshness status columns on this mart.

polymarket_wc2026_marts.polymarket_wc2026_match_minute_odds

Property Value
Grain One row per (odds_minute_utc, market_id)
Coverage FIFA match IDs 1–104; 216 group moneylines and 32 knockout advance/win markets
Intended use In-game event studies, backtests, and minute-level market analysis
Timing Primary Gamma event startTime through finishedTimestamp, boundary minutes inclusive
Prices Raw Yes/No minute OHLC, average, point counts, and first/last observation times
Null policy Dense rows are retained; missing token minutes stay null and are never carried forward
Semantics Group Yes/No is literal; knockout Yes/No is official home/away team orientation
Match identity FIFA numeric ID from the schedule; team names and home/away orientation from the uniquely matched latest international-results row
Timing diagnostics Scheduled kickoff, actual start/finish, start delta, window length, boundary flags, minute_status, and uncapped zero-based elapsed_window_minute wall-clock offset
Pair diagnostics Nullable raw close sum/deviation and a strict > 0.05 anomaly flag; prices are never normalized
Provenance Selected and primary timing events plus matched results ID, immutable revision, payload SHA-256, and load time

Use proposition_type, yes_represents, and no_represents for meaning. See Data contracts for publication guarantees.

Polymarket Soccer Marts

polymarket_soccer_marts.polymarket_soccer_matches

One row per admitted exact-tag soccer event. Use home_win_market_id, draw_market_id, and away_win_market_id to join minute relations. Timing is an inclusive UTC window; kickoff_source identifies market gameStartTime or event startTime, timing_status distinguishes explicit finish, inferred closure, and the five-hour cap, and timing_confidence is high, medium, or low respectively. competition_label retains the Gamma event subtitle and series_slugs_json retains its series identifiers. coverage_tier distinguishes the guaranteed tag era from pre-tag best effort.

Soccer observed and dense minute odds

Property Observed relation Dense relation
Relation polymarket_soccer_match_result_minute_odds_observed polymarket_soccer_match_result_minute_odds
Grain (market_id, odds_minute_epoch) (market_id, odds_minute_epoch)
Rows Source-observed Yes or native No minutes Every inclusive match-window minute
Quiet minutes Absent Prior close copied to OHLC only after the first observation, independently for Yes and No
Provenance Source point count and first/last timestamps for each token side is_observed, is_no_observed, carry age, last observed time, and observed point counts

Do not sum or normalize home/draw/away prices, and do not treat No as 1 - Yes. Join roles within event_id, and never interpret a carried row as a source observation. Missing native No minutes stay null and fail closed for No-side research only.

Soccer modeling minute odds

polymarket_soccer_match_result_minute_odds_modeling is ready for direct minute-level analysis without an additional Yes coverage filter. It contains only games with all three result markets, non-null Yes OHLC prices on every row, at least 99% Yes observed-minute coverage across the game, and no unobserved Yes run over three minutes in any market. observed_minute_coverage_percent and maximum_consecutive_gap_minutes repeat the game-level Yes qualification on every row. no_observed_minute_coverage_percent and no_maximum_consecutive_gap_minutes are diagnostic. Use is_observed and is_no_observed to distinguish source observations from forward-filled quiet minutes.

Soccer pipeline monitoring

polymarket_soccer_pipeline_health is the single-row automation entry point. Use polymarket_soccer_pipeline_alerts for active stable alert codes and operator remediation, and polymarket_soccer_pipeline_trends for comparable successful-run deltas. The underlying ops tables preserve lifecycle, retry attempt, error, heartbeat, CPU, RSS, storage, and elapsed diagnostics. Terminal dbt steps also retain observed- and dense-minute coverage for comparable runs. The data-quality relation separates scheduled dense coverage from due coverage after POLYMARKET_SOCCER_MONITOR_COMPLETION_GRACE_MINUTES, and from recoverable coverage that excludes primary Yes-token windows confirmed terminally unavailable. Future games and unavailable history therefore remain visible without depressing the actionable recoverable percentage. polymarket_soccer_ops.pipeline_alert_history preserves alert first/latest observation bounds across successive dbt builds. Warning drift does not invalidate published odds; critical correctness and aged operational conditions require intervention.

polymarket_wc2026_marts.polymarket_wc2026_match_order_book

Property Value
Grain One row per (fifa_match_id, market_id, clob_token_id, snapshot_timestamp_ms, snapshot_sha256, book_side, level_rank)
Coverage FIFA match 104, Spain–Argentina final team-to-advance market; both outcome-token streams from accepting orders through closure
Intended use Historical L2 depth, spread, midpoint, and liquidity analysis
Prices and size Exact DECIMAL(38,18) levels; bids rank high-to-low and asks low-to-high
Depth level_notional, cumulative_size, and cumulative_notional are calculated independently per snapshot side
Snapshot fields Best bid/ask, spread, midpoint, optional last-trade price, negative-risk flag, UTC and epoch-millisecond time
Provenance Published scan and manifest hashes, PMXT source label, and ingestion timestamp
Null policy Missing sides remain null; empty raw books emit no artificial mart level
Common mistakes Pairing the two token streams by timestamp, inferring fixed cadence, treating snapshots as order events, or synthesizing complementary prices

Advanced historical pipeline

The Polygon settlement-minute mart is optional and isolated. Ordinary Polymarket WC2026 hourly and match-minute analysis does not require it.

polymarket_wc2026_marts.polymarket_wc2026_polygon_settlement_minute_odds

Property Value
Grain One row per (proposition_id, settlement_minute_utc)
Coverage FIFA match IDs 1–104; 216 group propositions × 150 minutes plus 32 knockout propositions × 210 minutes = 39,120 rows
Intended use Historical settlement-pipeline studies over fixed scheduled match windows
Timing Finalized Polygon event-block timestamp bucket inside [kickoff, window_end)
Prices Oriented Yes/No OHLC and share-weighted VWAP, ordered by block, transaction, passive log, and normalized-leg ordinal
Activity Per side: normalized/derived economic-leg counts, share/collateral volume, first/last settlement timestamp, and observed flag
Null policy Dense empty minutes keep null price/timestamps and zero counts/volumes; no forward-fill, interpolation, pair normalization, or inferred complement
Status both_observed, yes_only, no_only, or no_fills; minute_complete means both oriented sides were observed
Semantics Use authored proposition_type, yes_represents, and no_represents; no match results are included
Identity Stable proposition and FIFA fixture fields; on-chain evidence identifiers remain in the seed/market sidecar, not the release's main CSV
Common joins Compare with the Gamma/CLOB mart on condition_id plus oriented Yes/No token IDs, then read authored Yes/No semantics
Common mistakes Joining pipelines on raw team strings or (fifa_match_id, proposition_type); independent aliases and home/away order can differ

Data sources and lineage

The mart has two operator-supplied inputs: a reviewed static market manifest for fixture/proposition/token meaning and finalized Polygon execution data for settlement activity. Authoring-only evidence is embedded in the operator-local manifest; it is not fetched again during a backfill.

Source Use in the mart Pin, contract, and license/terms
Operator-local 248-row market manifest Runtime source of proposition IDs and meanings, match/stage/team identity, scheduled windows, condition and oriented token IDs, market structure, exchange, evidence locators, manifest hash, and version. It is the only runtime fixture or semantic source. Reviewed operator input. Each row records its OpenFootball revision/path/line hash, initialization transaction/log locators, ancillary-data SHA-256, and token-verification block/hash. The tracked path is a header-only schema shell.
OpenFootball cup.txt and cup_finals.txt Authoring-only source of group/knockout fixture identity, display order, group label, and scheduled kickoff. Source lines and line hashes are copied into the manifest; file prose is not copied into the mart. Revision bd46a148289f9930da66c140d4d7d2325e95d387; SHA-256 4f52c563a5d470702fedf5078fd379c8f5ddfb2192d23b6f88ce84e997c30028 and 03631f10fff8a3a9c485d866c98fb099f8d2612e97a034c64c28c7d189dd5949. CC0 notice, SHA-256 36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673.
FIFA World Cup 26 Match Schedule Authoring/review-only source of official numeric match IDs. It does not supply mart kickoff times, expressive content, or a runtime dependency. FWC26 Match Schedule_v31_16072026_EN; SHA-256 165fb909253b746e6173a4443bdc3e5d786530f0684af6e85c1fd21fff252811. The PDF is not redistributed.
Polygon PoS mainnet Primary runtime source of finalized exchange logs, transaction receipts, block numbers/hashes, transaction ordering, and event-block timestamps. OrdersMatched logs discover candidate transactions; receipts supply the complete OrderFilled/OrdersMatched segments; headers supply strict window timestamps and boundary hashes. Chain ID 137; the primary provider must support the finalized block tag. Exact finalized head and covered block-range hashes are recorded per scan and internal audit release.
Standard V2 exchange 0xe111…996b and neg-risk V2 exchange 0xe222…0f59 Runtime settlement-event contracts. The manifest assigns each proposition to exactly one exchange: standard for knockout propositions and neg-risk for group propositions. The OrderFilled and OrdersMatched decoder is independently written from publicly observable event topics and ABI/interface facts. Polymarket CTF Exchange V2 revision ccc0596… is cited for transparent interface provenance and is BUSL-1.1; no upstream source code is included, copied, or adapted.
ConditionalTokens 0x4d97…045c Authoring-only source of standard ConditionPreparation/resolution evidence and standard Yes/No position derivation. Condition and token identifiers, not event prose, are retained in the manifest and mart. Minimal interface pinned to Gnosis ConditionalTokens revision eeefca6… (LGPL-3.0).
UMA CTF Adapter revision 8b76cc9… Authoring-only source/interface for QuestionInitialized, creator-scoped ancillary updates, question/condition linkage, and resolution verification. Standard adapter addresses are discovered from Polygon events rather than hardcoded. Repository license/terms apply. Only required event layouts and view selectors are implemented; source code and oracle prose are not redistributed.
NegRisk Adapter 0xd91e…5296 Authoring-only source of MarketPrepared/QuestionPrepared evidence and neg-risk position IDs. Its operator and UMA adapter are discovered and verified through the event/deployment chain. Minimal interface pinned to NegRisk CTF Adapter revision f78b35b…. That revision contains no licence file, so no licence permission is inferred.
Polygon USDC.e 0x2791…4174 Authoring-only collateral address used with CTF collection/index sets to derive and verify standard position IDs. Runtime integer collateral amounts are normalized from six decimals into mart volume/price fields. Fixed Polygon bridged-USDC contract address; no token metadata or off-chain price feed is used.
Configured Polygon JSON-RPC provider Transport for the Polygon facts above, not a separate semantic or pricing source. It returns finalized heads, logs, receipts, and headers; provider errors never become empty ranges. polygon_settlement_scan_runs records the non-secret label and sanitized origin. The internal audit release retains that technical provenance, finalized head, and range hashes; the allowlisted technical export omits provider identity and exact chain locators. Credentials and full endpoints are never persisted.

This pipeline does not use the Polymarket Gamma API, CLOB API or price history, the Polymarket website/UI, the repository's existing FIFA schedule seed, international-results, private match-event inputs, match results, or runtime OpenFootball requests. It does not infer prices from complements or use an external currency/odds feed.

Full materialized column types and required/null contracts are documented under Complete column contract in Data contracts.

Scraper Reference Tables

oddsfox_reference.international_results_wc2026_matches

Field Analyst Guidance
Intended use Clean FIFA World Cup 2026 fixture and result rows.
Grain One row per match_id.
Identifiers match_id, home_team, away_team, stage_key.
Time columns match_date, source_loaded_at.
Provenance source_url, source_revision, and source_payload_sha256 identify the exact immutable CSV payload.
Price columns None.
Recommended filters Use match_status = 'completed' for results; include scheduled rows for future fixtures.
Common joins Join team names to international_results_wc2026_team_status.team_name.
Common mistakes Treating tied knockout matches as unresolved without checking advancing_team and advancer_inference_status, or ignoring mixed source revisions when combining snapshots.

oddsfox_reference.international_results_wc2026_team_status

Field Analyst Guidance
Intended use Canonical WC2026 team roster and current tournament status.
Grain One row per team_name.
Identifiers team_name.
Time columns next_match_date, eliminated_match_date, latest_completed_match_date.
Price columns None.
Recommended filters Use is_still_alive for active-team analysis; use tournament_status for active, eliminated, champion buckets.
Common joins Join Polymarket/Kalshi canonical_team_name to team_name.
Common mistakes Joining on source team text instead of canonical team names.

Kalshi WC2026 Marts

kalshi_wc2026_marts.kalshi_wc2026_stage_markets

Field Analyst Guidance
Intended use Current Kalshi stage-of-elimination market snapshots normalized to progression semantics.
Grain One row per market_ticker.
Identifiers market_ticker, event_ticker, canonical_team_name, stage_key.
Time columns current_price_hour_utc, current_price_hour_epoch, current_price_age_hours, scraped_at.
Price columns progression_price; use price_represents = 'progression'.
Recommended filters Use is_actionable_live_market for current live analysis; inspect current_price_status.
Common joins Join to team status on canonical_team_name.
Common mistakes Using last_price as the normalized progression price.

kalshi_wc2026_marts.kalshi_wc2026_stage_market_hourly_odds

Field Analyst Guidance
Intended use Hourly Kalshi stage-of-elimination OHLC odds.
Grain One row per market_ticker, odds_hour_epoch.
Identifiers market_ticker, event_ticker, canonical_team_name, stage_key.
Time columns odds_hour_utc, odds_hour_epoch, latest_refreshed_at.
Price columns Raw Yes prices: yes_open_price, yes_high_price, yes_low_price, yes_close_price, yes_avg_price; progression prices: progression_open_price, progression_high_price, progression_low_price, progression_close_price, progression_avg_price.
Recommended filters Use progression_*_price for team progression; filter by stage_key and canonical_team_name.
Common joins Join to kalshi_wc2026_stage_markets on market_ticker for latest status.
Common mistakes Mixing raw Yes prices with progression prices in one analysis.

kalshi_wc2026_marts.kalshi_wc2026_group_winner_markets

Field Analyst Guidance
Intended use Current Kalshi group-winner market snapshots.
Grain One row per market_ticker.
Identifiers market_ticker, event_ticker, canonical_team_name, group_letter.
Time columns current_price_hour_utc, current_price_hour_epoch, current_price_age_hours, scraped_at.
Price columns group_winner_price.
Recommended filters Use is_actionable_live_market for current live analysis; inspect current_price_status.
Common joins Join to team status on canonical_team_name.
Common mistakes Treating group-winner prices as stage progression prices.

kalshi_wc2026_marts.kalshi_wc2026_group_winner_market_hourly_odds

Field Analyst Guidance
Intended use Hourly Kalshi group-winner OHLC odds.
Grain One row per market_ticker, odds_hour_epoch.
Identifiers market_ticker, event_ticker, canonical_team_name, group_letter.
Time columns odds_hour_utc, odds_hour_epoch, latest_refreshed_at.
Price columns open_price, high_price, low_price, close_price, avg_price.
Recommended filters Filter by group_letter, canonical_team_name, or market_ticker.
Common joins Join to kalshi_wc2026_group_winner_markets on market_ticker for latest status.
Common mistakes Comparing group-winner prices to stage progression prices without labeling the market type.