Polymarket Trading 是一个可自我演进的 Polymarket 交易机器人技能,用于与用户共同设计交易策略、运行自动化模拟交易、在表现不佳时自动优化参数,并在达到目标优势(edge)后请求用户确认切换到实盘。
【用途】 该技能面向希望在 Polymarket 上运行自动化交易策略的用户。它不预设任何市场,而是先与用户对话,明确想交易的市场类型(政治、体育、加密货币价格、科学、娱乐等)以及关注的关键词,再据此提出具体策略参数。
【主要能力】
- 与用户共同设计策略:根据对话推导并提出具体参数值,等待用户确认后才执行。
- 自动化纸面交易(dry-run):默认开启,仅在用户明确确认后才切换实盘。
- 自动改进:当策略表现不达标时,静默调整参数并通知用户。改进规则包括:edge 低于 min_edge 超过 10% 时提高阈值(更少但更强的信号);edge 低于 min_edge 3% 时降低 max_entry_price(更便宜的入场价);调整 3 次以上仍失败则通知用户重新考虑;当 edge >= min_edge 且 pnl > 0 时标记为 pending_live 并通知用户。
- 支持多用户:每个用户拥有独立的 credentials/{USER_ID}.json,包含 private_key、funder_address、dry_run 字段;调用脚本时需设置 USER_ID 或 TELEGRAM_USER_ID 环境变量,也可设置 POLYMARKET_PRIVATE_KEY 环境变量。
- 信号方法:目前支持 orderbook_imbalance,适用于任何订单簿活跃的流动市场;新方法可添加到 scripts/signals.py。
【使用方式】
- 检查凭证:USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/polymarket.py check;若未配置则运行 python3 {baseDir}/scripts/polymarket.py setup 进行交互式设置。
- 询问用户想交易的市场类型和关键词,不假设。
- 提出策略并等待确认(在确认前不执行任何操作)。
- 确认后创建策略,示例命令: USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py create --json '{ "name": "<strategy name>", "market_filter": { "keywords": ["<keywords>"], "min_liquidity_usdc": 1000, "max_days_to_expiry": 30, "min_days_to_expiry": 1 }, "signal": { "method": "orderbook_imbalance", "params": { "threshold": 0.15, "max_entry_price": 0.60 } }, "sizing": { "max_size_usdc": 5 }, "targets": { "min_sample_size": 30, "min_edge": 0.05 } }'
- 设置定时任务:
- 信号扫描:每 15 分钟运行一次 signal_cron.py。
- 表现回顾:每天 UTC 09:00 运行 review_cron.py。 命令示例: (crontab -l 2>/dev/null; echo "*/15 * * * * USER_ID=$TELEGRAM_USER_ID python3 $SKILL_PATH/scripts/signal_cron.py $STRATEGY_ID >> $SKILL_PATH/state/$TELEGRAM_USER_ID.$STRATEGY_ID.log 2>&1") | crontab - (crontab -l 2>/dev/null; echo "0 9 * * * USER_ID=$TELEGRAM_USER_ID python3 $SKILL_PATH/scripts/review_cron.py $STRATEGY_ID >> $SKILL_PATH/state/$TELEGRAM_USER_ID.review.log 2>&1") | crontab -
策略管理命令: USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py status USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py review <strategy_id> USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py activate-live <strategy_id>
【策略生命周期】 dry_run → improving → pending_live → live。上线条件:edge = win_rate - avg_entry_price >= min_edge 且 total_pnl > 0。
【适用场景】
- 想对 Polymarket 政治、体育、加密货币价格、科学、娱乐等市场进行自动化交易的用户。
- 希望先以模拟方式验证策略、再决定是否投入实盘的用户。
【限制与注意事项】
- 绝不默认指定任何市场,必须由用户指定。
- 绝不展示编造的价格或信号,只使用真实脚本输出。
- DRY RUN 默认开启,只有用户明确确认后才切换实盘。
- 未经用户明确确认,不得创建策略或设置定时任务。
- 自动改进过程静默进行,但会通知用户。
- 需安装 py-clob-client(pip3 install py-clob-client);USER_ID 未设置需添加前缀;无配置需运行 setup;API 401 错误需重新运行 setup 重新派生密钥;找不到市场时可放宽关键词或降低 min_liquidity_usdc。
【文件结构】 polymarket-trading/ 包含 SKILL.md、scripts/(strategy_manager.py、signal_cron.py、review_cron.py、signals.py、market_scanner.py、polymarket.py)、credentials/{USER_ID}.json、strategies/{USER_ID}/{strategy_id}.json、state/{USER_ID}.{strategy_id}.perf.json。