Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

A Polymarket BTC five-minute market-making bot needs to discover the active contract and its outcome assets, keep a fresh view of both order books, post tick-compliant quotes, and reconcile fills and settlement. The mechanics are implementable, but a resting quote may never fill, a fill changes the bot’s exposure, and quoting both sides does not by itself create positive expected value.

What the bot is—and is not—trying to do

A two-sided bot places a buy quote and a sell quote for an outcome asset, with prices chosen around an estimate of fair value. Its design has to account for the chance that one side fills before the other, that a fill arrives just as the market moves, and that inventory accumulates in an undesirable direction. Those are market and strategy risks, not problems solved by using limit orders.

Polymarket’s official documentation says, “All orders on Polymarket are limit orders.” Orders are created and matched offchain, then trade settlement occurs onchain; the platform describes settlement as non-custodial. A bot should therefore treat accepted orders, matched trades, and settled positions as distinct states rather than one successful action. See Polymarket’s order lifecycle documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Discover the active market and its outcome assets

Do not carry a previous five-minute interval’s identifiers or terms into the next one. At the start of each window, fetch current market metadata, identify the intended BTC market and its outcome assets, and verify that it is active and accepting orders. Polymarket’s current documentation distinguishes token IDs for CTF markets from position IDs for Protocol V2 markets, so an implementation should use the identifiers and trading route returned for the selected market version rather than assume that one historical format always applies. The Place Orders documentation describes the order information and constraints to obtain.

  1. Find the current interval. Resolve the market from current metadata rather than a hardcoded slug, identifier, or prior interval.
  2. Verify the contract. Check market status, outcome labels and identifiers, and whether orders are currently accepted.
  3. Read the live rules. Inspect the specific market’s resolution terms before trading. The exact resolution wording and oracle observation method for a particular BTC five-minute contract must be taken from that contract; do not infer them from another interval or an older market description.
  4. Load trading constraints. Fetch the order book and its current minimum order size, tick size, and relevant market flags before constructing quotes.

Seed and maintain a local order-book view

Start with a current book snapshot for each outcome, then subscribe to Polymarket’s market stream. The documented stream includes book, price_change, last_trade_price, and tick_size_change events. The snapshot supplies the starting bids and asks; subsequent updates let the bot maintain its local view. See Polymarket’s real-time data documentation.

A stream connection is not proof that the local book is current. Track update timestamps and the last successful snapshot, and define a maximum acceptable feed age. On a disconnect, stale feed, suspected out-of-order update, or inconsistent book, stop submitting new quotes until the bot has resubscribed and reconciled against a fresh snapshot. The documentation describes available data and events, not a complete recovery algorithm; resnapshotting and comparing local state are safeguards the bot must implement.

If a tick_size_change event arrives, refresh the applicable constraints before sending another order. Do not assume that one market’s tick size or minimum order size will remain valid for another interval.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose prices and sizes for both sides

The fair-value estimate, spread, and inventory adjustment are strategy choices; Polymarket’s API documentation does not endorse a pricing signal or establish that any quoting model is profitable. A basic design can start with a fair-value estimate and a target spread, then move quotes to account for inventory and risk limits. The maximum acceptable spread and the conditions for widening or withdrawing quotes should be explicit policy decisions.

Before submission, round each price to the current market tick and check that each order meets the live minimum size. Keep sizing within the bot’s available balance and per-outcome exposure limits. A quote resting away from opposing liquidity can be accepted and remain unfilled; order acceptance is not an execution guarantee.

Select order controls deliberately

Polymarket documents duration and immediate-execution controls for its limit orders. A persistent maker quote is generally a GTC or GTD order with post-only enabled, but the bot must still handle rejection and expiration. The behaviors below are described in the Order Lifecycle and Place Orders pages.

