LIVE
$7.62 min profit is yours / per trade
Get the bot

Intra-market binary arbitrage explained

How and why YES + NO < $1.00 happens on Polymarket, how to size opportunities, and practical ways to buy both legs through the CLOB.

업데이트: 2026-04-20· 5 min
arbitrage
Polymarket
CLOB
binary

Intra-market binary arbitrage explained

간단 요약: 같은 Polymarket 바이너리 시장에서 YES와 NO의 best-ask 가격 합이 $1.00 미만일 때 intra-market binary arbitrage가 발생합니다. 이 경우 두 다리(legs)를 모두 매수하여 수학적으로 1.00에서 두 ask를 뺀 값만큼 스프레드를 고정할 수 있지만, 이를 수익으로 보기 전에 수수료, 슬ippage, 부분 체결, 리졸루션 리스크 및 정산 시점을 항상 고려해야 합니다.

주요 요점

  • "YES + NO < $1.00"은 intra-market arbitrage 엣지를 만드는 단순 조건입니다.
  • 원시 엣지(raw edge)는 1.00 − (bestAsk(YES) + bestAsk(NO))이지만, 수수료·슬리피지·체결 이슈로 감소합니다.
  • 두 다리는 CLOB을 통해 실행하세요. 즉시 체결을 우선하는 FAK(마켓) 오더가 일반적인 운영 도구입니다.
  • 사용 가능한 깊이(depth)에 대해 보수적으로 사이징하고 항상 taker 수수료와 틱 사이즈를 반영하세요.

왜 YES + NO가 $1.00 미만이 될 수 있는가

시장 마이크로구조와 인간 행동이 일시적 불일치를 만듭니다. 흔한 원인은 다음과 같습니다:

  • 단편화된 유동성: 서로 다른 참여자가 서로 다른 편에 ask를 두지만 반대편에 매칭되는 카운터가 없는 경우.
  • 레이턴시와 오래된(스테일) 오더: 오더 업데이트가 CLOB과 WebSocket을 통해 서로 다른 속도로 전파되어 best ask가 잠깐 벌어질 수 있습니다.
  • 틱-사이즈 양자화: 틱 사이즈(보통 $0.01, 극단 근처에서는 $0.001로 조여짐)가 가격을 반올림하도록 강요해 작은 간극을 만듭니다.
  • 수수료 차이와 인센티브: maker 수수료는 0인 반면 taker 수수료는 가변적입니다; 공격적인 taker는 다른 방식으로 체결을 유도해 한쪽을 얇게 남길 수 있습니다.
  • 인간 오류와 수동 마켓메이킹: 한쪽에 잘못된 큰 limit ask를 놓으면 반대편에서 활용 가능한 갭이 생깁니다.

원시 엣지 정량화

산수는 단순합니다: Edge = 1.00 − (bestAsk(YES) + bestAsk(NO)). Edge > 0이면 이론상 arbitrage입니다.

  • 예: bestAsk(YES) = 0.46, bestAsk(NO) = 0.52 → Edge = 0.02 (2센트, $1의 2%).
  • 그러나 이것은 수수료·슬리피지·실행 리스크 이전의 "원시 엣지"입니다.

원시 엣지를 실현 손익으로 바꾸는 비용들

항상 다음을 차감하거나 반영하세요:

  • Taker 수수료: Polymarket의 taker 수수료는 카테고리에 따라 가변적입니다(0%에서 최대 1.8%). 양쪽 다에 taker 수수료를 내면 엣지가 사라질 수 있습니다.
  • 슬리피지/부분 체결: best ask는 작은 사이즈만 제공될 수 있습니다; 더 많이 체결하면 더 깊은, 더 나쁜 가격을 소모합니다.
  • 틱-사이즈 반올림: 틱 사이즈가 $0.01이면 유효한 best ask가 양자화되어 깊이 곡선에 영향을 줍니다.
  • 정산 타이밍 및 리졸루션 리스크: UMA 분쟁은 정산을 지연시키거나 변경할 수 있습니다.
  • 스마트컨트랙트 및 운영 리스크: CTF 작업, relayer 동작, 지갑 상태가 마찰을 추가할 수 있습니다.

