Risk Management

Automated trading systems can amplify losses just as fast as they amplify gains. Without hard guardrails, a single misconfigured parameter or an unexpected market event can drain your wallet in hours. PolyBot ships with a layered risk system — the more layers you activate, the safer your capital.

Why Risk Management Matters

Human traders instinctively stop trading when they're on a bad streak. Automated bots don't have that instinct — they will keep firing signals at the same rate whether they're up 20% or down 20%. The risk management layer in PolyBot is what gives the bot that "stop and think" behaviour that prevents a bad afternoon from becoming a catastrophic loss.

The system is designed around three principles:

Trading Modes: Paper → Dry-Run → Live

PolyBot enforces a progression through three distinct modes. You should not skip Paper Mode.

Paper Mode

Simulated Trading

Real signals, real market data — but completely fake money. No API calls to Polymarket's order placement endpoint. Perfect for validating your config and watching the bot's behaviour for 1–2 weeks before risking real capital.

Dry-Run Mode

Real Calls, No Orders

PolyBot makes real authenticated API calls (reads order books, authenticates with your keys) but does not submit any orders. Use this for 24–48 hours to confirm your API credentials work and the bot's routing logic is correct.

Live Mode

Real Money

Orders are submitted to the CLOB. Only activate after 50+ paper trades with positive expectancy and at least one clean Dry-Run session. Start with minimum position sizes.

# Set trading mode in config.yml
global:
  trading_mode: paper      # Options: paper | dry_run | live
  paper_starting_balance: 1000  # Virtual USDC for Paper Mode simulation
Recommendation: Run Paper Mode for a minimum of 1–2 weeks (not days). Markets change week to week and your paper results across multiple market types are more reliable than a 3-day sample. Aim for at least 50 resolved paper trades before switching to Dry-Run.

Copy Bot Protections

Sports Bet Filter

Sports markets on Polymarket are statistically the hardest to predict and have the highest variance. The Sports Bet Filter blocks the Copy Bot from mirroring any position in markets tagged with the sports category unless you explicitly allowlist specific sport types.

Low Liquidity Guard

If the total available liquidity on either side of a market's order book is below min_book_depth_usdc, the Copy Bot skips the trade. Thin markets mean large slippage and the risk of being unable to exit. Default threshold is $200 USDC on each side.

Max Position Cap

Sets the maximum USDC value of any single open position. Even if proportional sizing would suggest a larger bet, the bot never exceeds this cap. This is your most important single-trade guard.

Daily Loss Limit

The most critical circuit breaker. If total realised losses on the current calendar day (UTC) exceed daily_loss_limit_usdc, the bot enters a paused state and stops placing new trades. It sends an immediate Telegram alert. The bot remains paused until midnight UTC (when the daily counter resets) or until you manually resume via the dashboard.

copy_bot:
  sports_bet_filter: true
  sports_allowlist: []          # e.g. ["esports"] to allow specific types
  min_book_depth_usdc: 200      # Skip markets with < $200 USDC per side
  max_position_usdc: 100        # Hard cap per single trade
  daily_loss_limit_usdc: 50     # Pause if day losses exceed $50
  near_expiry_block_minutes: 30 # No new trades on markets expiring < 30 min
  extreme_price_guard: true     # Block trades above 0.95 or below 0.05
  instant_cashout: false        # Auto-sell if position drops 40% from entry
  wallet_blacklist: []          # List of wallet addresses to never copy