Communitygithub.com

guzus/dr-manhattan

Polymarket、Kalshi、Opinion、Limitless、Predict.funなどの予測市場を統一されたCCXTスタイルのAPIで取引できます。ユーザーが予測市場の閲覧、検索、取引、残高やポジションの確認、注文管理、マーケットメイキング戦略の実行、取引所間の価格比較を行いたい場合に使用します。

dr-manhattan とは?

Dr. Manhattanは、暗号通貨取引所向けのCCXTと同様に、複数の予測市場を単一の統一インターフェースで操作できるようにするAPIライブラリです。対応している取引所はPolymarket、Kalshi、Opinion、Limitless、Predict.funで、それぞれの認証方式(秘密鍵、APIキー、RSA鍵など)をサポートしています。Pythonライブラリとして直接利用するほか、MCPサーバー経由でClaude CodeなどのAIエージェントと統合し、市場の検索、注文の作成・キャンセル、残照確認、ポジション管理、さらにはバックグラウンドでのマーケットメイキング戦略の実行まで可能です。すべての価格は確率(0~1)として扱われ、統一されたデータモデル(Market、Order、Position、Orderbook)により、取引所間の差異を意識せずにトレーディングワークフローを構築できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add guzus/dr-manhattan

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Dr. Manhattan - 予測市場取引

Dr. Manhattanは、暗号通貨取引所向けCCXTと同様の方法で予測市場を操作する統一APIです。Polymarket、Kalshi、Opinion、Limitless、Predict.funを単一のインターフェースでサポートします。

セットアップ

uvで依存関係をインストールします:

uv venv && uv pip install -e .

MCPサーバー(Claude連携)の場合:

uv sync --extra mcp

対応取引所

取引所チェーン/タイプ認証
PolymarketPolygon秘密鍵 + ファンダーアドレス
Kalshi規制対象CEXAPIキー + RSA秘密鍵
OpinionBNB ChainAPIキー + 秘密鍵 + マルチシグアドレス
LimitlessBase秘密鍵
Predict.funBNB ChainAPIキー + 秘密鍵(EOAまたはスマートウォレット)

Pythonライブラリとしての使用

読み取り専用(認証不要)

import dr_manhattan

polymarket = dr_manhattan.Polymarket({'timeout': 30})
markets = polymarket.fetch_markets()
for market in markets:
    print(f"{market.question}: {market.prices}")

認証あり

import dr_manhattan

polymarket = dr_manhattan.Polymarket({
    'private_key': '0x...',
    'funder': '0x...',
})

order = polymarket.create_order(
    market_id="market_123",
    outcome="Yes",
    side=dr_manhattan.OrderSide.BUY,
    price=0.65,
    size=100,
    params={'token_id': 'token_id'}
)

取引所ファクトリ

from dr_manhattan import create_exchange, list_exchanges

print(list_exchanges())  # ['polymarket', 'opinion', 'limitless', 'predictfun', 'kalshi']
exchange = create_exchange('polymarket', {'timeout': 30})

MCPサーバー経由の使用

Dr. Manhattanはすべての取引機能をMCPツールとして公開します。Claude Code(~/.claude/settings.jsonまたは.mcp.json)で設定:

{
  "mcpServers": {
    "dr-manhattan": {
      "command": "/path/to/dr-manhattan/.venv/bin/python",
      "args": ["-m", "dr_manhattan.mcp.server"],
      "cwd": "/path/to/dr-manhattan"
    }
  }
}

MCPツールリファレンス

取引所ツール:

  • list_exchanges - 利用可能な予測市場取引所をすべて一覧表示します。
  • get_exchange_info(exchange) - 取引所のメタデータと機能を取得します。
  • validate_credentials(exchange) - 取引を行わずに認証情報が有効か確認します。

市場発見:

  • search_markets(exchange, query) - キーワードで市場を検索します。特定のトピックに関する市場を最速で見つける方法です。
  • fetch_markets(exchange, limit?, offset?) - ページネーションで全市場を取得します。
  • fetch_market(exchange, market_id) - IDで特定の市場を取得します。
  • fetch_markets_by_slug(exchange, slug) - スラッグまたはURLで市場を取得します(Polymarket、Limitless)。
  • find_tradeable_market(exchange, binary?, limit?, min_liquidity?) - 取引に適した市場を検索します。
  • find_crypto_hourly_market(exchange, token_symbol?) - 暗号通貨の時間ごとの価格市場を検索します(Polymarket)。
  • fetch_token_ids(exchange, market_id) - 市場のトークンIDを取得します。
  • parse_market_identifier(identifier) - PolymarketのURLからスラッグを抽出します。
  • get_tag_by_slug(slug) - Polymarketのタグ情報を取得します。

