# Polymarket Up or Down | Bitquery Data Store Fills, payouts and results in Polymarket's crypto Up or Down markets since September 2025, tagged with the coin, window length and window times in UTC. Dataset page: https://bitquery.io/datastore/datasets/polymarket-up-or-down Network: Polymarket Category: Trades, Events Tables: 3 Columns: 132 Coverage: 2025-09-01 to 2026-09-28 Refresh: Daily Rows: about 1.2B Size: about 202 GB Format: Apache Parquet, ZSTD compression, one prefix per table Licence: https://bitquery.io/datastore/legal/data-license ## What this is We decode Polymarket's crypto Up or Down markets from Polygon ourselves and keep only those: Bitcoin, Ethereum, Solana, XRP, Dogecoin, BNB, Hyperliquid and Zcash, in 5-minute, 15-minute, hourly, 4-hour and daily windows. That comes to about 1.19 billion fills, 689 million settlement rows and 754,000 markets since 1 September 2025. Every row names the coin, the window length and the window's start and end in UTC, worked out from the market title, which gives the time in ET and no year. Most buyers start with one coin and one window length. Filter on UpDown_Asset and UpDown_Interval, sum fills where Trade_IsTakerSide is false for volume, and join payouts on the condition id. The Resolved row in the markets table names the winner. ## What people use it for - Backtest 5-minute, 15-minute and hourly Up or Down strategies per coin - Odds path inside each window, fill by fill, up to the result - Wallet profit and loss on short crypto markets from fills and payouts - Market-maker and bot activity by coin, window length and hour ## Tables (3) ### prediction_trades: 53 columns One row per order fill in a crypto Up or Down market, with both addresses, shares, price, fee, USD value, the market question and outcome, and the coin and window. S3 prefix: matic/polymarket_up_or_down/prediction_trades File naming: _.parquet, 50 blocks per file Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/matic/polymarket_up_or_down/prediction_trades/94364050_94364099.parquet Sample updated: Sep 29, 2026 | column | type | description | | --- | --- | --- | | Block_Number | UInt64 | Polygon block of the fill. | | Block_Time | DateTime | Time of the fill's block, UTC. | | Call_Signature_Name | String | Exchange function that made the fill: matchOrders. | | Log_Signature_Name | String | Event name: OrderFilled. | | Log_SmartContract | String | Exchange contract that emitted the event. | | Trade_OutcomeTrade_Buyer | String | Address that got the outcome shares. When it is the exchange contract, the row is the taker's side of a match (see Trade_IsTakerSide). | | Trade_OutcomeTrade_Seller | String | Address that gave up the outcome shares. | | Trade_OutcomeTrade_Amount | Decimal | Shares filled, to 6 decimal places. | | Trade_OutcomeTrade_CollateralAmount | Decimal | Cash paid or received for those shares: USDC.e before April 2026, pUSD after. | | Trade_OutcomeTrade_CollateralAmountInUSD | Decimal | The cash amount times the hourly USDC.e price. | | Trade_OutcomeTrade_OrderId | String | Order hash, stored as its hex text hex-encoded again, as in the Polymarket dataset. | | Trade_OutcomeTrade_Price | Decimal | Price per share in cash: CollateralAmount / Amount, between 0 and 1. | | Trade_OutcomeTrade_PriceInUSD | Decimal | Price times the hourly USDC.e price. | | Trade_OutcomeTrade_IsOutcomeBuy | Bool | True when the order bought outcome shares. | | Trade_Prediction_CollateralToken_Name | String | Name of the cash token. | | Trade_Prediction_CollateralToken_Symbol | String | Cash token symbol: USDC (the bridged USDC.e) or pUSD. | | Trade_Prediction_CollateralToken_SmartContract | String | Cash token contract. | | Trade_Prediction_CollateralToken_AssetId | String | Cash token asset id; 0 for an ERC-20 token. | | Trade_Prediction_CollateralToken_ProtocolName | String | Cash token standard: erc20. | | Trade_Prediction_ConditionId | String | Condition id of the market; join the other two tables on it. | | Trade_Prediction_OutcomeToken_Name | String | Outcome token name; usually empty, as ERC-1155 positions carry none. | | Trade_Prediction_OutcomeToken_Symbol | String | Outcome token symbol; usually empty. | | Trade_Prediction_OutcomeToken_SmartContract | String | ERC-1155 contract that holds the positions. | | Trade_Prediction_OutcomeToken_AssetId | String | ERC-1155 token id of the outcome position. | | Trade_Prediction_Marketplace_SmartContract | String | Exchange contract: the main or NegRisk exchange, replaced by new contracts in April 2026. | | Trade_Prediction_Marketplace_ProtocolVersion | String | Exchange version. | | Trade_Prediction_Marketplace_ProtocolName | String | Protocol name: polymarket. | | Trade_Prediction_Marketplace_ProtocolFamily | String | Protocol family: Gnosis_CTF. | | Trade_Prediction_Question_Title | String | The market question as shown on the site. Filled from the markets table when the fill lacks it. | | Trade_Prediction_Question_ResolutionSource | String | Source named to decide the market. | | Trade_Prediction_Question_Image | String | Image URL shown with the market. | | Trade_Prediction_Question_MarketId | String | Numeric market id on the site. | | Trade_Prediction_Question_Id | String | Id of the question behind the condition. | | Trade_Prediction_Question_CreatedAt | DateTime | When the market was created, UTC. | | Trade_Prediction_Question_GroupId | String | Event id that groups related markets; 0x when the market stands alone. | | Trade_Prediction_Outcome_Id | String | Outcome position id, the same as OutcomeToken_AssetId. | | Trade_Prediction_Outcome_Index | Int32 | The outcome's index in its condition, from 0. | | Trade_Prediction_Outcome_Label | String | Outcome name, such as Yes, No, Up or Down; taken from the market's outcome list when the fill has none. | | Transaction_From | String | Address that sent the transaction. Fills arrive through matchOrders calls sent by Polymarket's relayers (about 2,000 addresses on a sampled day), so this is not the person on either side. | | Transaction_Hash | String | Hash of the fill's transaction. | | Block_Date | Date | UTC date of the fill. | | Call_Index | UInt32 | Index of the call inside the transaction. With Transaction_Hash and Log_Index it gives a unique row key. | | Log_Index | UInt32 | Index of the event inside its call; it restarts in each call. | | TransactionStatus_Success | Bool | False when the transaction failed. | | Trade_OutcomeTrade_Fee_Amount | Decimal | Fee charged on this fill, in the cash token; 0 on every fill before January 2026. | | Trade_OutcomeTrade_Fee_Currency_Symbol | String | Fee token symbol; empty when there is no fee. | | Trade_OutcomeTrade_Fee_Payer | String | Address that paid the fee. | | Trade_OutcomeTrade_Fee_Recipient | String | Address that got the fee. | | Trade_IsTakerSide | Bool | True when the exchange contract is the buyer or seller: the row restates the taker's side of a match whose maker rows are already there. Sum rows where it is false for market volume. | | UpDown_Asset | String | Coin the fill's market is on: BTC, ETH, SOL, XRP, DOGE, BNB, HYPE or ZEC. | | UpDown_Interval | String | Length of that market's window: 5m, 15m, 1h, 4h or 1d. | | UpDown_WindowStart | DateTime | Start of the price window the market settles on, UTC. | | UpDown_WindowEnd | DateTime | End of that window, UTC. Daily windows run from noon ET to noon ET. | ### prediction_settlements: 46 columns One row per split, merge or payout of positions in a crypto Up or Down market, with the holder, shares, cash, USD value, and the coin and window. S3 prefix: matic/polymarket_up_or_down/prediction_settlements File naming: _.parquet, 50 blocks per file Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/matic/polymarket_up_or_down/prediction_settlements/94364050_94364099.parquet Sample updated: Sep 29, 2026 | column | type | description | | --- | --- | --- | | Block_Number | UInt64 | Polygon block of the event. | | Block_Time | DateTime | Time of the block, UTC. | | Call_Signature_Name | String | Function called: splitPosition, mergePositions or redeemPositions. | | Log_Signature_Name | String | Event name: PositionSplit, PositionsMerge or PayoutRedemption. | | Log_SmartContract | String | Contract that emitted the event: Conditional Tokens or the NegRisk adapter. | | Settlement_EventType | String | Split, Merge or Redemption. | | Settlement_Holder | String | Address whose cash or positions moved. | | Settlement_OutcomeTokenIds | String | ERC-1155 position ids involved, as text in the form ['id1', 'id2']. | | Settlement_Amounts_Amount | Decimal | Shares split, merged or redeemed, to 6 decimal places. | | Settlement_Amounts_AmountInUSD | Decimal | USD value of those shares at the time, equal to CollateralAmountInUSD. | | Settlement_Amounts_CollateralAmount | Decimal | Cash locked by a split, freed by a merge, or paid out by a redemption (0 for a losing position). | | Settlement_Amounts_CollateralAmountInUSD | Decimal | The cash amount times the hourly USDC.e price; 0 for cash tokens outside Polymarket's own (under 0.1% of rows). | | Settlement_Prediction_CollateralToken_AssetId | String | Asset id of the cash token; 0 for ERC-20. | | Settlement_Prediction_CollateralToken_BalanceSlotIndex | String | Storage slot of the cash token's balances; empty when 0. | | Settlement_Prediction_CollateralToken_Decimals | Int32 | Cash token decimals: 6 for Polymarket's cash tokens. | | Settlement_Prediction_CollateralToken_SmartContract | String | Contract of the cash token. | | Settlement_Prediction_CollateralToken_Symbol | String | Cash symbol: USDC (the bridged USDC.e), WCOL (the NegRisk adapter's wrapped USDC.e) or pUSD. | | Settlement_Prediction_ConditionId | String | Condition id of the market, used to join fills and market events. | | Settlement_Prediction_Marketplace_SmartContract | String | Conditional Tokens contract or the NegRisk adapter. | | Settlement_Prediction_Marketplace_ProtocolName | String | Name of the protocol: polymarket. | | Settlement_Prediction_Marketplace_ProtocolFamily | String | Family of the protocol: Gnosis_CTF. | | Settlement_Prediction_Outcome_Label | String | Outcome name; empty on splits and merges, which cover every outcome of the market. | | Settlement_Prediction_Outcome_Index | Int32 | Index of the outcome, from 0. | | Settlement_Prediction_Outcome_Id | String | Outcome position id. | | Settlement_Prediction_OutcomeToken_SmartContract | String | ERC-1155 contract of the position. | | Settlement_Prediction_OutcomeToken_Symbol | String | Symbol of the position token; usually empty. | | Settlement_Prediction_OutcomeToken_AssetId | String | ERC-1155 token id of the position. | | Settlement_Prediction_OutcomeToken_BalanceSlotIndex | String | Storage slot of the position balances; empty when 0. | | Settlement_Prediction_OutcomeToken_ProtocolName | String | Position token standard: erc1155. | | Settlement_Prediction_OutcomeToken_Name | String | Name of the position token; usually empty. | | Settlement_Prediction_Question_Title | String | Question of the market this position belongs to. Filled from the markets table when the row lacks it. | | Settlement_Prediction_Question_CreatedAt | DateTime | Creation time of that market, UTC. | | Settlement_Prediction_Question_GroupId | String | Id of the event the market sits in; 0x if none. | | Settlement_Prediction_Question_Id | String | Id of the market's question. | | Settlement_Prediction_Question_Image | String | Image URL of the market. | | Settlement_Prediction_Question_MarketId | String | Market id as used on the site. | | Settlement_Prediction_Question_ResolutionSource | String | Source the market is decided by. | | Transaction_From | String | Sender of the transaction. | | Transaction_Hash | String | Hash of the settlement's transaction. | | Block_Date | Date | UTC date of the event. | | Call_Index | UInt32 | Call position in the transaction; part of the row key with Transaction_Hash and Log_Index. | | Log_Index | UInt32 | Event position within its call, counted from 0 in each call. | | UpDown_Asset | String | Coin of the market this position belongs to. | | UpDown_Interval | String | Window length of that market: 5m, 15m, 1h, 4h or 1d. | | UpDown_WindowStart | DateTime | When that market's price window opens, UTC. | | UpDown_WindowEnd | DateTime | When the window closes, UTC; payouts follow once the result is posted. | ### prediction_managements: 33 columns One row when a crypto Up or Down market is created and one when it is resolved, with the question, rules, outcomes, oracle, the winner on results, and the coin and window. S3 prefix: matic/polymarket_up_or_down/prediction_managements File naming: _.parquet, 50 blocks per file Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/matic/polymarket_up_or_down/prediction_managements/94364050_94364099.parquet Sample updated: Sep 29, 2026 | column | type | description | | --- | --- | --- | | Block_Number | UInt64 | Polygon block of the market event. | | Block_Time | DateTime | Block time in UTC. | | Call_Signature_Name | String | Function that made the event. | | Log_Signature_Name | String | Event name: TokenRegistered for a new market, ConditionResolution for a decided one. | | Log_SmartContract | String | Contract that emitted the event. | | Management_EventType | String | Created (the market is set up) or Resolved (the market is decided). | | Management_Description | String | The market's full rules text. | | Management_Group_Id | String | Event id that groups related markets; 0x when none. | | Management_Group_Title | String | Title of that event. | | Management_Group_Description | String | Text that explains that event. | | Management_Prediction_Question_Id | String | Question id, as in the other two tables. | | Management_Prediction_Question_MarketId | String | The site's numeric id for the market. | | Management_Prediction_Question_Title | String | Market question. Filled from the market's other rows when this one lacks it. | | Management_Prediction_Question_CreatedAt | DateTime | Market creation time, UTC. | | Management_Prediction_Question_ResolutionSource | String | Source named to decide it. | | Management_Prediction_Condition_Id | String | Condition id of the market; fills and settlements join on it. | | Management_Prediction_Condition_Oracle | String | Oracle contract that may decide the market. | | Management_Prediction_Condition_Outcomes_Label | String | All outcome names in index order, as text in the form ['Up', 'Down']. | | Management_Prediction_Outcome_Id | String | Outcome position id. On Resolved rows, the winning outcome. | | Management_Prediction_Outcome_Index | Int32 | Outcome index, from 0. On Resolved rows, the winner. | | Management_Prediction_Outcome_Label | String | Outcome name: the winner on Resolved rows, empty on Created rows. | | Management_Prediction_CollateralToken_SmartContract | String | Cash token contract of the market. | | Management_Prediction_CollateralToken_Symbol | String | Symbol of the market's cash token. | | Management_Prediction_Marketplace_SmartContract | String | Exchange or adapter contract the market is listed on. | | Transaction_From | String | Sender address of the transaction. | | Transaction_Hash | String | Hash of the event's transaction. | | Block_Date | Date | UTC date of the market event. | | Call_Index | UInt32 | Call number within the transaction, part of the row key. | | Log_Index | UInt32 | Event number within its call; it restarts per call. | | UpDown_Asset | String | Coin the market tracks. | | UpDown_Interval | String | How long the market's window runs: 5m, 15m, 1h, 4h or 1d. | | UpDown_WindowStart | DateTime | Opening time of the market's price window, UTC. | | UpDown_WindowEnd | DateTime | Closing time of the window, UTC. On Resolved rows the result comes after it. | ## Price - Latest month (Aug 28, 2026 → Sep 28, 2026): $250 one-time, USD - Last 6 months (Mar 28, 2026 → Sep 28, 2026): $1,250 one-time, USD - Full history (Sep 1, 2025 → Sep 28, 2026): $2,500 one-time, USD Every window includes all 3 tables and 132 columns. Only the time range changes. ## Questions buyers ask Q: What is in the Polymarket Up or Down dataset? A: The same three Parquet tables as our Polymarket dataset, cut to crypto Up or Down markets and joined by one key, the market's condition id. The trades table has one row per order fill, the settlements table one row per split, merge or payout, and the markets table one row when a market is created and one when it is resolved. Every table adds four columns: UpDown_Asset, UpDown_Interval, UpDown_WindowStart and UpDown_WindowEnd. Q: Which markets are covered? A: Up or Down markets on eight coins: BTC, ETH, SOL, XRP, DOGE, BNB, HYPE (titled Hyperliquid or HYPE) and ZEC. By count since September 2025: about 488,000 5-minute markets, 200,000 15-minute, 52,000 hourly, 12,000 4-hour and 2,200 daily. Up or Down markets on stocks, indices, currencies, gold and oil, and on polls, are left out. The Polymarket dataset has them. Q: How are the window times worked out? A: From the market title, which gives the date and time in ET with no year. We convert to UTC, allowing for clock changes and windows that cross midnight. Where a title fits more than one moment, such as the same title a year apart or the repeated 1 AM hour on 2 November 2025, we take the reading that ends nearest the market's resolution. The 2 AM hour that the clock skips on 8 March 2026 is read as 3 AM EDT, the same instant. Hourly windows are the hour starting at the named time. Daily windows run from noon ET the day before to noon ET on the named date. Q: How do these markets resolve? A: Each market's rules are in Management_Description in the markets table. Markets from 5 minutes to 4 hours settle on Chainlink: Up if the end price is at or above the start price, and newer ones use a time-weighted average over the window in place of the end price. Hourly markets use the Binance 1-hour candle: Up if the close is at or above the open. Daily markets compare Binance closes at noon ET a day apart; if the two are equal, the market resolves 50-50. Q: How big is it? A: About 1.19 billion fills, 689 million settlement rows and 1.4 million market events since 1 September 2025, roughly 200 GB as Parquet, going by the sample files. The last 6 months hold about 668 million fills and the latest month about 67 million. Exact figures arrive with the delivery manifest. Q: How far back does it go? A: From 1 September 2025, the first day of steady coverage in our index, to yesterday. The first 15-minute window opens on 13 September 2025, the first 4-hour window on 15 October 2025 and the first 5-minute window on 18 December 2025, all UTC. Q: How do I get market volume without counting fills twice? A: Use the rows where Trade_IsTakerSide is false. Each match also writes one row for the taker's side, with the exchange contract as buyer or seller; on 15 August 2026 those rows were 36% of Up or Down fills. Summing every row nearly doubles volume. Q: What should I watch out for? A: Fees start in January 2026: every fill before then shows 0. Transaction_From is a Polymarket relayer, not either person in the fill; use buyer and seller. Log_Index restarts inside each call, so key rows on hash, call index and log index. A few fills land after the window ends and before the result is posted, when the price sits near 0 or 1. Q: How are fills valued in USD? A: Cash amount times the hourly price of USDC.e from our own price series. Polymarket settles in USDC.e until April 2026 and in pUSD after, and the NegRisk adapter wraps USDC.e as WCOL; all three are priced as USDC.e. Price is cash per share, between 0 and 1. The few settlements in any other token carry a USD value of 0. Q: How was it checked? A: We ran the export queries for 15 August 2026: 1,938,358 fills, 981,792 settlement rows and 6,208 market events, each equal to a direct count of the source with the same filter. No key repeated, every price was between 0 and 1, every fill was labelled Up or Down, and every row got a coin and a window. On the sample blocks, 94,364,050 to 94,364,149, each row equals the matching row of the Polymarket dataset. Q: How do I load it? A: One line in DuckDB: SELECT UpDown_Asset, UpDown_Interval, count(*) FROM read_parquet('prediction_trades/*.parquet') WHERE NOT Trade_IsTakerSide GROUP BY ALL. Pandas works too: pandas.read_parquet(path). The sample files open without a login. Q: How current is it, and how is it delivered? A: Refreshed daily with T+1 latency, so a purchase made today includes everything to yesterday. Delivered as Parquet named by block range, 50 blocks per file, under a stable S3 layout with a JSON manifest listing every file and its sha256. Signed HTTPS links are emailed once the files are ready, or on request we deliver into your own S3, GCS or R2 bucket. Q: How does it differ from the Polymarket dataset? A: It is the same data cut to crypto Up or Down markets, about two-thirds of all Polymarket fills, with four columns added for the coin and window. Buy the Polymarket dataset if you also need sports, politics or other markets. ## What this file is, and is not This is a description of one dataset sold by Bitquery, written for assistants and for people. It lists every column but holds no data rows. The sample files linked under each table are real Parquet and are free to download. Figures here come from the product record and are exact unless marked otherwise; the delivery manifest is authoritative for a purchased file. If a question needs a row that is not in a sample, say so rather than guessing at it.