catalog/repos/agent-next--polymarket-paper-trader.md

9.0 KiB
Raw Blame History

Polymarket模拟交易

量化交易 AI代理 模拟交易 预测市场 MCP

polymarket-paper-trader

PyPI Tests ClawHub License: MIT

你的 AI 代理现在成为了 Polymarket 交易员。

安装 → 代理获得 $10,000 虚拟资金 → 在真实 Polymarket 订单簿上交易 → 追踪盈亏 → 参与公开排行榜竞争。零风险,真实价格。

"我的 AI 代理在 Polymarket 一周内实现了 +18% 的投资回报率。零风险,真实订单簿。"

隶属于 agent-next —— 自主进化智能代理开源研究实验室。

60 秒演示

npx clawhub install polymarket-paper-trader    # 通过 ClawHub 安装
pm-trader init --balance 10000                 # $10k 虚拟资金
pm-trader markets search "bitcoin"             # 搜索市场
pm-trader buy will-bitcoin-hit-100k yes 500    # 买入 $500 的 YES
pm-trader stats --card                         # 生成可分享的统计卡片

就这些。你的 AI 代理现在可以零风险地在 Polymarket 上交易了。

安装

# 通过 pip
pip install polymarket-paper-trader

# 通过 ClawHub适用于 OpenClaw 代理)
npx clawhub install polymarket-paper-trader

# 从源码安装(开发模式)
uv pip install -e ".[dev]"

需要 Python 3.10+。

不是玩具——这是真实的交易所模拟器

其他工具使用模拟价格或随机数。我们模拟真实交易所:

  • 逐档订单簿撮合 —— 你的订单逐档消耗真实 Polymarket 买/卖盘的流动性,与真实交易完全一致
  • 精确手续费模型 —— bps/10000 × min(价格, 1-价格) × 份数 —— 与 Polymarket 官方公式相同
  • 滑点追踪 —— 每笔交易记录实际成交价与中间价的偏差(以基点计)
  • 限价单状态机 —— 支持 GTC长期有效和 GTD定期有效的完整生命周期管理
  • 策略回测 —— 将策略在历史价格快照上重放验证
  • 多结果市场 —— 不仅限于 YES/NO 二元,支持任意数量的结果

你的虚拟盈亏与真实盈亏的差距不超过买卖价差。这正是本工具的意义所在。

快速开始

# 初始化 $10k 虚拟账户
pm-trader init --balance 10000

# 浏览市场
pm-trader markets list --sort liquidity
pm-trader markets search "bitcoin"

# 交易
pm-trader buy will-bitcoin-hit-100k yes 100      # 买入 $100 的 YES
pm-trader sell will-bitcoin-hit-100k yes 50       # 卖出 50 份

# 查看持仓和盈亏
pm-trader portfolio
pm-trader stats

CLI 命令

命令 说明
init [--balance N] 创建虚拟交易账户
balance 显示现金、持仓价值和总盈亏
reset --confirm 清除所有数据
markets list [--limit N] [--sort volume|liquidity] 浏览活跃市场
markets search QUERY 全文搜索市场
markets get SLUG 查看市场详情
price SLUG YES/NO 中间价和价差
book SLUG [--depth N] 订单簿快照
watch SLUG [SLUG...] [--outcome yes|no] 监控实时价格
buy SLUG OUTCOME AMOUNT [--type fok|fak] 以市价买入
sell SLUG OUTCOME SHARES [--type fok|fak] 以市价卖出
portfolio 含实时价格的持仓列表
history [--limit N] 交易历史
orders place SLUG OUTCOME SIDE AMOUNT PRICE 下限价单
orders list 待成交限价单
orders cancel ID 取消限价单
orders check 对照实时价格撮合限价单
stats [--card|--tweet|--plain] 胜率、ROI、利润、最大回撤
leaderboard 本地账户排行榜
pk ACCOUNT_A ACCOUNT_B 对战:谁是更好的交易员?
export trades [--format csv|json] 导出交易历史
export positions [--format csv|json] 导出持仓
benchmark run MODULE.FUNC 运行交易策略
benchmark compare ACCT1 ACCT2 对比账户表现
benchmark pk STRAT_A STRAT_B 对战:谁的策略更强?
accounts list 列出所有命名账户
accounts create NAME 创建用于 A/B 测试的账户
mcp 启动 MCP 服务器stdio 传输)

