Communitygithub.com

guzus/dr-manhattan

Échangez sur les marchés de prédiction (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) via une API unifiée de type CCXT. Utilisez cette compétence lorsque l'utilisateur souhaite parcourir, rechercher ou échanger sur des marchés de prédiction, vérifier ses soldes et positions, gérer ses ordres, exécuter des stratégies de market-making ou comparer les prix entre différentes plateformes.

Qu'est-ce que dr-manhattan ?

Dr. Manhattan est une API unifiée pour les marchés de prédiction, similaire à CCXT pour les échanges de cryptomonnaies. Elle prend en charge Polymarket, Kalshi, Opinion, Limitless et Predict.fun via une interface unique. Elle est utile pour les développeurs et les agents IA qui souhaitent interagir avec plusieurs plateformes de marchés de prédiction sans gérer des API séparées pour chacune. La compétence expose des outils pour découvrir des marchés, consulter les carnets d'ordres, passer des ordres, gérer les positions et exécuter des stratégies de market-making en arrière-plan. Elle peut être utilisée comme bibliothèque Python ou via un serveur MCP pour une intégration avec Claude Code.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add guzus/dr-manhattan

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Dr. Manhattan - Trading sur Marchés de Prédiction

Dr. Manhattan est une API unifiée pour les marchés de prédiction, similaire à CCXT pour les échanges de cryptomonnaies. Elle prend en charge Polymarket, Kalshi, Opinion, Limitless et Predict.fun via une interface unique.

Installation

Installez les dépendances avec uv :

uv venv && uv pip install -e .

Pour le serveur MCP (intégration Claude) :

uv sync --extra mcp

Plateformes prises en charge

PlateformeChaîne/TypeAuthentification
PolymarketPolygonClé privée + adresse du financeur
KalshiCEX réguléClé API + clé privée RSA
OpinionBNB ChainClé API + clé privée + adresse multi-sig
LimitlessBaseClé privée
Predict.funBNB ChainClé API + clé privée (EOA ou wallet intelligent)

Utilisation comme bibliothèque Python

Lecture seule (sans identifiants)

import dr_manhattan

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

Avec authentification

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'}
)

Fabrique d'échanges

from dr_manhattan import create_exchange, list_exchanges

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

Utilisation via le serveur MCP

Dr. Manhattan expose toutes ses capacités de trading sous forme d'outils MCP. Configurez dans Claude Code (~/.claude/settings.json ou .mcp.json) :

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

Référence des outils MCP

Outils d'échange :

  • list_exchanges - Liste tous les marchés de prédiction disponibles.
  • get_exchange_info(exchange) - Obtient les métadonnées et les capacités d'un échange.
  • validate_credentials(exchange) - Vérifie si les identifiants sont valides sans trader.

Découverte de marchés :

  • search_markets(exchange, query) - Recherche des marchés par mot-clé. C'est le moyen le plus rapide de trouver des marchés sur un sujet.
  • fetch_markets(exchange, limit?, offset?) - Récupère tous les marchés avec pagination.
  • fetch_market(exchange, market_id) - Récupère un marché spécifique par son ID.
  • fetch_markets_by_slug(exchange, slug) - Récupère les marchés par slug ou URL (Polymarket, Limitless).
  • find_tradeable_market(exchange, binary?, limit?, min_liquidity?) - Trouve un marché adapté au trading.
  • find_crypto_hourly_market(exchange, token_symbol?) - Trouve les marchés de prix horaires crypto (Polymarket).
  • fetch_token_ids(exchange, market_id) - Obtient les IDs de token pour un marché.
  • parse_market_identifier(identifier) - Extrait le slug d'une URL Polymarket.
  • get_tag_by_slug(slug) - Obtient les informations de tag Polymarket.

Carnet d'ordres :

  • get_orderbook(exchange, token_id) - Obtient le carnet d'ordres complet (offres et demandes).
  • get_best_bid_ask(exchange, token_id) - Obtient les meilleures offres et demandes.

Trading :

  • create_order(exchange, market_id, outcome, side, price, size) - Passe un ordre d'achat ou de vente. Le prix est entre 0 et 1 (probabilité). Side est "buy" ou "sell".
  • cancel_order(exchange, order_id, market_id?) - Annule un ordre spécifique.
  • cancel_all_orders(exchange, market_id?) - Annule tous les ordres ouverts.
  • fetch_order(exchange, order_id, market_id?) - Obtient les détails d'un ordre et son état de remplissage.
  • fetch_open_orders(exchange, market_id?) - Liste tous les ordres ouverts.

