Skip to main content

Virtual → Live Migration

PolySimulator is designed so your entire bot codebase works unchanged when switching from virtual (paper) trading to live (real-money) trading on Polymarket.

Comparison

Live mode executes real trades with real money on Polymarket. Ensure your strategy is thoroughly tested in virtual mode before migrating.

Migration Steps

1

Test thoroughly in virtual mode

Run your bot through multiple market cycles. Verify:
  • Order placement works correctly
  • Error handling covers all edge cases
  • P&L tracking is accurate
  • WebSocket reconnection is stable
2

Get Polymarket API credentials

Polymarket uses two-layer authentication — both are required for live trading:L1 (wallet-level): Your Polygon wallet’s private key signs an EIP-712 message to derive L2 credentials. Each order also requires an EIP-712 signature from this key.L2 (API-level): HMAC credentials derived from L1 — used to authenticate all CLOB requests:
  • API Key (POLY_API_KEY)
  • API Secret (used to generate POLY_SIGNATURE)
  • API Passphrase (POLY_PASSPHRASE)
Prerequisites:
  • A Polygon wallet (MetaMask, Rabby, etc.) with a funded private key
  • USDC.e tokens on Polygon for trading capital
  • Token approval on the Polymarket Exchange contract
Use the Polymarket SDK to derive credentials automatically:
See Polymarket’s authentication docs for full details.
3

Update environment variables

Change your credentials and client configuration for live mode. Order payload structure stays highly portable, but endpoint paths/auth handling differ:
There is no single TRADING_MODE flag. Migration is achieved by switching to Polymarket credentials/client setup and routing order placement through Polymarket’s CLOB API flow.
4

Use CLOB-compatible endpoint (recommended for migration)

The CLOB-compatible endpoint mirrors Polymarket’s real CLOB API schema. Your bot code stays identical — only the base URL and auth header change:
Auth difference: PolySimulator uses X-API-Key header. Polymarket uses L2 HMAC headers (POLY_ADDRESS, POLY_SIGNATURE, POLY_TIMESTAMP, POLY_API_KEY, POLY_PASSPHRASE) plus EIP-712 signing for each order. The Polymarket SDK handles the complexity — only the client initialisation changes, not the order fields.
5

Verify with small orders

Start with minimal order sizes to verify live execution:

CLOB Compatibility Layer

The POST /v1/clob/order endpoint accepts the same request body as Polymarket’s POST /order:
All numeric fields (price, size) must be strings (e.g., "0.65" not 0.65). side must be uppercase ("BUY" not "buy"). order_type must be a CLOB type ("GTC", "FOK", or "GTD") — not "market". POST /v1/clob/order does not accept IOC/FAK; for fill-and-kill semantics use the native POST /v1/order endpoint instead.
See CLOB Compatibility for full schema details and response format.

Rollback

To return to virtual mode, change your bot’s environment variables back:
Restart your bot and it resumes paper trading with the simulated balance.

Checklist

  • Bot tested across multiple market scenarios in virtual mode
  • Error handling verified (network errors, rate limits, slippage)
  • Polymarket API credentials obtained and secured
  • Environment variables updated
  • Initial live test with minimal order size
  • Monitoring and alerting configured for live trading