全局参数:--data-dir PATH--account NAME(或环境变量 PM_TRADER_DATA_DIRPM_TRADER_ACCOUNT)。

MCP 服务器——你的代理能做什么

你的代理通过 Model Context Protocol 获得 26 个工具:

pm-trader-mcp  # 在 stdio 上启动

添加到你的 Claude Code 配置:

{
  "mcpServers": {
    "polymarket-paper-trader": {
      "command": "pm-trader-mcp"
    }
  }
}

MCP 工具

工具 功能说明
init_account 创建虚拟账户并设置初始余额
get_balance 现金、持仓价值和总盈亏
reset_account 清除所有数据,重新开始
search_markets 按关键词搜索市场
list_markets 按交易量/流动性排序浏览市场
get_market 含结果和价格的市场详情
get_order_book 实时订单簿快照(买盘+卖盘)
watch_prices 监控多个市场的价格
buy 以最优价格买入份额
sell 以最优价格卖出份额
portfolio 含实时估值和盈亏的持仓列表
history 含执行详情的近期交易记录
place_limit_order 限价单——保持挂单直至成交、取消或到期
list_orders 待成交限价单
cancel_order 取消待成交订单
check_orders 对照实时价格执行待成交订单
stats 胜率、ROI、利润、最大回撤
resolve 结算已关闭市场(获胜方每份获 $1
resolve_all 结算所有已关闭市场
backtest 在历史快照上回测策略
stats_card 可分享的统计卡片(推文/Markdown/纯文本)
share_content 平台专属内容Twitter/Telegram/Discord
leaderboard_entry 生成可验证的排行榜提交记录
leaderboard_card 所有本地账户的 Top 10 排行卡片
pk_card 两个账户的头对头对比
pk_battle 两个策略头对头运行并自动对比

策略示例

examples/ 目录中提供三个即用策略:

动量策略(examples/momentum.py

当 YES 价格突破 0.55 时买入0.70 时止盈0.35 时止损。

pm-trader benchmark run examples.momentum.run

均值回归策略(examples/mean_reversion.py

当 YES 价格跌至公允价值 0.50 以下 12+ 美分时买入,回归时卖出。

pm-trader benchmark run examples.mean_reversion.run

网格限价策略(examples/limit_grid.py

在当前价格下方布置网格限价买单,并在上方设置止盈卖单。

pm-trader benchmark run examples.limit_grid.run

编写自己的策略

# my_strategy.py
from pm_trader.engine import Engine

def run(engine: Engine) -> None:
    """你的策略接收一个完全初始化的 Engine 对象。"""
    markets = engine.api.search_markets("crypto")
    for market in markets:
        if market.closed or market.yes_price < 0.3:
            continue
        engine.buy(market.slug, "yes", 100.0)
pm-trader benchmark run my_strategy.run

使用历史数据进行回测:

def backtest_strategy(engine, snapshot, prices):
    """每个历史价格快照调用一次。"""
    if snapshot.midpoint > 0.6:
        engine.buy(snapshot.market_slug, snapshot.outcome, 50.0)

多账户支持

使用隔离账户并行运行多个策略:

pm-trader --account aggressive init --balance 5000
pm-trader --account conservative init --balance 5000

pm-trader --account aggressive buy some-market yes 500
pm-trader --account conservative buy some-market yes 100

pm-trader benchmark compare aggressive conservative

分享你的成绩

生成可分享的统计卡片并发布到 X/Twitter

pm-trader stats --tweet    # X/Twitter 优化格式
pm-trader stats --card     # Telegram/Discord 的 Markdown 格式
pm-trader stats --plain    # 纯文本格式

AI 代理可使用 stats_card MCP 工具自动生成并分享卡片。

OpenClaw / ClawHub

已在 ClawHub 上以 polymarket-paper-trader 名称发布:

npx clawhub install polymarket-paper-trader

测试

pytest -m "not live"             # 单元测试 + 集成测试(跳过实时 API 测试)
pytest                           # 完整测试套件(需要网络)
pytest tests/test_e2e_live.py    # 仅实时 API 集成测试

许可证

MIT