DPMファミリー(pool制)の中で、初期化方法・価格発見・creator関与の組合せで 8つのvariantを並べる。
LMSRは要件C(運営loss=不正動機)を満たさないので UGC では選択肢から除外。
結論から:広義では Yes、ただし LMSR/CLOB に比べて「価格 = 真の確率」の引き出し力は弱い。
| 定義の派閥 | DPMは予測市場か | 論拠 |
|---|---|---|
| Hanson派 (LMSR) 厳密学派 |
✗ 弱い | strict proper scoring rule でないので「真の確率を表出させる incentive」が弱い。早期参加者ほど安く買える=価格はbid timing と信念のmix |
| Pennock派 (DPM元提唱) 実用学派 |
✓ Yes | "A Dynamic Pari-Mutuel Market for Hedging, Wagering, and Information Aggregation" (2004) で提案。Yahoo Tech Buzz Game で実証 |
| 業界実装 | ✓ Yes | Polymarket=CLOB, Kalshi=CLOB, Manifold=CPMM, Augur=LS-LMSR, 9Lives=DPM, Twitch=parimu — どれも「予測市場」と呼ばれている |
| 機構 | 価格発見力 | ミライマでの位置付け |
|---|---|---|
| CLOB (Polymarket/Kalshi) | 最強(市場参加者間で incentive compatible) | 板表示するなら採用、ライト層には不向き → 採用しない |
| LMSR (Hanson) | 強(myopic incentive compatible) | 運営loss発生 → UGCで採用不可。運営作成市場のみ継続 |
| LS-LMSR (Augur, 動的b) | 強 | creator-pays-bが必要、UGCのcreator負担増 |
| DPM (Pennock/Delphi式) | 中(noisy probability estimator) | 運営loss=0、creator負担=0、価格は「ざっくり指標」として機能 |
| Pure parimutuel (Twitch型) | 弱(価格関数なし) | 「予測市場」というより「pool分配ゲーム」 |
ミライマUGCは 短期スポーツ予想・SNS的コミュニティ予想が中心。「秒〜時間単位の感情ベースの予想」と「日〜週単位の精緻な確率発見」のうち前者。
DPM の価格は「真の確率の noisy estimator」だが、UGC用途には十分。HSX (Hollywood Stock Exchange) も同等の精度で 25年機能している。
「予測市場」を厳密に定義すると Hanson派的には DPM は弱いが、「みんなで予想して価格が動き、当たれば payout」という体験的定義では DPM も予測市場。
DPMの中で「初期化方法 × 価格発見 × creator関与」の組合せ。全部 pool制 = 運営loss構造的に0。
| 要件 | A. 運営seed |
B. creator任意seed |
C. 価格非表示 (N人集計) |
D. Pure parimu (Twitch型) |
F. peer matching (YES=NO揃う) |
G. 動的k (出来高連動) |
H. +時間加重 (早期boost) |
I. フル装備 (全機能) |
|---|---|---|---|---|---|---|---|---|
| A. 運営loss | △ 月¥20k |
✓ 0〜¥10k |
✓✓ ¥0 |
✓✓ ¥0 |
✓✓ ¥0 |
△ 初期seedのみ |
△ 同A |
△ 同A |
| B. payout確定 | ✓ k×share保証 |
✓ 同左 |
△ N人後 |
✗ 常uncertain |
△ マッチ後 |
✓ 同A |
✓ 同A |
✓ 同A |
| C. 不正動機 | △ seed分 |
✓ 0可 |
✓✓ 0 |
✓✓ 0 |
✓✓ 0 |
△ 初期seed分 |
△ 同A |
△ 同A |
| D. 予測市場性 | ✓ 即機能 |
✓ 同左 |
△ N人後 |
✗ 価格発見なし |
✓ マッチ後 |
✓✓ 出来高で深化 |
✓✓ 早期情報引出 |
✓✓ 全部入 |
| creator簡単 | ✓✓ | ✓ 任意 |
✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ |
| 実装工数 | 3-5日 | 3-5日 | 4-6日 | 2-3日 | 5-7日 | 7-10日 | 5-7日 | 10-14日 |
| 月運営コスト | ¥20k | ¥0-10k | ¥0 | ¥0 | ¥0 | ¥5k | ¥20k | ¥20k |
記号: ✓✓ 最高 / ✓ 高 / △ 中 / ✗ 低
市場作成
↓
運営seed 投入: qY = qN = 4.71 (= 1,000 coin/outcome相当)
↓
50% / 50% で起動、即時 価格公開
↓
ユーザーがbet → DPM稼働
↓
解決時 pool / winning shares × my shares で分配(seedも溶ける)
市場作成
↓
creator: 「俺はYES 60%だと思う」 + 1,000 coin入れる(任意)
or
「中立」 → 何も入れない → 運営フォールバック
↓
qY = 5.65, qN = 3.77 で起動(60:40)
↓
creatorは「自分のbet」として扱われる、結果当たれば payout 受け取る
市場作成(creator は何も入れない、意見も任意)
↓
「予想集計中(あと N人)」表示
↓
ユーザーbet → pool に蓄積、価格は非表示
↓
N人到達 → C(q) 計算、価格公開
↓
以降、通常DPM稼働 + 売却機能あり
↓
解決時 pool / winning shares × my shares で分配
[任意] 俺の予想は?
◉ スキップ(中立)
○ YES 寄り(数値だけ、コイン不要)
○ NO 寄り
→ 内部 q比率を初期化(コイン投入なし)
市場作成(何も入れない)
↓
ユーザー bet → pool に直接加算
↓
表示: 「YES 700 coin (62%) / NO 430 coin (38%)」
※ DPM/LMSR的「価格」概念なし、pool シェアのみ
↓
解決時: pool / winning total × my bet で分配
市場作成(pre-market 状態)
↓
ユーザーbet → escrow に積み上げ(YES側 / NO側 別々)
表示: "YES側 12人 ¥1,200 / NO側 3人 ¥350 / 起動まで NO側 +¥850"
↓
両側 min閾値(例: 各¥500、各3人以上)到達 → 起動 (live)
qY, qN は escrow 比率から計算
↓
以降、通常DPM稼働(売却可)
↓
時間切れで未起動 → 全額自動refund
k(pool) = α × log(1 + pool / β)
例: α=1.5, β=500
pool=0 → k=1.0(参入しやすい・価格振れる)
pool=5,000 → k=4.6
pool=50,000 → k=7.2(価格深く・操作しにくい)
C(q) = k(pool) × √(qY² + qN²)
prob_yes = qY² / (qY² + qN²)
価格は出来高ステージに応じて自動調整
shares_received = bet_amount × time_multiplier(t)
time_multiplier(t):
t=0% → ×2.0 (市場開始直後)
t=25% → ×1.5
t=50% → ×1.2
t=75% → ×1.0
t=100% → ×0.8 (close直前)
例:
Aさん: 開始直後に100 coin YES → 200 shares
Bさん: close直前に100 coin YES → 80 shares
結果YES時:
pool / (winning shares 合計) × my shares で分配
→ 早期Aさんが厚く戻る
市場作成(何も入れない)
↓
[フェーズ1] 集計中(最初のN人=5人)
- 価格非表示、escrow積み立て
- bet_time をrecord、shares = bet × time_multiplier
- 早期参加に "👁 First Watcher" Badge
↓
[フェーズ2] N人到達 → live化
- C(q) = k × √(qY² + qN²) で価格公開
- 売却機能ON(5%手数料)
- 残り時間の time_multiplier 表示
↓
[フェーズ3] 解決
- pool / 勝者shares × my shares
- 「予言者バッジ」(早期で当てた人にX共有可能)
| シナリオ | A. 運営seed | B. 任意seed | C. 価格非表示 | D. Pure parimu | F. peer match | G. 動的k | H. 時間加重 | I. フル装備 |
|---|---|---|---|---|---|---|---|---|
| 単独betで結果YES | 100 → 100 (seed戻る分) |
同左 | 100 → 100 (他なし) |
100 → 100 | refund (未起動) |
100 → 100 (seed戻る) |
100 → 100 | 100 → 100 |
| 後乗り爆発(+5,000) YES | 100 → 158 (+58%) |
同左 | 100 → 158 (N人後) |
100 → 110 (pool薄) |
100 → 158 (NO揃えば) |
100 → 175 (初期k小) |
100 → 230 (早期×2.0) |
100 → 240 (C+H複合) |
| 後乗り逆方向(NO+5k)→YES | 100 → 977 (レア当) |
同左 | 同上 | 100 → 1,177 | 100 → 977 (マッチ後) |
100 → 1,050 (k小=リワ大) |
100 → 1,400 (時間×share) |
100 → 1,450 |
| 運営loss(市場あたり最大) | -200円 | -100円 | 0円 | 0円 | 0円 | -100円 (初期seed) |
-200円 (badgeコイン) |
-200円 |
※ Hは early bird ×2.0 multiplierを想定。Iは C+H 同時適用で多少誇張。実際のmultiplier曲線でチューニング可能。
| こだわり軸 | 推奨 | 理由 |
|---|---|---|
| 運営費用 完全ゼロを最優先 | C / D / F | seed不要、ユーザー間ゼロサム |
| 不正の起こりにくさを最優先 | C ≒ D ≒ F | 取れるseedゼロ=取り分の的がない。Aはseed分(¥200/市場)・Hは時間加重がbot最も有利・Iも同じ |
| creator簡単さを最優先 | 全候補(B除く) | creatorは何も背負わない、意見も任意 |
| 予測市場として「即時に」機能させたい | A / B / G / H | 1人目から価格発見動く。CとFはN人/マッチ後に発動 |
| 予測市場として「最終的に」機能すればOK | C / F / I も可 | Cは N人後に通常DPM 起動、Fはマッチ後に起動。Dだけは最後まで価格発見なし |
| payout確定UXを死守 | A or B | 初手から k×share保証で計算可能 |
| 実装最速 | D | 2-3日。Twitch型単純 |
| SNS/コミュニティ予測として | C / I | 「みんなで予測する」感覚+バッジ・X共有 |
| informed trader呼び込み | A / G / H | 初期から価格表示で利益機会あり、Hは早期報酬厚い |
| 1人目100%張り付きを構造的回避 | C or F | Cは価格非表示、Fは pre-market で起動条件待ち |
| 「予言者」称号で UGC自慢を促す | H or I | 時間加重で「早期=厚いリワード」物語性 |
| ニッチテーマ死産対策 | C > F | Fは両側揃わずに死産するがCは1人でも開始 |
| 候補 | 標的になるもの | 取り分の最大値 | 主な不正手口 | ランク |
|---|---|---|---|---|
| C 価格非表示 | なし(pool=ユーザー同士ゼロサム) | ¥0 | Sybilで自己マッチ(複数垢で自分のpool膨張)→自分の出した分を自分で取り戻すだけ、構造的に利得ゼロ | ✓✓ 最低 |
| D Pure parimu | なし | ¥0 | 同上 | ✓✓ 最低 |
| F peer matching | なし(両側揃うまで起動なし) | ¥0 | 自己マッチで起動はできるがpoolは自分のコイン | ✓✓ 最低 |
| B 任意seed | creator自発seedのみ | creator次第(最大¥100程度) | creatorが入れた seed を狙ってbot参戦 | ✓ 低 |
| G 動的k | 初期seed + 初期k小の優位 | ¥100/市場 + 早期betの過剰リワード | k小の初期にbotが先入り → 価格動かして escape | △ 中 |
| A 運営seed | 運営seed(¥200/市場) | ¥200/市場 × 100market = 月¥20k | botで全UGC市場に薄く参戦・期待値で回収 | △ 中 |
| H 時間加重 | 早期botのshare boost | ×2 multiplier × pool規模 | botに最も有利。新着監視botが常時×2取得 | ✗ 高 |
| I フル装備 | H含むため同じ | 同上 | Hの問題を内包 | ✗ 高 |
※ pool型は構造的に「他人のコインを取る」ゼロサムなので、運営seed や bonus が無い限り「不正で取れるもの」が存在しない。Aは¥200/市場の的、Hは時間加重そのものが標的になる。
選択を仮決めして、Notion更新・実装スコープ詰めへ進む。後で変更も可。