Openclaw Bot Prob Trade

v1.0.1

Autonomous trading bot for Polymarket via prob.trade. Run strategies, manage risk, scan markets. Requires the probtrade skill for API access.

1· 768· 3 versions· 0 current· 0 all-time· Updated 19h ago· MIT-0

Install

openclaw skills install openclaw-bot-prob-trade

probtrade-bot — Autonomous Polymarket Trading Bot

Autonomous trading bot that uses the probtrade skill to trade on Polymarket via prob.trade. Includes built-in risk management, pluggable strategies, and dry-run mode.

Requires: The probtrade skill must be installed and configured with API keys.

Setup

  1. Install and configure the probtrade skill first (API key required)
  2. Edit {baseDir}/config.yaml to set your strategy and risk limits
  3. By default, dry_run: true — the bot will only log, not trade

Commands

Run Bot

Start the autonomous trading loop. Scans markets and places orders every cycle.

python3 {baseDir}/scripts/bot.py run

Override strategy:

python3 {baseDir}/scripts/bot.py run --strategy pair_arb

Scan Markets

Run a single scan to see what the strategy would do, without placing orders.

python3 {baseDir}/scripts/bot.py scan

Bot Status

Check balance, positions, open orders, and risk state.

python3 {baseDir}/scripts/bot.py status

List Strategies

See all available strategies.

python3 {baseDir}/scripts/bot.py strategies

Built-in Strategies

  • momentum — Contrarian momentum / mean reversion. Buys markets where YES price dropped significantly in 24h, betting on reversion.
  • pair_arb — Async pair cost arbitrage. Finds markets where YES + NO price < $0.95, buys the cheaper side for guaranteed profit on resolution.

Creating Your Own Strategy

  1. Create a file in {baseDir}/lib/strategies/ (e.g. my_strategy.py)
  2. Implement a class that extends Strategy:
from lib.strategy_base import Strategy, Signal, get_yes_price, get_price_change

class MyStrategy(Strategy):
    name = "my_strategy"

    def initialize(self, config):
        self.threshold = config.get("my_param", 0.15)

    def scan(self, markets, positions, balance):
        signals = []
        for m in markets:
            if should_buy(m):
                signals.append(Signal(
                    market=m["condition_id"],
                    side="BUY", outcome="Yes",
                    order_type="LIMIT", amount=5,
                    price=get_yes_price(m),
                    confidence=0.8,
                    reason="My reason"
                ))
        return signals
  1. Set strategy: my_strategy in config.yaml
  2. Test: python3 {baseDir}/scripts/bot.py scan --strategy my_strategy

Risk Management

The bot enforces risk limits defined in config.yaml:

  • max_position_size: Maximum USDC per single order
  • max_daily_spend: Total USDC allowed per day
  • max_open_positions: Maximum concurrent positions
  • max_drawdown_pct: Circuit breaker — halts all trading if portfolio drops by this %
  • max_consecutive_losses: Circuit breaker trigger after N losses in a row

Environment Variables

Override config values via env vars:

  • DRY_RUN=true — force dry run mode
  • STRATEGY=pair_arb — override strategy
  • LOOP_INTERVAL=60 — override scan interval
  • PROBTRADE_SKILL_PATH=/path/to/probtrade/lib — custom path to probtrade skill lib

Output

All commands output structured data (JSON or formatted text) for easy parsing by AI agents.

Version tags

latestvk970f5ej9dmz4bzk6txxsk8djx81dgpg

Runtime requirements

🤖 Clawdis
Binspython3

Install

Install Python 3
Bins: python3
brew install python@3