Copytrading Execute
curl --request POST \
--url https://api.simmer.markets/api/sdk/copytrading/execute \
--header 'Content-Type: application/json' \
--data '
{
"wallets": [
"<string>"
],
"top_n": 123,
"max_usd_per_position": 50,
"dry_run": false,
"buy_only": true,
"detect_whale_exits": false,
"max_trades": 123,
"venue": "<string>"
}
'{
"success": true,
"wallets_analyzed": 123,
"positions_found": 123,
"conflicts_skipped": 123,
"top_n_used": 123,
"trades_needed": 123,
"trades_executed": 123,
"trades": [
{
"market_id": "<string>",
"market_title": "<string>",
"action": "<string>",
"side": "<string>",
"shares": 123,
"estimated_price": 123,
"estimated_cost": 123,
"success": true,
"error": "<string>"
}
],
"summary": "<string>",
"markets_matched": 0,
"user_positions": 0,
"trades_filtered_buy_only": 0,
"buys_skipped_min_shares": 0,
"buys_skipped_min_value": 0,
"whale_exits_detected": 0,
"failed_markets_skipped": 0,
"drift_filtered": 0,
"stale_filtered": 0,
"low_conviction_positions": 0,
"skipped_markets": [],
"errors": []
}Trading
Copytrading Execute
Execute copytrading: mirror positions from target wallets.
This wraps the existing copytrading_strategy.py logic for SDK/skills usage. Fetches target wallet positions via Dome API, calculates rebalance trades, and executes via SDK trade flow.
Flow:
- Fetch positions from all target wallets
- Calculate size-weighted allocations (larger wallets = more influence)
- Skip markets with conflicting positions
- Apply Top N filter (concentrate on highest-conviction positions)
- Match to Simmer database (auto-import missing markets)
- Get user’s current Polymarket positions (track which are from copytrading)
- Calculate rebalance trades
- Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies)
- Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold)
- Execute trades (unless dry_run=True)
Parameters:
- wallets: List of wallet addresses to copy
- top_n: Number of positions to mirror (None = auto based on balance)
- max_usd_per_position: Max USD per position (default: 50)
- dry_run: If true, return signals without executing
- buy_only: If true (default), only buy to match targets. This prevents copytrading from selling positions opened by other strategies (weather, etc.) Set to false for full rebalancing mode.
- detect_whale_exits: If true, sell positions that whales no longer hold. Only affects positions originally opened by copytrading (tracks via source field). Use with buy_only=True to accumulate + follow whale exits.
Requires API key in Authorization header (rate limited: 30/minute).
POST
/
api
/
sdk
/
copytrading
/
execute
Copytrading Execute
curl --request POST \
--url https://api.simmer.markets/api/sdk/copytrading/execute \
--header 'Content-Type: application/json' \
--data '
{
"wallets": [
"<string>"
],
"top_n": 123,
"max_usd_per_position": 50,
"dry_run": false,
"buy_only": true,
"detect_whale_exits": false,
"max_trades": 123,
"venue": "<string>"
}
'{
"success": true,
"wallets_analyzed": 123,
"positions_found": 123,
"conflicts_skipped": 123,
"top_n_used": 123,
"trades_needed": 123,
"trades_executed": 123,
"trades": [
{
"market_id": "<string>",
"market_title": "<string>",
"action": "<string>",
"side": "<string>",
"shares": 123,
"estimated_price": 123,
"estimated_cost": 123,
"success": true,
"error": "<string>"
}
],
"summary": "<string>",
"markets_matched": 0,
"user_positions": 0,
"trades_filtered_buy_only": 0,
"buys_skipped_min_shares": 0,
"buys_skipped_min_value": 0,
"whale_exits_detected": 0,
"failed_markets_skipped": 0,
"drift_filtered": 0,
"stale_filtered": 0,
"low_conviction_positions": 0,
"skipped_markets": [],
"errors": []
}This endpoint executes real trades. Always test with
venue=sim first.Body
application/json
Response
Successful Response
Response from copytrading execute endpoint.
Show child attributes
Show child attributes
⌘I
