Jev가 Polymarket 가격을 이길 수 있을까? 26,174개 해결된 시장에 대해 물어보다
요약
본 기사는 AI 모델 Jev를 활용하여 Polymarket과 같은 예측 마켓(Prediction markets)의 가격을 분석하고, Jev가 과거 해결된 수천 개의 시장 데이터와 규칙을 학습한 후에도 높은 성능(AUC 0.615)을 보임을 실험했습니다. 특히, Jev에게 단순히 질문만 제공했을 때 가장 좋은 결과를 얻었으며, 이는 AI 모델이 복잡한 금융/시장 상황 분석에 활용될 수 있음을 시사합니다.
핵심 포인트
- Jev는 Polymarket의 해결된 26,174개 시장 데이터를 학습하여 높은 예측 성능을 보였습니다.
- 가격 정보가 포함되지 않은 순수 질문 기반 테스트에서 Jev의 성능이 가장 좋았습니다.
- AI 모델은 복잡한 예측 마켓 분석에 활용될 수 있으며, 이는 새로운 연구 분야입니다.
- Jev는 과거 결과를 기억하지 못하는 한계점도 발견되었습니다.
"Jev가 Polymarket 가격을 이길 수 있을까? 질문 텍스트만으로는 안 돼. Jev에게 총 26,174개의 해결된 Polymarket 마켓의 질문과 해소 규칙을 보내고 단 하나의 것을 물었다. 이것이 'Yes'로 해결될 것인가? Jev가 공개된 이후 해결된 9,138개 마켓에 대해, 즉 학습에서 볼 수 없었던 내용들에 대해서도, Jev는 AUC 0.615를 기록했다. 하루 전에 거래되었던 Yes 가격은 0.844를 기록했다. Jev에게 가격을 알려주는 것은 가격 자체보다 상황을 악화시켰다. 두 가지를 혼합하는 것도 아무런 추가 효과가 없었다. 그리고 Jev는 마켓의 2.4%에서 "No보다 Yes일 가능성이 더 높다"고 답했는데, 이는 대부분 모든 항목에 대해 0.3이라는 값을 제시했기 때문이다."
이 부분은 코드와 함께 주요 결과이다. 내가 예상하지 못했던 부가적인 결과, 즉 Jev가 과거 마켓 결과를 기억하지 못한다는 점은 part 2에서 별도로 다루었다.
이 테스트를 수행한 이유
내 이전 시리즈의 마지막 부분인 Jev in trading, tested에서는 Jev가 내가 실행했던 모든 가격 기반 테스트에서 실패했음을 언급했지만, 정보가 가격에 포함되어 있지 않은 과제는 테스트하지 않았다고 했다. 예측 마켓(Prediction markets)이 명백한 후보이다. 각 마켓은 평범한 영어 문장과 한 페이지의 해소 규칙으로 구성되어 있으며, 이는 Jev가 설계된 정확한 종류의 입력값이다. 그리고 "Jev를 사용하여 가격이 잘못 책정된 Polymarket 마켓을 찾는 것"은 현재 인기 있는 주제이다. 코드를 통해 수천 개의 마켓을 스캔하고, Jev가 어떤 것이 거래할 가치가 있는지 판단하게 한 다음, 크기를 정하고 코드로 실행하는 방식이다.
Polymarket은 또한 내가 그 주장을 검증하는 데 필요한 모든 것을 공개한다: 해결된 모든 마켓, 해당 텍스트, 그리고 전체 가격 기록까지도 말이다. 아무도 나에게 이것에 대해 돈을 지불하지 않았고, 나는 Jev를 기반으로 만든 어떤 것도 판매하지 않는다.
테스트 방법
| 설정 | 값 |
|---|---|
| Markets | Polymarket의 공개 Gamma API를 통해 얻은, 최소 $10k 거래량을 가진 해결된 Yes/No 시장 |
| ... | |
| Polymarket 가격을 이기려면 24시간 가격이 확실한 기준선입니다. 시장을 이기고 싶어 하는 봇은 동전 던지기가 아니라 시장의 현재 가격을 이겨야 합니다. 문제는 Jev가 이미 가격에 포함되어 있지 않은 무언가를 가져오는지 여부입니다. |
시장 정보 및 가격 얻기
Gamma API는 텍스트와 최종 결과를 가진 마감된 시장을 반환합니다. 저는 UMA가 실제로 해결한, 깨끗한 0/1 결과와 Yes/No 쌍을 가진 것들만 유지합니다:
url = ("https://gamma-api.polymarket.com/markets?closed=true&limit=100"
f"&offset={off}&end_date_min={day}T00:00:00Z&end_date_max={next_day}T00:00:00Z"
f"&volume_num_min={min_volume}")
...
가격은 Yes 토큰의 CLOB(Central Limit Order Book) 기록에서 참조 시간 이전 9일 동안 매시간 단위로 가져옵니다. "24시간 전"이라는 것은 그 순간보다 같거나 이전의 마지막 거래를 의미합니다:
ref = min(end_date, closed_time) # 이벤트 시점, 해결 지연 시간이 아님
hist = get(f"https://clob.polymarket.com/prices-history?market={yes_token}"
f"&startTs={ref - 9*86400}&endTs={ref}&fidelity=60")["history"]
...
하루보다 오래되지 않은 시장은 24시간 가격이 없어 제외됩니다. 이로 인해 대부분의 일일 암호화폐 및 당일 스포츠 시장이 제거됩니다.
Jev에게 질문하기
시장당 한 번 요청, 두 가지 질문입니다. 상태(state)는 문서에서 권장하는 대로 작은 JSON 객체이며, Noul은 참 또는 거짓인 진술 형태로 작성됩니다:
from typesafe_sdk import AsyncTypeSafeClient, Choice, Noul
state = {
...
러너(runner)는 한 번에 8개의 요청을 보내고 모든 답변을 JSONL 파일에 추가합니다. 따라서 충돌이나 속도 제한이 발생하더라도 동일한 명령을 다시 실행하기만 하면 됩니다. 52,348개 요청 모두 단 하나의 오류 없이 통과했으며, 이는 대부분의 API에서 말할 수 있는 것보다 많은 수치입니다.
확률에 대한 평가는 일반적으로 브라이어 스코어(Brier score)와 로그 손실(log loss)(낮을수록 좋음), AUC(Yes로 해결된 시장을 No로 해결된 시장보다 순위를 매길 수 있는지 여부), 그리고 신뢰도(calibration)를 사용합니다.
Jev가 가격을 이기는가?
아닙니다. 어떤 지표로 측정해도 그렇지 않습니다.
| 방법, 9,138개 시장 해결 (2026년 9월 10일 – 10월 10일) | Brier | Log loss | AUC (95% CI) |
|---|---|---|---|
| 기본 비율 예측 (35% Yes) | 0.227 | 0.647 | 0.500 |
| ... | |||
| Jev 자체만으로는 기본 비율을 추측하는 것(Brier 0.220 대 0.227)보다 겨우 나은 수준입니다. 일주일 후의 시장이 이를 훨씬 능가합니다. 그리고 제가 Jev에게 가격을 제공했을 때, 그것은 가격을 따라갔지만 (순위 상관관계 0.85), 모든 답변을 약 0.3 주변의 자신이 선호하는 영역으로 끌어당겼습니다. 그 조정은 72.6%의 시장에서 제곱 오차를 악화시켰습니다. |
이러한 격차는 Jev가 할당한 모든 범주에서 동일하게 나타납니다. 스포츠(0.656 대 0.774)에서 가장 작고, 암호화폐 가격 임계값(0.698 대 0.971)과 정치(0.633 대 0.956)처럼 가격이 거의 항상 정확한 곳에서 가장 크게 나타납니다.
Jev는 거의 Yes라고 말하지 않는다
여기에 주목할 가치가 있습니다. 답변들이 분포하는 곳은 다음과 같습니다:
| 중앙값 (Median) | 5th–95th 백분위수 | 0.5 이상 | |
|---|---|---|---|
| 시장 가격, 24시간 전 | 0.27 | 0.00–0.94 | 23.0%의 시장 |
| Jev, 무지 상태 (blind) | 0.32 | 0.20–0.44 | 2.4%의 시장 |
Jev는 질문에 관계없이 열 개 중 아홉 개의 시장에서 0.2와 0.45 사이로 답변했습니다. 1센트에 가격이 책정된 시장과 99센트에 가격이 책정된 시장은 거의 같은 수치를 얻었습니다.
이 좁은 범위 내에서는 합리적으로 보정되어 있습니다. 0.19라고 했을 때 약 17%가 Yes로 해결되었고, 0.47이라고 했을 때는 약 48%가 Yes로 해결되었습니다. 따라서 거짓말을 하고 있는 것은 아닙니다. 답을 알 수 없는 질문이 주어졌을 때, '예측 시장은 보통 No로 해결된다'는 것과 비슷한 값을 반환하는데, 이는 사실입니다(여기서는 35%가 Yes로 해결됨)만 거래를 선택하는 데는 쓸모가 없습니다.
가격에 무언가를 추가하는가?
세 가지 점검, 모두 부정적입니다.
블렌드(Blend). 시장의 로짓(logit)과 Jev의 로짓을 이용한 로지스틱 회귀(logistic regression)를 5-폴드 교차 검증(5-fold cross-validated)으로 수행했을 때, Jev는 +0.20의 가중치를 가지며 Brier 점수는 0.150으로 유지되어 시장 가격만 재보정하는 것과 동일합니다.
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold
...
가격 구간 내에서(Inside a price bucket). 이는 '오가격 필터(mispricing filter)'를 사용하는 것입니다. 35센트와 65센트 사이의 가격을 가진 모든 시장을 가져와 Jev가 어떤 시장이 Yes로 해결될지 알려줄 수 있는지 확인합니다. 이 구간에서의 AUC는 0.536입니다. 5센트 미만의 장기 예측(longshots)의 경우 0.480이며, 85센트 이상의 우세한 시장(favourites)의 경우 0.379로, 반대로 하는 것보다도 못합니다. 일단 가격을 알게 되면 Jev의 수치는 아무것도 전달하지 못합니다.
모의 거래(Paper trades). Jev가 가격보다 임계값(threshold) 이상 높을 때 Yes 지분을 매수하고, 낮을 때 No 지분을 매수합니다. 수수료나 스프레드 없이 10센트와 90센트 사이의 가격을 가진 시장에만 적용됩니다.
for d in (0.1, 0.2, 0.3, 0.4):
buy_yes = p_jev - p_market > d
buy_no = p_market - p_jev > d
...
| Jev가 가격과 다른 정도 | 거래 건수 | 지분당 평균 수익 (± s.e.) | 무작위, 동일한 거래 건수 |
|---|---|---|---|
| 10센트 초과 | 3,510 | +1.1¢ ± 0.8 | +0.0¢ ± 0.8 |
| ... |
Jev가 시장과 강하게 의견이 다를수록 더 많이 손해를 봅니다. 이는 시장이 Jev가 알 수 없는 것에 대해 옳다는 것을 의미합니다.
Jev가 가장 틀리는 부분
가장 큰 불일치점들이 표보다 이야기를 더 잘 들려줍니다:
| Market | Price | Jev | Resolved |
|---|---|---|---|
| Google Maps renames Lake Ontario to "Lake America" by September 30, 2026? | 0.94 | 0.05 | Yes |
| ... | |||
| 매번 이 질문들은 답이 하루 전에 뉴스에 나왔고, Jev가 학습한 어떤 텍스트에도 포함되어 있지 않았습니다. Lake America에 대한 Jev의 0.05는 그가 학습 데이터에서 설명된 세상에 대해 완벽하게 합리적인 사전 확률(prior)입니다. 시장은 이미 뉴스를 읽었습니다. 이것이 전체 격차입니다: 예측 시장 트레이더의 우위는 현재 정보이며, 질문 텍스트에는 아무것도 포함되어 있지 않습니다. |
Jev가 잘하는 부분
읽기 능력. Choice라는 질문은 그 시장이 속한 일곱 가지 범주 중 어떤 것인지 물었고, Jev의 답변은 규칙 기반(keyword rule)에 따라 분류할 수 있는 8,105개 시장 중 98.6%에서 일치했습니다. 이는 제가 작성한 Bitcoin test와 같은 패턴입니다: Jev는 입력 내용을 정확하게 읽고 입력 내용으로부터 답할 수 있는 질문에 답변합니다. 미래의 어떤 사건이 발생할지는 그 질문이 아닙니다.
제가 검증하지 못한 부분
- 하나의 모델 버전, jev-1.13.0, 그리고 하나의 질문 방식. 저는 단일한 Noul 문구를 시도했습니다. 다른 문구는 숫자를 약간 움직이지만, Jev에게 뉴스를 제공하지는 않습니다.
- 블라인드 상태에는 맥락이 없습니다. 실제 봇은 뉴스, 북메이커의 배당률(odds), 또는 현재 BTC 가격을 추가할 것입니다. 그러면 당신은 맥락을 테스트하게 되고, Jev는 그것을 읽는 사람이 되어 제가 실제로 작동한다고 예상하는 용도가 됩니다. 저는 단지 Jev가 스스로 무언가를 알고 있는지 여부만 테스트했습니다.
- 하루 미만의 시장은 제외됩니다. 24시간 가격이 없기 때문입니다. 이들은 대부분 일일 암호화폐 및 스포츠 시장입니다.
- 페이퍼 트레이드는 스프레드를 무시하고 마지막 거래된 가격으로 매수할 수 있다고 가정합니다. 실제 체결(fills)은 더 나쁠 것이므로, 부정적인 결과는 그대로 부정적입니다.
- 거래량 필터. 1만 달러 이상. 유동성이 낮은 시장은 오가격될 가능성이 더 높고; 거래하기도 더 어렵습니다.
이것이 Jev 예측 시장 봇에게 의미하는 바
만약 제가 하나를 만든다면, 제시된 대로 접근하여 측정할 것입니다. 스캐너가 1,000개의 후보군을 찾고 Jev가 그중 30개를 유지한다면, 그 30개는 1,000개보다 더 잘 해결해야 합니다. 질문 텍스트만으로는 그렇지 못합니다. Jev의 출력은 거의 일정한 0.3에 노이즈가 추가된 수준이며, 이 노이즈에 따라 행동하면 가격과의 불일치 정도에 비례하여 돈을 잃게 됩니다.
작동할 수 있는 것은 지루한 버전입니다. 코드가 후보군을 찾고 현재 정보를 모으면, Jev는 그 정보 속의 답을 가진 질문을 읽습니다. '이 기사에서 회의가 취소되었다고 말하는가?'는 Jev의 질문입니다. '회의가 열릴 것인가?'는 그렇지 않습니다.
모든 것이 GitHub에 있으니 다시 실행해 볼 수 있습니다: github.com/truongxxxx/jev-polymarket-test. 노트북 없이 다섯 개의 스크립트가 있습니다: 시장 가져오기, 가격 가져오기, 데이터셋 구축, Jev 호출, 점수 매기기. 26,174개 모든 시장에 대한 Jev 부분 비용은 약 $1.60이며, 한 달 동안은 몇 센트 정도입니다.
다음으로, part 2입니다. 저는 Jev가 2025년에 무슨 일이 있었는지 기억할 것이라고 예상했습니다. 하지만 그렇지 않았고, 이는 백테스트(backtest)하는 방식을 바꿉니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기


