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).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Simmer","colors":{"primary":"#7aa2f7","light":"#c0caf5","dark":"#1a1b26"},"logo":{"light":"https://mintcdn.com/simmer/2sq3xRkQi4tGqDit/logo/simmer-logo-rounded.png?fit=max\u0026auto=format\u0026n=2sq3xRkQi4tGqDit\u0026q=85\u0026s=1e090ddf397e96d50454967400ee038e","dark":"https://mintcdn.com/simmer/2sq3xRkQi4tGqDit/logo/simmer-logo-rounded.png?fit=max\u0026auto=format\u0026n=2sq3xRkQi4tGqDit\u0026q=85\u0026s=1e090ddf397e96d50454967400ee038e"},"favicon":"https://mintcdn.com/simmer/1U3RyFapK5Giu02n/favicon.svg?fit=max\u0026auto=format\u0026n=1U3RyFapK5Giu02n\u0026q=85\u0026s=d4271062cea5797891ed12dccab80697","navbar":{"links":[{"href":"https://github.com/SpartanLabsXyz/simmer-sdk","type":"github"}],"primary":{"type":"button","label":"Web App","href":"https://simmer.markets"}},"footer":{"socials":{"x":"https://x.com/simmer_markets","github":"https://github.com/SpartanLabsXyz/simmer-sdk","telegram":"https://t.me/+m7sN0OLM_780M2Fl"}},"banner":{"content":"**Polymarket V2 is live.** Existing users need to activate V2 allowances to keep trading. [See migration guide →](/v2-migration)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Telegram","icon":"telegram","href":"https://t.me/+m7sN0OLM_780M2Fl"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"simmer","hasAudioNarration":false,"actualSubdomain":"simmer","customDomains":["docs.simmer.markets"],"gitSource":{"type":"github","owner":"spartanlabsxyz","repo":"simmer-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6abcc570b32dc51c8beb8082","collectionId":"a681a7b5-6c6a-4acb-941e-1ffb4b192fb3","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6abcc570b32dc51c8beb8082"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6abcc570b32dc51c8beb8082","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":62},{"language":"default","tag":"Documentation","count":25},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Markets","count":9},{"language":"default","tag":"Core Concepts","count":7},{"language":"default","tag":"Wallets","count":7},{"language":"default","tag":"Python SDK","count":5},{"language":"default","tag":"Trading","count":5},{"language":"default","tag":"Risk Management","count":5},{"language":"default","tag":"Reference","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"69d11a0c26b208a69ec27add","deploymentId":"69b11ae20c3b0d7bfaa24443","questionText":"How do I install a trading skill?","status":"active","generatedBy":"manual","createdAt":"2026-04-04T14:02:52.459Z","updatedAt":"2026-04-04T14:02:52.459Z","__v":0},{"_id":"69d119fb26b208a69ec27aa5","deploymentId":"69b11ae20c3b0d7bfaa24443","questionText":"What's the difference between free, Pro, and Elite?","status":"active","generatedBy":"manual","createdAt":"2026-04-04T14:02:35.177Z","updatedAt":"2026-04-04T14:02:35.177Z","__v":0},{"_id":"69d119ef26b208a69ec27a79","deploymentId":"69b11ae20c3b0d7bfaa24443","questionText":"My trade failed — how do I troubleshoot?","status":"active","generatedBy":"manual","createdAt":"2026-04-04T14:02:23.278Z","updatedAt":"2026-04-04T14:02:23.278Z","__v":0}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/copytrading-execute","slug":"/api-reference/copytrading-execute","pageMetadata":{"title":"Copytrading Execute","description":"Execute copytrading: mirror positions from target wallets.\n\nThis wraps the existing copytrading_strategy.py logic for SDK/skills usage.\nFetches target wallet positions via Dome API, calculates rebalance trades,\nand executes via SDK trade flow.\n\nFlow:\n1. Fetch positions from all target wallets\n2. Calculate size-weighted allocations (larger wallets = more influence)\n3. Skip markets with conflicting positions\n4. Apply Top N filter (concentrate on highest-conviction positions)\n5. Match to Simmer database (auto-import missing markets)\n6. Get user's current Polymarket positions (track which are from copytrading)\n7. Calculate rebalance trades\n8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies)\n9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold)\n10. Execute trades (unless dry_run=True)\n\nParameters:\n- wallets: List of wallet addresses to copy\n- top_n: Number of positions to mirror (None = auto based on balance)\n- max_usd_per_position: Max USD per position (default: 50)\n- dry_run: If true, return signals without executing\n- buy_only: If true (default), only buy to match targets. This prevents\n copytrading from selling positions opened by other strategies (weather, etc.)\n Set to false for full rebalancing mode.\n- detect_whale_exits: If true, sell positions that whales no longer hold.\n Only affects positions originally opened by copytrading (tracks via source field).\n Use with buy_only=True to accumulate + follow whale exits.\n\nRequires API key in Authorization header (rate limited: 30/minute).","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/copytrading/execute","href":"/api-reference/copytrading-execute","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Execute copytrading: mirror positions from target wallets.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This wraps the existing copytrading_strategy.py logic for SDK/skills usage.\\nFetches target wallet positions via Dome API, calculates rebalance trades,\\nand executes via SDK trade flow.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Flow:\"\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Fetch positions from all target wallets\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Calculate size-weighted allocations (larger wallets = more influence)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Skip markets with conflicting positions\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Apply Top N filter (concentrate on highest-conviction positions)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Match to Simmer database (auto-import missing markets)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get user’s current Polymarket positions (track which are from copytrading)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Calculate rebalance trades\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Execute trades (unless dry_run=True)\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Parameters:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"wallets: List of wallet addresses to copy\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"top_n: Number of positions to mirror (None = auto based on balance)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"max_usd_per_position: Max USD per position (default: 50)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"dry_run: If true, return signals without executing\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"buy_only: If true (default), only buy to match targets. This prevents\\ncopytrading from selling positions opened by other strategies (weather, etc.)\\nSet to false for full rebalancing mode.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"detect_whale_exits: If true, sell positions that whales no longer hold.\\nOnly affects positions originally opened by copytrading (tracks via source field).\\nUse with buy_only=True to accumulate + follow whale exits.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Requires API key in Authorization header (rate limited: 30/minute).\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(Warning,{children:[`This endpoint executes real trades. Always test with `,_jsx(_components.code,{children:`venue=sim`}),` first.`]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Copytrading Execute","description":"Execute copytrading: mirror positions from target wallets.\n\nThis wraps the existing copytrading_strategy.py logic for SDK/skills usage.\nFetches target wallet positions via Dome API, calculates rebalance trades,\nand executes via SDK trade flow.\n\nFlow:\n1. Fetch positions from all target wallets\n2. Calculate size-weighted allocations (larger wallets = more influence)\n3. Skip markets with conflicting positions\n4. Apply Top N filter (concentrate on highest-conviction positions)\n5. Match to Simmer database (auto-import missing markets)\n6. Get user's current Polymarket positions (track which are from copytrading)\n7. Calculate rebalance trades\n8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies)\n9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold)\n10. Execute trades (unless dry_run=True)\n\nParameters:\n- wallets: List of wallet addresses to copy\n- top_n: Number of positions to mirror (None = auto based on balance)\n- max_usd_per_position: Max USD per position (default: 50)\n- dry_run: If true, return signals without executing\n- buy_only: If true (default), only buy to match targets. This prevents\n copytrading from selling positions opened by other strategies (weather, etc.)\n Set to false for full rebalancing mode.\n- detect_whale_exits: If true, sell positions that whales no longer hold.\n Only affects positions originally opened by copytrading (tracks via source field).\n Use with buy_only=True to accumulate + follow whale exits.\n\nRequires API key in Authorization header (rate limited: 30/minute).","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/copytrading/execute","href":"/api-reference/copytrading-execute","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Copytrading Execute","description":"Execute copytrading: mirror positions from target wallets.\n\nThis wraps the existing copytrading_strategy.py logic for SDK/skills usage.\nFetches target wallet positions via Dome API, calculates rebalance trades,\nand executes via SDK trade flow.\n\nFlow:\n1. Fetch positions from all target wallets\n2. Calculate size-weighted allocations (larger wallets = more influence)\n3. Skip markets with conflicting positions\n4. Apply Top N filter (concentrate on highest-conviction positions)\n5. Match to Simmer database (auto-import missing markets)\n6. Get user's current Polymarket positions (track which are from copytrading)\n7. Calculate rebalance trades\n8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies)\n9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold)\n10. Execute trades (unless dry_run=True)\n\nParameters:\n- wallets: List of wallet addresses to copy\n- top_n: Number of positions to mirror (None = auto based on balance)\n- max_usd_per_position: Max USD per position (default: 50)\n- dry_run: If true, return signals without executing\n- buy_only: If true (default), only buy to match targets. This prevents\n copytrading from selling positions opened by other strategies (weather, etc.)\n Set to false for full rebalancing mode.\n- detect_whale_exits: If true, sell positions that whales no longer hold.\n Only affects positions originally opened by copytrading (tracks via source field).\n Use with buy_only=True to accumulate + follow whale exits.\n\nRequires API key in Authorization header (rate limited: 30/minute).","operationId":"api_sdk_copytrading_execute_api_sdk_copytrading_execute_post","requestBody":"293698dc-a2b4-4e07-a273-7241abd1bd8f","responses":{"200":"50241904-65fb-40a7-a20c-97493c934d46","422":"5e22f8fe-2164-427e-ae11-b24c48b4ceae"},"x-mint":{"content":"\u003cWarning>This endpoint executes real trades. Always test with `venue=sim` first.\u003c/Warning>"},"method":"post","type":"path","servers":["620f3041-2d7d-467f-80e8-7ab8471ff903"],"security":[],"path":"/api/sdk/copytrading/execute","baseUrlOptions":["https://api.simmer.markets"],"title":"Copytrading Execute","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"wallets":{"items":{"type":"string","uniqueKey":"wallets.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Wallets","isRequired":true,"uniqueKey":"wallets","typeLabel":"string[]"},"top_n":{"oneOf":[{"type":"integer","title":"Top N","uniqueKey":"top_n.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Top N","uniqueKey":"top_n.oneOf.1","typeLabel":"null"}],"uniqueKey":"top_n","typeLabel":"integer | null"},"max_usd_per_position":{"type":"number","title":"Max Usd Per Position","default":50,"uniqueKey":"max_usd_per_position","typeLabel":"number"},"dry_run":{"type":"boolean","title":"Dry Run","default":false,"uniqueKey":"dry_run","typeLabel":"boolean"},"buy_only":{"type":"boolean","title":"Buy Only","default":true,"uniqueKey":"buy_only","typeLabel":"boolean"},"detect_whale_exits":{"type":"boolean","title":"Detect Whale Exits","default":false,"uniqueKey":"detect_whale_exits","typeLabel":"boolean"},"max_trades":{"oneOf":[{"type":"integer","title":"Max Trades","uniqueKey":"max_trades.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Trades","uniqueKey":"max_trades.oneOf.1","typeLabel":"null"}],"uniqueKey":"max_trades","typeLabel":"integer | null"},"venue":{"oneOf":[{"type":"string","title":"Venue","uniqueKey":"venue.oneOf.0","typeLabel":"string"},{"type":"null","title":"Venue","uniqueKey":"venue.oneOf.1","typeLabel":"null"}],"uniqueKey":"venue","typeLabel":"string | null"},"market_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"market_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Market Ids","uniqueKey":"market_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Market Ids","uniqueKey":"market_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"market_ids","typeLabel":"string[] | null"}},"type":"object","required":["wallets"],"title":"SDKCopytradingRequest","description":"Request for copytrading execute endpoint.","uniqueKey":"","typeLabel":"SDKCopytradingRequest · object"},"examples":{"Example":{"title":"Example","value":{"wallets":["\u003cstring>"],"top_n":123,"max_usd_per_position":50,"dry_run":false,"buy_only":true,"detect_whale_exits":false,"max_trades":123,"venue":"\u003cstring>","market_ids":["\u003cstring>"]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"50241904-65fb-40a7-a20c-97493c934d46":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean","title":"Success","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"wallets_analyzed":{"type":"integer","title":"Wallets Analyzed","isRequired":true,"uniqueKey":"wallets_analyzed","typeLabel":"integer"},"positions_found":{"type":"integer","title":"Positions Found","isRequired":true,"uniqueKey":"positions_found","typeLabel":"integer"},"conflicts_skipped":{"type":"integer","title":"Conflicts Skipped","isRequired":true,"uniqueKey":"conflicts_skipped","typeLabel":"integer"},"top_n_used":{"type":"integer","title":"Top N Used","isRequired":true,"uniqueKey":"top_n_used","typeLabel":"integer"},"trades_needed":{"type":"integer","title":"Trades Needed","isRequired":true,"uniqueKey":"trades_needed","typeLabel":"integer"},"trades_executed":{"type":"integer","title":"Trades Executed","isRequired":true,"uniqueKey":"trades_executed","typeLabel":"integer"},"trades":{"items":{"properties":{"market_id":{"type":"string","title":"Market Id","isRequired":true,"uniqueKey":"trades.items.[INDEX].market_id","typeLabel":"string"},"market_title":{"type":"string","title":"Market Title","isRequired":true,"uniqueKey":"trades.items.[INDEX].market_title","typeLabel":"string"},"action":{"type":"string","title":"Action","isRequired":true,"uniqueKey":"trades.items.[INDEX].action","typeLabel":"string"},"side":{"type":"string","title":"Side","isRequired":true,"uniqueKey":"trades.items.[INDEX].side","typeLabel":"string"},"shares":{"type":"number","title":"Shares","isRequired":true,"uniqueKey":"trades.items.[INDEX].shares","typeLabel":"number"},"estimated_price":{"type":"number","title":"Estimated Price","isRequired":true,"uniqueKey":"trades.items.[INDEX].estimated_price","typeLabel":"number"},"estimated_cost":{"type":"number","title":"Estimated Cost","isRequired":true,"uniqueKey":"trades.items.[INDEX].estimated_cost","typeLabel":"number"},"success":{"type":"boolean","title":"Success","isRequired":true,"uniqueKey":"trades.items.[INDEX].success","typeLabel":"boolean"},"error":{"oneOf":[{"type":"string","title":"Error","uniqueKey":"trades.items.[INDEX].error.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error","uniqueKey":"trades.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"uniqueKey":"trades.items.[INDEX].error","typeLabel":"string | null"}},"type":"object","required":["market_id","market_title","action","side","shares","estimated_price","estimated_cost","success"],"title":"SDKCopytradingTradeResult","description":"Result of a single copytrading trade.","uniqueKey":"trades.items.[INDEX]","typeLabel":"SDKCopytradingTradeResult · object"},"type":"array","title":"Trades","isRequired":true,"uniqueKey":"trades","typeLabel":"SDKCopytradingTradeResult · object[]"},"summary":{"type":"string","title":"Summary","isRequired":true,"uniqueKey":"summary","typeLabel":"string"},"markets_matched":{"type":"integer","title":"Markets Matched","default":0,"uniqueKey":"markets_matched","typeLabel":"integer"},"user_positions":{"type":"integer","title":"User Positions","default":0,"uniqueKey":"user_positions","typeLabel":"integer"},"trades_filtered_buy_only":{"type":"integer","title":"Trades Filtered Buy Only","default":0,"uniqueKey":"trades_filtered_buy_only","typeLabel":"integer"},"buys_skipped_min_shares":{"type":"integer","title":"Buys Skipped Min Shares","default":0,"uniqueKey":"buys_skipped_min_shares","typeLabel":"integer"},"buys_skipped_min_value":{"type":"integer","title":"Buys Skipped Min Value","default":0,"uniqueKey":"buys_skipped_min_value","typeLabel":"integer"},"whale_exits_detected":{"type":"integer","title":"Whale Exits Detected","default":0,"uniqueKey":"whale_exits_detected","typeLabel":"integer"},"failed_markets_skipped":{"type":"integer","title":"Failed Markets Skipped","default":0,"uniqueKey":"failed_markets_skipped","typeLabel":"integer"},"drift_filtered":{"type":"integer","title":"Drift Filtered","default":0,"uniqueKey":"drift_filtered","typeLabel":"integer"},"stale_filtered":{"type":"integer","title":"Stale Filtered","default":0,"uniqueKey":"stale_filtered","typeLabel":"integer"},"low_conviction_positions":{"type":"integer","title":"Low Conviction Positions","default":0,"uniqueKey":"low_conviction_positions","typeLabel":"integer"},"scope_filtered":{"type":"integer","title":"Scope Filtered","default":0,"uniqueKey":"scope_filtered","typeLabel":"integer"},"skipped_markets":{"items":{"additionalProperties":true,"type":"object","uniqueKey":"skipped_markets.items.[INDEX]","typeLabel":"object"},"type":"array","title":"Skipped Markets","default":[],"uniqueKey":"skipped_markets","typeLabel":"Skipped Markets · object[]"},"errors":{"items":{"type":"string","uniqueKey":"errors.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Errors","default":[],"uniqueKey":"errors","typeLabel":"string[]"}},"type":"object","required":["success","wallets_analyzed","positions_found","conflicts_skipped","top_n_used","trades_needed","trades_executed","trades","summary"],"title":"SDKCopytradingResponse","description":"Response from copytrading execute endpoint.","uniqueKey":"","typeLabel":"SDKCopytradingResponse · object"},"examples":{"Example":{"title":"Example","value":{"success":true,"wallets_analyzed":123,"positions_found":123,"conflicts_skipped":123,"top_n_used":123,"trades_needed":123,"trades_executed":123,"trades":[{"market_id":"\u003cstring>","market_title":"\u003cstring>","action":"\u003cstring>","side":"\u003cstring>","shares":123,"estimated_price":123,"estimated_cost":123,"success":true,"error":"\u003cstring>"}],"summary":"\u003cstring>","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,"scope_filtered":0,"skipped_markets":[],"errors":[]}}},"exampleType":"generated"}},"exampleType":"generated"},"5e22f8fe-2164-427e-ae11-b24c48b4ceae":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"},"input":{"oneOf":[{"title":"Input"}],"uniqueKey":"detail.items.[INDEX].input","typeLabel":"any"},"ctx":{"type":"object","title":"Context","uniqueKey":"detail.items.[INDEX].ctx","typeLabel":"Context · object"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>","input":"\u003cunknown>","ctx":{}}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"620f3041-2d7d-467f-80e8-7ab8471ff903":{"url":"https://api.simmer.markets"}}},"originalFileLocation":"openapi.json"},"subdomain":"simmer","siteName":"Simmer","title":"Copytrading Execute - Simmer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-14T06:35:40.391Z","originalFileLocation":"api-reference/copytrading-execute.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"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: 1. Fetch positions from all target wallets 2. Calculate size-weighted allocations (larger wallets = more influence) 3. Skip markets with conflicting positions 4. Apply Top N filter (concentrate on highest-conviction positions) 5. Match to Simmer database (auto-import missing markets) 6. Get user\u0026#x27;s current Polymarket positions (track which are from copytrading) 7. Calculate rebalance trades 8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies) 9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold) 10. 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).\">\u003cmeta data-mint-head name=\"application-name\" content=\"Simmer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Copytrading Execute - Simmer\">\u003cmeta data-mint-head property=\"og:description\" content=\"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: 1. Fetch positions from all target wallets 2. Calculate size-weighted allocations (larger wallets = more influence) 3. Skip markets with conflicting positions 4. Apply Top N filter (concentrate on highest-conviction positions) 5. Match to Simmer database (auto-import missing markets) 6. Get user\u0026#x27;s current Polymarket positions (track which are from copytrading) 7. Calculate rebalance trades 8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies) 9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold) 10. 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).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Simmer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.simmer.markets/api-reference/copytrading-execute\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://simmer.mintlify.app/_mintlify/api/og/v2?division=Trading\u0026amp;title=Copytrading+Execute\u0026amp;description=Execute+copytrading%3A+mirror+positions+from+target+wallets.%0A%0AThis+wraps+the+existing+copytrading_strategy.py+logic+for+SDK%2Fskills+usage.%0AFetches+target+wallet+po\u0026amp;theme=b3412bc12648c154af361e0f\u0026amp;signature=d193f2c99d01f714aa8e98879526051021f4133e5522b1987553fedde724ebb6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Copytrading Execute - Simmer\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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: 1. Fetch positions from all target wallets 2. Calculate size-weighted allocations (larger wallets = more influence) 3. Skip markets with conflicting positions 4. Apply Top N filter (concentrate on highest-conviction positions) 5. Match to Simmer database (auto-import missing markets) 6. Get user\u0026#x27;s current Polymarket positions (track which are from copytrading) 7. Calculate rebalance trades 8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies) 9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold) 10. 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).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://simmer.mintlify.app/_mintlify/api/og/v2?division=Trading\u0026amp;title=Copytrading+Execute\u0026amp;description=Execute+copytrading%3A+mirror+positions+from+target+wallets.%0A%0AThis+wraps+the+existing+copytrading_strategy.py+logic+for+SDK%2Fskills+usage.%0AFetches+target+wallet+po\u0026amp;theme=b3412bc12648c154af361e0f\u0026amp;signature=d193f2c99d01f714aa8e98879526051021f4133e5522b1987553fedde724ebb6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/simmer/_05M2U6n4yRGBjRg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Simmer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7aa2f7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.simmer.markets/api-reference/copytrading-execute\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/copytrading-execute.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.simmer.markets/#organization\",\"name\":\"Simmer\",\"url\":\"https://docs.simmer.markets\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/simmer/2sq3xRkQi4tGqDit/logo/simmer-logo-rounded.png?fit=max\u0026auto=format\u0026n=2sq3xRkQi4tGqDit\u0026q=85\u0026s=1e090ddf397e96d50454967400ee038e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.simmer.markets#website\",\"name\":\"Simmer\",\"url\":\"https://docs.simmer.markets\",\"publisher\":{\"@id\":\"https://docs.simmer.markets/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.simmer.markets/api-reference/copytrading-execute#webpage\",\"url\":\"https://docs.simmer.markets/api-reference/copytrading-execute\",\"name\":\"Copytrading Execute\",\"description\":\"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: 1. Fetch positions from all target wallets 2. Calculate size-weighted allocations (larger wallets = more influence) 3. Skip markets with conflicting positions 4. Apply Top N filter (concentrate on highest-conviction positions) 5. Match to Simmer database (auto-import missing markets) 6. Get user's current Polymarket positions (track which are from copytrading) 7. Calculate rebalance trades 8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies) 9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold) 10. 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).\",\"dateModified\":\"2026-09-14T06:35:40.391Z\",\"isPartOf\":{\"@id\":\"https://docs.simmer.markets#website\"},\"breadcrumb\":{\"@id\":\"https://docs.simmer.markets/api-reference/copytrading-execute#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.simmer.markets/api-reference/copytrading-execute#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Trading\",\"item\":\"https://docs.simmer.markets/api-reference/sdk-trade/trade\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Copytrading Execute\",\"item\":\"https://docs.simmer.markets/api-reference/copytrading-execute\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.simmer.markets/api-reference/copytrading-execute#apireference\",\"headline\":\"Copytrading Execute\",\"name\":\"Copytrading Execute\",\"description\":\"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: 1. Fetch positions from all target wallets 2. Calculate size-weighted allocations (larger wallets = more influence) 3. Skip markets with conflicting positions 4. Apply Top N filter (concentrate on highest-conviction positions) 5. Match to Simmer database (auto-import missing markets) 6. Get user's current Polymarket positions (track which are from copytrading) 7. Calculate rebalance trades 8. Filter to buy-only if buy_only=True (default: prevents selling positions from other strategies) 9. Detect whale exits if detect_whale_exits=True (sell positions whales no longer hold) 10. 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).\",\"url\":\"https://docs.simmer.markets/api-reference/copytrading-execute\",\"mainEntityOfPage\":{\"@id\":\"https://docs.simmer.markets/api-reference/copytrading-execute#webpage\"},\"dateModified\":\"2026-09-14T06:35:40.391Z\",\"publisher\":{\"@id\":\"https://docs.simmer.markets/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.simmer.markets#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Simmer\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Simmer","nav":{"global":{"anchors":[{"anchor":"Telegram","icon":"telegram","href":"https://t.me/+m7sN0OLM_780M2Fl"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Overview","icon":"code","href":"/api/overview"},{"title":"Errors \u0026 Troubleshooting","icon":"triangle-exclamation","href":"/api/errors"}]},{"group":"Agents","pages":[{"title":"Register Agent","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/agents/register","href":"/api-reference/register-agent"},{"title":"Get Agent Me","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/agents/me","href":"/api-reference/get-agent-me"},{"title":"Agent Settings Update","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/sdk/agents/me/settings","href":"/api-reference/agent-settings-update"},{"title":"Get Agent By Claim Code","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/agents/claim/{claim_code}","href":"/api-reference/get-agent-by-claim-code"}]},{"group":"Markets","pages":[{"title":"List Markets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/markets","href":"/api-reference/list-markets"},{"title":"Get Market","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/markets/{market_id}","href":"/api-reference/get-market"},{"title":"Price History","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/markets/{market_id}/history","href":"/api-reference/price-history"},{"title":"Opportunities","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/markets/opportunities","href":"/api-reference/opportunities"},{"title":"Fast Markets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/fast-markets","href":"/api-reference/fast-markets"},{"title":"List Importable Markets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/markets/importable","href":"/api-reference/list-importable-markets"},{"title":"Check Market Exists","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/markets/check","href":"/api-reference/check-market-exists"},{"title":"Import Market","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/markets/import","href":"/api-reference/import-market"},{"title":"Import Kalshi Market","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/markets/import/kalshi","href":"/api-reference/import-kalshi-market"}]},{"group":"Trading","pages":[{"title":"Trade","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/trade","href":"/api-reference/sdk-trade/trade"},{"title":"Batch Trades","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/trades/batch","href":"/api-reference/sdk-trade/batch-trades"},{"title":"Redeem","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/redeem","href":"/api-reference/sdk-redeem/redeem"},{"title":"Redeem Report","description":"Record an external-wallet redemption that was signed and broadcast client-side.\n\nCalled by the SDK after a successful redeem broadcast+confirmation.\nInserts a real_trades row so the position stops appearing as redeemable.\nIdempotent: silently skips if a redeem trade with the same tx_hash already exists.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/redeem/report","href":"/api-reference/sdk-redeem/redeem-report"},{"title":"Copytrading Execute","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/copytrading/execute","href":"/api-reference/copytrading-execute"}]},{"group":"Positions \u0026 Portfolio","pages":[{"title":"Positions","description":"Get all positions for the SDK agent.\n\nReturns positions across venues: Simmer, Polymarket, and Kalshi.\n\nParameters:\n- source: Filter by trade source (e.g., \"weather\", \"copytrading\"). Partial match supported.\n- venue: Filter by venue (\"sim\", \"polymarket\", or \"kalshi\")\n- status: Filter by position status (\"active\", \"resolved\", \"closed\", \"all\"). Default: \"active\".\n\nDeprecated: venue=\"sandbox\"/\"simmer\" are deprecated, use venue=\"sim\" instead.\n\nRequires API key in Authorization header (rate limited: 300/minute).","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/positions","href":"/api-reference/positions"},{"title":"Positions Expiring","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/positions/expiring","href":"/api-reference/positions-expiring"},{"title":"Portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/portfolio","href":"/api-reference/portfolio"}]},{"group":"Orders","pages":[{"title":"Get Open Orders","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/orders/open","href":"/api-reference/get-open-orders"},{"title":"Cancel Order","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/orders/{order_id}","href":"/api-reference/cancel-order"},{"title":"Cancel Market Orders","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/markets/{market_id}/orders","href":"/api-reference/cancel-market-orders"},{"title":"Cancel All Orders","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/orders","href":"/api-reference/cancel-all-orders"}]},{"group":"Context \u0026 Briefing","pages":[{"title":"Context","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/context/{market_id}","href":"/api-reference/context"},{"title":"Briefing","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/briefing","href":"/api-reference/briefing"}]},{"group":"Risk Management","pages":[{"title":"Risk Settings Set","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/positions/{market_id}/monitor","href":"/api-reference/risk-settings-set"},{"title":"Risk Settings List","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/positions/monitors","href":"/api-reference/risk-settings-list"},{"title":"Risk Settings Delete","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/positions/{market_id}/monitor","href":"/api-reference/risk-settings-delete"},{"title":"Risk Alerts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/risk-alerts","href":"/api-reference/risk-alerts"},{"title":"Risk Alert Delete","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/risk-alerts/{market_id}/{side}","href":"/api-reference/risk-alert-delete"}]},{"group":"Settings","pages":[{"title":"Get Settings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/settings","href":"/api-reference/get-settings"},{"title":"Update Settings","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/settings","href":"/api-reference/update-settings"}]},{"group":"Alerts","pages":[{"title":"Create Alert","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/alerts","href":"/api-reference/sdk-alerts/create-alert"},{"title":"List Alerts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/alerts","href":"/api-reference/sdk-alerts/list-alerts"},{"title":"Delete Alert","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/alerts/{alert_id}","href":"/api-reference/sdk-alerts/delete-alert"},{"title":"Triggered Alerts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/alerts/triggered","href":"/api-reference/sdk-alerts/triggered-alerts"}]},{"group":"Webhooks","pages":[{"title":"Create Webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/webhooks","href":"/api-reference/sdk-webhooks/create-webhook"},{"title":"List Webhooks","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/webhooks","href":"/api-reference/sdk-webhooks/list-webhooks"},{"title":"Delete Webhook","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sdk/webhooks/{webhook_id}","href":"/api-reference/sdk-webhooks/delete-webhook"},{"title":"Test Webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/webhooks/test","href":"/api-reference/sdk-webhooks/test-webhook"}]},{"group":"Wallets","pages":[{"title":"Wallet Link Challenge","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/wallet/link/challenge","href":"/api-reference/sdk-wallet/wallet-link-challenge"},{"title":"Wallet Link","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/wallet/link","href":"/api-reference/sdk-wallet/wallet-link"},{"title":"Wallet Unlink","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/wallet/unlink","href":"/api-reference/sdk-wallet/wallet-unlink"},{"title":"Wallet Broadcast Tx","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/wallet/broadcast-tx","href":"/api-reference/sdk-wallet/wallet-broadcast-tx"},{"title":"Wallet Positions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/wallet/{wallet_address}/positions","href":"/api-reference/wallet-positions"},{"title":"Wallet Check Credentials","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/wallet/credentials/check","href":"/api-reference/wallet-check-credentials"},{"title":"Wallet Derive Credentials Via Proxy","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/wallet/credentials/derive-via-proxy","href":"/api-reference/sdk-wallet/wallet-derive-credentials-via-proxy"}]},{"group":"Kalshi","pages":[{"title":"Kalshi Quote","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/trade/kalshi/quote","href":"/api-reference/kalshi-quote"},{"title":"Kalshi Submit","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/trade/kalshi/submit","href":"/api-reference/kalshi-submit"}]},{"group":"Skills","pages":[{"title":"Skills","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/skills","href":"/api-reference/skills"},{"title":"Submit Skill","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/skills","href":"/api-reference/submit-skill"},{"title":"My Skills","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/skills/mine","href":"/api-reference/my-skills"}]},{"group":"Trades \u0026 Leaderboard","pages":[{"title":"Get Trades","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/trades","href":"/api-reference/get-trades"},{"title":"Get All Leaderboards","deprecated":null,"version":null,"openapi":"/openapi.json get /api/leaderboard/all","href":"/api-reference/leaderboard/get-all-leaderboards"},{"title":"Get Sdk Agent Leaderboard","deprecated":null,"version":null,"openapi":"/openapi.json get /api/leaderboard/sdk-agents","href":"/api-reference/leaderboard/get-sdk-agent-leaderboard"},{"title":"Get Venue Leaderboard","deprecated":null,"version":null,"openapi":"/openapi.json get /api/leaderboard/{venue}","href":"/api-reference/leaderboard/get-venue-leaderboard"}]},{"group":"Utilities","pages":[{"title":"Troubleshoot Error","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sdk/troubleshoot","href":"/api-reference/troubleshoot-error"},{"title":"Health","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sdk/health","href":"/api-reference/health"}]}]},{"tab":"Python SDK","pages":[{"title":"Python SDK","href":"/sdk/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Copytrading Execute - Simmer","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-CXEEkV6J.js","dist-lvhuD9Du.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D1Z-ELXV.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","AssistantPageLink-CKfC4ywL.js"]}