概要
Polymarket用の Python製自動売買ボット の概要と使い方を解説。 NOエントリー を中心に非スポーツ市場で取引。 安全対策 や設定ファイルの管理方法を整理。 Herokuデプロイ手順 やテスト実行方法も網羅。 付属スクリプト でデータ確認・エクスポートも可能。
Nothing Ever Happens Polymarket Bot の概要
- Polymarket向けの 非スポーツ系yes/no単独市場 で「NO」を買う エンタメ用Pythonボット
- 完全無保証・自己責任 で提供、著者は損害責任を負わない旨を明記
- ディレクトリ構成
- bot/ :ランタイム、取引所クライアント、ダッシュボード、リカバリ、戦略スクリプト
- scripts/ :運用補助やローカル検査用スクリプト
- tests/ :ユニット・リグレッションテスト
ランタイムの特徴
- 単独市場のスキャン、設定価格以下のNOエントリー検出
- ポジション管理、ダッシュボード表示、リカバリ用状態保存
- オーダー送信有効時 のみ状態永続化
- ランタイム名 は nothing_happens
セーフティモデル
- 本番注文 には以下3つの環境変数が必須
- BOT_MODE=live
- LIVE_TRADING_ENABLED=true
- DRY_RUN=false
- いずれかが未設定の場合は PaperExchangeClient(模擬取引) を使用
- 追加の本番用環境変数
- PRIVATE_KEY
- FUNDER_ADDRESS (署名タイプ1・2用)
- DATABASE_URL
- POLYGON_RPC_URL (プロキシウォレット承認・償還用)
セットアップ手順
- 依存パッケージのインストール
pip install -r requirements.txt
- 設定ファイルの作成
cp config.example.json config.jsoncp .env.example .env
- config.json はローカル専用でgit管理外
- 設定ファイルの内容
- config.json :非秘密のランタイム設定
- .env :秘密情報・実行フラグ
- config.example.json/.env.example を参考に編集
- CONFIG_PATH で別パス指定も可能
ローカル実行方法
python -m bot.mainで起動- ダッシュボードは $PORT または DASHBOARD_PORT でバインド
Herokuデプロイワークフロー
- アプリ名の指定
- 環境変数 HEROKU_APP_NAME または引数で指定
- シェルヘルパー
./alive.sh./logs.sh./live_enabled.sh./live_disabled.sh./kill.sh
- 本番用環境変数のセット
heroku config:set BOT_MODE=live DRY_RUN=false LIVE_TRADING_ENABLED=true -a "$HEROKU_APP_NAME"heroku config:set PRIVATE_KEY=<key> FUNDER_ADDRESS=<addr> POLYGON_RPC_URL=<url> DATABASE_URL=<url> -a "$HEROKU_APP_NAME"
- デプロイ&起動
git push heroku <branch>:mainheroku ps:scale web=1 worker=0 -a "$HEROKU_APP_NAME"- workerは誤起動防止用。webのみ稼働
テスト実行
python -m pytest -qで ユニット・リグレッションテスト 実行
付属スクリプトの用途
- scripts/db_stats.py :DBテーブル件数や最新アクティビティ確認
- scripts/export_db.py :DATABASE_URLやHerokuアプリからテーブルエクスポート
- scripts/wallet_history.py :ウォレットのポジション・取引・残高取得
- scripts/parse_logs.py :HerokuのJSONログをターミナルやHTMLに変換
リポジトリ衛生管理
- ローカル設定・台帳・エクスポート・レポート・デプロイ成果物 は git管理対象外
- セキュリティとプライバシー の観点からも 設定ファイル分離 を徹底