아무 일도 일어나지 않는다: 비스포츠형 Polymarket 시장에서 항상 ‘No’를 매수하는 봇
(github.com/sterlingcrispin)- Polymarket의 비스포츠 예/아니오 시장에서 자동으로 ‘No’ 포지션만 매수하는 비동기 Python 봇으로, 엔터테인먼트 용도로 제공됨
- 모의 거래와 실거래 모드를 구분하며, 실거래 시에는 여러 환경 변수와 개인 키 설정이 필수임
- 대시보드 인터페이스를 통해 상태를 모니터링하고, 주문 전송이 활성화되면 실시간 복구 상태를 저장함
- Heroku 배포 스크립트를 포함해 앱 상태 확인, 로그 조회, 실거래 전환, 프로세스 종료 등을 자동화함
- 테스트와 데이터 관리 도구가 포함되어 있어, 로컬 및 클라우드 환경 모두에서 안전하게 실행 및 검증 가능함
개요
- Nothing Ever Happens는 Polymarket 플랫폼의 비스포츠형 예/아니오 시장에서 항상 ‘No’ 포지션을 매수하는 비동기 Python 기반 봇임
- 엔터테인먼트 목적으로 제공되며, 보증이나 책임 없이 사용자의 위험 부담하에 실행됨
- 저장소는
bot/,scripts/,tests/디렉터리로 구성되어 있으며, 각각 거래 로직, 운영 스크립트, 테스트 코드를 포함함
런타임 구조
- 런타임은 독립형 시장을 스캔하고, 설정된 가격 상한 이하의 ‘No’ 항목을 탐색해 포지션을 추적함
- 대시보드를 통해 상태를 표시하며, 주문 전송이 활성화된 경우 실시간 복구 상태를 저장함
- 실행 모듈은
nothing_happens이며, 비활성 모드에서는 PaperExchangeClient를 사용함
안전 모델
- 실제 주문 전송을 위해서는 다음 세 가지 환경 변수가 모두 설정되어야 함
BOT_MODE=liveLIVE_TRADING_ENABLED=trueDRY_RUN=false
- 위 조건 중 하나라도 누락되면 모의 거래 모드로 전환됨
- 실거래 모드에서는 추가로 다음 환경 변수가 필요함
PRIVATE_KEYFUNDER_ADDRESS(서명 타입 1, 2용)DATABASE_URLPOLYGON_RPC_URL(프록시 지갑 승인 및 상환용)
설정 및 구성
- 설치는
pip install -r requirements.txt후, 예시 설정 파일을 복사해 로컬 구성으로 사용함 config.json은 비밀이 아닌 런타임 설정,.env는 비밀 키 및 실행 플래그를 포함함- 런타임 설정은
strategies.nothing_happens하위에 위치하며,CONFIG_PATH환경 변수로 다른 설정 파일을 지정할 수 있음
로컬 실행
- 로컬에서는
python -m bot.main명령으로 실행 가능 - 대시보드는
$PORT또는DASHBOARD_PORT환경 변수에 바인딩됨
Heroku 배포 워크플로
- Heroku 환경에서는
HEROKU_APP_NAME을 사용하거나 명시적 앱 이름 인자를 전달함 - 제공된 스크립트:
alive.sh: 앱 상태 확인logs.sh: 로그 조회live_enabled.sh/live_disabled.sh: 실거래 모드 전환kill.sh: 프로세스 종료
- 일반적인 배포 절차는 다음과 같음
- 환경 변수 설정 (
BOT_MODE,DRY_RUN,LIVE_TRADING_ENABLED,PRIVATE_KEY,FUNDER_ADDRESS,POLYGON_RPC_URL,DATABASE_URL) git push heroku <branch>:mainheroku ps:scale web=1 worker=0
- 환경 변수 설정 (
worker프로세스는 의도치 않게 실행될 경우 빠르게 실패하도록 설계됨
테스트
- 테스트는
pytest를 사용해 단위 및 회귀 검증을 수행함 - 명령어:
python -m pytest -q
포함된 스크립트
-
scripts/db_stats.py- 실시간 데이터베이스 테이블 수와 최근 활동을 점검
-
scripts/export_db.pyDATABASE_URL또는 Heroku 앱에서 테이블을 내보냄
-
scripts/wallet_history.py- 설정된 지갑의 포지션, 거래, 잔액을 조회
-
scripts/parse_logs.py- Heroku JSON 로그를 터미널 또는 HTML 형식으로 변환
저장소 관리
- 로컬 설정, 원장, 내보낸 데이터, 보고서, 배포 산출물 등은 기본적으로 git에서 제외됨
- 저장소는 운영 환경과 로컬 환경을 명확히 분리하도록 구성됨
Hacker News 의견들
-
이 트윗을 보면, 수익이나 환불을 약속하지 않는다고 명시되어 있음
단순히 밈 기반 코드로 재미 삼아 만든 프로젝트 같음. 사기라기보단 웃긴 실험 느낌임- 맞음. 봇에는 리스크 관리가 전혀 없고, GitHub에도 명확히 밈이라고 써둠
Polymarket의 약 73%가 실제로 ‘No’로 끝난다는 통계가 있음
데이터 분석에 관심 있다면 Hugging Face 데이터셋을 참고할 만함 - 그렇다면 실제로 쓸만한 트레이딩 전략은 아니라는 뜻임
인간의 낙관 편향 때문에 ‘Yes’ 쪽이 과대평가될 수도 있지만, Polymarket은 이미 트레이더들이 주시하고 있어서 가격이 현실적으로 형성됨
만약 하락하는 코인에 베팅할 수 있다면 흥미롭겠지만, 그런 시장도 결국 효율적으로 가격이 조정될 것임 - 사람들이 진짜 수익 나는 전략을 찾으면 잘 공유하지 않음
- “밈 기반 코드”라는 표현이 너무 웃김. 이런 너드스러운 장난이 토론을 폭발시킨 것 같음
- 여러 시장이 연결되어 있으니 ‘No’가 더 많이 나오는 건 당연함. 예를 들어 10명의 후보가 있으면 9명은 ‘No’로 끝남
- 맞음. 봇에는 리스크 관리가 전혀 없고, GitHub에도 명확히 밈이라고 써둠
-
이 프로젝트가 비스포츠 시장용이라는 점이 흥미로움
스포츠 베팅에서도 대부분 ‘No’ 쪽이 더 수익률이 높다고 알려져 있음. ‘Yes’는 더 흥미롭고 사람들이 몰리기 때문임
결국 ‘지루한 베팅’이 장기적으로는 더 나은 수익을 낼 가능성이 있음
스포츠 베팅에서 쌓인 이런 행동경제학적 통찰이 비스포츠 시장에도 적용될 수 있을 것 같음- Polymarket의 백엔드 구조상 스포츠 베팅도 사실상 Yes/No 형태로 되어 있어서 구분이 애매함
- 이런 전략은 초반엔 양의 기대값(EV) 을 가질 수 있지만, 사람들이 알아차리면 시장이 효율적으로 재조정됨
결국 가격이 제자리를 찾는 피드백 루프가 생김
그래서 진짜 수익 나는 전략을 찾으면 절대 오픈소스로 공개하지 말고, 조용히 돌리는 게 현명함
-
‘항상 No에 베팅하라’는 아이디어는 재밌지만, 실제로 얼마나 수익이 나는지는 검증이 필요함
- 나도 백테스트를 해봤는데, 100% APR처럼 보여도 결과 시점을 미리 아는 식으로 치팅된 부분이 있었음
현실에서는 유동성이 낮고, 한 번의 손실이 여러 번의 이익을 날려버릴 수 있음
스포츠 시장은 오히려 명확한 종료 시점과 대규모 거래량 덕분에 더 예측 가능함 - 나도 예측 시장을 좋아해서 여러 전략을 써봤는데, 타이밍이 핵심임
단순히 모든 항목에 No를 거는 게 아니라, 뉴스가 막 뜨기 시작한 시점에 관련된 항목에 No를 거는 식으로 하면 꽤 안정적인 수익이 가능할 것 같음
- 나도 백테스트를 해봤는데, 100% APR처럼 보여도 결과 시점을 미리 아는 식으로 치팅된 부분이 있었음
-
인간의 상상력 차익거래라고 생각함
사람들은 자극적인 시나리오를 좋아하지만, 현실은 대부분 지루함- 사람들은 블랙스완 사건을 과소평가하다가, 막상 일어나면 과잉 반응함
나도 금융위기와 코로나 때 이런 패턴을 이용해 수익을 냈음
지금은 AI 버블이 걱정되지만, 급락보다는 서서히 식는 형태일 것 같아 채권과 현금 비중을 늘려둠 - 하지만 이런 봇이 군사나 정치적 사건에 적용된다면, 누군가 실제로 ‘Yes’를 현실화하려는 유인이 생길 수도 있음
- 그래서 시장이 균일하게 가격이 매겨지지 않는 것임
- 문제는 이 논리가 실제 전략으로는 잘 작동하지 않는다는 점임
- 사람들은 블랙스완 사건을 과소평가하다가, 막상 일어나면 과잉 반응함
-
‘No’에 베팅하는 건 사실상 모든 다른 결과에 ‘Yes’를 거는 것과 같다고 주장함
Polymarket 문서에 관련 연산이 있음- 하지만 그건 오해임. 예를 들어 “Joe Dart 대통령 당선 Y/N”과 “Cory Wong 대통령 당선 Y/N”은 서로 독립적임
- 맞음. 각 결과는 서로 연관이 없음
-
이런 전략은 마치 기차 앞에서 동전 줍기 같음
작은 이익을 반복하다가 한 번의 롱테일 이벤트로 전부 잃을 수 있음- 작성자도 이걸 진지한 전략으로 제시한 게 아니라, 밈성 프로젝트로 만든 것 같음
- 한 이벤트에 전액 베팅하지 않는다면 손실은 베팅 금액으로 제한됨
-
관련 연구로 Prediction Market Microstructure가 있음
(이전 토론: HN 링크) -
이미 시장에 가격 반영이 끝난 상태라고 봄
-
결국 실현 변동성이 시간이 지나면 내재 변동성보다 낮게 나타나는 경향이 있음
- 사람들은 스큐 보호에 과도한 비용을 지불하고, 그걸 팔면 꾸준히 수익을 낼 수 있음
물론 한 번 터지면 크게 잃을 수도 있음
- 사람들은 스큐 보호에 과도한 비용을 지불하고, 그걸 팔면 꾸준히 수익을 낼 수 있음
-
단순히 ‘No’가 70% 나온다고 해서 돈을 버는 건 아님
이건 전형적인 나쁜 수학임. ‘증기 롤러 앞의 동전 줍기’ 같은 전략임- 속는 사람은 없을 듯. 작성자도 그냥 농담으로 만든 것 같음
- 레버리지를 쓰지 않는다면 이런 전략은 위험이 제한적임
다만 이런 비효율적인 시장은 규모가 작고 드묾, 결국 ‘동전은 줍지만 동전뿐’일 가능성이 큼 - 수익 여부는 진입 가격, 기대값, 잔여 기간 등 변수에 따라 달라짐
Kelly 기준을 따르더라도 무작위로 베팅하면 결국 자본이 소진될 가능성이 큼. 각 시장별 면밀한 분석(DD) 이 필요함