Communitygithub.com

guzus/dr-manhattan

Handeln mit Vorhersagemärkten (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) über eine einheitliche CCXT-ähnliche API. Verwenden Sie dies, wenn der Benutzer Vorhersagemärkte durchsuchen, suchen oder handeln, Kontostände und Positionen prüfen, Aufträge verwalten, Market-Making-Strategien ausführen oder Preise zwischen Börsen vergleichen möchte.

Was ist dr-manhattan?

Dr. Manhattan ist eine einheitliche API für Vorhersagemärkte, ähnlich wie CCXT für Kryptowährungsbörsen. Sie ermöglicht den Zugriff auf Polymarket, Kalshi, Opinion, Limitless und Predict.fun über eine einzige Schnittstelle und unterstützt sowohl lesende als auch schreibende Operationen. Das Tool eignet sich ideal für Entwickler, die KI-Agenten (z. B. Claude Code) erstellen, die Vorhersagemärkte durchsuchen, handeln, Market-Making-Strategien ausführen und Portfoliowerte überwachen müssen. Es bietet umfassende Funktionalität: Marktsuche, Orderbuchabfragen, Orderverwaltung, Kontostandsabfragen und Positionsverfolgung. Zusätzlich unterstützt es automatisierte Market-Making-Strategien, die im Hintergrund laufen, sowie die Integration über ein MCP-Protokoll (Model Context Protocol) für nahtlose Nutzung in Claude Code und anderen kompatiblen KI-Assistenten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add guzus/dr-manhattan

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Dr. Manhattan – Handel mit Vorhersagemärkten

Dr. Manhattan ist eine einheitliche API für Vorhersagemärkte, ähnlich wie CCXT für Kryptowährungsbörsen. Es unterstützt Polymarket, Kalshi, Opinion, Limitless und Predict.fun über eine einzige Schnittstelle.

Einrichtung

Abhängigkeiten mit uv installieren:

uv venv && uv pip install -e .

Für den MCP-Server (Claude-Integration):

uv sync --extra mcp

Unterstützte Börsen

BörseChain/TypAuthentifizierung
PolymarketPolygonPrivater Schlüssel + Funder-Adresse
KalshiRegulierte CEXAPI-Schlüssel + RSA-Privatschlüssel
OpinionBNB ChainAPI-Schlüssel + privater Schlüssel + Multi-Sig-Adresse
LimitlessBasePrivater Schlüssel
Predict.funBNB ChainAPI-Schlüssel + privater Schlüssel (EOA oder Smart-Wallet)

Verwendung als Python-Bibliothek

Nur Lesezugriff (ohne Anmeldedaten)

import dr_manhattan

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

Mit Authentifizierung

import dr_manhattan

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

order = polymarket.create_order(
    markt_id="markt_123",
    ergebnis="Ja",
    seite=dr_manhattan.OrderSide.KAUFEN,
    preis=0.65,
    größe=100,
    params={'token_id': 'token_id'}
)

Börsenfabrik

from dr_manhattan import create_exchange, list_exchanges

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

Verwendung über den MCP-Server

Dr. Manhattan stellt alle Handelsfunktionen als MCP-Tools bereit. Konfiguration in Claude Code (~/.claude/settings.json oder .mcp.json):

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

Referenz der MCP-Tools

Börsen-Tools:

  • list_exchanges – Alle verfügbaren Vorhersagemarkt-Börsen auflisten.
  • get_exchange_info(exchange) – Metadaten und Fähigkeiten einer Börse abrufen.
  • validate_credentials(exchange) – Prüfen, ob Anmeldedaten gültig sind, ohne zu handeln.

Markterkundung:

  • search_markets(exchange, query) – Märkte nach Stichwort durchsuchen. Dies ist der schnellste Weg, um Märkte zu einem Thema zu finden.
  • fetch_markets(exchange, limit?, offset?) – Alle Märkte mit Paginierung abrufen.
  • fetch_market(exchange, market_id) – Einen bestimmten Markt anhand seiner ID abrufen.
  • fetch_markets_by_slug(exchange, slug) – Märkte anhand des Slugs oder der URL abrufen (Polymarket, Limitless).
  • find_tradeable_market(exchange, binary?, limit?, min_liquidity?) – Einen geeigneten Markt zum Handeln finden.
  • find_crypto_hourly_market(exchange, token_symbol?) – Stündliche Krypto-Preismärkte finden (Polymarket).
  • fetch_token_ids(exchange, market_id) – Token-IDs für einen Markt abrufen.
  • parse_market_identifier(identifier) – Slug aus einer Polymarket-URL extrahieren.
  • get_tag_by_slug(slug) – Polymarket-Tag-Informationen abrufen.

Orderbuch:

  • get_orderbook(exchange, token_id) – Vollständiges Orderbuch (Gebote und Angebote) abrufen.
  • get_best_bid_ask(exchange, token_id) – Beste Geld- und Briefkurse abrufen.