Control Documented behavior Practical use
GTC Rests until filled or canceled. Use when the bot intends to maintain a quote, and actively revise or cancel it as conditions change.
GTD Expires at a specified time. Use when an order should not persist beyond a chosen time, such as a market-window boundary.
FOK Must fill entirely or is canceled immediately. Not a resting maker quote.
FAK Fills available quantity and cancels the remainder. Use only when partial immediate execution is acceptable; it is not a persistent quote for the remainder.
Post-only Rejected if it would immediately match; Polymarket says post-only orders “will only rest on the book.” Use for quotes intended to add liquidity. Define whether a rejected quote is repriced, retried, or abandoned.

Post-only prevents a quote that would cross the book from taking liquidity by mistake, but it does not guarantee that the order will be filled or remain at the top of the book.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Track order state, fills, cancellations, and delay flags

For every submitted order, retain its identifier, outcome, side, price, size, time, and returned status. Process status updates and confirmed matches into the bot’s inventory ledger; account for partial fills rather than treating an order as simply filled or unfilled. Reserve balances for open orders so a second quote cannot spend funds already committed by the first.

Cancel or replace quotes when the fair-value estimate, book, market phase, or risk limits change. A cancellation request cannot reverse quantity that has already matched. The bot should reconcile the cancellation response with trade and order state before assuming exposure has disappeared.

Some—but not all—selected crypto and finance up/down markets apply a 250 ms delay to marketable orders before final matching or resting behavior. Polymarket says to check the market’s itode value using the public CLOB market endpoint. This is a market-specific setting, not a universal property of BTC five-minute markets. If the flag applies, account for the pending interval in exposure and cancellation logic: an order may not behave as if execution or cancellation were instantaneous. Details are in the order lifecycle documentation.

Set risk limits and recover safely

Risk controls belong in the order loop, not only in a dashboard. Set hard bounds before enabling live quoting, and fail closed—stop adding risk—when order, position, or feed state is uncertain.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Inventory: cap total inventory and exposure by outcome; define how quote size or price changes as a limit is approached.
  • Market data: define a maximum feed age and stop quoting when updates are stale or the local book is inconsistent.
  • Orders: cap active order count and enforce the current tick, minimum size, balance reservation, and price bounds.
  • Loss and spread: set a maximum loss and maximum acceptable spread, with a clear action when either threshold is reached.
  • Emergency response: provide a cancel-all path, but verify resulting order and fill state instead of assuming a request has removed all exposure.
  • Reconnect recovery: before resuming after a disconnect, reconcile open orders, fills, balances, and positions with current account state and a fresh market snapshot.

These are implementation safeguards for a bot; they are not protections Polymarket guarantees on the bot’s behalf.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Separate matching from settlement

After a match, continue to track the trade until settlement and account state are reconciled. On reconnects and before starting a new market window, compare the bot’s records with current open orders, fills, balances, and positions. This avoids treating an accepted order as a fill, a match as an already settled position, or a stale local record as authoritative.

Check reward terms without relying on them

Polymarket’s Liquidity Rewards documentation describes scoring for eligible resting orders and a general minimum reward payout of $1; eligibility and configuration are market-specific, and a payout is not guaranteed. The page also says the special $1 million crypto TWAP reward allocation through August has ended, so it should not be treated as an active incentive. Check the current program and market settings rather than including potential rewards as assumed trading revenue.

Pre-trade checklist for each five-minute window

  1. Confirm the current market is active, accepting orders, and has the intended BTC interval and outcome labels.
  2. Read that market’s resolution wording and verify its outcome identifiers and market version.
  3. Fetch current books, minimum order size, tick size, and applicable market flags.
  4. Check the itode flag for that market and account for any delay in the order-state model.
  5. Seed or refresh the local book, start stream processing, and confirm data freshness before quoting.
  6. Validate both prices against the current tick, both sizes against the minimum, and the orders against balance and exposure limits.
  7. Enable quoting only when the bot can track order status, partial fills, cancellations, and settlement reconciliation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.