polygon.predictions.trades_enriched table is Polymarket trade fills with market question, category, and resolution context on each row. Combos (v3) fills are included: market_name and parlay_description describe the parlay; question and related market fields are null on those rows.
Table Details
| Property | Value |
|---|---|
| Table Name | polygon.predictions.trades_enriched |
| Table Status | Beta 🌱 |
| Unique Key | transaction_hash, unique_id |
side and side_name are the maker’s resting order, not whether the fill was a sale. BUY means the maker posted a bid. SELL means the maker posted an ask. Each fill has two parties; taker is the other party. These fields are null on FPMM rows, which have no maker.On Combos rows (
contract_version = 'v3'), question, neg_risk, token_outcome, and resolution_outcome are null. Use market_name and parlay_description for combo context. Pair condition_id with combo_legs.combo_condition_id. Pair combo_legs.market_token_id with markets.token_id. Combos asset_id is not markets.token_id.Table Columns
_str columns are numeric fields cast to varchar to retain precision.
| Column Name | Data Type | Description |
|---|---|---|
| event_name | VARCHAR(16777216) | Type of trade event (OrderFilled, FPMMBuy, FPMMSell). |
| project | VARCHAR(16777216) | Project name where the trade occurred. |
| protocol | VARCHAR(16777216) | Protocol name where the trade occurred. |
| exchange_type | VARCHAR(16777216) | Exchange type: CTFExchange, NegRiskCTFExchange, CTFExchangeV2, NegRiskCTFExchangeV2, ComboExchange, or FPMM. The CTF* values are Polymarket’s CLOB. |
| contract_version | VARCHAR(16777216) | v1, v2, or v3. Null for FPMM. v3 is Combos (ComboExchange). |
| side | NUMBER(38,0) | Maker order side. 0 = BUY (bid), 1 = SELL (ask). Null for FPMM. |
| side_name | VARCHAR(16777216) | BUY if the maker posted a bid, SELL if the maker posted an ask. Null for FPMM. |
| builder | VARCHAR(16777216) | V2-only attribution field (bytes32). Null for V1 + FPMM. |
| metadata | VARCHAR(16777216) | V2-only arbitrary per-order data (bytes32). Null for V1 + FPMM. |
| condition_id | VARCHAR(16777216) | Market condition id on v1/v2. Combo id on v3 Combos rows. That combo id is not a markets.condition_id. |
| market_id | VARCHAR(16777216) | Market identifier from onchain data. |
| market_name | VARCHAR(16777216) | Market name from onchain events. |
| market_description_onchain | VARCHAR(16777216) | Market description from onchain events. |
| question_id | VARCHAR(16777216) | Unique question identifier. |
| question | VARCHAR(16777216) | Market question text. Null on v3 Combos rows. |
| question_description | VARCHAR(16777216) | Market description from API. |
| neg_risk | BOOLEAN | Whether this is a NegRisk market. |
| category | VARCHAR(16777216) | Main category (politics, sports, crypto, etc.). |
| sub_category | VARCHAR(16777216) | Specific subcategory. |
| tags | VARCHAR(16777216) | API category tags. |
| asset_id | VARCHAR(16777216) | Outcome token id on v1/v2. PositionManager id on v3 Combos rows; it does not match markets.token_id. |
| token_outcome | VARCHAR(16777216) | Token outcome name. |
| token_outcome_name | VARCHAR(16777216) | Combined outcome and question name. |
| token_price | FLOAT | Current token price. |
| is_winning_outcome | BOOLEAN | Whether this outcome won the market (API data). |
| market_address | VARCHAR(42) | Address of the market contract where the trade occurred. |
| order_hash | VARCHAR(16777216) | Hash of the order (null for FPMM trades). |
| maker | VARCHAR(42) | Address of the maker (order creator) in the trade. |
| taker | VARCHAR(42) | Address of the taker (order fulfiller) in the trade. |
| collateral_amount_raw | VARCHAR(16777216) | Raw unnormalized collateral amount. |
| token_amount_raw | VARCHAR(16777216) | Raw unnormalized outcome token amount. |
| price_str | VARCHAR(16777216) | Calculated share price as a precise string representation. |
| trade_price | FLOAT | Calculated share price as float for calculations and analytics. |
| maker_amount_raw | VARCHAR(16777216) | Raw unnormalized amount from maker side of the trade. |
| taker_amount_raw | VARCHAR(16777216) | Raw unnormalized amount from taker side of the trade. |
| fee_charged_raw | VARCHAR(16777216) | Per-row gross fee, allocated from the per-tx FeeCharged sum across kept maker-side trade rows weighted by collateral_amount. SUM(fee_charged_raw) over rows in a tx equals the per-tx total exactly. Sources: V1 std + V1 NegRisk + V2 std + V2 NegRisk FeeCharged decoded models. |
| fee_rebate_raw | VARCHAR(16777216) | Per-row maker rebate, allocated from the per-tx FeeRefunded sum across kept maker-side trade rows weighted by collateral_amount. 100% of rebates go to the order’s maker (verified on 15.4M events). V2 has no rebate — 0 for V2-only txs. Sources: V1 Module 1 legacy + V1 Module 2 std + V1 Module 2 NegRisk FeeRefunded decoded models. |
| fee_raw | VARCHAR(16777216) | Raw unnormalized fee amount. |
| fee_charged_event_count | NUMBER(38,0) | Count of FeeCharged events in the transaction. Same value across all rows in the tx. |
| fee_rebate_event_count | NUMBER(38,0) | Count of FeeRefunded events in the transaction. Same value across all rows in the tx. 0 for V2-only txs. |
| collateral_amount | VARCHAR(16777216) | Collateral amount. |
| fee_charged_amount | VARCHAR(16777216) | Normalized per-row gross fee (divided by collateral decimals). |
| fee_rebate_amount | VARCHAR(16777216) | Normalized per-row maker rebate (divided by collateral decimals). |
| fee_amount | VARCHAR(16777216) | Fee amount. |
| fee_bips | VARCHAR(16777216) | Fee in basis points from market metadata. |
| collateral_token_address | VARCHAR(42) | Address of the collateral token. |
| collateral_token_name | VARCHAR(16777216) | Name of the collateral token. |
| collateral_token_symbol | VARCHAR(16777216) | Symbol of the collateral token. |
| collateral_token_decimals | NUMBER(38,0) | Number of decimals for the collateral token. |
| usd_exchange_rate | FLOAT | USD exchange rate for the collateral token. |
| usd_collateral_amount | FLOAT | USD value of the collateral amount. |
| usd_fee_charged_amount | FLOAT | USD value of the per-row gross fee. |
| usd_fee_rebate_amount | FLOAT | USD value of the per-row maker rebate. |
| usd_fee_amount | FLOAT | USD value of the fee paid in the trade. |
| fee_type | VARCHAR(16777216) | V2 fee scheme classifier (e.g. ‘cubic_v0’). Null for pre-V2 markets and non-CLOB rows. |
| fees_enabled | BOOLEAN | V2 kill-switch. True when fees are charged on this market. |
| rfq_enabled | BOOLEAN | Whether the market accepts RFQ orders. |
| fee_rebate_rate | FLOAT | V2 maker fee rebate rate (0.0-1.0). Applied when the maker rebate program is on. |
| fee_rate | FLOAT | V2 base fee rate parameter for the cubic fee curve. |
| fee_exponent | FLOAT | V2 cubic fee curve exponent. |
| fee_taker_only | BOOLEAN | V2 flag - true when only the taker is charged a fee. |
| maker_base_fee_bps | NUMBER(38,0) | V2 base maker fee in basis points (1 bps = 0.01%). |
| taker_base_fee_bps | NUMBER(38,0) | V2 base taker fee in basis points. |
| extras | VARIANT | Pristine passthrough of the source _extra_fields VARIANT. Contains Gemini-native nested payload (event.participants, event.termsLink, event.socialImageUrl, event.template, event.eventTags) that was not promoted to top-level source columns. |
| oracle | VARCHAR(42) | Oracle contract address for market resolution. |
| resolution_outcome | VARCHAR(16777216) | Market resolution outcome (Yes/No/Unresolved). |
| transaction_index | NUMBER(38,0) | Index of the transaction in the block. |
| transaction_hash | VARCHAR(66) | Hash of the transaction containing the trade. |
| log_index | NUMBER(38,0) | Index of the log within the transaction. |
| block_timestamp | TIMESTAMP_NTZ(9) | Timestamp of the block containing the trade. |
| block_number | NUMBER(38,0) | Block number containing the trade. |
| block_hash | VARCHAR(66) | Hash of the block containing the trade. |
| unique_id | VARCHAR(16777216) | Concatenated identifier for the trade. |
| _created_at | TIMESTAMP_NTZ(9) | Record creation timestamp. |
| _updated_at | TIMESTAMP_NTZ(9) | Record update timestamp. |
| parlay_description | VARCHAR(16777216) | Combos only: readable parlay of the legs, e.g. YES(Will Spain win?) AND NO(Will France win?). Null on non-combo rows. |
| combo_n_legs | NUMBER(38,0) | Combos only: number of legs in the combo. Null on non-combo rows. |
| combo_all_legs_resolved | BOOLEAN | Combos only: true when every leg has a question or event name. Null on non-combo rows. |
Sample Query
- Market Analysis
- Combos v3
Analyze trading volume by market category:
select
category,
count(*) as total_trades,
count(distinct market_id) as unique_markets,
sum(usd_collateral_amount) as total_volume_usd
from polygon.predictions.trades_enriched
where block_timestamp >= current_timestamp - interval '30 days'
group by category
order by total_volume_usd desc
Combos fills with parlay text:
select
contract_version,
market_name,
parlay_description,
combo_n_legs,
condition_id,
usd_collateral_amount,
block_timestamp
from polygon.predictions.trades_enriched
where contract_version = 'v3'
and block_timestamp >= current_timestamp - interval '7 days'
order by block_timestamp desc