기회를 사이징하는 방법: 실무 규칙

  1. 표시된 best ask에서 사용 가능한 깊이부터 시작하세요. 오더북 깊이 뷰를 사용해 best price와 다음 가격대의 누적 사이즈를 확인하세요.
  2. 수수료를 반영한 순 엣지(net edge)를 계산하세요. 양쪽에 taker 수수료가 적용되면 순 엣지 = Edge − fee(YES) − fee(NO)로 추정합니다.
  3. 슬리피지 버퍼를 적용하세요. 보수적으로 현재 표시된 best ask에서만 취할 수 있다고 가정하고, 그 이상은 다음 가격이 +틱 또는 그보다 나쁠 것으로 가정합니다.

사용 가능한 간단한 사이징 워크플로:

  • 두 결과(outcome)의 bestAsk와 가시적 깊이를 조회합니다.
  • 원시 엣지와 수수료 적용 후 순 엣지를 계산합니다.
  • 각 측에서 허용할 수준의 가격 레벨만 소비하도록 대칭 최대 사이즈 S를 결정합니다.
  • net edge × S가 최소 목표를 초과하면 거래 실행을 고려할 수 있습니다.

Polymarket에서의 실행 방법

CLOB에서 실무적으로 두 가지 실행 패턴이 존재합니다:

  • 양쪽 다에 대한 마켓(FAK) 오더: createMarketOrder 스타일의 FAK는 즉시 체결을 시도하고 남은 부분을 취소합니다. FAK는 빠르고 즉시성 보장이 필요할 때 가장 일반적이나 taker 수수료를 지불하고 부분 체결 위험이 있습니다.
  • 북 내 리미트로 교차하기(limit-in-the-book crossing): 표시된 best ask에 리밋 매수를 놓거나 약간 더 공격적인 가격을 걸어 체결을 유도합니다. 이렇게 하면 주문이 체결될 때 maker(수수료 0)를 받을 수 있지만 느리고 피킹(being picked off) 위험에 노출됩니다.

왜 FAK를 자주 사용하는가

FAK는 즉시성을 보장합니다. 짧고 순간적인 엣지를 발견했을 때 가장 단순한 운영 경로를 원하면 두 개의 FAK(하나는 YES, 하나는 NO)를 놓아 체결되거나 부분 체결되게 하고, 체결된 것 외에는 미결 노출을 남기지 않습니다. FAK는 taker 오더로 실행되므로 보통 taker 수수료를 지불한다는 점을 기억하세요.

최소한의 TypeScript 시퀀스(개념적)

이 예시는 시퀀스를 개략적으로 보여줍니다; 사용 중인 SDK와 자격증명에 맞게 조정하세요. 플레이스홀더는 환경 값으로 교체하세요.

// Pseudocode-like sketch using a CLOB client
// 1. Read best asks for both outcomes via CLOB read endpoints
const yesAsk = await clob.getBestAsk(marketId, 'YES')
const noAsk  = await clob.getBestAsk(marketId, 'NO')

// 2. Compute edge and decide size
const edge = 1.0 - (yesAsk.price + noAsk.price)
if (edge <= minimumNetEdge) throw new Error('No edge')

// 3. Place FAK market orders for both legs
await clob.createMarketOrder({side: 'buy', outcome: 'YES', size: size})
await clob.createMarketOrder({side: 'buy', outcome: 'NO',  size: size})

참고: CLOB의 트레이딩 엔드포인트는 주문을 위해 API key + HMAC이 필요합니다. 읽기는 공개입니다. 동기식 체결을 가정하지 마세요; 항상 주문 후 오더북 상태와 트레이드 영수증을 확인하세요.

거래 후: 포지션 관리

체결 후에는 YES와 NO 결과 토큰을 모두 보유하게 됩니다. 일반적으로 두 가지 정산 경로가 있습니다:

  • 바이너리의 즉시 merge 및 split 경제성은 적용되지 않습니다; 단순히 두 결과 토큰을 보유합니다. 시장이 리졸브되면 승리한 토큰을 CTF redeem을 통해 $1.00으로 환급받을 수 있습니다.
  • 자본을 조기에 회수해야 한다면 한쪽 또는 양쪽 결과를 CLOB에 다시 상장(list)할 수 있습니다; 보통 남은 유동성과 스프레드가 언와인드 가능성(수익성 여부)을 결정합니다.

