Polymarket Bot Tutorial · Kabanata 10 ng 32

Polymarket order types ipinaliwanag para sa bot builders: Fill-or-Kill (FOK), Fill-and-Kill (FAK), Good-til-Cancelled (GTC), at limit-vs-market trade-offs. Na may production-grade decision rules.

Ano ang sinasaklaw ng kabanatang ito

Ang order-type confusion ay ang pinaka-mahal na single class ng bug para sa bagong bot builders. Pagpapadala ng GTC kapag kailangan ng FOK ay gumagawa ng missed entries; pagpapadala ng FOK kapag kailangan ng GTC ay nag-iiwan ng resting orders na nag-fill sa terrible prices oras mamaya. Ang kabanatang ito ay ang decision tree at production defaults na nanatili sa libu-libong orders.

  • Quick decision tree
  • FOK: kapag dapat kang mag-fill o lumaktaw
  • FAK: kapag tinatanggap ang partials
  • GTC: kapag gusto mong magpahinga sa book
  • Limit vs market at ang spread tax
  • Ang aming production defaults (FOK buys, GTC sells)
  • Code: maglagay ng bawat order type

Quick decision tree

Tatlong tanong ang nagpapasiya sa bawat order placement.

  1. Kailangan mo ba ng guaranteed fill ngayon mismo, at hindi sa lahat kung hindi mo ito makukuha ngayon? → FOK.
  2. Gusto mo ba ng pinakamaraming fill na makukuha mo ngayon, tanggapin ang partials, walang resting order? → FAK.
  3. Gusto mo bang magpahinga sa book sa iyong price at maghintay para sa isang tao na pumunta sa iyo? → GTC.

Iyon lang. Karamihan ng bot bugs sa paligid ng order types ay nanggagaling sa pagpili ng #1 kapag gusto mo ng #3 (ang "buy" ay nagiging "walang position dahil ang spread ay masyadong malawak") o pagpili ng #3 kapag gusto mo ng #1 (ang "buy" ay nagiging resting order na nag-fill oras mamaya sa maling sandali).

FOK: kapag dapat kang mag-fill o lumaktaw

Ang Fill-or-Kill ay nag-match ng buong order sa hiniling na price o mas mahusay, instantly. Kung hindi ma-fill ang buong size instantly, ang order ay tatanggihan at walang mangyayari. Walang resting, walang partial.

Gamitin ang FOK para sa: news-arbitrage entries (gusto mo lang pumasok sa news price, hindi kung nasaan ang market sa 30s); take-profit exits sa partikular na target kung saan ang partials ay maglilito sa bookkeeping; anumang oras na inaasahan ng strategy ang atomic execution.

Ang trade-off: ang FOK ay tumatanggi nang mas madalas kaysa sa ibang order types, lalo na sa illiquid books. Palaging magkaroon ng fallback path - i-re-evaluate ang strategy condition at i-retry kung valid pa, o lumipat.

FAK: kapag tinatanggap ang partials

Ang Fill-and-Kill (tinatawag ding "immediate or cancel") ay nag-match ng kasing dami ng makakaya nito ngayon, pagkatapos ay kanselahin ang hindi natapos na natitira. Maaari mong makuha ang buong size, partial, o zero.

Gamitin ang FAK para sa: market-buy na may partikular na price ceiling (i-lift ang ask hanggang N cents sa itaas ng mid); sweep-the-book sells kapag pinapababa ang inventory nang madalian; anumang strategy kung saan "ilang position ay mas mahusay kaysa walang."

Operationally mas tricky kaysa sa FOK dahil dapat malaman ng bot kung nakuha nito ang 100% o 30% bago magpasiya sa susunod na hakbang. Ang fill response ay kasama ang filled_size field - palaging basahin ito.

GTC: kapag gusto mong magpahinga sa book

Ang Good-til-Cancelled ay nagpapahinga sa book sa iyong price hanggang ma-fill o kanselahin mo. Walang timeout (ang ibang order types sa v2 API ay kasama ang GTD na may expiry).

Gamitin ang GTC para sa: take-profit sells sa +Nc sa itaas ng entry; stop-loss sells sa -Nc sa ilalim ng entry (na may caveats - tingnan sa ibaba); market-making both-sided quotes; anumang position kung saan handa ang bot na maghintay para sa mas mahusay na price.

Ang hard rule: nangangailangan ang GTC ng ≥ 5 shares. Ang orders sa ibaba ng 5 shares ay tinatanggihan ng CLOB na may Size (X) lower than the minimum: 5. Ang bot na nag-post ng 4-share GTC sell ay tahimik na nabigo na i-set ang exit at nag-ride sa position hanggang resolution. Palaging i-check ang inventory ≥ 5 bago mag-post ng GTC; bumalik sa FAK o ride-to-resolve kung mas maliit.

Limit vs market at ang spread tax

Ang bawat Polymarket order ay technically limit order - kahit ang tinatawag ng bots na "market buy" ay nagspe-specify ng price ceiling. Ang pagkakaiba ay kung ang price na iyon ay nasa best ask (effectively market order, ay mag-fill laban sa book) o sa ilalim nito (mag-rest sa book).

Ang spread tax ay ang cost ng crossing - bid 0.45, ask 0.47, mid 0.46. Ang round trip na bumili ng ask at nagbenta ng bid ay nagbabayad ng 2 cents per share. Sa 60% win-rate strategy na may +3c/-4c targets, ang 2c spread na iyon ay ang pagkakaiba sa pagitan ng profit at loss.

