世界を動かす技術を、日本語で。

何も起こらない:非スポーツ市場で常に「ノー」を購入するPolymarketボット

概要

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.json
    • cp .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>:main
    • heroku 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管理対象外
  • セキュリティとプライバシー の観点からも 設定ファイル分離 を徹底

Hackerたちの意見

基本的には人間の想像力をアービトラージしてる感じだね。みんなファンタジックなアイデアを考えるのが好きなのは、注目を集められるから。でも、市場がワクワクするほど、実際に起こる可能性は低くなるんだよね。現実は大体つまらないものだし。

それは分かるけど、リスクが高すぎて「はい」の側を実現しようとする人が出てくる可能性はないの?例えば、米軍の結果に基づいて動くボットとか考えてみて。

だから、物の価格が均一じゃないのはそのせいだよね?

一般的な観察として、人々はブラックスワンイベント(コロナや金融危機)の可能性を過小評価しがちだと思う。実際に起こってるのにね。そして、受け入れた時には、逆に反応しすぎて、終わらないって思い込んじゃう。こういう特定のケースで市場で成功したことがあるよ。金融危機の時は、自分が天才的なマーケットタイマーだと思って、利益をかなり無駄にしちゃったけど、教訓を得て、コロナ後に再参入した時は揺らがなかった。どちらのケースでも、崩壊の大部分の前に抜け出して、底をほぼ日にちまで合わせられた。運が良かったけど、理由はあったよ。金融危機の時はビル・フレックンスタインがベアファンドを閉じて、全部MSFTに突っ込んだ時。コロナの時は、ロックダウンがうまくいって、NYCの病院が北イタリアや武漢みたいに完全に崩壊しないだろうって見えた時。ブラックスワンじゃないシナリオについては、宇宙の支配者たちに勝つことはないと思って、すべてを年齢に合った混合ファンドに預けてる。AIの崩壊やホワイトカラーの仕事の未来についてはすごく心配してるけど、私にはブラックスワンって感じじゃなくて、むしろゆっくりとした死に近い気がする。だから、債券や現金、リセッションでそんなに崩れない株でヘッジしてる。

https://x.com/sterlingcrispin/status/2043723823678382254 彼らはリターンがないって認めてるね。でも、面白いプロジェクトっぽいし、リターンや利益について何も書いてないから、詐欺っぽくはないと思う。ただの面白いミームに基づいたコードだね。

そうそう。そのボットはリスク管理がゼロで、GitHubには強い免責事項がある。基本的にミームみたいなもんだよ。ただ、ポリマーケットの73%は「いいえ」に解決するんだ。データサイエンスをやりたいなら、Hugging Faceに良いデータセットがあるよ。https://huggingface.co/datasets/SII-WANGZJ/Polymarket_data

「ただの面白いミームに裏打ちされたコード」って言ってて、笑った。これはインスパイアされるね。

基本的に、実現したボラティリティは時間が経つにつれて、暗示されたボラティリティより低くなるんだよね。そうだね。

それに、みんなスキュー保護に過剰にお金を払ってるし、スキューを売ることで安定して稼げるよ(ただし、いつかそれが爆発するまではね)。

関連リンク: https://www.jbecker.dev/research/prediction-market-microstru... (前の議論: https://news.ycombinator.com/item?id=46680515)

逆張りの賭けは面白いけど、実際にどうなるのか気になるね。予測市場は劇的な結果を過剰に評価しがちだから、「常にノーに賭ける」ってのは思ったほどバカじゃないかも。数ヶ月間の実際の損益が見てみたいな、ただの理論じゃなくて。

