Polymarket Bot Tutorial · 32개 챕터 중 21번째

Polymarket binary Yes/No 시장 bot 전략: standard event contracts, hard-capped 1x leverage, portfolio breadth로 확장하는 방법, 흔한 실수(0.99 추격), 그리고 code skeleton.

이 챕터에서 다루는 내용

Binary(Yes/No) 시장은 Polymarket의 기반입니다. 대부분의 전략이 여기에서 실행됩니다. 이 챕터에서는 leverage cap, 신규 빌더를 흔히 걸려 넘어지게 만드는 0.99-price trap, 그리고 production bot이 수렴하는 breadth-not-size 패턴을 다룹니다.

  • Binary market이 다루는 범위
  • 1x leverage cap와 이를 우회해 확장하는 방법
  • 흔한 실수: 0.99 가격 추격
  • 효과적인 leverage로서의 portfolio breadth
  • 시장별 risk vs portfolio risk
  • Code: binary market 스캔 및 규모를 반영한 매수 실행

Binary market이 다루는 범위

Binary market은 Polymarket의 기반입니다: 두 outcome token을 가진 단일 yes/no 질문입니다. "Will Trump win the 2024 election?"은 binary이고, 5명의 후보가 있는 "Who will win the 2024 election?"은 NegRisk입니다(11장).

binary market의 두 outcome token(YES와 NO)은 작은 spread tax를 제외하면 합이 1.0이 됩니다. 어느 쪽이든 살 수 있으며, 양쪽 모두 자체 order book을 갖습니다. pricing은 대칭적입니다. YES를 0.40에 사는 것은 expected payoff 관점에서 NO를 0.60에 파는 것과 같습니다.

Polymarket의 tournament가 아닌 대부분의 시장은 binary입니다: 날씨 질문, 단일 이벤트 정치 결과, 개별 스포츠 경기, 단일 price-target crypto 질문 등이 그렇습니다. bot 패턴은 이들 대부분에서 유사합니다.

1x leverage cap와 이를 우회해 확장하는 방법

Polymarket binary는 1x leverage입니다. 0.40에 100 shares를 사기 위해 $40를 쓰면 최대 payout은 $100입니다. margin도 없고 liquidation도 없습니다. capital efficiency는 2-25x를 사용할 수 있는 perp futures(24장)보다 낮습니다.

1x cap 주변에서 확장한다는 것은 다음 중 하나를 의미합니다: (1) 시장 전반에 더 많은 capital을 배치하기-leverage보다 diversification, (2) resolving markets를 통해 capital을 순환시키기-각 resolution에서 capital이 풀려 다음 시장으로 이동, (3) sum-to-1 arb가 effective synthetic leverage를 만들어낼 수 있는 NegRisk market을 사용하기.

Binary 전략에 대한 올바른 관점은 low-leverage, high-breadth입니다. 50개 시장에 50개의 작은 position을 두는 것이 일반적인 성숙한 bot 프로필이지, 5개 시장에 5개의 큰 position을 두는 것이 아닙니다.

흔한 실수: 0.99 가격 추격

가장 흔한 binary-bot 실패는 거의 결론이 난 heavy favorite를 0.99에 사서, YES로 해결될 때 1c payout을 쉽게 얻을 것이라고 기대하는 것입니다.

수학적으로 보면: 0.99에서 99c를 지불해 1c를 얻습니다. 1%의 실패율(100개 시장 중 1개), 각 실패가 99c의 손실을 만든다면 99개의 성공적인 1c 승리를 모두 상쇄합니다. 극단으로 갈수록 risk-reward 비율은 매우 가혹합니다.

capacity도 문제입니다. 0.99 부근의 book은 얇아서, 의미 있는 규모로 주문을 넣으면 price가 0.995 이상으로 밀리며 이미 얇은 edge를 더 깎아먹습니다.

tail-yield arb profile을 위한 특정 전략이 없다면 가격이 > 0.92인 시장은 피하세요. 대부분의 binary bot은 0.85 위에서는 매수하면 안 됩니다.

효과적인 leverage로서의 portfolio breadth

개별 position에는 leverage를 걸 수 없지만, 여러 개의 비상관 bet을 동시에 보유함으로써 portfolio의 variance 특성을 활용해 사실상 leverage를 얻을 수는 있습니다.

각각 $20인 50개 position은 총 $1,000가 걸린 상태입니다. win rate가 55%이고 +3c/-4c economics라면, expected daily PnL은 (0.55 × 3 − 0.45 × 4) × 50 × $0.20 = $1.50 기대값이며, variance는 제한적입니다. 같은 expected return이지만, 단일 $1,000 position보다 drawdown은 훨씬 낮습니다.

제약: position은 진정으로 uncorrelated여야 합니다. 한 주말의 NFL favorite 50개는 독립적인 50개 bet이 아닙니다. 대체로 여러 경기에서 weather와 favorite 요인이 상관되어 움직이는 하나의 큰 bet에 가깝습니다. sport, event type, time horizon 전반으로 diversification하세요.

