Polymarket Bot Tutorial · 32개 중 19장
Polymarket 유동성 보상 프로그램을 programmatically로 farming하는 방법: rebate 프로그램의 작동 방식, 자격을 얻기 위한 spread threshold, ROI 수학, 수익성 있는 market 순위, 그리고 farming이 다른 전략보다 유리한 시점.
이 장에서 다루는 내용
Polymarket은 eligible market에서 resting limit order를 제공하는 trader에게 maker-rewards program을 통해 보상을 지급합니다. 이 rewards를 farming하는 전략은 명확하게 정의되어 있지만 margin은 얇고 inventory risk도 실제로 존재합니다. 이 장에서는 자격을 얻기 위한 spread threshold, ROI 수학, 그리고 farming이 효과적인 곳과 손해가 나는 곳을 다룹니다.
- Polymarkets liquidity reward program이 작동하는 방식
- 자격을 얻기 위한 spread threshold
- ROI 수학: rebate + fee saving + spread
- farming에 가장 좋은 market
- 위험: inventory blowup
- Code: 최소 LP-farming MM
Polymarkets liquidity reward program이 작동하는 방식
Polymarket은 eligible market에서 resting limit order를 제공하는 trader에게 maker rebate를 지급하는 liquidity rewards program을 운영합니다. 거래소는 eligible quote를 매일 집계하고, 시간 가중 spread 개선 order 점유율에 비례해 reward를 분배합니다.
eligible market는 매주 바뀝니다. 일반적으로 Polymarket이 더 깊은 book을 원할 때의 high-priority event(선거 연도, 주요 스포츠 토너먼트 등)가 대상입니다. eligible 목록은 Polymarket의 rewards 페이지에 게시되며, 특정 market을 대상으로 farming 전략을 짜기 전에 반드시 확인해야 합니다.
reward는 pUSD로 지급되며, 정기적으로(보통 daily 또는 weekly) 입금됩니다. 이는 trade PnL과는 별개입니다. 같은 market, 같은 기간에 inventory 기준으로는 net-down이면서 reward 기준으로는 net-up일 수 있습니다.
자격을 얻기 위한 spread threshold
reward eligibility를 얻으려면 quote가 midpoint의 "qualifying spread" 안에 있어야 하며, 현재 binary market에서는 보통 mid의 약 ±3-5% 범위입니다. band 밖의 quote도 book에는 남아 있지만 reward는 받지 못합니다.
더 좁게 quote할수록 per-block reward에서 차지하는 비중은 커지지만 adverse selection에 더 자주 당합니다. 더 넓게 quote할수록 안전하지만 reward 점유율은 작아집니다. 대부분의 market에서 최적 지점은 mid에서 양쪽 각각 약 1-2c 떨어진 수준입니다.
eligibility에는 최소 order size도 있습니다(보통 5+ shares, GTC minimum과 동일). 최소치보다 작은 order는 book에는 남아도 reward 산정에는 포함되지 않습니다.
ROI 수학: rebate + fee saving + spread
전체 reward-farming ROI는 세 가지 요소로 구성됩니다.
- Rebate income: filled share당 rebate × fills, pUSD로 지급됩니다. 수치는 시장마다 다르며, 현재 범위는 filled share당 0.1-0.5c입니다.
- Spread captured: mid 위 1c와 아래 1c로 quote하고 양쪽이 모두 fill되면 round trip당 2c를 벌게 됩니다. 실제 capture rate는 fill 불균형에 따라 달라집니다.
- Inventory PnL: 누적한 position은 mark-to-market exposure를 가집니다. 양수일 수도 음수일 수도 있으며, 전략이 잘 설계되면 보통 작습니다.
예시 계산: 양쪽 각각 100 shares를 quote하는 market에서 24시간 동안 side별 60% fill rate이고 rebate가 $0.30/sh라고 합시다. Reward: 100 × 0.60 × $0.30 = $18/day. Spread capture: 같은 fill 기준으로 1c spread × 60 round trip = $0.60. 유동성이 얇은 market에서는 rebate가 spread보다 지배적이고, 유동성이 두꺼운 market에서는 spread가 더 중요해집니다.
farming에 가장 좋은 market
farming에 유리한 경제적 특성은 다음과 같습니다.
- 높은 eligible reward rate-market별 현재 per-share rebate는 rewards 페이지에서 확인하세요.
- 적당한 volume-의미 있는 reward를 얻을 만큼 fill은 있어야 하지만, 경쟁 maker가 점유율을 다 가져갈 정도로 많아서는 안 됩니다.
- 안정적인 mid-뉴스 하나에 implied probability가 10c씩 움직이지 않는 market을 선호하세요. 뉴스 전 election market은 좋고, resolution이 임박한 market은 좋지 않습니다.
- 좁은 natural spread-이미 book이 촘촘한 market은 시장을 여는 것보다 rebate 분배에서 경쟁하게 됩니다.
피해야 할 대상: resolution 24시간 전의 market(가격 급등락이 inventory를 망가뜨림), 한쪽 방향 flow가 계속되는 market(엄청난 directional exposure가 쌓임).
위험: inventory blowup
farming의 가장 큰 위험은 가격이 움직이는 동안 directional exposure가 쌓이는 것입니다. mid가 한 시간 동안 0.55에서 0.42로 떨어지면 bid는 반복적으로 fill되고 ask는 체결되지 않으며, 결국 current mid보다 높은 평균 단가로 N shares를 long하게 됩니다.
해결책:
- Inventory cap: 이미 너무 많이 long인 쪽에서는 quoting을 중단합니다.
- Skew: long일 때는 bid를 더 넓히고 ask를 더 촘촘하게 합니다. short일 때는 반대로 합니다.
- Kill switch: inventory가 정상 범위의 2배를 넘거나 mid가 시작 시점 대비 >X% 움직이면 중단하고 flat으로 만듭니다.
farming PnL은 reward + spread − inventory MTM의 합입니다. blowup은 뉴스로 인한 단일 mid 이동에서 세 번째 항이 크게 음수로 변할 때 발생합니다.
Code: 최소 LP-farming MM
참고용: 가장 단순한 실행 가능한 liquidity-rewards-farming maker입니다.
QUOTE_OFFSET = 0.01 # 1c off mid each side
INV_CAP = 50 # max long or short
SIZE = 5 # GTC minimum
def farm_loop(token_id):
while True:
book = fetch_book(token_id)
mid = (book.best_bid + book.best_ask) / 2
inv = chain_balance(token_id)
cancel_my_quotes(token_id)
if inv < INV_CAP:
post_gtc(token_id, "BUY", mid - QUOTE_OFFSET, SIZE)
if inv > -INV_CAP:
post_gtc(token_id, "SELL", mid + QUOTE_OFFSET, min(SIZE, abs(inv)))
time.sleep(30) # re-quote every 30s
production에 추가할 항목: inventory에 따른 skew, news-event pause, rebate stream을 포함한 daily PnL reconciliation.





