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.
- Kailangan mo ba ng guaranteed fill ngayon mismo, at hindi sa lahat kung hindi mo ito makukuha ngayon? → FOK.
- Gusto mo ba ng pinakamaraming fill na makukuha mo ngayon, tanggapin ang partials, walang resting order? → FAK.
- 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.












