1P by GN⁺ 15시간전 | ★ favorite | 댓글 1개
  • Polymarket의 비스포츠 예/아니오 시장에서 자동으로 ‘No’ 포지션만 매수하는 비동기 Python 봇으로, 엔터테인먼트 용도로 제공됨
  • 모의 거래와 실거래 모드를 구분하며, 실거래 시에는 여러 환경 변수와 개인 키 설정이 필수임
  • 대시보드 인터페이스를 통해 상태를 모니터링하고, 주문 전송이 활성화되면 실시간 복구 상태를 저장
  • Heroku 배포 스크립트를 포함해 앱 상태 확인, 로그 조회, 실거래 전환, 프로세스 종료 등을 자동화함
  • 테스트와 데이터 관리 도구가 포함되어 있어, 로컬 및 클라우드 환경 모두에서 안전하게 실행 및 검증 가능함

개요

  • Nothing Ever Happens는 Polymarket 플랫폼의 비스포츠형 예/아니오 시장에서 항상 ‘No’ 포지션을 매수하는 비동기 Python 기반 봇임
  • 엔터테인먼트 목적으로 제공되며, 보증이나 책임 없이 사용자의 위험 부담하에 실행
  • 저장소는 bot/, scripts/, tests/ 디렉터리로 구성되어 있으며, 각각 거래 로직, 운영 스크립트, 테스트 코드를 포함함

런타임 구조

  • 런타임은 독립형 시장을 스캔하고, 설정된 가격 상한 이하의 ‘No’ 항목을 탐색해 포지션을 추적함
  • 대시보드를 통해 상태를 표시하며, 주문 전송이 활성화된 경우 실시간 복구 상태를 저장
  • 실행 모듈은 nothing_happens이며, 비활성 모드에서는 PaperExchangeClient를 사용함

안전 모델

  • 실제 주문 전송을 위해서는 다음 세 가지 환경 변수가 모두 설정되어야 함
    • BOT_MODE=live
    • LIVE_TRADING_ENABLED=true
    • DRY_RUN=false
  • 위 조건 중 하나라도 누락되면 모의 거래 모드로 전환됨
  • 실거래 모드에서는 추가로 다음 환경 변수가 필요함
    • PRIVATE_KEY
    • FUNDER_ADDRESS (서명 타입 1, 2용)
    • DATABASE_URL
    • POLYGON_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>:main
    • heroku ps:scale web=1 worker=0
  • worker 프로세스는 의도치 않게 실행될 경우 빠르게 실패하도록 설계

테스트

  • 테스트는 pytest를 사용해 단위 및 회귀 검증을 수행함
  • 명령어: python -m pytest -q

