1人の開発者がPolymarket取引ロボットの構築方法を共有し、BTCの15分間市場の価格変動を捉えることで、数日で1000ドルを1869ドルに増やし、リターン率86%を達成した。記事では、ロボットの構築ロジック、バックテスト方法、その制約について詳述している。 (前提:予測市場のリーダーPolymarketが独自のL2を構築すると発表、Polygonの切り札はなくなる?) (補足:Polymarketの裁定取引で年率40%の利益を実現する方法は?)
目次
数週間前、私は自分専用のPolymarketロボットを構築することを決意した。完全版の作成には数週間を要した。
このエネルギーを投入した理由は、Polymarketには確かに効率の悪さの脆弱性が存在し、市場にはこれらの非効率を利用した利益獲得を狙うロボットもあるが、まだ十分ではなく、この市場のチャンスはロボットの数よりもはるかに多いからだ。
このロジックは、私が過去に手動で実行していた戦略に基づいており、効率化のために自動化したものだ。ロボットは「BTC 15分間のUP/DOWN」市場で動作する。
ロボットはリアルタイム監視プログラムを運用し、現在のBTC 15分間のラウンドに自動的に切り替え、WebSocketストリームを通じて最良買値/売値(best bid/ask)を伝送し、固定の端末UIを表示、文字コマンドによる全面制御も可能にしている。
手動モードでは、直接注文を出せる。
buy up / buy down :特定のドル金額で買い。
buyshares up / buyshares down :正確な株数を購入。ユーザーフレンドリーなLIMIT(指値)+ GTC(キャンセルまで有効)注文を使用し、現在の最良売値(best ask)で約定。
自動モードは、二段階(two-leg)の繰り返しループを運用。
最初の段階では、各ラウンド開始後の windowMin 分以内に価格変動を観察。どちらかが急落(約3秒以内にmovePct以上の下落)した場合、「第一段(Leg 1)」をトリガーし、急落した側を買い。
Leg 1完了後、同じ側を再び購入することはなく、「第二段(Leg 2、ヘッジ)」を待つ。条件は:leg1EntryPrice + oppositeAsk <= sumTarget。
この条件を満たすと、反対側を購入。Leg 2完了後、そのサイクルは終了し、ロボットは次の暴落シグナルを待つ状態に戻る。
サイクル中にラウンドが変わった場合、そのサイクルは放棄され、次回同じ設定で再開。
自動モードのパラメータ設定は以下の通り:auto on [sum=0.95] [move=0.15] [windowMin=2]
ロジックは非常にシンプル:暴力的な売り圧力を待ち、下落した側を買い、その後価格が安定したら反対側を買ってヘッジ。条件は:priceUP + priceDOWN < 1。
しかし、このロジックはテストが必要だ。長期的に本当に有効なのか?さらに重要なのは、多くのパラメータ(株数、合計、移動閾値、ウィンドウ時間など)が存在し、最適な組み合わせは何か、最大の利益をもたらすのはどれか。
最初のアイデアは、ロボットを実運用し、一週間観察することだった。しかし、これには時間がかかりすぎ、パラメータは一つしか試せない。
次のアイデアは、PolymarketのCLOB APIから取得できる過去の履歴データを使ったバックテストだ。しかし、BTC 15分間のUP/DOWN市場の履歴データエンドポイントは空のデータセットを返し続けている。過去の価格変動(ticks)がなく、暴落(約3秒以内)を検出できず、Leg 1をトリガーできない。パラメータに関係なく、サイクルは0回、ROIは0%となる。
調査を進めると、他のユーザーも特定の市場の履歴データ取得に問題を抱えていることが判明。いくつかの市場で実際に履歴データを返すものを試した結果、この特定の市場では履歴データが保持されていないことがわかった。
この制約のため、戦略のバックテスト唯一の信頼できる方法は、ロボットの動作中にリアルタイムの最良売値を記録し、自分で履歴データを作成することだ。
記録ツールはスナップショットをディスクに書き込み、内容は以下の通り:
その後、「記録バックテスト(recorded backtest)」はこれらのスナップショットをリプレイし、同じ自動ロジックを確定的に適用。これにより、暴落とヘッジ条件の検出に必要な高頻度データを確保できる。
合計4日間で6GBのデータを収集。もっと記録できたが、異なるパラメータセットを試すには十分と判断。
このパラメータセットをテスト開始:
また、0.5%の固定手数料と2%のスプレッドも適用し、保守的なシナリオを想定。
バックテスト結果はROI86%、数日で$1,000が$1,869に増加。
次に、より攻撃的なパラメータも試した:
結果は:2日後のROIは-50%。
これにより、パラメータ選択の重要性が明確に示された。適切な設定次第で大きく稼げるし、大きな損失も招く。
費用やスプレッドを考慮しても、バックテストには制約がある。
慎重を期すために、次のルールを適用:もしLeg 2が市場閉鎖前に執行されなかった場合、Leg 1は全損とみなす。
これは保守的な仮定だが、実際には:
損失は過大評価される可能性があるが、最悪のシナリオを想定した実用的なモデルとも言える。
最も重要なのは、バックテストは大口注文が注文簿に与える影響や、他のトレーダーの追撃行動を模擬できないことだ。実際には、あなたの注文は:
バックテストは、あなたが純粋な流動性供給者(price taker)であると仮定している。
最後に、レートリミット、APIエラー、注文拒否、一時停止、タイムアウト、再接続、ロボットの忙しさによるシグナル見逃しなどは考慮されていない。
バックテストは良好なパラメータ範囲を見つけるのに非常に有効だが、現実の効果の一部はモデル化できないため、100%保証ではない。
このロボットは、私のメインPCのリソースを消費せず、24時間365日稼働させるためにRaspberry Pi上で動かす予定だ。
しかし、改善の余地は大きい:
他にも最適化手法はあるかもしれない。現在はRustを学習中で、Web3開発において不可欠な言語になりつつある。
9.81K 人気度
306 人気度
32.74K 人気度
87.02K 人気度
2.61K 人気度
私はPolymarketで「寝て稼ぐ」ためのボットを作った:これが私の構築ロジックです
1人の開発者がPolymarket取引ロボットの構築方法を共有し、BTCの15分間市場の価格変動を捉えることで、数日で1000ドルを1869ドルに増やし、リターン率86%を達成した。記事では、ロボットの構築ロジック、バックテスト方法、その制約について詳述している。
(前提:予測市場のリーダーPolymarketが独自のL2を構築すると発表、Polygonの切り札はなくなる?)
(補足:Polymarketの裁定取引で年率40%の利益を実現する方法は?)
目次
数週間前、私は自分専用のPolymarketロボットを構築することを決意した。完全版の作成には数週間を要した。
このエネルギーを投入した理由は、Polymarketには確かに効率の悪さの脆弱性が存在し、市場にはこれらの非効率を利用した利益獲得を狙うロボットもあるが、まだ十分ではなく、この市場のチャンスはロボットの数よりもはるかに多いからだ。
ロボットの構築ロジック
このロジックは、私が過去に手動で実行していた戦略に基づいており、効率化のために自動化したものだ。ロボットは「BTC 15分間のUP/DOWN」市場で動作する。
ロボットはリアルタイム監視プログラムを運用し、現在のBTC 15分間のラウンドに自動的に切り替え、WebSocketストリームを通じて最良買値/売値(best bid/ask)を伝送し、固定の端末UIを表示、文字コマンドによる全面制御も可能にしている。
手動モードでは、直接注文を出せる。
buy up / buy down :特定のドル金額で買い。
buyshares up / buyshares down :正確な株数を購入。ユーザーフレンドリーなLIMIT(指値)+ GTC(キャンセルまで有効)注文を使用し、現在の最良売値(best ask)で約定。
自動モードは、二段階(two-leg)の繰り返しループを運用。
最初の段階では、各ラウンド開始後の windowMin 分以内に価格変動を観察。どちらかが急落(約3秒以内にmovePct以上の下落)した場合、「第一段(Leg 1)」をトリガーし、急落した側を買い。
Leg 1完了後、同じ側を再び購入することはなく、「第二段(Leg 2、ヘッジ)」を待つ。条件は:leg1EntryPrice + oppositeAsk <= sumTarget。
この条件を満たすと、反対側を購入。Leg 2完了後、そのサイクルは終了し、ロボットは次の暴落シグナルを待つ状態に戻る。
サイクル中にラウンドが変わった場合、そのサイクルは放棄され、次回同じ設定で再開。
自動モードのパラメータ設定は以下の通り:auto on [sum=0.95] [move=0.15] [windowMin=2]
バックテスト
ロジックは非常にシンプル:暴力的な売り圧力を待ち、下落した側を買い、その後価格が安定したら反対側を買ってヘッジ。条件は:priceUP + priceDOWN < 1。
しかし、このロジックはテストが必要だ。長期的に本当に有効なのか?さらに重要なのは、多くのパラメータ(株数、合計、移動閾値、ウィンドウ時間など)が存在し、最適な組み合わせは何か、最大の利益をもたらすのはどれか。
最初のアイデアは、ロボットを実運用し、一週間観察することだった。しかし、これには時間がかかりすぎ、パラメータは一つしか試せない。
次のアイデアは、PolymarketのCLOB APIから取得できる過去の履歴データを使ったバックテストだ。しかし、BTC 15分間のUP/DOWN市場の履歴データエンドポイントは空のデータセットを返し続けている。過去の価格変動(ticks)がなく、暴落(約3秒以内)を検出できず、Leg 1をトリガーできない。パラメータに関係なく、サイクルは0回、ROIは0%となる。
調査を進めると、他のユーザーも特定の市場の履歴データ取得に問題を抱えていることが判明。いくつかの市場で実際に履歴データを返すものを試した結果、この特定の市場では履歴データが保持されていないことがわかった。
この制約のため、戦略のバックテスト唯一の信頼できる方法は、ロボットの動作中にリアルタイムの最良売値を記録し、自分で履歴データを作成することだ。
記録ツールはスナップショットをディスクに書き込み、内容は以下の通り:
その後、「記録バックテスト(recorded backtest)」はこれらのスナップショットをリプレイし、同じ自動ロジックを確定的に適用。これにより、暴落とヘッジ条件の検出に必要な高頻度データを確保できる。
合計4日間で6GBのデータを収集。もっと記録できたが、異なるパラメータセットを試すには十分と判断。
このパラメータセットをテスト開始:
また、0.5%の固定手数料と2%のスプレッドも適用し、保守的なシナリオを想定。
バックテスト結果はROI86%、数日で$1,000が$1,869に増加。
次に、より攻撃的なパラメータも試した:
結果は:2日後のROIは-50%。
これにより、パラメータ選択の重要性が明確に示された。適切な設定次第で大きく稼げるし、大きな損失も招く。
バックテストの制約
費用やスプレッドを考慮しても、バックテストには制約がある。
慎重を期すために、次のルールを適用:もしLeg 2が市場閉鎖前に執行されなかった場合、Leg 1は全損とみなす。
これは保守的な仮定だが、実際には:
損失は過大評価される可能性があるが、最悪のシナリオを想定した実用的なモデルとも言える。
最も重要なのは、バックテストは大口注文が注文簿に与える影響や、他のトレーダーの追撃行動を模擬できないことだ。実際には、あなたの注文は:
バックテストは、あなたが純粋な流動性供給者(price taker)であると仮定している。
最後に、レートリミット、APIエラー、注文拒否、一時停止、タイムアウト、再接続、ロボットの忙しさによるシグナル見逃しなどは考慮されていない。
バックテストは良好なパラメータ範囲を見つけるのに非常に有効だが、現実の効果の一部はモデル化できないため、100%保証ではない。
インフラ
このロボットは、私のメインPCのリソースを消費せず、24時間365日稼働させるためにRaspberry Pi上で動かす予定だ。
しかし、改善の余地は大きい:
他にも最適化手法はあるかもしれない。現在はRustを学習中で、Web3開発において不可欠な言語になりつつある。