시장별 risk vs portfolio risk

두 가지 risk cap이 필요합니다.

  • 시장별: edge와 무관하게 시장당 최대 $X. 단일 시장에서의 치명적 손실을 제한합니다. 일반적인 값: 시장당 $25-100.
  • Portfolio: 언제든 배치 가능한 총 capital 최대치. 비상관의 나쁜 날들에 걸친 총 drawdown을 제한합니다. 일반적인 값: wallet balance의 50-70%.

시장별 cap이 더 중요합니다. 하나의 bug나 edge 소멸 이벤트의 blast radius를 제한하기 때문입니다. Portfolio cap은 sanity check입니다. 50개 이상의 position이 있으면, 설령 이것이 없어도 대수의 법칙이 보통 당신을 bounds 안에 유지시켜 줍니다.

두 cap 모두 머릿속이 아니라 code에 의해 강제되어야 합니다. cap enforcement가 없는 bot은 결국 capital의 90%를 단일 시장에 배치하는 설정을 찾아내고, 그걸 잃게 됩니다.

Code: binary market 스캔 및 규모를 반영한 매수

Reference: 상위 거래량 binary market을 스캔하고, 유효한 setup을 필터링하며, 규모를 반영한 FOK 매수를 실행합니다.

def scan_and_buy():
    events = gamma_top_events(limit=50, active=True, closed=False)
    for ev in events:
        for m in ev.get("markets", []):
            if m.get("negRisk"): continue   # binaries only
            outs = json.loads(m["outcomes"])
            prices = [float(p) for p in json.loads(m["outcomePrices"])]
            for i, out_name in enumerate(outs):
                if not setup_qualifies(m, i, prices[i]): continue
                tok = json.loads(m["clobTokenIds"])[i]
                size = compute_size(m, prices[i])
                if size < 5: continue
                place_fok(tok, "BUY", prices[i] + 0.02, size, neg_risk=False)

def setup_qualifies(m, idx, price):
    return 0.10 <= price <= 0.85    # avoid extremes

setup_qualifies 함수가 바로 당신의 strategy가 들어가는 곳입니다. wrapper는 단지 plumbing일 뿐입니다.

자주 묻는 질문

Polymarket의 binary market이란 무엇인가요?
정확히 두 개의 outcome을 가진 시장입니다. 이벤트가 발생하면 1 USD, 발생하지 않으면 0 USD를 지급하는 YES와 NO입니다. Polymarket의 대부분 이벤트는 binary입니다: "Will X happen by Y?" 각 share는 승리한 쪽에서 1 USD, 패배한 쪽에서 0 USD를 지급하며, 상한이 있습니다.
binary Polymarket position에 leverage를 걸 수 있나요?
native leverage로는 불가능합니다. Binary market은 1x capped이며, 최대 손실은 매수 비용과 같습니다. synthetic leverage는 portfolio breadth에서 나옵니다. 양의 기대값이 있는 binary position 50개를 동시에 작게 운용하면, 큰 position 하나보다 더 빠르게 복리로 쌓입니다.
0.99에 매수하는 것이 왜 위험한가요?
0.99에서는 upside가 1 cent(약 1% 수익)인 반면 downside는 99 cents입니다(드물게 반대가 일어나면 -99% 손실). risk-reward 비대칭이 매우 가혹합니다. 하나의 black-swan event가 정상적인 승리 100개를 지워버릴 수 있습니다. 우리 bot의 엄격한 규칙: expected value 계산이 완벽하게 입증되지 않으면 0.95 위에서는 매수하지 마세요.
binary market마다 어느 정도 규모로 거래해야 하나요?
시장당 bankroll의 1-5%입니다. bankroll이 500 USD라면 position당 5-25 USD입니다. Kelly criterion은 이론적 최대치(대략 edge / variance)를 주지만, 대부분의 retail bot은 variance를 견디기 위해 full Kelly의 25-50% 수준으로 fractional-Kelly를 적용해야 합니다.
수익성 있는 binary market은 어떻게 찾나요?
세 가지 필터가 있습니다: (1) Liquidity - 24시간 거래량 10K+ USD로 체결과 청산이 가능해야 합니다. (2) Resolution 명확성 - 기준이 모호한 시장은 dispute risk를 동반합니다. (3) 당신의 edge source - news, statistical model, 또는 domain expertise. 이 셋 중 하나가 없으면 edge가 있는 것이 아니라 희망만 있는 것입니다.
Binary market이 NegRisk multi-outcome보다 덜 위험한가요?
시장별로는 그렇습니다. 구조가 더 단순하고 cross-leg risk가 없습니다. Portfolio 기준으로는 구성에 따라 다릅니다. 30개의 binary market으로 구성된 diversified portfolio는 종종 concentrated NegRisk multi-outcome bet보다 variance가 낮습니다.