{"openapi":"3.1.0","info":{"title":"riskprism API","summary":"Open-source US equity factor risk model. Free, no key.","description":"Barra-style factor risk model (market + 7 styles + 12 industries), rebuilt weekly from SEC EDGAR and market data, validated in public. Weights are portfolio weights; shorts are negative; they need not sum to 1. All volatilities are annualized decimals (0.20 = 20%/yr). Not investment advice.","version":"v1"},"paths":{"/api/v1/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api V1 Health Get"}}}}}}},"/api/v1/meta":{"get":{"tags":["meta"],"summary":"Model version, as-of date, factors, coverage","operationId":"meta_api_v1_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Meta Api V1 Meta Get"}}}}}}},"/api/v1/factors":{"get":{"tags":["meta"],"summary":"Factor list, annualized vols, and covariance matrix","operationId":"factors_api_v1_factors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Factors Api V1 Factors Get"}}}}}}},"/api/v1/assets/{ticker}":{"get":{"tags":["assets"],"summary":"Per-asset exposures and vol decomposition","operationId":"asset_api_v1_assets__ticker__get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Asset Api V1 Assets  Ticker  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/coverage":{"get":{"tags":["assets"],"summary":"Which tickers the current build covers","operationId":"coverage_api_v1_coverage_get","parameters":[{"name":"tickers","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated","examples":["AAPL,MSFT,BRK.B"],"title":"Tickers"},"description":"Comma-separated"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Coverage Api V1 Coverage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portfolio-risk":{"post":{"tags":["portfolio"],"summary":"Full risk report: vol decomposition + contributions","operationId":"portfolio_risk_api_v1_portfolio_risk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Portfolio Risk Api V1 Portfolio Risk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stress-test":{"post":{"tags":["portfolio"],"summary":"Linear P&L estimate under factor shocks","operationId":"stress_test_api_v1_stress_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stress Test Api V1 Stress Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PortfolioRequest":{"properties":{"weights":{"additionalProperties":{"type":"number"},"type":"object","minProperties":1,"title":"Weights","description":"Ticker -> portfolio weight. Shorts negative; weights need not sum to 1.","examples":[{"AAPL":0.4,"MSFT":0.4,"XOM":0.2}]},"optimized":{"type":"boolean","title":"Optimized","description":"Set true if the weights came from optimizing against this model; reported vols then include the Shepard second-order correction.","default":false}},"type":"object","required":["weights"],"title":"PortfolioRequest"},"StressRequest":{"properties":{"weights":{"additionalProperties":{"type":"number"},"type":"object","minProperties":1,"title":"Weights"},"factor_shocks":{"additionalProperties":{"type":"number"},"type":"object","minProperties":1,"title":"Factor Shocks","description":"Factor -> shock in return units (-0.10 = -10%). GET /api/v1/meta for valid factor names.","examples":[{"market":-0.1,"momentum":-0.05}]}},"type":"object","required":["weights","factor_shocks"],"title":"StressRequest"},"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"}}}}