prediction-market-strategy について
prediction-market-strategyは、KalshiやPolymarketなどの二値予測市場を対象にした戦略と検証のガイドです。トレーダーや研究者向けに、メイカー/テイカー戦略、手数料控除後のエッジ判定、ポジション管理、バックテスト検証を扱います。
主な機能
- 01市場戦略とその制約の比較
- 02手数料控除後のエッジによる取引選別
- 03フラクショナル・ケリーによるサイズ計算
- 04エクスポージャーとスリッページの上限設定
- 05バックテストと決済の検証手順
活用シーン
- 01手数料後も優位性のある契約の選別
- 02ポジションサイズと口座エクスポージャーの上限設定
- 03決済誤りやデータリークのバックテスト監査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill prediction-market-strategyインストール後、Claude Code で/prediction-market-strategyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/backtesting-methodology.mdevidence-and-literature.mdsizing-and-edge-gates.mdstrategy-catalog.mdscripts/sizing.py詳細
予測市場の戦略
二値予測市場では、契約価格が確率として示されます。このスキルでは、すべての取引所と市場タイプに適用できる戦略、ポジションサイズ、検証の層を扱います。API の仕組みについては kalshi-api / polymarket-api を、契約の意味と決済については kalshi-weather-markets / kalshi-crypto-index-markets を参照してください。これは、これらすべてに適用できる戦略/ポジションサイズ/検証の層です。
基本的な考え方
価格 = 含意確率です。 価格が $0.18 の契約は、YES で決着する確率が 18%であることを示します。一連のブラケットの価格を合計すると、$1.00 をわずかに上回ります。この超過分がハウスマージンです(Kalshi の天候市場ではおよそ 5~8%です)。
テイカーは構造的に損をし、メイカーは構造的に利益を得ます。 Kalshi の 30 万件以上の契約では、手数料控除前の平均リターンは約 −20%で、その損失は主にテイカー(成行注文の利用者)と大穴狙いの買い手に集中しています。メイカー(指値注文を板に置く利用者)はプラスのリターンを得ています。Polymarket の 5 億 8,800 万件以上の取引では、上位約 1%のアカウントが利益の約 76.5%を獲得しており、その大半は指値注文を板に置くことで得ています。これが基本となる結果です。
本命と大穴のバイアスが、持続的な仕組みです。 低価格の大穴狙いの契約は、体系的に割高です。過去の実績では、$0.05 の契約が勝つ確率は約 2%で、$0.10 未満の契約では、買い手の賭け金の約 60%が失われます。本命は適正価格か、わずかに割安です。再現性のある手法は、メイカー側で割高な大穴狙いの裾野を売ることです。つまり、価格が約 $0.05~$0.20 のブラケットに NO の買い指値を置き、まれな的中に耐えられるよう、多数のイベントに分散します。これは情報による優位性ではなく、構造的/行動的な要因によるものです。
予測スキル ≠ 取引の優位性です。 天候やイベントを適切に予測できても、意思決定時点での市場価格に、その情報がほぼ織り込み済みであることに変わりはありません。市場は情報を十分に効率よく集約するため、測定可能なほど優れたモデルであっても、行動に由来する体系的な誤価格を見つけない限り、手数料控除後の優位性はほぼゼロです。例外は、取引の少ない市場における公式ラベルを使った ML ですが、これは予測精度ではなく、約定率と運用規模によって制約されます。
戦略一覧
Kalshi / Polymarket の天候市場およびイベント市場で評価した戦略です。「実証済み」とは、テストで正しい決済処理と手数料を考慮しても有効だったことを意味します。それ以外の戦略には、再び手を出さないよう注意を付記しています。
| 戦略 | 判定 | 仕組み | 主な注意点 |
|---|---|---|---|
| 本命・大穴バイアスの逆張り、メイカー側 | ✅ 持続性あり | 約 $0.05~$0.20 のブラケットに NO の買い指値を置き、行動に由来する裾野の割高を狙います | 大穴がまれに的中する点に注意し、今後の約定率を測定します |
| ブラケットの YES のみ(予測モデル主導) | ✅ 有効、手数料に左右される | キャリブレーション済みモデルがブラケットを大幅な割安と判定した場合に YES を買います | 生の勝率ではなく、net_edge > θ のゲートが必要です |
| マーケットメイキング/流動性提供 | ⚠️ 構造的には有利だが、インフラ負荷が高い | 両側に気配値を提示し、スプレッドとメイカーリベートを獲得します | 在庫リスク、逆選択、キュー優先順位に注意が必要です |
| オーバーラウンド/ダッチング裁定 | ⚠️ 理論上は有効だが、実運用では限界的 | ブラケット全体の合計を $1.00 未満にし、割安な残余分を買います | すべてのレッグを同時に約定させる必要があります。Kalshi では約定が順次発生します |
| 取引所間裁定(Kalshi ↔ Polymarket) | ❌ ほとんどの利用者には困難 | 2 つの取引所で同等の契約を同時に保有します | 資金の移動時間とコストで優位性が失われます。地域制限もあります |
| レイテンシー/ニュースの先回り(暗号資産/インデックスの時間足市場) | ❌ HFT の領域 | 市場価格が再調整される前に公開フィードへ反応します | 100 ミリ秒未満の応答、コロケーションが必要で、個人投資家向けではありません |
| 日中の確実性に近い価格再調整 | ⚠️ 情報/レイテンシーの優位性 | 確実性が高い契約の価格再調整が遅い市場で、残余分を獲得します | リアルタイムフィードと自動化が必要です |
| 優れたトレーダーの模倣 | ❌ 生存者バイアス | 勝っているように見えるアカウントを模倣します | 公開データに信頼できるシグナルはありません。過去の勝者も平均へ回帰します |
結論: 正確な会計処理を経ても有効なのは、行動に由来する裾野の逆張り(メイカー側)と、θ ゲートを超えた予測モデル主導の YES エントリーの 2 つです。それ以外は、HFT 規模の設備が必要か、インフラ負荷が高いか、正しい決済処理と手数料を考慮すると優位性が失われます。
手数料を考慮したポジションサイズとエッジの判定基準
すべての選択は、手数料調整後のネットエッジに基づいて行います。生の勝率、想定元本に対するリターン、正解率は選択指標ではありません。
ネットエッジの計算式
net_edge = p_model - ask - kalshi_fee(ask)
# Kalshi taker fee: ceil(0.07 * price * (1 - price) * 100) / 100 per contract
# Polymarket fee: 0 (no explicit taker fee; spread is the cost)
net_edge > θ の場合にのみ、取引を選択します。
期待エッジの判定基準(θ)
| アカウントサイズ | θ(Kalshi) | 理由 |
|---|---|---|
| < $2,000 | 15% | 小規模アカウントでは、手数料による目減りの割合が大きくなります |
| ≥ $2,000 | 20% | 手数料と約定の不確実性を考慮した標準的な判定基準です |
| Polymarket | ~5% | 明示的なテイカー手数料がなく、スプレッドとガス代がコストになります |
指値価格の提示
メイカー注文を出す際は、モデルの公正価値より θ だけ低い価格で買い指値を提示します。
limit_price_cents = floor((p_model - θ) × 100)
これにより、市場が少なくとも θ だけ有利な方向に動いた場合にのみ約定します。
フラクショナル・ケリー法によるポジションサイズの決定
f_star = edge / (1 - entry_price) # full Kelly fraction
stake = min(kelly_frac * f_star * bankroll, max_bet_fraction * bankroll)
contracts = stake / entry_price
# Defaults: kelly_frac=0.25 (quarter-Kelly), max_bet_fraction=0.015
バンクロールの上限である 1.5% が、ほとんどの取引で拘束条件となります。ケリー基準の 4 分の 1 は、複利で増やすには十分に積極的でありながら、相関した損失が続いても耐えられる程度に抑えられています。
エクスポージャーの上限(確認されたデフォルト値)
| 上限 | 値 |
|---|---|
| 契約ごとのバンクロール上限 | アカウントの 1.5% |
| 単一の都市/イベント | アカウントの 5% |
| 未決済エクスポージャーの合計 | アカウントの 20~25% |
| エッジに対する最大スリッページ率 | 50% |
スリッページも選択基準の一部です
実際の NO/YES 板を注文の全サイズ分たどり、板の厚みで加重したエントリー価格を計算します。板をたどった結果 net_edge が θ を下回る場合、またはスリッページがエッジの 50% を超える場合は、取引を見送ります。スナップショット間で維持されず、約定履歴でも裏付けられない見せかけの 1 セント単位の価格(≤2¢ の売り注文)は、板をたどる前に除外してください。
メイカーとテイカー
指値注文を板に残す(メイカー)と、スプレッドを支払う代わりに獲得でき、テイカー手数料を回避(または軽減)できます。これは、収益を上げているアカウントが使用している執行方法です。メイカーによるエッジは、ロングショットを構造的にフェードする戦略の収益を複利で増やします。成行注文(テイカー)は、機会に対して指値注文の約定確率が許容できないほど低い場合にのみ使用してください。
すべてのポジションサイズ計算関数は scripts/sizing.py にあります。実例を実行するには、直接実行してください。
バックテストの方法論
基本原則:取引所独自の結果に基づいて決済判定する
第三者の情報源から決済結果を再導出してはいけません。取引所の result フィールドを使用してください(Kalshi:result: "yes"/"no"、Polymarket:決済トランザクション)。取引所の判定と相関するだけの独自の正解判定を使うと、結果の約 10% が反転し、二桁の偽のエッジが生み出される可能性があります。
方法のチェックリスト
- 決済判定には取引所の
resultを使用し、独自に算出した正解判定は使用しない - クロール日ではなく、
close_time(またはティッカーの決済日)を使用する - 判断に使う特徴量は、各都市/イベント固有の現地判断時刻で切り取る。UTC との不一致を避ける
- エントリー価格には判断時点のスナップショットを使用し、すでに収束している終値直前の価格は使用しない
- 実際の板を注文サイズ分たどり、最良気配の板厚で上限を設定し、約定を重複排除する
- 損益は手数料控除後の値のみとし、想定元本は使用しない
- 時系列ホールドアウトまたは拡大型ウィンドウのウォークフォワードのみを使用し、シャッフルした CV は使用しない
- ライブ資金を投入する前にフォワードのペーパートレードを行う。モデルの p、判断時点の売り気配、結果を記録し、バックテストの Brier スコア/正解率と比較する
ファントムエッジの殿堂
以下はいずれも、一見もっともらしいバックテストを生み出しましたが、詳しく調べると崩れました。
| バグ | 症状 | 修正 |
|---|---|---|
| 誤った決済ソース | 真値を再導出すると結果の約10%が反転し、見せかけの+18%のフェードエッジが発生 | 取引所のresultを使用する |
| ブラケットの境界値のずれ | 2°Fの包含ブラケット{floor,cap}を1°Fの半開区間として扱い、ファントムバックテストで**+1640%**を記録 | 契約仕様を注意深く読む |
| ファントムの1セント売り気配 | 2セント以下の偽装水準により、板の厚みを23倍過大評価(25万件に対し、実際の約定は約9,000件) | スナップショット間で維持され、かつ約定履歴でも裏付けられる板の厚みだけを数える |
strike_typeの誤読 | ティッカーから大きい/小さいを推測し、シャドートレードの**44%**で方向を誤る | APIからstrike_typeを読み取る。絶対に推測しない |
| シャドー取引とライブ取引の混同 | シャドーとライブのポジションが混在するログを再生し、1契約あたりファントムで14,000ドルの利益が発生 | ライブの約定のみから損益を追跡する(PositionStore)。メモリ内データは絶対に再生しない |
| フラット/未較正の事前分布 | 予測の中心値の設定ミスにより、1日でライブ損失が121.93ドル発生 | すべての判断で、署名済みの較正済み事前分布を必須とする |
| 古いランニング極値の初期値 | 汚染された永続化済みday_maxにより、すべての低いブラケットがすでに勝ち確のように見えた | 起動時にランニング極値の状態をリセット/再構築する。引き継ぎは絶対に行わない |
| クロック不一致による先読み | 特徴量を14:00 LSTまでで切っているのに、18:00Zの板スナップショットで約定し、東部以外の都市で未来情報が漏れる | 各市場固有の現地判断時刻に判断し、約定する |
フォワード・ペーパートレード
ライブ資金を投入する前に、シャドーモードでパイプライン全体を実行してください。モデルのp、判断時点の売り気配、実際の決済結果を記録します。得られたブライアースコアと精度を、バックテストの数値と比較してください。100件以上のサンプルでブライアースコアに2~3ポイントを超える差が続く場合は、データリークまたは分布シフトが示唆されます。ライブ運用を始める前に原因を特定する必要があります。
予測スキル ≠ 取引エッジである理由
優れた予測は取引エッジに必要ですが、それだけでは十分ではありません。
-
市場は情報を集約します。 判断時点までに、市場価格にはすでにNWSのモデル出力、直近の実績値、そして有力口座が見つけ出したエッジが反映されています。予測は、単に正確なだけでなく、市場よりも測定可能なほど優れている必要があります。
-
ブライアースコアはエッジではありません。 OOSブライアースコアが0.07(気候値より良好)でも、市場価格も0.07なら、純エッジがゼロであることと矛盾しません。
-
実際のエッジは行動にあります。 ロングショットの過大評価は情報によるものではなく、行動に起因します(安価な契約に対する個人投資家の過信)。これを捉えるには、そのブラケットでの予測品質にかかわらず、テールで流動性を提供します。
-
予測主導のYESエントリーが機能するのは、限界的な局面だけです。 較正済みモデルが、あるブラケットが大幅に割安(手数料控除後のエッジが> θ)だと示す場合、YESの購入は有効です。しかし、これは判断時点のごく一部に限られ、薄いテールでの約定率が取引可能量を制約します。
実務上の意味は、予測そのもののために予測を構築・検証することです(NOの指値を適切に設定し、不利な状況でのエクスポージャーを抑えるのに役立ちます)。ただし、別途、正確で手数料込みのバックテストを行わずに、予測精度が取引リターンにつながると想定してはいけません。
エビデンスと文献
基礎的な研究結果
-
Whelan, Makers and Takers: The Economics of the Kalshi Prediction Market(CEPR VoxEU、GWU/UCDワーキングペーパー)。Kalshiの契約30万件以上を分析。手数料控除前の平均リターンは約−20%で、主にテイカーとロングショット購入者に集中しています。メイカーはプラスのリターンを得ています。基礎となる結果は、勝者は流動性を提供し、敗者は流動性を取るということです。
-
大規模NのPolymarketメイカー・テイカー研究(取引5億8,800万件以上、SSRN)。上位約1%の口座が利益の約76.5%を獲得しており、その大部分は指値注文を板に置くことで得ています。メイカーのエッジが複数の取引所で一般化することを裏付けています。
-
Gupta, Who Profits in Binary Prediction Markets? Maker–Taker Dynamics, Behavioral Bias, and Sentiment Arbitrage on Kalshi(SSRN)。誰がどのように勝つのかを、マイクロストラクチャーと行動バイアスの観点から扱っています。
お気に入り・大穴バイアス
- 賭け市場に関する古典的な文献(Thaler、Ziemba):ほとんどの賭け市場で、大穴は価格が示す確率よりも低い頻度で勝ちます。
- Kalshi に特有の傾向:約$0.05のコントラクトは過去の実績で約2%しか勝たず、$0.10未満のコントラクトでは買い手の賭け金の約60%が失われます。本命側は適正価格からやや割安の範囲です。
- 取引可能な戦略:安価なブラケットに分散して、NO 側のメイカービッドを出します。
内部検証(bracket-model スキル)
- Kalshi の天候市場を対象に、手数料込みでローテーション交差検証を用いたバックテストを実施した結果、大穴を避ける戦略の ROI は、テイカーで約+1.7~3.3%、メイカーで約+7.9~9%でした。
- 価格が約10%のブラケットの実現的中率は約3~7%で、1コントラクトあたりの粗利益は約+6.7¢です。メイカーではさらに収益性が向上します。
エビデンスが裏付けていないこと
- 優れた天気予報やイベント予測が、意思決定時点で市場を上回ること(価格に織り込み済みのため、「上記の教訓」と重複します)。
- 個人投資家が確認できる取引所間または同一取引所内の裁定取引が、手数料・地域制限・資金拘束を差し引いても継続的に利益を生むこと。
- 優位性が予測精度の最も高い領域に集中すること(実際は市場の薄さや個人投資家の多さに連動します)。
賭け金の規模を決める前に、具体的な数値を一次資料で確認してください。数値の大きさはサンプル期間や取引所によって異なります。
ファイル
参考資料
references/strategy-catalog.md— エビデンスと注意点を含む、各戦略の詳細な評価references/sizing-and-edge-gates.md— 手数料を考慮した賭け金の完全なルールとゲートの導出references/backtesting-methodology.md— 取引所の結果に基づく決済ルール、幻の優位性の殿堂、手法チェックリストreferences/evidence-and-literature.md— 一次資料:Whelan、Polymarket の 588M、Gupta、お気に入り・大穴の数値
スクリプト
scripts/sizing.py—kalshi_fee、net_edge、theta_for_account、limit_price_cents、kelly_contracts、slippage_ok— 標準ライブラリのみを使用し、オフラインで実行できます