Install
openclaw skills install polymarket-mert-sniperNear-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade strong splits close to deadline.
openclaw skills install polymarket-mert-sniperNear-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed.
Strategy by @mert — filter by topic, cap your bets, wait until near expiry, and only trade strong splits.
This is a template. The default logic (expiry + split filter) gets you started — remix it with your own filters, timing rules, or market selection criteria. The skill handles all the plumbing (market discovery, trade execution, safeguards). Your agent provides the alpha.
Polymarket only. All trades execute on Polymarket with real USDC. Use
--livefor real trades, dry-run is the default.
Use this skill when the user wants to:
Install the Simmer SDK
pip install simmer-sdk
Ask for Simmer API key
SIMMER_API_KEYAsk for wallet private key (required for live trading)
WALLET_PRIVATE_KEYAsk about settings (or confirm defaults)
Save settings to config.json or environment variables
| Setting | Environment Variable | Default | Description |
|---|---|---|---|
| Market filter | SIMMER_MERT_FILTER | (all) | Tag or keyword filter (e.g. solana, crypto) |
| Max bet | SIMMER_MERT_MAX_BET | 10.00 | Maximum USD per trade |
| Expiry window | SIMMER_MERT_EXPIRY_MINS | 2 | Only trade markets resolving within N minutes |
| Min split | SIMMER_MERT_MIN_SPLIT | 0.60 | Only trade when YES or NO >= this (e.g. 0.60 = 60/40) |
| Max trades/run | SIMMER_MERT_MAX_TRADES | 5 | Maximum trades per scan cycle |
| Smart sizing % | SIMMER_MERT_SIZING_PCT | 0.05 | % of balance per trade |
# Check account balance and positions
python scripts/status.py
# Detailed position list
python scripts/status.py --positions
API Reference:
https://api.simmer.marketsAuthorization: Bearer $SIMMER_API_KEYGET /api/sdk/portfolioGET /api/sdk/positions# Dry run (default -- shows opportunities, no trades)
python mert_sniper.py
# Execute real trades
python mert_sniper.py --live
# Filter to specific markets
python mert_sniper.py --filter solana
# Custom expiry window (5 minutes)
python mert_sniper.py --expiry 5
# With smart position sizing (uses portfolio balance)
python mert_sniper.py --live --smart-sizing
# Check positions only
python mert_sniper.py --positions
# View config
python mert_sniper.py --config
# Disable safeguards (not recommended)
python mert_sniper.py --no-safeguards
Each cycle the script:
🎯 Mert Sniper - Near-Expiry Conviction Trading
==================================================
[DRY RUN] No trades will be executed. Use --live to enable trading.
Configuration:
Filter: solana
Max bet: $10.00
Expiry window: 2 minutes
Min split: 60/40
Max trades: 5
Smart sizing: Disabled
Safeguards: Enabled
Fetching markets (filter: solana)...
Found 12 active markets
Markets expiring within 2 minutes: 2
SOL highest price on Feb 10?
Resolves in: 1m 34s
Split: YES 72% / NO 28%
Side: YES (72% >= 60%)
[DRY RUN] Would buy $10.00 on YES
Summary:
Markets scanned: 12
Near expiry: 2
Strong split: 1
Trades executed: 0
[DRY RUN MODE - no real trades executed]
"No markets found"
"No markets expiring within window"
--expiry 10 (10 minutes)"Split too narrow"
--set min_split=0.55"Resolves in: 17h" on 15-min markets
endDate is the event-level end-of-day, not the individual market close time--expiry 1080) as a workaround, or use the split filter to find conviction opportunities regardless of timing"External wallet requires a pre-signed order"
WALLET_PRIVATE_KEY is not set in the environmentexport WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>"Balance shows $0 but I have funds on Polygon"
"API key invalid"