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.

자주 묻는 질문

Polymarkets liquidity reward program은 어떻게 지급되나요?
Liquidity provider(maker, 좁은 spread로 quoting하는 trader)는 자신의 market에서 taker fee의 일부를 받습니다. 일반적으로 resting quote에 체결된 모든 taker order에 대해 fee의 20-25%를 받습니다. 지급은 자동으로 적립되며 매일 wallet에 입금됩니다.
reward를 받으려면 어떤 spread로 quote해야 하나요?
Polymarkets program은 mid-price의 정해진 band 안에서 quote할 것을 요구합니다. 일반적으로 각 side에서 1-3 cents 정도입니다. 정확한 threshold는 market depth에 따라 다르며, markets reward documentation을 확인하세요. band 밖의 quote는 rebate를 받지 못합니다.
liquidity-rewards farming은 retail에게 수익성이 있나요?
약간은 그렇습니다. rebate만으로는 liquid market에서 round trip당 약 0.15-0.30% 수준입니다. spread( round trip당 1-2 cents )와 합치면 총수익률은 round trip당 0.5-1%까지 갈 수 있습니다. 하지만 inventory risk(5-cent adverse move는 50회 이상의 round trip보다 더 큰 비용)를 고려하면, 대부분의 retail farmer는 나쁜 날에 손실을 봅니다.
farming에 가장 좋은 market은 무엇인가요?
뉴스는 느리게 흐르지만 양방향 flow가 꾸준한 liquid politics와 sports가 좋습니다. Bitcoin price market은 너무 변동성이 큽니다. NegRisk multi-outcome market는 각 leg가 더 얇기 때문에 farm하기 좋은 spread가 나오는 경우가 많습니다. 24h volume이 최소 50K USD 이상이고 news flow가 적은 market을 확인하세요.
farming은 full market making과 어떻게 다른가요?
Farming은 rebate volume 최적화에 집중하고, full market making은 spread + rebate를 최적화합니다. Farming bot은 threshold에서 quote하며 volume을 쌓고, MM bot은 더 촘촘하게 quote하면서 inventory에 따라 skew합니다. Farming은 더 passive하며, 코드가 더 단순하고, PnL 변동성은 낮지만 기대 수익도 낮습니다.
잠자는 동안에도 reward를 farm할 수 있나요?
예, 그게 이 전략의 매력입니다. 잘 작성된 farming bot은 market이 자신의 spread tolerance보다 더 크게 움직일 때만 개입이 필요합니다. 저희는 몇 주씩 unattended로 실행되는 farming bot을 운영합니다. 다만 news flow가 잠자는 동안 inventory를 망가뜨릴 수 있으므로, hard inventory cap은 절대 타협할 수 없습니다.