Handel:

  • create_order(exchange, market_id, outcome, side, price, size) – Eine Kauf- oder Verkaufsorder aufgeben. Der Preis liegt zwischen 0 und 1 (Wahrscheinlichkeit). Die Seite ist "buy" oder "sell".
  • cancel_order(exchange, order_id, market_id?) – Eine bestimmte Order stornieren.
  • cancel_all_orders(exchange, market_id?) – Alle offenen Orders stornieren.
  • fetch_order(exchange, order_id, market_id?) – Details und Ausführungsstatus einer Order abrufen.
  • fetch_open_orders(exchange, market_id?) – Alle offenen Orders auflisten.

Konto:

  • fetch_balance(exchange) – Kontostand abrufen (USDC).
  • fetch_positions(exchange, market_id?) – Aktuelle Positionen mit Gewinn/Verlust abrufen.
  • fetch_positions_for_market(exchange, market_id) – Positionen für einen bestimmten Markt abrufen.
  • calculate_nav(exchange, market_id?) – Nettoinventarwert berechnen (Bargeld + Positionen).

Strategieverwaltung:

  • create_strategy_session(strategy_type, exchange, market_id, ...) – Eine Market-Making-Strategie im Hintergrund starten.
  • get_strategy_status(session_id) – Echtzeit-Status einer Strategie abrufen (NAV, Positionen, Delta).
  • get_strategy_metrics(session_id) – Leistungskennzahlen abrufen (Betriebszeit, Ausführungen).
  • pause_strategy(session_id) – Eine laufende Strategie pausieren.
  • resume_strategy(session_id) – Eine pausierte Strategie fortsetzen.
  • stop_strategy(session_id, cleanup?) – Eine Strategie beenden und optional Orders stornieren.
  • list_strategy_sessions – Alle aktiven Strategie-Sitzungen auflisten.

Häufige Arbeitsabläufe

Einen Markt finden und analysieren

  1. Verwenden Sie search_markets mit einem Stichwort, um relevante Märkte zu finden.
  2. Wählen Sie einen Markt aus den Ergebnissen aus und notieren Sie sich seine id und metadata.clobTokenIds.
  3. Verwenden Sie get_orderbook mit einer Token-ID, um aktuelle Geld- und Briefkurse zu sehen.
  4. Verwenden Sie get_best_bid_ask für eine schnelle Spread-Überprüfung.

Einen Trade platzieren

  1. Finden Sie den Markt mit search_markets oder fetch_markets_by_slug.
  2. Prüfen Sie mit fetch_balance die verfügbaren Mittel.
  3. Rufen Sie mit get_orderbook das Orderbuch ab, um die aktuellen Kurse zu sehen.
  4. Verwenden Sie create_order mit der Markt-ID, dem Ergebnis („Yes“ oder „No“), der Seite („buy“ oder „sell“), dem Preis (0–1) und der Größe.
  5. Überwachen Sie die Order mit fetch_order oder fetch_open_orders.

Eine Market-Making-Strategie ausführen

  1. Finden Sie einen Markt mit search_markets oder find_tradeable_market.
  2. Starten Sie mit create_strategy_session(strategy_type="market_making", exchange, market_id).
  3. Überwachen Sie mit get_strategy_status und get_strategy_metrics.
  4. Steuern Sie mit pause_strategy, resume_strategy oder stop_strategy.

Portfolio prüfen

  1. fetch_balance für das Bargeld.
  2. fetch_positions für alle offenen Positionen mit nicht realisiertem Gewinn/Verlust.
  3. calculate_nav für den gesamten Portfoliowert (Bargeld + Positionen).

Schlüsselkonzepte

  • Preise sind Wahrscheinlichkeiten im Bereich von 0 bis 1 (exklusive). Ein Preis von 0,65 bedeutet, dass der Markt eine Wahrscheinlichkeit von 65 % impliziert.
  • Ergebnisse sind bei binären Märkten typischerweise „Yes“ und „No“. Ihre Preise summieren sich auf etwa 1.
  • Token-IDs sind börsenspezifische Kennungen für jedes Ergebnis eines Marktes. Sie werden für Orderbuchabfragen benötigt.
  • Slugs sind für Menschen lesbare URL-Kennungen (z. B. „trump-2024“), die von Polymarket und Limitless verwendet werden.
  • Unterstützte Ordertypen: GTC (Good-Til-Cancel), FOK (Fill-Or-Kill), IOC (Immediate-Or-Cancel).

Beispiele ausführen

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

Datenmodelle

Markt-Felder: id, question, outcomes, prices, volume, liquidity, close_time, tick_size, description, metadata (enthält slug, clobTokenIds).

Order-Felder: id, market_id, outcome, side (KAUFEN/VERKAUFEN), price, size, filled, status (AUSSTEHEND/OFFEN/AUSGEFÜHRT/STORNIERT), time_in_force.

Position-Felder: market_id, outcome, size, average_price, current_price. Eigenschaften: cost_basis, current_value, unrealized_pnl.

Orderbuch-Felder: bids (Preis, Größe absteigend), asks (Preis, Größe aufsteigend). Eigenschaften: best_bid, best_ask, mid_price, spread.

Verwandte Skills