📚 Polymarketクオンツ研究まとめ|学術論文が見つけた『取れるエッジ』と自分で検証してみた結果
「Polymarketで安定的に勝ってる人は何を見てるんだろう?」
答えの一部は学術論文の中にあります。2024年から2026年にかけて、Polymarketの**実データ(ブロックチェーン上の全取引)**を使った大規模な研究論文が複数公表されていて、どこに統計的なエッジがあり、どこに無いのかがかなり具体的に分かってきています。
この記事では:
- 読むべき学術論文3本を初心者向けに要約
- そのうち最も基本的な「favorite-longshot bias」を自分のマシンで実測してみた結果
- 学術発見を一般ユーザーがどう使えるかの現実的な指針
学術ソースと私の実測コード・実測データを全部載せます。
読むべき論文 3本
論文① Anatomy of Polymarket(2026年3月、arXiv)
arXiv:2603.03136 "The Anatomy of Polymarket: Evidence from the 2024 Presidential Election"
2024年米大統領選挙市場(数十億ドル規模)の全on-chain取引データを分解した研究。主な発見:
- 出来高が増えるほど裁定余地が縮小した(市場は効率化した)
- Kyle's λ(流動性への影響力の指標)が10分の1以下に減少
- クロスマーケット参加者(複数市場をまたぐ裁定プレイヤー)が急増
含意: 大きく流動性のある市場はすでにかなり効率的。小口の素人が「市場の歪みを見つけて大儲け」できる余地はほとんど残っていない。
論文② Unravelling the Probabilistic Forest(2025年8月、arXiv)
arXiv:2508.03474 "Unravelling the Probabilistic Forest: Arbitrage in Prediction Markets"
2つのタイプの裁定機会を実データで計測した研究:
- Market Rebalancing Arbitrage: 単一マーケット内で、YES + NOの合計価格が$1から乖離している瞬間
- Combinatorial Arbitrage: 関連する複数マーケット(例:選挙のトップN候補)を組み合わせて作る合成裁定
発見:
- 実現済み裁定利益: 約 $40,000,000(これまでに抽出された総額)
- NegRisk市場(multi-condition)は8.6%の機会しかないのに、利益の73%を生む
- 資本効率で言うと29倍の差(NegRisk集中戦略の有利さ)
含意: 裁定で稼ぎたいなら、単純な2値市場ではなくNegRisk市場を狙う。ただしハイスピード bot の独壇場なので、手動では遅すぎる。
論文③ Who Wins and Who Loses(2026年3月、SSRN)
SSRN:6443103 "Who Wins and Who Loses In Prediction Markets? Evidence from Polymarket"
124+ 百万トレードの巨大データセットでユーザーごとの損益を分析した研究。
発見:
- トップ1%のユーザーが総利益の84%を独占
- 利益は「市場予想を上回る精度で将来を当てられた少数派」にほぼ全て流れる
- 92.4%のウォレットは損失で終わる
含意: 「みんなが少しずつ勝つ」市場ではなく、ごく少数が多数から搾取する構造。以前の記事で書いた「生存者バイアス」の裏付けとしても使えます。
古典的な統計バイアス:Favorite-Longshot Bias (FLB)
もう1つ、学術界で50年以上研究されている古典バイアスがあります。
FLBの定義: 低確率の「一発逆転」市場(longshot)は実現確率より割高で取引され、高確率の本命市場(favorite)は実現確率より割安で取引される傾向。
つまり:
- 10¢以下で買うYESは、実際には4%以下しか勝たない(10%の実現確率を下回る)
- 90¢以上で買うYESは、実際には93%以上勝つ(90%の実現確率を上回る)
予測市場研究の代表的まとめ論文では、競馬・スポーツブック・株式オプション・予測市場で一貫してFLBが観測されると報告されています。
💡 なぜFLBが起きるのか: 行動経済学では「人は一発逆転に幻想を抱く(longshotの過剰評価)」「リスク回避層が本命に流入して価格を押し上げる前に売り抜ける(favoriteの売られすぎ)」などが候補とされています。
自分のマシンで実測してみた
論文は読めますが、本当に今のPolymarketでFLBが観測できるかは自分で試したくなります。Polymarketは全取引が公開されているので、数分のコードで検証できます。
測定手順
gamma-apiでclosed(決着済み)市場を1,000件取得- スポーツ以外・2値市場・出来高5万ドル以上にフィルタ → 136件が検証対象
- 各市場の勝った側のトークンの価格履歴を
clob.polymarket.com/prices-historyから取得 - 決着24時間前の価格を読む(これが市場の「最終予想確率」)
- 価格レベル(10%刻みのバケット)ごとに「勝った実績」を集計
勝者トークンは確率 pw で pre-resolution なら:
- 勝者のバケット
bucket(pw)→wins += 1, total += 1 - 敗者(同じ市場の反対側)のバケット
bucket(1 - pw)→wins += 0, total += 1
テストコード(完全再現可能)
# 07_flb_test.pyimport requests, ast, timefrom collections import defaultdictfrom datetime import datetime, timezone
SPORT_KEYWORDS = ['nba','nfl','mlb','nhl','epl','vs ','vs.','counter-strike','cs2']def is_sport(q): return any(k in q.lower() for k in SPORT_KEYWORDS)
# 1. closed marketsを大量取得markets = []offset = 0while len(markets) < 1000: r = requests.get( 'https://gamma-api.polymarket.com/markets', params={'closed':'true','limit':100,'offset':offset,'order':'volume','ascending':'false'}, timeout=20, ) batch = r.json() if not batch: break markets.extend(batch) offset += 100 if len(batch) < 100: break time.sleep(0.2)
# 2. 非スポーツ・2値・ボリューム5万以上でフィルタparsed = []for m in markets: q = m.get('question','') or '' if is_sport(q): continue try: outcomes = ast.literal_eval(m.get('outcomes','[]')) prices = ast.literal_eval(m.get('outcomePrices','[]')) tids = ast.literal_eval(m.get('clobTokenIds','[]')) except: continue if len(outcomes)!=2 or len(prices)!=2 or len(tids)!=2: continue fp = [float(p) for p in prices] if sorted(fp)!=[0.0,1.0]: continue if float(m.get('volumeNum',0) or 0) < 50000: continue winner_token = tids[fp.index(1.0)] end_ts = int(datetime.fromisoformat(m['endDate'].replace('Z','+00:00')).timestamp()) parsed.append({'winner_token':winner_token,'end_ts':end_ts})
# 3. 各市場の勝者トークン価格履歴を取得して24h前の価格を集計buckets = defaultdict(lambda: [0, 0])for m in parsed[:300]: for params in [{'interval':'1m','fidelity':60}, {'interval':'1w','fidelity':360}, {'interval':'max','fidelity':360}]: r = requests.get('https://clob.polymarket.com/prices-history', params={'market':m['winner_token'], **params}, timeout=10) h = r.json().get('history', []) if len(h) < 3: continue target_t = m['end_ts'] - 86400 best = next((pt for pt in reversed(h) if pt['t'] <= target_t), h[0]) pw = float(best['p']) if 0.02 < pw < 0.98: break else: continue
bw, bl = min(int(pw*10),9), min(int((1-pw)*10),9) buckets[bw][0] += 1 buckets[bw][1] += 1 buckets[bl][1] += 1 time.sleep(0.08)
# 4. レポートfor b in range(10): w, t = buckets.get(b, [0,0]) if t==0: continue implied = (b+0.5)/10 actual = w/t print(f'[{b*10}-{(b+1)*10}%] implied={implied:.2f} actual={actual:.2f} diff={actual-implied:+.2f} n={t}')実測結果
私のWindows機での実行結果(136市場中30市場で有効な価格履歴が取得できて、60件の観測を得ました):
| 価格バケット | 市場の予想確率 | 実際の勝率 | 差分 | N |
|---|---|---|---|---|
| [0-10%] | 0.050 | 0.000 | -0.050 | 2 |
| [10-20%] | 0.150 | 0.000 | -0.150 | 1 |
| [40-50%] | 0.450 | 0.684 | +0.234 | 19 |
| [50-60%] | 0.550 | 0.400 | -0.150 | 35 |
| [80-90%] | 0.850 | 1.000 | +0.150 | 1 |
| [90-100%] | 0.950 | 1.000 | +0.050 | 2 |
読み方
- 極端な両端では古典的 FLB が実データで確認できました
- 低確率バケット(0-20%): 実績0% → longshotは割高で負けている
- 高確率バケット(80-100%): 実績100% → favoriteは割安で勝っている
- 中間バケット(40-60%)は騒がしい: N=19/35 と観測数は多いが、40-50% が異常に高く、50-60% が低い。これはサンプル偏り(一部の市場が過剰に反映されている)と見るべき
- 全60観測なので、厳密な学術テストには遠く及ばない — が、方向性は論文と一致
重要な留保:
- N=60 は統計的にはごく小規模
- closedマーケットの多くは
prices-historyが十分に返らず(136→30件に激減) - PolymarketのIMDEA研究論文は86百万ベットで同じバイアスをもっと厳密に測定している。「正確な数字が知りたければ論文を読め、手触りが知りたければ自分で叩け」という立ち位置の記事です
素人が学術発見をどう使えるか
上記の研究と実測から、初心者が現実的に取れる指針を整理します。
✅ 取れる教訓
- $0.95以上の本命をNOで売る戦略は期待値が危険に近い(FLBが逆方向)
- $0.05以下のlongshotをYESで買う戦略は長期的に負ける(FLBの直接適用)
- 裁定で稼ぎたいならNegRisk市場に集中(8.6%の機会で73%の利益)
- 高出来高の主要市場は効率的すぎる — 歪みを探すなら地味なローカル市場のほうが残っている可能性が高い
- 自分が top 1% に入る前提を疑う — 92.4%は負けるので、最初の1,000時間は学習・紙トレで十分
❌ 取れない戦略
- 「$0.92で買って$0.97で売る」などの短期マイルストーンスカルプ(別記事で手数料式で数学的に崩した通り)
- BTCやWTIの価格マイルストーン市場を予測として使う(これらはスポットの非線形再表示にすぎない)
- 有料Telegram botのコピートレード(盗難事件が実在)
まとめ
- Polymarketの学術研究は2024-2026年で急速に蓄積中。大規模な on-chain データで市場効率と歪みが定量化されている
- FLB(favorite-longshot bias) は50年以上の歴史を持つ古典バイアスで、私の小規模テストでも極端バケットで確認できた
- 裁定は NegRisk 市場で 73% の利益が生まれている(ただし bot 勢の独壇場)
- トップ1%が84%の利益を取る構造なので、自分が "普通の人"の側にいる前提を疑うこと
gamma-api+clob.polymarket.com/prices-historyで数十行のコードから誰でもバイアスを実測可能
「予測市場は誰でも勝てる」という甘い話は論文が一貫して否定しています。でも逆に、「どこで負けやすいか」を知れば、負けない戦略は組める。そこが学術研究を読む価値です🔥
参考リンク
- arXiv: The Anatomy of Polymarket (2026-03)
- arXiv: Unravelling the Probabilistic Forest (2025-08)
- SSRN: Who Wins and Who Loses In Prediction Markets
- SSRN: Exploring Decentralized Prediction Markets: Accuracy, Skill, and Bias
- NegRisk Market Rebalancing — $29M Extracted (Medium)
- Polymarket NegRisk 公式ドキュメント
- Systematic Edges in Prediction Markets (QuantPedia)
🎁おすすめツール・サービス
※上記リンクにはプロモーション(広告)が含まれています
量子相場謀略|ホソノP
ブログでは書けない本音のトレード戦略とEA開発の裏側を公開。 データに基づいた検証で、再現性のある手法だけをお届けします。