{"openapi":"3.1.0","info":{"title":"Pair Trading Signal API","description":"Statistical arbitrage pair trading intelligence as an API","version":"v1"},"paths":{"/":{"get":{"tags":["discovery"],"summary":"Root","description":"Top-level discovery endpoint.\n\nLets a human or an agent landing on the apex URL find the docs,\nMCP transport, free endpoints, and pricing in one shot — instead\nof getting a bare 404.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/strategy/description":{"get":{"tags":["free"],"summary":"Strategy Description","operationId":"strategy_description_v1_strategy_description_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/pairs/count":{"get":{"tags":["free"],"summary":"Pairs Count","operationId":"pairs_count_v1_pairs_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/performance/summary":{"get":{"tags":["performance"],"summary":"Performance Summary","operationId":"performance_summary_v1_performance_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/performance/equity_curve":{"get":{"tags":["performance"],"summary":"Performance Equity Curve","operationId":"performance_equity_curve_v1_performance_equity_curve_get","parameters":[{"name":"instance","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(global|combined)$","default":"combined","title":"Instance"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(1h|1d|1w)$","default":"1d","title":"Interval"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/performance/trades":{"get":{"tags":["performance"],"summary":"Performance Trades","operationId":"performance_trades_v1_performance_trades_get","parameters":[{"name":"instance","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(global|combined)$","default":"combined","title":"Instance"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pairs/tradeable":{"get":{"tags":["standard"],"summary":"Tradeable Pairs","operationId":"tradeable_pairs_v1_pairs_tradeable_get","parameters":[{"name":"min_regime","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(green|yellow|red)$","default":"yellow","title":"Min Regime"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pairs/evaluate":{"get":{"tags":["standard"],"summary":"Evaluate Pair","operationId":"evaluate_pair_v1_pairs_evaluate_get","parameters":[{"name":"asset_a","in":"query","required":true,"schema":{"type":"string","title":"Asset A"}},{"name":"asset_b","in":"query","required":true,"schema":{"type":"string","title":"Asset B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signals/{pair_key}":{"get":{"tags":["standard"],"summary":"Get Signal","operationId":"get_signal_v1_signals__pair_key__get","parameters":[{"name":"pair_key","in":"path","required":true,"schema":{"type":"string","title":"Pair Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/backtest/{pair_key}":{"get":{"tags":["standard"],"summary":"Get Backtest","operationId":"get_backtest_v1_backtest__pair_key__get","parameters":[{"name":"pair_key","in":"path","required":true,"schema":{"type":"string","title":"Pair Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/premium/signals/entry_params":{"post":{"tags":["premium"],"summary":"Entry Params","operationId":"entry_params_v1_premium_signals_entry_params_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryParamsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/premium/opportunities":{"get":{"tags":["premium"],"summary":"Get Opportunities","operationId":"get_opportunities_v1_premium_opportunities_get","parameters":[{"name":"max_pairs","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Max Pairs"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/premium/signals/all":{"get":{"tags":["premium"],"summary":"Bulk Signals","description":"Return current z-score + signal for every pair at or above the\nrequested regime. Includes FLAT pairs — the value is the full\nmarket-neutral landscape in one call.","operationId":"bulk_signals_v1_premium_signals_all_get","parameters":[{"name":"min_regime","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(green|yellow|red)$","default":"YELLOW","title":"Min Regime"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/premium/signals/{pair_key}/history":{"get":{"tags":["premium"],"summary":"Signal History","operationId":"signal_history_v1_premium_signals__pair_key__history_get","parameters":[{"name":"pair_key","in":"path","required":true,"schema":{"type":"string","title":"Pair Key"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(1h|1d)$","default":"1h","title":"Interval"}},{"name":"lookback","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":168,"title":"Lookback"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/basis/opportunities":{"get":{"tags":["basis"],"summary":"Basis Opportunities","description":"Top assets ranked by |APR|, with venue per leg + decision label.","operationId":"basis_opportunities_v1_basis_opportunities_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"min_apr_pct","in":"query","required":false,"schema":{"type":"number","minimum":0.0,"default":0.0,"title":"Min Apr Pct"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/basis/signal/{asset}":{"get":{"tags":["basis"],"summary":"Basis Signal","description":"Current spread, APR, signal stability (t-stat / hit_rate / worst_apr), decision label for one asset.","operationId":"basis_signal_v1_basis_signal__asset__get","parameters":[{"name":"asset","in":"path","required":true,"schema":{"type":"string","title":"Asset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/basis/signal/{asset}/history":{"get":{"tags":["basis"],"summary":"Basis Signal History","description":"Spread-APR history time series for one asset.","operationId":"basis_signal_history_v1_basis_signal__asset__history_get","parameters":[{"name":"asset","in":"path","required":true,"schema":{"type":"string","title":"Asset"}},{"name":"lookback_days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":7,"title":"Lookback Days"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"(?i)^(1h|1d)$","default":"1h","title":"Interval"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"EntryParamsRequest":{"properties":{"pair_key":{"type":"string","title":"Pair Key"},"equity_usd":{"type":"number","exclusiveMinimum":0.0,"title":"Equity Usd","description":"Total account equity in USD"},"max_leverage":{"type":"number","maximum":50.0,"exclusiveMinimum":0.0,"title":"Max Leverage","description":"Maximum gross leverage you want to use (e.g. 3.0, 5.0, 10.0)"},"max_notional_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Notional Usd","description":"Optional hard cap on total gross notional in USD. If set, overrides equity * leverage when lower."}},"type":"object","required":["pair_key","equity_usd","max_leverage"],"title":"EntryParamsRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","examples":["ok"]},"version":{"type":"string","title":"Version","default":"v1"}},"type":"object","required":["status"],"title":"HealthResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}