オーダーブック:

  • get_orderbook(exchange, token_id) - 完全なオーダーブック(bidとask)を取得します。
  • get_best_bid_ask(exchange, token_id) - 最良のbid価格とask価格を取得します。

取引:

  • create_order(exchange, market_id, outcome, side, price, size) - 買い注文または売り注文を出します。価格は0~1(確率)です。sideは"buy"または"sell"です。
  • cancel_order(exchange, order_id, market_id?) - 特定の注文をキャンセルします。
  • cancel_all_orders(exchange, market_id?) - すべてのオープン注文をキャンセルします。
  • fetch_order(exchange, order_id, market_id?) - 注文の詳細と約定状況を取得します。
  • fetch_open_orders(exchange, market_id?) - すべてのオープン注文を一覧表示します。

アカウント:

  • fetch_balance(exchange) - アカウント残高(USDC)を取得します。
  • fetch_positions(exchange, market_id?) - 現在のポジションと損益を取得します。
  • fetch_positions_for_market(exchange, market_id) - 特定の市場のポジションを取得します。
  • calculate_nav(exchange, market_id?) - 純資産価値(現金+ポジション)を計算します。

戦略管理:

  • create_strategy_session(strategy_type, exchange, market_id, ...) - バックグラウンドでマーケットメイキング戦略を開始します。
  • get_strategy_status(session_id) - 戦略のリアルタイムステータス(NAV、ポジション、デルタ)を取得します。
  • get_strategy_metrics(session_id) - パフォーマンスメトリクス(稼働時間、約定数)を取得します。
  • pause_strategy(session_id) - 実行中の戦略を一時停止します。
  • resume_strategy(session_id) - 一時停止した戦略を再開します。
  • stop_strategy(session_id, cleanup?) - 戦略を停止し、オプションで注文をキャンセルします。
  • list_strategy_sessions - アクティブな戦略セッションをすべて一覧表示します。

一般的なワークフロー

市場を見つけて分析する

  1. search_marketsをキーワードで使用して関連市場を見つけます。
  2. 結果から市場を選択し、そのidとmetadata.clobTokenIdsを確認します。
  3. get_orderbookをトークンIDで使用して、現在のbidとaskを確認します。
  4. get_best_bid_askで素早くスプレッドを確認します。

注文を出す

  1. search_marketsまたはfetch_markets_by_slugで市場を見つけます。
  2. fetch_balanceで利用可能な資金を確認します。
  3. get_orderbookで現在の価格を確認します。
  4. create_orderに市場ID、結果("Yes"または"No")、サイド("buy"または"sell")、価格(0~1)、サイズを指定して注文します。
  5. fetch_orderまたはfetch_open_ordersで監視します。

マーケットメイキング戦略を実行する

  1. search_marketsやfind_tradeable_marketで市場を見つけます。
  2. create_strategy_session(strategy_type="market_making", exchange, market_id)で開始します。
  3. get_strategy_statusとget_strategy_metricsで監視します。
  4. pause_strategy、resume_strategy、stop_strategyで制御します。

ポートフォリオを確認する

  1. fetch_balanceで現金残高を確認します。
  2. fetch_positionsですべてのオープンポジションと未実現損益を確認します。
  3. calculate_navでポートフォリオの合計価値(現金+ポジション)を計算します。

主要な概念

  • 価格は確率であり、0から1の範囲(排他的)です。価格0.65は市場が65%の確率を示していることを意味します。
  • 結果はバイナリ市場では通常"Yes"と"No"です。これらの価格の合計は約1になります。
  • トークンIDは各市場の結果に対する取引所固有の識別子です。オーダーブックのクエリに必要です。
  • スラッグは人間が読めるURL識別子(例:"trump-2024")で、PolymarketとLimitlessで使用されます。
  • 対応注文タイプ: GTC(Good-Til-Cancel)、FOK(Fill-Or-Kill)、IOC(Immediate-Or-Cancel)。

サンプルの実行

uv run python examples/list_all_markets.py polymarket
uv run python examples/spread_strategy.py --exchange polymarket --slug fed-decision
uv run python examples/spike_strategy.py -e opinion -m 813 --spike-threshold 0.02

データモデル

Marketフィールド: id、question、outcomes、prices、volume、liquidity、close_time、tick_size、description、metadata(slug、clobTokenIdsを含む)。

Orderフィールド: id、market_id、outcome、side(BUY/SELL)、price、size、filled、status(PENDING/OPEN/FILLED/CANCELLED)、time_in_force。

Positionフィールド: market_id、outcome、size、average_price、current_price。プロパティ: cost_basis、current_value、unrealized_pnl。

Orderbookフィールド: bids(価格、サイズ降順)、asks(価格、サイズ昇順)。プロパティ: best_bid、best_ask、mid_price、spread。

関連スキル