この手の戦略をバックテストしたことがあるけど、リターンは良かった(100% APRみたいな感じ)。でも、解決時期を知っているのはズルいなって気づいたんだ。たいていははっきりしないし、リターンはお金を引き出す速さに大きく依存する。解決時間を知らない戦略を試すことはなかったけど、実際には手動でやらなきゃいけない。解決が早いと思うものを選ぶには判断が必要だからね。それに、1回の損失で10〜20回の勝ちを帳消しにするから、明らかに「予測可能」になるためには大量の取引が必要。フィルタリングをした後でも、合理的な流動性の市場を見つけるのは意外と難しい。周りの人がこの戦略を使うか、インサイダーによる予想外の出来事が起こるか分からないから、「予測可能」って言葉にはちょっと引っかかる。追記:もう一つ、スポーツ市場でのオーバードッグに賭けるのは実際に魅力的に見えた。大量のイベントがあって、均質だし、解決時期も分かってるし、操作しにくいからね。著者と同じように、最初はスポーツを除外してたんだけど、実際に時間やお金をかけることはなかった。

これはスポーツ市場ではなく、明示的に非スポーツ市場向けってのが面白い。スポーツでも同じことが適用される理由が見当たらないからね。スポーツベッターは、勝つ戦略は大体「ノー」に賭けることだってずっと言ってる。オーバー(つまり「はい」)は一般的にもっとエキサイティングで楽しい結果だから、より多くのベッターを引き寄せて、その分価格が高くなる。だから、このボットが実際にポジティブなリターンをもたらすかは分からない。これが、賭けラインがあまり賢く設定されていなかった時代の名残かもしれない。でも、全てが同じなら、「退屈な」賭けが「エキサイティングな」賭けよりも長期的にはリターンが良いのは理にかなってると思う。少なくとも、エンターテイメントに部分的に動機づけられているベッターがいる限りね。スポーツベッターが何十年もかけて積み上げてきた知識が、これらの新しい非スポーツギャンブルにも適用できることがたくさんあると思う。

スポーツベットを避けるのは、「XYZのゲーム6で誰が勝つか」というのがポリマーケットのバックエンドでYes/Noの賭けとしてフォーマットされているから。Yes/Noの構造を持つ市場はたくさんあるけど、そうは解釈しないよね。

こういう戦略は、十分な人が見つけるまでポジティブなEVを持ち続けることができる。これが効率的な価格設定の原動力なんだ。メカニズムはこうだ:何かが統計的に$0.70の価値があると分かって、$0.60で買えて、平均的に$0.70で売れる。1回の取引で平均$0.10の利益が出る。君が来て、私の戦略をコピーして$0.60を$0.61に変えて先回りするまでね。次は誰かが$0.62でやる。市場が最終的に$0.70に再価格設定されるまで。$0.71で試す人はお金を失って止めて、また$0.70に戻る。これは安定したフィードバックループだ。シタデルがまだ手を出していない非効率な市場には、ポジティブなEV戦略がたくさん転がってる。私ができる最良のアドバイスは、もし見つけたら、徹底的に取引して、オープンソースにしたり誰かに教えたりしないこと。人が増えると、ポジティブなEVではなくなって、インフラのゲームになるから。GitHubで人気があるなら、たぶんうまくいかない。もし何かうまくいって家賃を払えるなら、GitHubには載せない方がいいよ。私の2セント。

すごくクールだね。ブラックスワンやターキーの逆だ。毎日ターキーは餌をもらって幸せだけど、感謝祭が来るまで。

ポリマーケットには「何も起こらない」市場があって、セットされたイベントが全て起こらないことに賭けられるんだ。なんでやらないのかって感じ。

「何も起こらない」ETF

誰かがManifoldに同じことをするボットを持ってたみたいで、利益出てるらしいよ: https://manifold.markets/dcxStep (Manifoldはリアルマネーを使わないから、実際のお金の市場よりも「タダの金」が転がってるみたい)

すごく混乱する。Polymarketはアメリカでの利用者を許可してないのに、どうやってアメリカの人たちがPolymarketに参加してるの?(VPNとかもKYCポリシーのせいで役に立たないらしいし。)

暗号通貨。たとえusdtみたいな追跡可能な暗号通貨でも、強制されてないみたい。

taoutで議論しようか? https://www.taout.tv/scheduled/d50797bc-e030-4534-8cde-9f1e6... 今週は暇だよ。