Maker pattern (mag-post ng GTC sa bid o sa ilalim, maghintay na ma-hit) ay nag-collect ng spread sa halip na magbayad nito. Ang cost ay uncertain fill - maaaring hindi ka kailanman ma-hit. Para sa high-conviction trades, magbayad ng spread. Para sa passive accumulation, magtrabaho sa book.

Ang aming production defaults (FOK buys, GTC sells)

Ang pattern na karamihan ng aming production bots ay umaabot:

  • Entries: FOK sa ask + 0-2 cents. Kung nagpasya ang bot na bumili, dapat itong bumili ngayon o lumaktaw. Ang pagpapahinga ng entry order ay bihirang sulit - ang sitwasyon na nag-trigger ng buy decision ay nagbabago nang mas mabilis kaysa sa pagpahinga ng order.
  • Take-profit exits: GTC sa target price. Posted kaagad pagkatapos mag-fill ng entry. Hinahayaan namin ang market na pumunta sa amin; hindi namin chineychase ang bid down. Na may ≥ 5 shares.
  • Stop-loss: case-by-case. Ang GTC ay gumagana para sa slow strategies kung saan ang price changes ay bounded. Para sa fast-moving markets ang GTC stop ay hindi mag-fill kung lumipad ang price dito; nag-ride kami sa resolution sa option-D fashion (memory: trader-gtc-sell.md).

Ang pattern ay conservative - mas kaunting fills, mas kaunting slippage. Ang mas aggressive na variant ay gumagamit ng FAK entries at FAK exits, na tumatanggap ng partial fills. Pumili ng isa at manatiling consistent; ang paghahalo ng per-trade decisions ay nag-iimbita ng confusion.

Code: maglagay ng bawat order type

Reference order placement sa Python na may py-clob-client (v0.34.6).

from py_clob_client.client import ClobClient
from py_clob_client.clob_types import OrderArgs, OrderType
c = ClobClient(host="https://clob.polymarket.com", chain_id=137,
               key=PRIVATE_KEY, signature_type=2, funder=PROXY)
c.set_api_creds(creds)

# FOK buy: fill 10 shares at price 0.45 or skip
args = OrderArgs(token_id=TOKEN, price=0.45, size=10, side="BUY")
resp = c.create_and_post_order(args, OrderType.FOK)

# FAK buy: take as much as you can at 0.45 or below
resp = c.create_and_post_order(args, OrderType.FAK)

# GTC sell: rest a sell at 0.85 for 10 shares
sell_args = OrderArgs(token_id=TOKEN, price=0.85, size=10, side="SELL")
resp = c.create_and_post_order(sell_args, OrderType.GTC)

Parehong operations sa Node na may @polymarket/clob-client-v2: palitan ang OrderType.FOK ng clob.OrderType.GTC atbp.; ang method ay createAndPostOrder. Ang negRisk flag (kabanata 11) ay dapat itakda sa pangalawang argument para sa multi-outcome markets - ang pagkawala nito ay nag-route sa maling exchange contract.

Mga madalas na tanong

Ano ang FOK sa Polymarket?
Fill-or-Kill. Ang order ay dapat mag-fill nang buo kaagad o ito ay kanselahin - walang partial fills, walang resting sa book. Ginagamit namin ang FOK by default para sa buys sa aming production trader dahil inaalis nito ang phantom-fill ambiguity (ang order ay alinman fully filled o fully gone, hindi kailanman half-stuck).
Ano ang FAK sa Polymarket?
Fill-and-Kill (tinatawag ding IOC, Immediate-or-Cancel). Ang order ay kumukuha ng anumang available liquidity kaagad at kinakansela ang hindi natapos na natitira. Kapaki-pakinabang kapag tinatanggap mo ang partial fills pero hindi gusto ng rest. Mas mabilis kaysa sa FOK sa fragmented order books.
Ano ang GTC sa Polymarket?
Good-til-Cancelled. Ang order ay nagpapahinga sa book hanggang ma-fill o kanselahin mo. Ang GTC ay kung ano ang ginagamit mo para maging maker (mag-provide ng liquidity), kumita ng rebates, at iwasan ang taker fees. Ginagamit namin ang GTC para sa sells sa aming production setup para makuha namin ang spread sa exits.
Dapat ba ang aking bot ay gumamit ng limit orders o market orders?
Limit orders halos palagi. Ang market orders ay nagbabayad ng taker fee (0.75% hanggang 1.80%) at ang spread; ang limit orders ay kumikita ng maker rebate (20-25% ng taker fees). Ang tanging magandang dahilan para gumamit ng market order ay kapag tumama ang news at ang price ay malapit nang lumipat sa kabila ng spread bago mag-fill ang iyong limit.
Sinusuportahan ba ng Polymarket ang stop-loss orders nang native?
Hindi. Ang stop-loss ay client-side concept: pinapanood ng iyong bot ang price, at kapag natugunan ang trigger condition, naglalagay ng market o FAK sell order. Ang exchange ay walang native stop primitive, kaya dapat mong buuin ang logic sa iyong bot.
Ano ang order minimums?
Market orders: 1 USD minimum notional. Limit orders: 5 shares minimum. Ang ilang manipis na markets ay tumatanggi sa napakaliliit na orders - nag-return ang SDK ng partikular na error code na maaari mong i-detect at i-resize laban dito.