POST /v1/lab/strategies/{id}/paper
Start paper trading one of the caller’s strategies: from now on, every signal of its wallets is scored against the real order book (no orders, no keys). The spec and a Builder source’s config are frozen into the run; wallets are seated as-of today and re-seated every rerank_days. One active run per strategy (409 `paper_run_active`); a strategy that copies no wallet has its rules evaluated on the live order-book stream with the backtest’s own decisions, once per market, each entry filled on the live book (400 `rules_paper_not_yet` while LAB_RULES_PAPER_ENABLED is off); 400 `limit_orders_paper_not_yet` for a strategy whose entry rests a limit order (backtests only, for now); 400 `lab_paper_runs_max` at the plan’s limit; 403 `plan_required` (paper_trading). 404 `lab_paper_disabled` while LAB_PAPER_ENABLED is off.
Start paper trading one of the caller’s strategies: from now on, every signal of its wallets is scored against the real order book (no orders, no keys). The spec and a Builder source’s config are frozen into the run; wallets are seated as-of today and re-seated every rerank_days. One active run per strategy (409 paper_run_active); a strategy that copies no wallet has its rules evaluated on the live order-book stream with the backtest’s own decisions, once per market, each entry filled on the live book (400 rules_paper_not_yet while LAB_RULES_PAPER_ENABLED is off); 400 limit_orders_paper_not_yet for a strategy whose entry rests a limit order (backtests only, for now); 400 lab_paper_runs_max at the plan’s limit; 403 plan_required (paper_trading). 404 lab_paper_disabled while LAB_PAPER_ENABLED is off.
API key: Authorization: Bearer pk_live_… (mint at polyrank.app/api-keys)
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/lab/strategies/497f6eca-6276-4993-bfeb-53cbbbba6f08/paper"{ "id": "string", "strategy_id": "string", "status": "active", "wallets": [ "string" ], "wallets_refreshed_at": "string", "started_at": "string", "stopped_at": "string", "graded_at": "string", "resolved_copies": 0, "promotable": true, "stats": { "property1": null, "property2": null }, "notes": [ "string" ], "known_issues": [ "string" ], "kind": "copy"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}