리스크 체크리스트 — 왜 "수학적"이 곧 무위험은 아닌가

intra-market arbitrage 거래를 무위험이라 부르려면 반드시 리스크를 열거해야 합니다. 실행 전 기록할 주요 리스크:

  • 리졸루션 리스크: UMA 분쟁은 정산을 지연시키거나 변경할 수 있습니다.
  • 슬리피지 및 부분 체결: 양쪽을 광고된 가격에 채우지 못할 수 있습니다.
  • 수수료: taker 수수료가 엣지를 없앨 수 있습니다.
  • 스마트컨트랙트/운영 리스크: relayer 실패, 지갑 배포 문제, SDK 버그가 실행을 방해할 수 있습니다.
  • 지리적 및 규정 준수 제약: Polymarket은 여러 관할구역에서 신규 주문을 차단합니다; VPN 우회는 시도하지 마세요.

이것이 당신의 트레이딩에 미치는 영향

활동 트레이더에게 플레이북은 단순합니다: bestAsk(YES)와 bestAsk(NO) 및 깊이를 자동으로 모니터링하고, 수수료와 슬리피지를 반영한 순 엣지를 계산하며, 더 작은 사용 가능한 깊이에 맞춰 사이징하세요. 즉시성을 우선하고 taker 수수료를 지불할 준비가 되어 있다면 FAK 오더를 사용하세요; maker 체결을 참을 수 있다면 리미트 주문을 고려하세요. 항상 체결을 로그하고 온체인에서 토큰을 예상 노출과 대조(reconcile)하세요.

마무리 문단

Intra-market binary arbitrage는 Polymarket에서 가장 깔끔한 마이크로구조 엣지 중 하나입니다: 조건은 단순(YES + NO < $1.00)하고 실행 패턴도 잘 알려져 있습니다. 그러나 그 단순함이 운영적, 수수료적, 리졸루션 리스크를 제거하지는 않습니다 — 사이징과 실행 결정을 내릴 때 반드시 이들을 포함하세요.

자주 묻는 질문

intra-market binary arbitrage에서 "엣지"는 정확히 무엇을 의미하나요?

엣지는 1.00 − (bestAsk(YES) + bestAsk(NO))입니다. 이는 바이너리 시장에서 $1.00과 두 best ask 합계 사이의 원시(수수료 전) 차이입니다. 실현 이익은 taker 수수료, 슬리피지 및 기타 실행 비용을 차감해야 합니다.

항상 두 다리를 실행할 때 FAK 오더를 사용해야 하나요?

FAK 오더는 즉시성을 우선하며 일반적으로 사용되지만 taker 수수료를 내고 부분 체결 위험이 있습니다. maker 체결을 기다려 taker 수수료를 피할 수 있다면 리밋 주문이 더 저렴할 수 있지만 속도는 느립니다.

한쪽 포지션만 남는 상황을 피하려면 어떻게 사이징해야 하나요?

허용 가능한 가격 레벨에서 각 측의 더 작은 사용 가능한 깊이에 맞춰 사이징하세요. best ask와 다음 몇 틱에서의 누적 깊이를 계산한 후, 허용 가능한 레벨만 소모하는 대칭 사이즈를 선택하세요. 보수적 사이징은 부분 미체결로 인한 한쪽 포지션 리스크를 줄입니다.

틱 사이즈 변경이 이 전략에 영향을 주나요?

네. Polymarket은 보통 $0.01 틱을 사용하며 극단 근처에서는 $0.001로 조여집니다. 틱 양자화는 깊이에 영향을 주고 작은 엣지를 만들거나 없애므로 현재 틱 사이즈를 사이징과 슬리피지 모델에 반영하세요.

이런 거래에 maker 수수료가 적용되나요?

Polymarket의 maker 수수료는 0입니다. 만약 당신의 리밋 주문이 북에 머물렀다가 나중에 taker에 의해 체결된다면 taker 수수료를 피할 수 있습니다. 다만, 머무는 리밋은 시간과 pick-off 리스크에 노출됩니다.

참조된 용어

관련 가이드

교육용 자료입니다. 재무, 법률 또는 세금 조언이 아닙니다. Polymarket은 귀하의 관할 구역에서 사용 불가할 수 있습니다.