360 Secure SkillHub
360 安全技能中心

polymarket-sdk

基于 polymarket-us Python SDK 与 Polymarket US 预测市场交互:搜索和浏览市场、查看价格与隐含概率、查询账户余额和持仓、预览并下单或撤单。公开数据无需认证,交易与组合端点需配置 API 密钥;下单前须预览并经用户确认。

tyhouch
tyhouch
热度 81.82
最近更新 2026-05-11 17:26:00
分类:自动化依赖:代码执行 / 第三方 API / 读写文件应用场景:财务 / 市场分析 / 研究

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add polymarket-sdk
Metadata
name
polymarket
description
Interact with Polymarket US prediction markets. Use when the user wants to: browse/search prediction markets, check market prices and odds, view portfolio positions and balances, place or cancel trades, check order status, look up events or sports markets, or get market settlement info. Requires the polymarket-us Python package and optionally API keys for trading.

Polymarket US

Trade and browse prediction markets via the Polymarket US API using the Python SDK.

Setup

Ensure the SDK is installed:

pip install polymarket-us

API keys are needed only for trading/portfolio endpoints. Generate at https://polymarket.us/developer

Store credentials as environment variables:

  • POLYMARKET_KEY_ID — API key UUID
  • POLYMARKET_SECRET_KEY — Ed25519 private key (base64)

Usage

Write and execute Python scripts using the polymarket_us SDK. For full API details, read references/api_reference.md.

Public Data (no auth)

from polymarket_us import PolymarketUS
client = PolymarketUS()

# Search markets
results = client.search.query({"query": "bitcoin", "limit": 5})

# Browse trending markets
markets = client.markets.list({"limit": 10, "orderBy": ["volumeNum"], "orderDirection": "desc"})

# Check price
bbo = client.markets.bbo("market-slug")

client.close()

Trading (auth required)

import os
from polymarket_us import PolymarketUS

client = PolymarketUS(
    key_id=os.environ["POLYMARKET_KEY_ID"],
    secret_key=os.environ["POLYMARKET_SECRET_KEY"],
)

# Check balance
balances = client.account.balances()

# View positions
positions = client.portfolio.positions()

# Preview then place order
preview = client.orders.preview({"request": {
    "marketSlug": "some-market",
    "intent": "ORDER_INTENT_BUY_LONG",
    "type": "ORDER_TYPE_LIMIT",
    "price": {"value": "0.55", "currency": "USD"},
    "quantity": 100,
}})

# Place order (ALWAYS confirm with user before executing)
order = client.orders.create({
    "marketSlug": "some-market",
    "intent": "ORDER_INTENT_BUY_LONG",
    "type": "ORDER_TYPE_LIMIT",
    "price": {"value": "0.55", "currency": "USD"},
    "quantity": 100,
    "tif": "TIME_IN_FORCE_GOOD_TILL_CANCEL",
})

client.close()

Key Rules

  1. Always preview orders before placing — show the user what they're about to trade
  2. Always confirm with the user before placing any order — never auto-trade
  3. Price is always the YES side — to buy NO at $0.40, set price to $0.60 (1.00 - 0.40)
  4. In market slugs: first team = YES, second team = NO
  5. Valid price range: 0.001 to 0.999
  6. Handle errors gracefully — catch AuthenticationError, BadRequestError, RateLimitError, etc.

Formatting Results

When presenting market data to the user:

  • Show market title/question clearly
  • Display YES/NO prices as percentages (e.g., 55¢ = 55% implied probability)
  • For positions, show P&L and current value
  • Keep it conversational — this is prediction markets, make it fun