Polymarket 데이터 API 고르는 법
모든 제공업체가 큰 숫자를 내세웁니다. 정작 중요한 숫자를 내세우는 곳은 거의 없습니다. 결정하기 전에 실제로 테스트해야 할 것들을 정리했습니다. 유료 제공업체가 아예 필요 없는 경우도 함께 다룹니다.
Polymarket 과거 데이터를 찾고 있다면 이미 모두가 이곳에 오게 되는 벽에 부딪혔을 겁니다. Polymarket 자체 API는 현재 상태만 제공합니다. 결과가 확정된 마켓의 오더북을 요청하면 404가 반환되고, 보관되는 가격 기록은 약 1분에 한 포인트뿐이며 깊이 정보는 전혀 없습니다. 어느 쪽도 플랜으로 막혀 있는 것이 아닙니다. 오더북 자체가 없는 것입니다.
따라서 마켓이 진행되는 동안 오더북을 기록해 둔 제공업체가 필요합니다. 문제는 이 분야의 모든 제공업체가 같은 대표 숫자를 내세우는데, 그 숫자가 가장 정보가 적은 축에 속한다는 점입니다. 대신 확인해야 할 것은 다음과 같습니다.
저희도 이런 서비스를 만듭니다
PolyTest는 Polymarket 데이터 API이므로 저희는 중립적인 입장이 아닙니다. 아래 내용은 저희가 판매자가 아니라 구매자라면 사용할 체크리스트이며, 저희를 포함해 누구에게도 돈을 낼 필요가 없는 경우에 관한 섹션도 있습니다. 누구의 마케팅도, 특히 저희 마케팅도 믿지 말고 직접 테스트해 보세요.
1. 총 스냅샷 수가 아니라 마켓당 분당 스냅샷 수
총 스냅샷 수는 어디서나 대표 숫자로 쓰이지만 거의 의미가 없습니다. 총합은 단지 수집 빈도 × 추적 마켓 수 × 수집 기간일 뿐입니다. 숫자가 더 큰 제공업체는 해상도가 더 좋을 수도 있지만, 단지 더 오래 수집했거나 아무도 거래하지 않는 마켓의 중복 행을 세고 있을 수도 있습니다.
정말 알아야 할 것은 이것입니다. 내가 관심 있는 바로 그 마켓에서 분당 몇 개의 스냅샷을 받을 수 있는가? 1분에 두 번 샘플링된 5분 마켓은 마켓의 전체 수명 주기를 모델링하는 데 데이터 포인트 10개를 줄 뿐입니다. 그것으로는 아무것도 테스트할 수 없습니다.
# Pull the same market from each provider, then compare density.
snaps = fetch_snapshots(market_id) # provider-specific call
span_s = (snaps[-1]["timestamp"] - snaps[0]["timestamp"]) / 1000
per_min = len(snaps) / (span_s / 60)
print(f"{len(snaps)} snapshots over {span_s:.0f}s = {per_min:.1f}/min")
# Gaps matter more than the average. One 90-second hole in a 5-minute
# market means you cannot model the part where it was decided.
gaps = [
(b["timestamp"] - a["timestamp"]) / 1000
for a, b in zip(snaps, snaps[1:])
]
print(f"max gap: {max(gaps):.1f}s median: {sorted(gaps)[len(gaps)//2]:.1f}s")평균이 아니라 최대 간격을 확인하세요
평균은 실패 양상을 가립니다. 평균 분당 4개의 스냅샷을 제공하더라도 5분 마켓의 마지막 1분 동안 90초의 공백이 있다면, 정확히 여러분이 관심 있는 구간에서 쓸모가 없습니다. 어떤 제공업체에든 샘플 마켓의 최대 간격을 물어보세요. 답하지 못한다면 그것 자체가 무언가를 말해 줍니다.
2. 실제 오더북 깊이인가, 최우선 호가뿐인가?
백테스트가 의미가 있는지를 결정하는 가장 큰 요인이며, 마케팅 문구가 가장 모호해지는 지점입니다. "오더북 데이터"는 전체 호가 사다리부터 매수/매도 한 쌍까지 무엇이든 의미할 수 있습니다.
| 받는 데이터 | 테스트할 수 있는 것 |
|---|---|
| 중간가만 | 거의 없음. 중간가는 실제로 거래할 수 있는 가격이 아닙니다. |
| 최우선 매수 / 최우선 매도 호가 | 스프레드가 우위를 잠식하는지 여부. 필요하지만 충분하지 않습니다. |
| 전체 깊이 사다리 | 주어진 규모의 실제 체결가(슬리피지 포함). |
의미 있는 규모로 거래할 계획이라면 호가 사다리가 필요합니다. 얇은 Up/Down 마켓에서 500주 주문은 최상단 호가에서 체결되지 않고 오더북을 따라 내려가며, 최상단 호가와 실제 평균 체결가의 차이는 테스트하려는 우위보다 큰 경우가 많습니다.
def simulate_fill(levels, qty):
"""Walk the ladder. This is what actually happens to your order."""
filled = cost = 0.0
for lvl in levels:
take = min(lvl["size"], qty - filled)
cost += take * lvl["price"]
filled += take
if filled >= qty:
break
if filled < qty:
return None # Not enough liquidity to fill at all.
return cost / filled
book = snapshot["orderbook"]["asks"]
print("top of book:", book[0]["price"])
print("true fill :", simulate_fill(book, 500))
# A gap of 2-3c here on a $1 binary is routine, and it is
# larger than most claimed edges.3. 결과가 확정된 마켓이 실제로 보관되나요?
이 데이터에 돈을 내는 이유 자체가 Polymarket이 데이터를 버리기 때문입니다. 그러니 제공업체가 실시간 엔드포인트를 캐시로 프록시하는 것이 아니라 진짜로 데이터를 보관하는지 확인하세요.
테스트는 1분이면 됩니다. 몇 주 전에 결과가 확정된 마켓을 찾아 스냅샷을 요청하고, 어느 쪽이 이겼는지 알려주는 메타데이터 레코드만이 아니라 깊이를 포함한 전체 가격 경로를 받는지 확인하세요. 결과를 아는 것은 데이터가 아닙니다. 테스트할 가치가 있는 모든 전략은 답이 아니라 경로에 관한 것입니다.
메타데이터는 기록이 아닙니다
일부 소스는 결과가 확정된 마켓의 질문, 거래량, 승리 결과를 기꺼이 반환합니다. 그 정도는 공개 피드에 남아 있기 때문입니다. 그것은 기저율 데이터입니다. 주문이 어떤 가격에 체결되었을지 알려줄 수 없으며, 기저율에서 보이는 편향은 여러분이 보기 전에 이미 마켓 메이커가 가격에 반영해 두었습니다.
4. 기록 구간 대 기록 깊이
제공업체는 기록을 두 가지 형태로 판매하며, 그 차이가 단순한 일수보다 중요합니다:
- 롤링 구간: 최근 N일치이며, 오래된 데이터는 사라집니다. 현재 시장 상황에 맞춰 튜닝하기에 충분합니다.
- 보관 아카이브: 수집을 시작한 이후의 모든 데이터입니다. 서로 다른 변동성 국면에 걸쳐 테스트하려면 필요합니다.
어느 것이 필요한지는 솔직히 전략에 따라 다릅니다. 5분 마켓을 거래하고 매주 다시 튜닝한다면 30일이면 충분하며 그 이상을 사는 것은 낭비입니다. 작년 상황에서도 우위가 살아남았는지 알고 싶다면 롤링 구간으로는 어떤 가격으로도 답할 수 없습니다.
하나의 국면만 테스트하는 것을 경계하세요
백테스트가 거짓말을 하는 가장 흔한 방식은 전체가 단일 시장 국면 안에서만 실행되는 것입니다. 조용한 30일로 튜닝한 전략은 변동성이 찾아오기 전까지는 견고해 보입니다. 구간이 짧다면 최소한 둘로 나누어 양쪽 절반에서 결과가 유지되는지 확인하세요.
5. 실제로 쓸 수 있는 처리량
요청 한도는 첫 실제 백테스트를 돌리기 전까지는 사소해 보입니다. 코인 세 개의 한 달치 5분 마켓 스냅샷을 모두 가져오려면 요청이 아주 많이 필요하고, 초당 10회 한도는 오후 한나절의 리서치를 밤샘 작업으로 바꿔 놓습니다.
중요한 숫자는 두 가지인데 제공업체는 하나만 공개하는 경우가 많습니다. 지속 처리량(분당 요청 수)과 버스트 용량(초당 요청 수)입니다. 분당 한도가 높아도 버스트가 낮으면 병렬 가져오기가 여전히 막힙니다.
| 플랜 | 요청 / 분 | 버스트 / 초 | 기록 |
|---|---|---|---|
| PolyTest Free | 30 | 2 | 최근 마켓 |
| PolyTest Builder | 250 | 12 | 14일 |
| PolyTest Pro | 750 | 40 | 전체 아카이브 |
| PolyTest Enterprise | 맞춤 | 맞춤 | 전체 + 대량 내보내기 |
대량 기록을 정기적으로 가져온다면 대량 내보내기 경로가 있는지도 물어보세요. REST 엔드포인트로 스냅샷 백만 개를 페이지네이션하는 것은 가능하지만 올바른 도구는 아닙니다.
6. 결제하기 전에 평가할 수 있나요?
마케팅 페이지로는 데이터 품질을 평가할 수 없습니다. 자기 데이터에 자신 있는 제공업체라면 무료 등급이나 체험을 통해, 그리고 이상적으로는 가입 없이 읽을 수 있는 API 레퍼런스를 통해 결제 전에 데이터를 볼 수 있게 해줄 것입니다.
다만 무료 등급이나 체험이 무엇을 위한 것인지 냉정하게 봐야 합니다. 저희는 오더북 깊이를 포함한 Builder 플랜 전체 기능의 3일 체험을 제공하므로, 결정하기 전에 지원 범위, 스냅샷 밀도, 응답 형태를 확인할 수 있습니다. 하지만 3일과 14일 구간이라는 조건 때문에 리서치 등급이라기보다는 평가 도구입니다. 어떤 제공업체든, 결론을 내리기 전에 무료로 실제로 써 볼 수 있는 부분이 어디까지인지 파악하세요.
7. 여러분의 도구가 문서를 읽을 수 있나요?
새롭게 고려할 사항이며, 문제가 터지기 전까지는 보이지 않으므로 확인할 가치가 있습니다. Cursor, Claude Code, Codex로 개발한다면 어시스턴트가 올바른 연동 코드를 작성할 수 있는지는 제공업체의 문서를 읽을 수 있는지에 달려 있습니다.
일부 데이터 제공업체는 robots.txt에서 AI 크롤러를 차단합니다. 학습 데이터에 관한 정당한 선택이지만, 그 결과 모델이 문서를 볼 수 없어 API 형태를 즉흥적으로 지어내게 됩니다. 어떤 제공업체든 약 5초 만에 확인할 수 있습니다:
curl -s https://<provider>/robots.txt | grep -iA1 "GPTBot\|ClaudeBot\|Google-Extended"
# "Disallow: /" under those agents means your AI assistant
# cannot read their docs and will guess at the API instead.참고로 PolyTest는 이러한 크롤러를 허용하며 llms.txt, llms-full.txt, OpenAPI 명세를 공개합니다. 하지만 실질적인 테스트는 정책 파일을 읽는 것보다 간단합니다. 어시스턴트에게 제공업체별로 연동 코드를 작성해 달라고 하고 어느 쪽이 동작하는 코드를 만드는지 보세요.
누구에게도 돈을 낼 필요가 없는 경우
저희에게도 다른 누구에게도 똑같이 적용되므로 분명히 말해 둘 가치가 있습니다. 다음과 같은 경우에는 유료 데이터 제공업체가 필요 없습니다:
- 실시간 데이터만 필요한 경우. Polymarket의 공개 API와 WebSocket 스트림은 무료이고, 마켓 데이터에는 인증이 필요 없으며, 충분히 훌륭합니다. 과거 데이터 제공업체는 오직 과거 데이터를 위해 존재합니다.
- 전략이 아니라 인프라를 테스트하는 경우. 인증, 파싱, 재연결, 요청 한도 처리는 모두 무료 실시간 엔드포인트로 검증할 수 있습니다.
- 전략이 체결에 의존하지 않는 경우. 기저율이나 결과 확정 빈도를 연구한다면 그 정보는 공개 메타데이터에 남아 있습니다.
- 직접 기록할 의향이 있는 경우. 공개 WebSocket으로 수집기를 운영하는 것은 충분히 현실적입니다. 작은 서버 비용과 꾸준히 운영하는 노력이 들 뿐입니다. 함정은 기록이 전혀 없는 상태에서 시작하고 과거 데이터를 채울 수 없다는 점이므로, 데이터가 필요해지기 훨씬 전에 시작해야만 도움이 됩니다.
돈을 낼 이유는 좁고 구체적입니다. 직접 기록하지 않은 과거 데이터를 오늘부터 쓰고 싶은 경우입니다.
오늘 오후에 해볼 수 있는 테스트
- 목록에 있는 모든 제공업체의 무료 등급이나 체험에 가입하세요.
- 마켓 하나를 고르고(같은 코인, 같은 타임프레임, 같은 날) 각 제공업체에서 가져오세요.
- 분당 스냅샷 수와 최대 간격을 비교하세요. 밀도와 연속성이 어떤 대표 숫자보다 중요합니다.
- 스냅샷당 오더북 단계 수를 확인하세요. 호가 사다리가 아니라면 체결을 모델링할 수 없습니다.
- 한 달 전에 결과가 확정된 마켓을 요청해, 결과만이 아니라 전체 경로를 받는지 확인하세요.
- 가장 무거운 현실적인 쿼리 패턴을 실행해 어느 제공업체가 먼저 속도를 제한하는지 보세요.
- AI 어시스턴트에게 제공업체별 연동 코드를 작성해 달라고 해서 실제로 어떤 문서를 읽을 수 있는지 보세요.
이 순서는 오후 한나절이면 끝나며, 이 글을 포함한 어떤 비교표보다 더 많은 것을 알려줍니다. 저희 서비스로 시작하고 싶다면 3일 무료 체험이 있으며, 엔드포인트 레퍼런스는 가입하지 않고도 읽을 수 있습니다.
자주 묻는 질문
- Polymarket 과거 데이터 제공업체를 고를 때 무엇을 봐야 하나요?
- 총 스냅샷 수가 아니라 마켓당 분당 스냅샷 수를, 평균이 아니라 스냅샷 사이의 최대 간격을 확인하세요. 호가 사다리만이 현실적인 체결을 모델링할 수 있게 해주므로, 중간가나 최우선 호가가 아닌 전체 오더북 사다리를 받는지 확인하세요. 결과가 확정된 마켓이 메타데이터만이 아니라 전체 가격 경로와 함께 실제로 보관되는지 검증하세요. 그런 다음 지속 및 버스트 요청 한도와, 결제 전에 데이터를 평가할 수 있는지를 비교하세요.
- 왜 Polymarket 자체 API로 백테스트할 수 없나요?
- Polymarket API는 현재 마켓 상태만 제공합니다. 마켓 결과가 확정되면 오더북 요청은 "No orderbook exists for the requested token id"와 함께 404를 반환하고, 보관되는 가격 기록은 약 1분에 한 포인트입니다. 승리 결과나 총 거래량 같은 메타데이터는 남지만 오더북 깊이는 남지 않으며, 1분에 하나인 가격은 체결을 시뮬레이션하기에 너무 거칩니다. 따라서 서드파티 아카이브 없이는 실행을 백테스트할 대상이 없습니다.
- 스냅샷 수가 많을수록 좋은가요?
- 반드시 그렇지는 않습니다. 총 스냅샷 수는 수집 빈도 × 추적 마켓 수 × 수집 기간일 뿐이므로, 큰 숫자는 더 좋은 해상도, 더 긴 수집 기간, 더 넓은 범위, 또는 단지 유동성 없는 마켓의 중복 행이 많다는 뜻일 수 있습니다. 데이터의 사용 가능성을 결정하는 것은 거래하는 특정 마켓에서의 스냅샷 밀도, 연속 스냅샷 사이의 최대 간격, 각 스냅샷이 실제 오더북 깊이를 담고 있는지입니다.
- 오더북 깊이가 필요한가요, 아니면 중간가로 충분한가요?
- 의미 있는 규모로 거래할 계획이라면 깊이가 필요합니다. 중간가는 실제로 거래할 수 있는 가격이 아니며, Polymarket Up/Down 스프레드는 $1에 정산되는 계약에서 보통 2-5센트에 달해 테스트하려는 우위보다 큰 경우가 많습니다. 전체 사다리가 있으면 오더북을 따라가며 슬리피지를 포함한 실제 평균 체결가를 계산할 수 있고, 이것이 백테스트와 산술 연습을 구분합니다.
- 돈을 내는 대신 Polymarket 데이터를 직접 기록해도 되나요?
- 네, 합리적인 선택입니다. Polymarket의 공개 WebSocket 스트림은 무료이며 마켓 데이터에는 인증이 필요 없으므로, 작은 서버에서 수집기를 돌려 자체 아카이브를 만들 수 있습니다. 한계는 기록이 전혀 없는 상태에서 시작하고 과거 데이터를 채울 수 없다는 것입니다. 수집을 시작한 순간부터의 데이터만 얻을 수 있습니다. 제공업체에 돈을 내는 것은 직접 기록하지 않은 과거 데이터가 필요할 때 특히 의미가 있습니다.
Polymarket이 보관하지 않는 과거 데이터를 확보하세요
PolyTest는 Polymarket 암호화폐 Up/Down 마켓을 실시간으로 기록합니다. 8단계 오더북 깊이와 1초 미만 단위 타임스탬프를 갖춘 240M+개의 스냅샷을 제공하며, 결과가 확정된 마켓도 보존합니다. 3일 무료 체험으로 시작하세요.
더 읽어보기
Polymarket 트레이딩 봇 만드는 방법
대부분의 Polymarket 봇 튜토리얼은 더 이상 존재하지 않는 SDK를 기반으로 합니다. 이 글은 처음부터 끝까지 현재 기준의 방법을 다룹니다. 2026년에 무엇을 설치해야 하는지, 인증이 실제로 어떻게 동작하는지, 데이터 공백이 어디에 있는지, 그리고 첫 주에 봇을 죽이는 실패 유형까지.
Polymarket Up/Down 마켓: 슬러그, 결과 확정, 그리고 사라지는 오더북
Polymarket의 암호화폐 Up/Down 마켓은 플랫폼에서 가장 빈도가 높은 상품이면서 가장 오해받는 상품 중 하나입니다. 슬러그 읽는 법, 결과 확정을 결정하는 요소, 그리고 마켓이 마감된 뒤 Polymarket이 정확히 무엇을 보관하는지 설명합니다.
Polymarket에 테스트넷이 있나요?
짧게 답하면, 없습니다. Polymarket은 공개 테스트넷을 내놓은 적이 없고, 샌드박스 환경이나 데모 API도 없습니다. 첫 실제 주문은 실제 돈으로 실제 거래 상대방과 체결되는 진짜 주문입니다. 숙련된 개발자들이 이 문제를 어떻게 우회하는지 소개합니다.