아무 일도 일어나지 않는다: 비스포츠형 Polymarket 시장에서 항상 ‘No’를 매수하는 봇

4 hours ago 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에서 제외
  • 저장소는 운영 환경과 로컬 환경을 명확히 분리하도록 구성됨
Read Entire Article