
2026/04/14 0:31
『何事も起きない:スポーツ市場以外では常に「いいえ」と購入する Polymarket ボット』
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本書では、Polymarket でスポーツ以外の Yes/No マーケットにおける「NO」エントリを取引することを目的に特化して構築された非同期の Python ボット「Nothing Ever Happens」を معرفیしています。本プロジェクトは娯楽目的でのみ提供されるものであり、保証や免責事項は一切適用されません(as-is)として提供されます。ライブフラグが設定されていないデフォルト状態では
PaperExchangeClient が採用され、シミュレーションテストが行われます。リアルな取引を実行するには、環境変数を明示的に設定する必要があるためです。具体的には、BOT_MODE=live、LIVE_TRADING_ENABLED=true、DRY_RUN=false などを設定することでリアル取引モードを有効化します。また、ライブオーダーの送信を有効にするには、PRIVATE_KEY、FUNDER_ADDRESS(署名タイプ 1 および 2 の場合)、データベース URL、および Polygon RPC URL などの特定のエントリが必要となります。
ボットのアーキテクチャはモジュール化されており、ランタイムロジック、取引所クライアント、ダッシュボード UI、回復ツール、そしてコア戦略モジュールである「nothing_happens」で構成されています。ローカルでのセットアップでは、
pip install -r requirements.txt によって依存関係をインストールし、config.example.json を config.json にコピーして非機密設定をその中で構成し、秘密鍵やフラグは .env ファイル(パス:strategies.nothing_happens)に保存します。ローカル設定は意図的に git 無視されており、ユーザーは環境変数 CONFIG_PATH を通じてランタイムが参照する異なるパスを指定できるようにしています。
Heroku でのクラウドデプロイメントでは、特定のコマンドヘルパー(
alive.sh、logs.sh、kill.sh)を使用して、アプリの状態を管理し、ライブ取引の有効化/無効化やロギングを行うことができます。デプロイには、bot モード、プライベートキー、RPC URL、データベースに関する環境変数を heroku config:set コマンドを用いて設定する必要があります。-production 環境では、誤って長時間実行タスクを実行してしまうのを防ぐためにワーカーダイノを除外し、ウェブダイノのみを使用するようにスケーリング構成されています。また、db_stats.py、export_db.py、wallet_history.py、parse_logs.py などのユーティリティスクリプトは、データベースの点検やログ分析を実行することなく市場の変動を意図的に引き起こさずにこれらの情報を可視化することを可能にするため、透明性を高めています。本文
Never Happens ポリマーケット ボット
スタンドアロンのスポーツ betting な Yes/No マーケットにおいて「NO(否)」のポジションを、設定された価格上限以下の場合に購入することを目的とした非同期 Python ボットです。このボットは娯楽目的のみのために提供されており、「現状のまま」を提供します。一切の明示的または黙示的な保証、および種類の担保もなされません。使用はご自身の責任でお願いいたします。著者はいかなる請求や損失、損害についても責任を負いかねます。
リポジトリ構成
: 実行時クライアント、取引所クライアント、ダッシュボード、復旧機能、「never_happens」ストラテジーを含みます。bot/
: デプロイされたインスタンスおよびローカルでの調査用の運用支援スクリプトです。scripts/
: ユニットテストと regresstion テストの Coverage を持ったテストスイートです。tests/
実行時 (Runtime) このボットはスタンドアロンのマーケットを走査し、設定された価格上限未満の「NO」エントリーを探します。開けられたポジションを追跡し、ダッシュボードへのアクセスを提供するとともに、注文送信が有効な場合にライブな復旧ステート情報を永続化します。この実行時の戦略名は「never_happens」です。
安全モデル (Safety Model) 実際の注文送信を行うためには、以下の 3 つの環境変数をすべて指定する必要があります:
BOT_MODE=live、LIVE_TRADING_ENABLED=true、および DRY_RUN=false。いずれかが不足している場合、ボットは「PaperExchangeClient(シミュレーション用クライアント)」を使用します。ライブモードを有効にするには、以下の追加要件も満たす必要があります:
PRIVATE_KEY- サインタイプ 1 および 2 に対しては
FUNDER_ADDRESS DATABASE_URL- ポリゴン RPC URL は、プロキシウォレットの承認および還元処理に必要です。
セットアップ手順
を実行してください。pip install -r requirements.txt
で設定ファイルをコピーします。cp config.example.json config.json
で環境変数ファイルをコピーします。cp .env.example .env
は意図的にローカルに保存され、git では無視されます。config.json
設定方法 (Configuration) 実行時は以下から読み込みを行います:
- 非機密の実行設定は
から。config.json - 秘密情報および実行フラグは
ファイルから。 実装のストラテジーは.env
に配置されています。詳細はstrategies.nothing_happens
とconfig.example.json
を参照してください。必要に応じて.env.example
を指定することで、別の設定ファイルへのポインタを切り替えることができます。CONFIG_PATH=/path/to/config.json
ローカルでの実行 ダッシュボードは、ポート番号が
$PORT または DASHBOARD_PORT で設定されている場合、そのポートにバインドされます。
Heroku ワークフロー シェルヘルパー(補助スクリプト)は、明示的なアプリ名引数か、
HEROKU_APP_NAME を指定することで動作します:
(アプリケーション名を設定)export HEROKU_APP_NAME=<your-app>
(状態を確認)./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"
※注意: Web Dyno のみを実行してください。Worker エントリーは、誤って Worker モードで起動された際に迅速に失敗(エラー)を起こさせるために用意されています。
テスト関連スクリプト一覧
| スクリプト | 目的 |
|---|---|
| ライブデータベースのテーブル计数と最近のアクティビティを検査します |
| DATABASE_URL または Heroku アプリからライブテーブルをエクスポートします |
| 設定されたウォレットのポジション、取引履歴、残高を取得します |
| Heroku の JSON ログを可読なターミナル出力または HTML 形式に変換します |
リポジトリの保守 (Repository Hygiene) ローカルの設定ファイル、帳簿(レジュン)、エクスポートデータ、レポート、およびデプロイアーティファクトは、デフォルトでは無視されています。