Compte :

  • fetch_balance(exchange) - Obtient le solde du compte (USDC).
  • fetch_positions(exchange, market_id?) - Obtient les positions actuelles avec PnL.
  • fetch_positions_for_market(exchange, market_id) - Obtient les positions pour un marché spécifique.
  • calculate_nav(exchange, market_id?) - Calcule la valeur nette d'actif (liquide + positions).

Gestion de stratégies :

  • create_strategy_session(strategy_type, exchange, market_id, ...) - Démarre une stratégie de market-making en arrière-plan.
  • get_strategy_status(session_id) - Obtient le statut en temps réel de la stratégie (NAV, positions, delta).
  • get_strategy_metrics(session_id) - Obtient les métriques de performance (uptime, exécutions).
  • pause_strategy(session_id) - Met en pause une stratégie en cours.
  • resume_strategy(session_id) - Reprend une stratégie mise en pause.
  • stop_strategy(session_id, cleanup?) - Arrête une stratégie et annule éventuellement les ordres.
  • list_strategy_sessions - Liste toutes les sessions de stratégie actives.

Flux de travail courants

Trouver et Analyser un Marché

  1. Utilisez search_markets avec un mot-clé pour trouver des marchés pertinents.
  2. Choisissez un marché parmi les résultats et notez son id et metadata.clobTokenIds.
  3. Utilisez get_orderbook avec un ID de token pour voir les offres et demandes actuelles.
  4. Utilisez get_best_bid_ask pour une vérification rapide de l'écart.

Passer un Ordre

  1. Trouvez le marché avec search_markets ou fetch_markets_by_slug.
  2. Vérifiez fetch_balance pour confirmer les fonds disponibles.
  3. Consultez le carnet d'ordres avec get_orderbook pour voir les prix actuels.
  4. Utilisez create_order avec l'ID du marché, le résultat ("Yes" ou "No"), le côté ("buy" ou "sell"), le prix (0-1) et la taille.
  5. Surveillez avec fetch_order ou fetch_open_orders.

Exécuter une Stratégie de Market-Making

  1. Trouvez un marché avec search_markets ou find_tradeable_market.
  2. Démarrez avec create_strategy_session(strategy_type="market_making", exchange, market_id).
  3. Surveillez avec get_strategy_status et get_strategy_metrics.
  4. Contrôlez avec pause_strategy, resume_strategy ou stop_strategy.

Consulter son Portefeuille

  1. fetch_balance pour voir le liquide.
  2. fetch_positions pour voir toutes les positions ouvertes avec le PnL non réalisé.
  3. calculate_nav pour la valeur totale du portefeuille (liquide + positions).

Concepts clés

  • Les prix sont des probabilités allant de 0 à 1 (exclusif). Un prix de 0,65 signifie que le marché implique une probabilité de 65%.
  • Les résultats sont généralement "Yes" et "No" pour les marchés binaires. Leurs prix totalisent environ 1.
  • Les IDs de token sont des identifiants spécifiques à chaque plateforme pour chaque résultat d'un marché. Nécessaires pour les requêtes de carnet d'ordres.
  • Les slugs sont des identifiants URL lisibles (par exemple, "trump-2024") utilisés par Polymarket et Limitless.
  • Types d'ordres pris en charge : GTC (valable jusqu'à annulation), FOK (tout ou rien), IOC (immédiat ou annulation).

Exemples d'exécution

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

Modèles de données

Marché champs : id, question, outcomes, prices, volume, liquidity, close_time, tick_size, description, metadata (contient slug, clobTokenIds).

Ordre champs : id, market_id, outcome, side (BUY/SELL), price, size, filled, status (PENDING/OPEN/FILLED/CANCELLED), time_in_force.

Position champs : market_id, outcome, size, average_price, current_price. Propriétés : cost_basis, current_value, unrealized_pnl.

Carnet d'ordres champs : bids (prix, taille décroissante), asks (prix, taille croissante). Propriétés : best_bid, best_ask, mid_price, spread.

Skills associés