포함된 스크립트

  • scripts/db_stats.py

    • 실시간 데이터베이스 테이블 수와 최근 활동을 점검
  • scripts/export_db.py

    • DATABASE_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’로 끝남
  • 이 프로젝트가 비스포츠 시장용이라는 점이 흥미로움
    스포츠 베팅에서도 대부분 ‘No’ 쪽이 더 수익률이 높다고 알려져 있음. ‘Yes’는 더 흥미롭고 사람들이 몰리기 때문임
    결국 ‘지루한 베팅’이 장기적으로는 더 나은 수익을 낼 가능성이 있음
    스포츠 베팅에서 쌓인 이런 행동경제학적 통찰이 비스포츠 시장에도 적용될 수 있을 것 같음

    • Polymarket의 백엔드 구조상 스포츠 베팅도 사실상 Yes/No 형태로 되어 있어서 구분이 애매함
    • 이런 전략은 초반엔 양의 기대값(EV) 을 가질 수 있지만, 사람들이 알아차리면 시장이 효율적으로 재조정됨
      결국 가격이 제자리를 찾는 피드백 루프가 생김
      그래서 진짜 수익 나는 전략을 찾으면 절대 오픈소스로 공개하지 말고, 조용히 돌리는 게 현명함
  • ‘항상 No에 베팅하라’는 아이디어는 재밌지만, 실제로 얼마나 수익이 나는지는 검증이 필요함

    • 나도 백테스트를 해봤는데, 100% APR처럼 보여도 결과 시점을 미리 아는 식으로 치팅된 부분이 있었음
      현실에서는 유동성이 낮고, 한 번의 손실이 여러 번의 이익을 날려버릴 수 있음
      스포츠 시장은 오히려 명확한 종료 시점과 대규모 거래량 덕분에 더 예측 가능함
    • 나도 예측 시장을 좋아해서 여러 전략을 써봤는데, 타이밍이 핵심임
      단순히 모든 항목에 No를 거는 게 아니라, 뉴스가 막 뜨기 시작한 시점에 관련된 항목에 No를 거는 식으로 하면 꽤 안정적인 수익이 가능할 것 같음
  • 인간의 상상력 차익거래라고 생각함
    사람들은 자극적인 시나리오를 좋아하지만, 현실은 대부분 지루함

    • 사람들은 블랙스완 사건을 과소평가하다가, 막상 일어나면 과잉 반응함
      나도 금융위기와 코로나 때 이런 패턴을 이용해 수익을 냈음
      지금은 AI 버블이 걱정되지만, 급락보다는 서서히 식는 형태일 것 같아 채권과 현금 비중을 늘려둠
    • 하지만 이런 봇이 군사나 정치적 사건에 적용된다면, 누군가 실제로 ‘Yes’를 현실화하려는 유인이 생길 수도 있음
    • 그래서 시장이 균일하게 가격이 매겨지지 않는 것임
    • 문제는 이 논리가 실제 전략으로는 잘 작동하지 않는다는 점
  • ‘No’에 베팅하는 건 사실상 모든 다른 결과에 ‘Yes’를 거는 것과 같다고 주장함
    Polymarket 문서에 관련 연산이 있음

    • 하지만 그건 오해임. 예를 들어 “Joe Dart 대통령 당선 Y/N”과 “Cory Wong 대통령 당선 Y/N”은 서로 독립적임
    • 맞음. 각 결과는 서로 연관이 없음
  • 이런 전략은 마치 기차 앞에서 동전 줍기 같음
    작은 이익을 반복하다가 한 번의 롱테일 이벤트로 전부 잃을 수 있음

    • 작성자도 이걸 진지한 전략으로 제시한 게 아니라, 밈성 프로젝트로 만든 것 같음
    • 한 이벤트에 전액 베팅하지 않는다면 손실은 베팅 금액으로 제한됨
  • 관련 연구로 Prediction Market Microstructure가 있음
    (이전 토론: HN 링크)

  • 이미 시장에 가격 반영이 끝난 상태라고 봄

    • 작성자도 “장기적으로 0.73 이하에서 사야 한다”고 언급함
      관련 트윗 참고
    • 하지만 시장이 존재한다는 사실 자체가 가용성 휴리스틱을 자극해, 사람들이 확률을 과대평가하게 만들 수 있음
      참고 링크
    • “아무 일도 일어나지 않는다”는 말이 딱 맞음
    • Benjamin이라니, 흥미로운 언급임
  • 결국 실현 변동성이 시간이 지나면 내재 변동성보다 낮게 나타나는 경향이 있음

    • 사람들은 스큐 보호에 과도한 비용을 지불하고, 그걸 팔면 꾸준히 수익을 낼 수 있음
      물론 한 번 터지면 크게 잃을 수도 있음
  • 단순히 ‘No’가 70% 나온다고 해서 돈을 버는 건 아님
    이건 전형적인 나쁜 수학임. ‘증기 롤러 앞의 동전 줍기’ 같은 전략임

    • 속는 사람은 없을 듯. 작성자도 그냥 농담으로 만든 것 같음
    • 레버리지를 쓰지 않는다면 이런 전략은 위험이 제한적임
      다만 이런 비효율적인 시장은 규모가 작고 드묾, 결국 ‘동전은 줍지만 동전뿐’일 가능성이 큼
    • 수익 여부는 진입 가격, 기대값, 잔여 기간 등 변수에 따라 달라짐
      Kelly 기준을 따르더라도 무작위로 베팅하면 결국 자본이 소진될 가능성이 큼. 각 시장별 면밀한 분석(DD) 이 필요함