Decision-to-arrival latency, in milliseconds. An order decided at a tick is priced on the book as it stands at tick + latency_ms; where the archive cannot reconstruct that instant, on the first certified book at a later tick in the window; with neither, it does not fill. Default 104, our measured production API p50. 0 prices orders on the book their own decision saw, and the result then reports execution.signals_used_pre_decision_data_only=false.
How a run's orders were executed, computed from the run itself.
Absent on runs stored before it existed. Every field describes what the
executor DID, so two runs with different assumptions cannot be mistaken
for each other.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"PolySimulator","description":"Virtual prediction market trading API — practice with real Polymarket data and simulated money.","colors":{"primary":"#00d26a","light":"#e6fff2","dark":"#0a0f1c"},"logo":{"light":"https://mintcdn.com/polysimulator/g3hLzzd62nMdIToN/logo/polysim-light.svg?fit=max\u0026auto=format\u0026n=g3hLzzd62nMdIToN\u0026q=85\u0026s=510d6e93b34b84b254f2ff702c7f2f11","dark":"https://mintcdn.com/polysimulator/g3hLzzd62nMdIToN/logo/polysim-dark.svg?fit=max\u0026auto=format\u0026n=g3hLzzd62nMdIToN\u0026q=85\u0026s=66470ef617df21d00b93aa5818ac88cb","href":"https://polysimulator.com"},"favicon":"https://mintcdn.com/polysimulator/G-TcC615M002Bemd/favicon.svg?fit=max\u0026auto=format\u0026n=G-TcC615M002Bemd\u0026q=85\u0026s=ea27fd1461a89daeb2375031fae575e4","api":{"playground":{}},"navbar":{"links":[{"href":"https://polysimulator.com/markets","label":"Dashboard"},{"href":"https://github.com/Bavariance/polysimulator-docs","label":"GitHub"}],"primary":{"type":"button","label":"Get API Key","href":"https://polysimulator.com/profile"}},"footer":{"socials":{"github":"https://github.com/Bavariance/polysimulator-docs","x":"https://x.com/PolySimulatorHQ"},"links":[{"header":"Product","items":[{"label":"Markets","href":"https://polysimulator.com/markets"},{"label":"Leaderboard","href":"https://polysimulator.com/leaderboard"}]},{"header":"Developers","items":[{"label":"API Reference","href":"/api-reference"},{"label":"GitHub","href":"https://github.com/Bavariance/polysimulator-docs"}]}]},"seo":{},"errors":{"404":{"redirect":true,"title":"Page Not Found","description":"The page you're looking for doesn't exist. Check the sidebar or search for what you need."}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"polysimulator","hasAudioNarration":false,"actualSubdomain":"polysimulator","customDomains":["docs.polysimulator.com"],"gitSource":{"type":"github","owner":"bavariance","repo":"polysimulator","deployBranch":"staging","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae2b3c3997fc3d7b2d0f62d","collectionId":"6b44fd4c-86e3-4a78-9943-6cdf1f9efdc4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2b3c3997fc3d7b2d0f62d"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6aeb280a245c712a705a482d","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API Reference","count":146},{"language":"default","tag":"Endpoints","count":135},{"language":"default","tag":"Documentation","count":46},{"language":"default","tag":"CLOB Read (Public)","count":17},{"language":"default","tag":"Market Data","count":13},{"language":"default","tag":"Simulation","count":13},{"language":"default","tag":"Account","count":13},{"language":"default","tag":"API Keys","count":9},{"language":"default","tag":"CLOB Compat","count":9},{"language":"default","tag":"Developer Webhooks","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/simulation/create-backtest","slug":"/api-reference/simulation/create-backtest","pageMetadata":{"title":"Create Backtest","description":null,"deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/backtests","href":"/api-reference/simulation/create-backtest","autogeneratedByOpenApi":true},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create Backtest","description":null,"deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/backtests","href":"/api-reference/simulation/create-backtest","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Simulation"],"summary":"Create Backtest","operationId":"createBacktest","parameters":["769edb1f-3d8f-4c9e-931e-9c2b09618082","116c32c0-3546-4491-8244-a1b35a98bc1a","c953085a-8d60-4c27-8f7f-91de7633a3db","080be805-e198-4145-923b-806e43e2c17f","b63c6d41-149b-4c22-ae4d-2bdc5385a2c5"],"requestBody":"c49bceff-cdb5-453a-a7a7-a396343fd5d1","responses":{"202":"d530bc92-e7b2-485e-9583-0c14dc926df3","400":"63031810-aed3-4b8c-8d47-b4f2fcac4e4f","401":"aeb666a1-a3f2-4608-b3c9-d92ba2ad77b2","403":"0e5fdb50-c3db-46ba-9ac3-87286489fa84","404":"f966ce8f-585b-4376-9e39-d460950eddcd","409":"201b40f1-b9b6-4711-a7cc-824f5e5385ed","422":"85b8bfc2-6b68-43d4-9094-af22c2323fb5","429":"3a331a9a-bbf1-48a7-8c4a-128d0a4b338c","503":"4ade70bf-3281-45b1-8deb-6fcbfa58f137"},"method":"post","type":"path","servers":["431ff564-91e2-4aad-b4f5-293c93a4432c","4c86d600-7a98-4c1b-9524-2b542282e88b"],"security":["8d5875e9-074a-47bc-b0fb-aaeb46778b14"],"path":"/v1/simulation/backtests","baseUrlOptions":["https://api.polysimulator.com","https://staging-api.polysimulator.com"],"title":"Create Backtest","description":"","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"769edb1f-3d8f-4c9e-931e-9c2b09618082":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"Idempotency-Key","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Idempotency-Key","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"116c32c0-3546-4491-8244-a1b35a98bc1a":{"name":"authorization","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"Authorization","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Authorization","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"c953085a-8d60-4c27-8f7f-91de7633a3db":{"name":"X-API-Key","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"X-Api-Key","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"X-Api-Key","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"080be805-e198-4145-923b-806e43e2c17f":{"name":"POLY_API_KEY","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"Poly Api Key","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Poly Api Key","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"b63c6d41-149b-4c22-ae4d-2bdc5385a2c5":{"name":"Poly-API-Key","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"Poly-Api-Key","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Poly-Api-Key","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"condition_ids":{"items":{"type":"string","uniqueKey":"condition_ids.items.[INDEX]","typeLabel":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Condition Ids","isRequired":true,"uniqueKey":"condition_ids","typeLabel":"string[]"},"start":{"type":"string","title":"Start","isRequired":true,"uniqueKey":"start","typeLabel":"string"},"end":{"type":"string","title":"End","isRequired":true,"uniqueKey":"end","typeLabel":"string"},"strategy":{"properties":{"size":{"type":"string","title":"Size","description":"Share size per entry as a decimal string","isRequired":true,"uniqueKey":"strategy.size","typeLabel":"string"},"spec_version":{"type":"string","const":"1","title":"Spec Version","default":"1","uniqueKey":"strategy.spec_version","typeLabel":"string"},"side":{"type":"string","enum":["BUY","SELL"],"title":"Side","default":"BUY","uniqueKey":"strategy.side","typeLabel":"enum\u003cstring>"},"outcome":{"type":"string","maxLength":200,"title":"Outcome","default":"Yes","uniqueKey":"strategy.outcome","typeLabel":"string"},"fill_model":{"type":"string","enum":["midpoint","top_of_book","depth_walk","depth_walk_depletion"],"title":"Fill Model","default":"depth_walk","uniqueKey":"strategy.fill_model","typeLabel":"enum\u003cstring>"},"entry":{"items":{"properties":{"field":{"type":"string","enum":["price","mid","best_bid","best_ask","spread","depth","time_to_resolution_hours"],"title":"Field","description":"depth: shares on the best 4 executable price levels on the entry side, complement-aware -- the ladder the fill walks, not the whole book. time_to_resolution_hours: hours from the tick to the market's SCHEDULED close (end_date), never to when it actually resolved; a market with no published close never satisfies it.","isRequired":true,"uniqueKey":"strategy.entry.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"op":{"type":"string","enum":["lt","lte","gt","gte","eq"],"title":"Op","isRequired":true,"uniqueKey":"strategy.entry.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"type":"string","title":"Value","isRequired":true,"uniqueKey":"strategy.entry.items.[INDEX].value","typeLabel":"string"}},"type":"object","required":["field","op","value"],"title":"StrategyPredicate","uniqueKey":"strategy.entry.items.[INDEX]","typeLabel":"StrategyPredicate · object"},"type":"array","title":"Entry","uniqueKey":"strategy.entry","typeLabel":"StrategyPredicate · object[]"},"exit":{"items":{"properties":{"field":{"type":"string","enum":["price","mid","best_bid","best_ask","spread","depth","time_to_resolution_hours"],"title":"Field","description":"depth: shares on the best 4 executable price levels on the entry side, complement-aware -- the ladder the fill walks, not the whole book. time_to_resolution_hours: hours from the tick to the market's SCHEDULED close (end_date), never to when it actually resolved; a market with no published close never satisfies it.","isRequired":true,"uniqueKey":"strategy.exit.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"op":{"type":"string","enum":["lt","lte","gt","gte","eq"],"title":"Op","isRequired":true,"uniqueKey":"strategy.exit.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"type":"string","title":"Value","isRequired":true,"uniqueKey":"strategy.exit.items.[INDEX].value","typeLabel":"string"}},"type":"object","required":["field","op","value"],"title":"StrategyPredicate","uniqueKey":"strategy.exit.items.[INDEX]","typeLabel":"StrategyPredicate · object"},"type":"array","title":"Exit","uniqueKey":"strategy.exit","typeLabel":"StrategyPredicate · object[]"}},"type":"object","required":["size"],"title":"StrategySpec","isRequired":true,"uniqueKey":"strategy","typeLabel":"StrategySpec · object"},"initial_bankroll":{"type":"string","title":"Initial Bankroll","default":"1000","uniqueKey":"initial_bankroll","typeLabel":"string"},"latency_ms":{"type":"integer","maximum":60000,"minimum":0,"title":"Latency Ms","description":"Decision-to-arrival latency, in milliseconds. An order decided at a tick is priced on the book as it stands at tick + latency_ms; where the archive cannot reconstruct that instant, on the first certified book at a later tick in the window; with neither, it does not fill. Default 104, our measured production API p50. 0 prices orders on the book their own decision saw, and the result then reports execution.signals_used_pre_decision_data_only=false.","default":104,"uniqueKey":"latency_ms","typeLabel":"integer"},"token_ids":{"oneOf":[{"type":"object","title":"Token Ids","description":"Optional explicit condition_id → token_id map. When omitted, the job resolves tokens from strategy.outcome and archive metadata.","additionalProperties":{"type":"string","uniqueKey":"token_ids.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"token_ids.oneOf.0","typeLabel":"Token Ids · object"},{"type":"null","title":"Token Ids","description":"Optional explicit condition_id → token_id map. When omitted, the job resolves tokens from strategy.outcome and archive metadata.","uniqueKey":"token_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"token_ids","typeLabel":"Token Ids · object | null"}},"type":"object","required":["condition_ids","start","end","strategy"],"title":"CreateBacktestRequest","examples":[{"condition_ids":["0xabc123"],"end":"2026-08-04T19:00:00Z","initial_bankroll":"1000","start":"2026-08-04T18:00:00Z","strategy":{"entry":[{"field":"price","op":"lte","value":"0.40"}],"exit":[{"field":"price","op":"gte","value":"0.60"}],"fill_model":"depth_walk","outcome":"Yes","side":"BUY","size":"10","spec_version":"1"},"token_ids":{"0xabc123":"tok_yes"}}],"uniqueKey":"","typeLabel":"CreateBacktestRequest · object"},"examples":{"Example":{"title":"Example","value":{"condition_ids":["0xabc123"],"end":"2026-08-04T19:00:00Z","initial_bankroll":"1000","start":"2026-08-04T18:00:00Z","strategy":{"entry":[{"field":"price","op":"lte","value":"0.40"}],"exit":[{"field":"price","op":"gte","value":"0.60"}],"fill_model":"depth_walk","outcome":"Yes","side":"BUY","size":"10","spec_version":"1"},"token_ids":{"0xabc123":"tok_yes"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d530bc92-e7b2-485e-9583-0c14dc926df3":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string","title":"Job Id","isRequired":true,"uniqueKey":"job_id","typeLabel":"string"},"status":{"type":"string","enum":["pending","running","completed","failed","cancelled"],"title":"Status","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"condition_ids":{"items":{"type":"string","uniqueKey":"condition_ids.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Condition Ids","isRequired":true,"uniqueKey":"condition_ids","typeLabel":"string[]"},"start":{"type":"string","title":"Start","isRequired":true,"uniqueKey":"start","typeLabel":"string"},"end":{"type":"string","title":"End","isRequired":true,"uniqueKey":"end","typeLabel":"string"},"fill_model":{"type":"string","enum":["midpoint","top_of_book","depth_walk","depth_walk_depletion"],"title":"Fill Model","isRequired":true,"uniqueKey":"fill_model","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","title":"Created At","isRequired":true,"uniqueKey":"created_at","typeLabel":"string"},"started_at":{"oneOf":[{"type":"string","title":"Started At","uniqueKey":"started_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Started At","uniqueKey":"started_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"started_at","typeLabel":"string | null"},"completed_at":{"oneOf":[{"type":"string","title":"Completed At","uniqueKey":"completed_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Completed At","uniqueKey":"completed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"completed_at","typeLabel":"string | null"},"error_message":{"oneOf":[{"type":"string","title":"Error Message","uniqueKey":"error_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error Message","uniqueKey":"error_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_message","typeLabel":"string | null"},"initial_bankroll":{"oneOf":[{"type":"string","title":"Initial Bankroll","uniqueKey":"initial_bankroll.oneOf.0","typeLabel":"string"},{"type":"null","title":"Initial Bankroll","uniqueKey":"initial_bankroll.oneOf.1","typeLabel":"null"}],"uniqueKey":"initial_bankroll","typeLabel":"string | null"},"total_pnl":{"oneOf":[{"type":"string","title":"Total Pnl","uniqueKey":"total_pnl.oneOf.0","typeLabel":"string"},{"type":"null","title":"Total Pnl","uniqueKey":"total_pnl.oneOf.1","typeLabel":"null"}],"uniqueKey":"total_pnl","typeLabel":"string | null"},"total_return_pct":{"oneOf":[{"type":"string","title":"Total Return Pct","uniqueKey":"total_return_pct.oneOf.0","typeLabel":"string"},{"type":"null","title":"Total Return Pct","uniqueKey":"total_return_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"total_return_pct","typeLabel":"string | null"},"win_rate":{"oneOf":[{"type":"string","title":"Win Rate","description":"Fraction of closed positions that made money, in [0, 1] (\"0.5000\" = half). Not a percentage.","uniqueKey":"win_rate.oneOf.0","typeLabel":"string"},{"type":"null","title":"Win Rate","description":"Fraction of closed positions that made money, in [0, 1] (\"0.5000\" = half). Not a percentage.","uniqueKey":"win_rate.oneOf.1","typeLabel":"null"}],"uniqueKey":"win_rate","typeLabel":"string | null"},"max_drawdown":{"oneOf":[{"type":"string","title":"Max Drawdown","uniqueKey":"max_drawdown.oneOf.0","typeLabel":"string"},{"type":"null","title":"Max Drawdown","uniqueKey":"max_drawdown.oneOf.1","typeLabel":"null"}],"uniqueKey":"max_drawdown","typeLabel":"string | null"},"num_trades":{"oneOf":[{"type":"integer","title":"Num Trades","uniqueKey":"num_trades.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Num Trades","uniqueKey":"num_trades.oneOf.1","typeLabel":"null"}],"uniqueKey":"num_trades","typeLabel":"integer | null"},"market_hours_charged":{"oneOf":[{"type":"string","title":"Market Hours Charged","uniqueKey":"market_hours_charged.oneOf.0","typeLabel":"string"},{"type":"null","title":"Market Hours Charged","uniqueKey":"market_hours_charged.oneOf.1","typeLabel":"null"}],"uniqueKey":"market_hours_charged","typeLabel":"string | null"},"settlement_scored":{"type":"boolean","title":"Settlement Scored","default":false,"uniqueKey":"settlement_scored","typeLabel":"boolean"},"tick_mode":{"oneOf":[{"type":"string","title":"Tick Mode","enum":["grid","event"],"uniqueKey":"tick_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Tick Mode","uniqueKey":"tick_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"tick_mode","typeLabel":"enum\u003cstring> | null"},"ticks_evaluated":{"oneOf":[{"type":"integer","title":"Ticks Evaluated","uniqueKey":"ticks_evaluated.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Ticks Evaluated","uniqueKey":"ticks_evaluated.oneOf.1","typeLabel":"null"}],"uniqueKey":"ticks_evaluated","typeLabel":"integer | null"},"tick_degraded":{"type":"boolean","title":"Tick Degraded","default":false,"uniqueKey":"tick_degraded","typeLabel":"boolean"},"tick_notice":{"oneOf":[{"type":"string","title":"Tick Notice","uniqueKey":"tick_notice.oneOf.0","typeLabel":"string"},{"type":"null","title":"Tick Notice","uniqueKey":"tick_notice.oneOf.1","typeLabel":"null"}],"uniqueKey":"tick_notice","typeLabel":"string | null"},"is_replay":{"type":"boolean","title":"Is Replay","default":false,"uniqueKey":"is_replay","typeLabel":"boolean"},"universe_eligible":{"type":"boolean","title":"Universe Eligible","default":false,"uniqueKey":"universe_eligible","typeLabel":"boolean"},"token_ids":{"oneOf":[{"type":"object","title":"Token Ids","additionalProperties":{"type":"string","uniqueKey":"token_ids.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"token_ids.oneOf.0","typeLabel":"Token Ids · object"},{"type":"null","title":"Token Ids","uniqueKey":"token_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"token_ids","typeLabel":"Token Ids · object | null"},"execution":{"oneOf":[{"type":"object","title":"BacktestExecution","description":"How a run's orders were executed, computed from the run itself.\n\nAbsent on runs stored before it existed. Every field describes what the\nexecutor DID, so two runs with different assumptions cannot be mistaken\nfor each other.","required":["latency_ms","signals_used_pre_decision_data_only"],"properties":{"latency_ms":{"type":"integer","title":"Latency Ms","description":"Decision-to-arrival latency applied to every order, in milliseconds.","isRequired":true,"uniqueKey":"execution.oneOf.0.latency_ms","typeLabel":"integer"},"signals_used_pre_decision_data_only":{"type":"boolean","title":"Signals Used Pre Decision Data Only","description":"True only when every fill was priced on a book strictly later than the tick its order was decided on (and no strategy field read post-decision data). False means at least one fill was priced on the book its own decision saw.","isRequired":true,"uniqueKey":"execution.oneOf.0.signals_used_pre_decision_data_only","typeLabel":"boolean"},"orders_filled":{"type":"integer","title":"Orders Filled","default":0,"uniqueKey":"execution.oneOf.0.orders_filled","typeLabel":"integer"},"orders_refused":{"additionalProperties":{"type":"integer","uniqueKey":"execution.oneOf.0.orders_refused.additionalProperties","typeLabel":"integer"},"type":"object","title":"Orders Refused","description":"Orders that did not execute, counted by reason code.","uniqueKey":"execution.oneOf.0.orders_refused","typeLabel":"Orders Refused · object"},"rules":{"items":{"type":"string","uniqueKey":"execution.oneOf.0.rules.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Rules","description":"The execution rules this run applied, in words.","uniqueKey":"execution.oneOf.0.rules","typeLabel":"string[]"}},"uniqueKey":"execution.oneOf.0","typeLabel":"BacktestExecution · object"},{"type":"null","uniqueKey":"execution.oneOf.1","typeLabel":"null"}],"uniqueKey":"execution","typeLabel":"BacktestExecution · object | null"}},"type":"object","required":["job_id","status","condition_ids","start","end","fill_model","created_at"],"title":"BacktestSummary","examples":[{"condition_ids":["0xabc123"],"created_at":"2026-08-04T18:00:00Z","end":"2026-08-04T19:00:00Z","fill_model":"depth_walk","is_replay":false,"job_id":"11111111-1111-1111-1111-111111111111","start":"2026-08-04T18:00:00Z","status":"completed","token_ids":{"0xabc123":"tok_yes"},"universe_eligible":true}],"uniqueKey":"","typeLabel":"BacktestSummary · object"},"examples":{"Example":{"title":"Example","value":{"condition_ids":["0xabc123"],"created_at":"2026-08-04T18:00:00Z","end":"2026-08-04T19:00:00Z","fill_model":"depth_walk","is_replay":false,"job_id":"11111111-1111-1111-1111-111111111111","start":"2026-08-04T18:00:00Z","status":"completed","token_ids":{"0xabc123":"tok_yes"},"universe_eligible":true}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Requests permitted in the current minute window for this key's tier.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current minute window.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current minute window resets.","schema":{"type":"string"}},"X-RateLimit-Limit-Per-Second":{"description":"Requests permitted per second for this key's tier.","schema":{"type":"string"}},"X-RateLimit-Remaining-Per-Second":{"description":"Requests remaining in the current one-second window.","schema":{"type":"string"}},"X-RateLimit-Tier":{"description":"Rate-limit tier name applied to this request (free, pro, ...).","schema":{"type":"string"}},"X-Polysim-RateLimit-Limit":{"description":"Alias of X-RateLimit-Limit (requests per minute for this tier).","schema":{"type":"string"}},"X-Polysim-RateLimit-Remaining":{"description":"Alias of X-RateLimit-Remaining (requests remaining this minute).","schema":{"type":"string"}},"X-Polysim-RateLimit-Reset":{"description":"Alias of X-RateLimit-Reset (minute-window reset, unix seconds).","schema":{"type":"string"}},"X-Polysim-RateLimit-Limit-Per-Second":{"description":"Alias of X-RateLimit-Limit-Per-Second.","schema":{"type":"string"}},"X-Polysim-RateLimit-Remaining-Per-Second":{"description":"Alias of X-RateLimit-Remaining-Per-Second.","schema":{"type":"string"}},"X-Polysim-RateLimit-Tier":{"description":"Alias of X-RateLimit-Tier (tier name applied to this request).","schema":{"type":"string"}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"63031810-aed3-4b8c-8d47-b4f2fcac4e4f":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"aeb666a1-a3f2-4608-b3c9-d92ba2ad77b2":{"description":"Invalid or expired API key","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"0e5fdb50-c3db-46ba-9ac3-87286489fa84":{"description":"Missing required permission or plan volume cap","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"feature_key":{"oneOf":[{"type":"string","title":"Feature Key","description":"Entitlement key the caller's plan lacks.","uniqueKey":"feature_key.oneOf.0","typeLabel":"string"},{"type":"null","title":"Feature Key","description":"Entitlement key the caller's plan lacks.","uniqueKey":"feature_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"feature_key","typeLabel":"string | null"},"upgrade_url":{"oneOf":[{"type":"string","title":"Upgrade Url","description":"Where to upgrade; carries ?feature=\u003cfeature_key>.","uniqueKey":"upgrade_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Upgrade Url","description":"Where to upgrade; carries ?feature=\u003cfeature_key>.","uniqueKey":"upgrade_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"upgrade_url","typeLabel":"string | null"},"limit":{"oneOf":[{"type":"integer","title":"Limit","description":"The plan cap that was hit.","uniqueKey":"limit.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Limit","description":"The plan cap that was hit.","uniqueKey":"limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"limit","typeLabel":"integer | null"}},"type":"object","required":["error"],"title":"PlanDenialError","description":"403 body for a plan-imposed cap, carrying the fields that make it actionable.\n\nA subclass rather than three new fields on ``ApiError``: that model is the\nerror shape for EVERY ``/v1`` endpoint, and widening it would publish\n``upgrade_url`` and ``limit`` on routes that have nothing to do with plans.\nSubclassing keeps all four base fields, so nothing changes for existing\nconsumers, and scopes the new three to the responses that actually carry\nthem.","uniqueKey":"","typeLabel":"PlanDenialError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>","feature_key":"\u003cstring>","upgrade_url":"\u003cstring>","limit":123}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"f966ce8f-585b-4376-9e39-d460950eddcd":{"description":"Not found","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"201b40f1-b9b6-4711-a7cc-824f5e5385ed":{"description":"Idempotency key reuse","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"85b8bfc2-6b68-43d4-9094-af22c2323fb5":{"description":"Body validation failure or universe exclusion","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"3a331a9a-bbf1-48a7-8c4a-128d0a4b338c":{"description":"Rate limit or simulation volume cap exceeded","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"4ade70bf-3281-45b1-8deb-6fcbfa58f137":{"description":"Metering, job store, or archive unavailable","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"}},"security":{"8d5875e9-074a-47bc-b0fb-aaeb46778b14":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Issue from /v1/keys (or admin-issued for enterprise tier).","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"431ff564-91e2-4aad-b4f5-293c93a4432c":{"url":"https://api.polysimulator.com","description":"Production"},"4c86d600-7a98-4c1b-9524-2b542282e88b":{"url":"https://staging-api.polysimulator.com","description":"Staging"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Issue from /v1/keys (or admin-issued for enterprise tier).","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Issue from /v1/keys (or admin-issued for enterprise tier).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"polysimulator","siteName":"PolySimulator","title":"Create Backtest - PolySimulator","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T12:41:59.830Z","originalFileLocation":"api-reference/simulation/create-backtest.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=\"application-name\" content=\"PolySimulator\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Backtest - PolySimulator\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PolySimulator\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.polysimulator.com/api-reference/simulation/create-backtest\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://polysimulator.mintlify.app/_mintlify/api/og/v2?division=Simulation\u0026amp;title=Create+Backtest\u0026amp;theme=836fae47dd9286134dc806ca\u0026amp;signature=ef93738a2a708357998eeac5f4e24995089ebb47707d8c55584c5e8e4e9df504\">\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=\"Create Backtest - PolySimulator\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://polysimulator.mintlify.app/_mintlify/api/og/v2?division=Simulation\u0026amp;title=Create+Backtest\u0026amp;theme=836fae47dd9286134dc806ca\u0026amp;signature=ef93738a2a708357998eeac5f4e24995089ebb47707d8c55584c5e8e4e9df504\">\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/polysimulator/Z7O8VINNN1g3IFN9/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PolySimulator\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00d26a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.polysimulator.com/api-reference/simulation/create-backtest\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/simulation/create-backtest.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.polysimulator.com/#organization\",\"name\":\"PolySimulator\",\"url\":\"https://docs.polysimulator.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/polysimulator/g3hLzzd62nMdIToN/logo/polysim-light.svg?fit=max\u0026auto=format\u0026n=g3hLzzd62nMdIToN\u0026q=85\u0026s=510d6e93b34b84b254f2ff702c7f2f11\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.polysimulator.com#website\",\"name\":\"PolySimulator\",\"url\":\"https://docs.polysimulator.com\",\"publisher\":{\"@id\":\"https://docs.polysimulator.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest#webpage\",\"url\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest\",\"name\":\"Create Backtest\",\"dateModified\":\"2026-11-04T12:41:59.830Z\",\"isPartOf\":{\"@id\":\"https://docs.polysimulator.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.polysimulator.com/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simulation\",\"item\":\"https://docs.polysimulator.com/api-reference/simulation/simulate-fill\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create Backtest\",\"item\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest#apireference\",\"headline\":\"Create Backtest\",\"name\":\"Create Backtest\",\"url\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest\",\"mainEntityOfPage\":{\"@id\":\"https://docs.polysimulator.com/api-reference/simulation/create-backtest#webpage\"},\"dateModified\":\"2026-11-04T12:41:59.830Z\",\"publisher\":{\"@id\":\"https://docs.polysimulator.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.polysimulator.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PolySimulator\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PolySimulator","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Overview","icon":"book-open","pages":[{"title":"API Reference","sidebarTitle":"Overview","href":"/api-reference/overview"}]},{"group":"Endpoints","icon":"code","pages":[{"group":"Health","pages":[{"title":"Health Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/health","href":"/api-reference/health/health-check"},{"title":"Liveness Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/health/live","href":"/api-reference/health/liveness-check"},{"title":"Readiness Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/health/ready","href":"/api-reference/health/readiness-check"},{"title":"System Status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/status","href":"/api-reference/health/system-status"},{"title":"Get Api Me","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me","href":"/api-reference/health/get-api-me"},{"title":"Version Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/version","href":"/api-reference/health/version-check"}]},{"group":"Market Data","pages":[{"title":"List markets (bare array; opt-in PM-shape envelope).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets","href":"/api-reference/market-data/list-markets-bare-array;-opt-in-pm-shape-envelope"},{"title":"Get Market","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}","href":"/api-reference/market-data/get-market"},{"title":"Get Market By Slug","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/by-slug/{slug}","href":"/api-reference/market-data/get-market-by-slug"},{"title":"Get Order Book","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}/book","href":"/api-reference/market-data/get-order-book"},{"title":"Batch Prices","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/prices/batch","href":"/api-reference/market-data/batch-prices"},{"title":"Get Candles","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}/candles","href":"/api-reference/market-data/get-candles"}]},{"group":"API Reference","pages":[{"title":"List Updown Intervals","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/updown/intervals","href":"/api-reference/list-updown-intervals"},{"title":"List Up Or Down Markets","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/updown","href":"/api-reference/list-up-or-down-markets"},{"title":"Get Market Series Siblings","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}/series-siblings","href":"/api-reference/get-market-series-siblings"},{"title":"Get Archive Price History Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/prices-history/archive","href":"/api-reference/get-archive-price-history-endpoint"},{"title":"List Email Preferences","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/integrations/email/preferences","href":"/api-reference/list-email-preferences"},{"title":"Update Email Preferences","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/integrations/email/preferences","href":"/api-reference/update-email-preferences"},{"title":"Integrations Email Test","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/email/test","href":"/api-reference/integrations-email-test"},{"title":"Email Unsubscribe","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/email/unsubscribe","href":"/api-reference/email-unsubscribe"},{"title":"Email Unsubscribe Post","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/email/unsubscribe","href":"/api-reference/email-unsubscribe-post"},{"title":"Preview Alert","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/preview/alert","href":"/api-reference/preview-alert"}]},{"group":"CLOB Read (Public)","pages":[{"title":"Get Price","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/price","href":"/api-reference/clob-read-public/get-price"},{"title":"Get Prices Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/prices","href":"/api-reference/clob-read-public/get-prices-batch"},{"title":"Get Midpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/midpoint","href":"/api-reference/clob-read-public/get-midpoint"},{"title":"Get Spread","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spread","href":"/api-reference/clob-read-public/get-spread"},{"title":"Get Book By Token","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/book","href":"/api-reference/clob-read-public/get-book-by-token"},{"title":"Get Clob Book By Path","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/clob/book/{token_id}","href":"/api-reference/clob-read-public/get-clob-book-by-path"},{"title":"Price history (PM wire shape — {history: [{t, p}]}).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/prices-history","href":"/api-reference/clob-read-public/price-history-pm-wire-shape-—-]"},{"title":"Get Server Time","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/time","href":"/api-reference/clob-read-public/get-server-time"},{"title":"Get Last Trade Price","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/last-trade-price","href":"/api-reference/clob-read-public/get-last-trade-price"},{"title":"Get Tick Size Query","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tick-size","href":"/api-reference/clob-read-public/get-tick-size-query"},{"title":"Get Tick Size","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tick-size/{token_id}","href":"/api-reference/clob-read-public/get-tick-size"},{"title":"Get Neg Risk Query","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/neg-risk","href":"/api-reference/clob-read-public/get-neg-risk-query"},{"title":"Get Neg Risk","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/neg-risk/{token_id}","href":"/api-reference/clob-read-public/get-neg-risk"},{"title":"Get Market By Token","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets-by-token/{token_id}","href":"/api-reference/clob-read-public/get-market-by-token"},{"title":"Post Midpoints Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/midpoints","href":"/api-reference/clob-read-public/post-midpoints-batch"},{"title":"Post Spreads Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/spreads","href":"/api-reference/clob-read-public/post-spreads-batch"},{"title":"Post Books Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/books","href":"/api-reference/clob-read-public/post-books-batch"}]},{"group":"Events","pages":[{"title":"List events with their markets (event-first shape).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/events","href":"/api-reference/events/list-events-with-their-markets-event-first-shape"}]},{"group":"Trading","pages":[{"title":"List user orders (Polysimulator-shape — see also: /v1/data/orders for PM-shape).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/orders","href":"/api-reference/trading/list-user-orders-polysimulator-shape-—-see-also:-v1dataorders-for-pm-shape"},{"title":"Place Order Dispatcher","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/orders","href":"/api-reference/trading/place-order-dispatcher"},{"title":"Batch Orders","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/orders/batch","href":"/api-reference/trading/batch-orders"},{"title":"Get a single order by ID (polysim-shape row).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/orders/{order_id}","href":"/api-reference/trading/get-a-single-order-by-id-polysim-shape-row"},{"title":"Cancel Order","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/orders/{order_id}","href":"/api-reference/trading/cancel-order"},{"title":"Clob Order","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/clob/order","href":"/api-reference/trading/clob-order"},{"title":"Cancel all pending limit orders (canonical verb).","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cancel-all","href":"/api-reference/trading/cancel-all-pending-limit-orders-canonical-verb"},{"title":"Cancel all pending limit orders (legacy DELETE alias).","deprecated":true,"version":null,"openapi":"/openapi.json delete /v1/cancel-all","href":"/api-reference/trading/cancel-all-pending-limit-orders-legacy-delete-alias"},{"title":"Cancel Market Orders","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/cancel-market-orders","href":"/api-reference/trading/cancel-market-orders"}]},{"group":"CLOB Compat","pages":[{"title":"Polymarket-compat bulk-cancel by id list.","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/orders","href":"/api-reference/clob-compat/polymarket-compat-bulk-cancel-by-id-list"},{"title":"List user orders (Polymarket-shape — recommended for SDK clients).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/orders","href":"/api-reference/clob-compat/list-user-orders-polymarket-shape-—-recommended-for-sdk-clients"},{"title":"Polymarket-compat single-order lookup (legacy top-level path).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/order/{order_id}","href":"/api-reference/clob-compat/polymarket-compat-single-order-lookup-legacy-top-level-path"},{"title":"Polymarket-compat single-order lookup (PM-shape /data/ path).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/order/{order_id}","href":"/api-reference/clob-compat/polymarket-compat-single-order-lookup-pm-shape-data-path"},{"title":"Polymarket-compat single order placement.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/order","href":"/api-reference/clob-compat/polymarket-compat-single-order-placement"},{"title":"Polymarket-compat single-order cancel (body-payload).","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/order","href":"/api-reference/clob-compat/polymarket-compat-single-order-cancel-body-payload"},{"title":"Get trade fee rate (PM-compat base_fee + polysim fee_rate_bps)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/fee-rate","href":"/api-reference/clob-compat/get-trade-fee-rate-pm-compat-base_fee-+-polysim-fee_rate_bps"},{"title":"Get USDC + conditional-token balance/allowance (PM keys — paper trading: huge)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/balance-allowance","href":"/api-reference/clob-compat/get-usdc-+-conditional-token-balanceallowance-pm-keys-—-paper-trading:-huge"},{"title":"List user trades (PM-compat — reads from filled orders).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/trades","href":"/api-reference/clob-compat/list-user-trades-pm-compat-—-reads-from-filled-orders"}]},{"group":"Account","pages":[{"title":"Get Balance","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/balance","href":"/api-reference/account/get-balance"},{"title":"Get Positions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/positions","href":"/api-reference/account/get-positions"},{"title":"Get Portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/portfolio","href":"/api-reference/account/get-portfolio"},{"title":"Get Trade History","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/history","href":"/api-reference/account/get-trade-history"},{"title":"Get Equity Curve","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/equity","href":"/api-reference/account/get-equity-curve"},{"title":"Reset Api Balance","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/account/reset-api-balance","href":"/api-reference/account/reset-api-balance"},{"title":"Get Entitlements","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/me/entitlements","href":"/api-reference/account/get-entitlements"},{"title":"List Settlements","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/settlements","href":"/api-reference/account/list-settlements"},{"title":"Create Wallet Auth Challenge","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/wallet/challenge","href":"/api-reference/account/create-wallet-auth-challenge"},{"title":"Verify Wallet Auth Challenge","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/wallet/verify","href":"/api-reference/account/verify-wallet-auth-challenge"},{"title":"Logout Wallet Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/wallet/logout","href":"/api-reference/account/logout-wallet-session"},{"title":"List My Wallet Identities","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me/wallet-identities","href":"/api-reference/account/list-my-wallet-identities"},{"title":"Update My Wallet Identity Visibility","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/me/wallet-identities/{identity_id}/visibility","href":"/api-reference/account/update-my-wallet-identity-visibility"}]},{"group":"Profile Analysis","pages":[{"title":"Full profile analysis for LLM/MCP consumption","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/profile-analysis","href":"/api-reference/profile-analysis/full-profile-analysis-for-llmmcp-consumption"}]},{"group":"API Keys","pages":[{"title":"List Keys","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys","href":"/api-reference/api-keys/list-keys"},{"title":"Create Key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys","href":"/api-reference/api-keys/create-key"},{"title":"Bootstrap first API key via Bearer JWT (advanced / headless)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/bootstrap","href":"/api-reference/api-keys/bootstrap-first-api-key-via-bearer-jwt-advanced-headless"},{"title":"Revoke Key","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/keys/{key_id}","href":"/api-reference/api-keys/revoke-key"},{"title":"Rename Key","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/keys/{key_id}","href":"/api-reference/api-keys/rename-key"},{"title":"Rotate an API key with a zero-downtime overlap window","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/{key_id}/rotate","href":"/api-reference/api-keys/rotate-an-api-key-with-a-zero-downtime-overlap-window"},{"title":"List Tiers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys/tiers","href":"/api-reference/api-keys/list-tiers"},{"title":"Get Key Usage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys/usage","href":"/api-reference/api-keys/get-key-usage"},{"title":"Get Ws Token","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/ws-token","href":"/api-reference/api-keys/get-ws-token"}]},{"group":"Wallets","pages":[{"title":"List My Wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me/wallets","href":"/api-reference/wallets/list-my-wallets"},{"title":"Create Wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/me/wallets","href":"/api-reference/wallets/create-wallet"},{"title":"Get Wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me/wallets/{wallet_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Archive Wallet","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/me/wallets/{wallet_id}","href":"/api-reference/wallets/archive-wallet"},{"title":"Patch Wallet","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/me/wallets/{wallet_id}","href":"/api-reference/wallets/patch-wallet"},{"title":"Reset Wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/me/wallets/{wallet_id}/reset","href":"/api-reference/wallets/reset-wallet"}]},{"group":"Export","pages":[{"title":"Export Trades Csv","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/export/trades.csv","href":"/api-reference/export/export-trades-csv"},{"title":"Export Positions Csv","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/export/positions.csv","href":"/api-reference/export/export-positions-csv"},{"title":"Export Settlements Csv","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/export/settlements.csv","href":"/api-reference/export/export-settlements-csv"}]},{"group":"WebSocket","pages":[{"title":"Ws Prices Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/prices","href":"/api-reference/websocket/ws-prices-upgrade-hint"},{"title":"Ws Executions Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/executions","href":"/api-reference/websocket/ws-executions-upgrade-hint"}]},{"group":"WebSocket (PM-compat)","pages":[{"title":"Ws Market Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/market","href":"/api-reference/websocket-pm-compat/ws-market-upgrade-hint"},{"title":"Ws User Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/user","href":"/api-reference/websocket-pm-compat/ws-user-upgrade-hint"}]},{"group":"Status","pages":[{"title":"Status Uptime","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/status/uptime","href":"/api-reference/status/status-uptime"}]},{"group":"Heartbeats","pages":[{"title":"Heartbeat dead-man's-switch — auto-cancel orders on missed pings.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/heartbeats","href":"/api-reference/heartbeats/heartbeat-dead-mans-switch-—-auto-cancel-orders-on-missed-pings"}]},{"group":"Football","pages":[{"title":"Football Fixtures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/fixtures","href":"/api-reference/football/football-fixtures"},{"title":"Football Match","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/match/{match_id}","href":"/api-reference/football/football-match"},{"title":"Football Standings","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/standings","href":"/api-reference/football/football-standings"},{"title":"Football Bracket","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/bracket","href":"/api-reference/football/football-bracket"},{"title":"Football H2H","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/h2h","href":"/api-reference/football/football-h2h"},{"title":"Football Scorers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/scorers","href":"/api-reference/football/football-scorers"},{"title":"Football Squads","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/squads","href":"/api-reference/football/football-squads"},{"title":"Football Api Lineups","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/lineups","href":"/api-reference/football/football-api-lineups"},{"title":"Football Api Injuries","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/injuries","href":"/api-reference/football/football-api-injuries"}]},{"group":"Simulation","pages":[{"title":"Simulate Fill","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/fill","href":"/api-reference/simulation/simulate-fill"},{"title":"Get Archive Coverage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/coverage","href":"/api-reference/simulation/get-archive-coverage"},{"title":"List Fill Models","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/fill-models","href":"/api-reference/simulation/list-fill-models"},{"title":"Replay Book","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/book","href":"/api-reference/simulation/replay-book"},{"title":"List Backtests","description":null,"deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests","href":"/api-reference/simulation/list-backtests"},{"title":"Create Backtest","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/backtests","href":"/api-reference/simulation/create-backtest"},{"title":"Get Backtest","description":null,"deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests/{job_id}","href":"/api-reference/simulation/get-backtest"},{"title":"Cancel Backtest","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/simulation/backtests/{job_id}","href":"/api-reference/simulation/cancel-backtest"},{"title":"List Backtest Trades","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests/{job_id}/trades","href":"/api-reference/simulation/list-backtest-trades"},{"title":"Get Backtest Equity","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests/{job_id}/equity","href":"/api-reference/simulation/get-backtest-equity"},{"title":"Create Export","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/exports","href":"/api-reference/simulation/create-export"},{"title":"Get Simulation Quota","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/quota","href":"/api-reference/simulation/get-simulation-quota"}]},{"group":"Developer Webhooks","pages":[{"title":"List Event Types","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks/event-types","href":"/api-reference/developer-webhooks/list-event-types"},{"title":"List Endpoints","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks","href":"/api-reference/developer-webhooks/list-endpoints"},{"title":"Create Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/developer/webhooks","href":"/api-reference/developer-webhooks/create-endpoint"},{"title":"Get Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks/{endpoint_id}","href":"/api-reference/developer-webhooks/get-endpoint"},{"title":"Delete Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/developer/webhooks/{endpoint_id}","href":"/api-reference/developer-webhooks/delete-endpoint"},{"title":"Update Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/developer/webhooks/{endpoint_id}","href":"/api-reference/developer-webhooks/update-endpoint"},{"title":"Rotate Secret","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/developer/webhooks/{endpoint_id}/rotate-secret","href":"/api-reference/developer-webhooks/rotate-secret"},{"title":"Test Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/developer/webhooks/{endpoint_id}/test","href":"/api-reference/developer-webhooks/test-endpoint"},{"title":"List Deliveries","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks/{endpoint_id}/deliveries","href":"/api-reference/developer-webhooks/list-deliveries"}]},{"group":"Billing","pages":[{"title":"Create Checkout","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/checkout","href":"/api-reference/billing/create-checkout"},{"title":"Create Portal","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/portal","href":"/api-reference/billing/create-portal"},{"title":"Get Subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/subscription","href":"/api-reference/billing/get-subscription"},{"title":"List Billing Plans","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/plans","href":"/api-reference/billing/list-billing-plans"},{"title":"Create Topup Checkout","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/topup/checkout","href":"/api-reference/billing/create-topup-checkout"}]},{"group":"Integrations","pages":[{"title":"Discord List","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/integrations/discord","href":"/api-reference/integrations/discord-list"},{"title":"Discord Create","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/discord","href":"/api-reference/integrations/discord-create"},{"title":"Discord Delete","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/integrations/discord/{subscription_id}","href":"/api-reference/integrations/discord-delete"},{"title":"Discord Test","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/discord/{subscription_id}/test","href":"/api-reference/integrations/discord-test"}]}]}]}]},"basePath":"","title":"Create Backtest - PolySimulator","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CYZot51e.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","clsx-DptzKFCt.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Dt1IougW.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CZ6Wt2Vb.js"]}