{"openapi":"3.1.0","info":{"title":"Upside/Downside Capture API","version":"1.0.0","description":"Measures the asymmetry every allocator actually cares about: how much of a benchmark's gains an asset captures when the market rises, versus how much of its losses it suffers when the market falls — computed live from Yahoo Finance daily closes, no key, nothing stored. A single beta assumes a market moves the same up and down, but the assets worth owning do not: they participate in rallies and cushion sell-offs, and the ones to avoid do the opposite. This API splits the benchmark's history into up-days and down-days and measures each side separately. The upside capture is the asset's average gain on the benchmark's up-days relative to the benchmark (above 100 = it gains more than the market in rallies); the downside capture is the same on down-days (below 100 = it loses less in sell-offs — defensive). Their ratio, the capture ratio, is the headline: above 1 means a favourable asymmetry. It also returns the downside beta and upside beta — the asset's beta measured only on the benchmark's down- and up-days — whose gap reveals whether the asset is more exposed in crashes than in rallies. The asset endpoint returns one instrument's full asymmetry profile; the screener endpoint ranks the cross-asset universe by capture ratio, downside capture or downside beta. This is the conditional / up-down asymmetry cut — distinct from the single unconditional beta screener, the correlation matrix, and the total-risk and tail-risk APIs. It separates the up market from the down market.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/capture-api","description":"oanor gateway"}],"tags":[{"name":"Screener"},{"name":"Asset"},{"name":"Universe"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/screener":{"get":{"operationId":"get_v1_screener","tags":["Screener"],"summary":"Rank the universe by up/down capture asymmetry","description":"","parameters":[{"name":"benchmark","in":"query","required":false,"description":"Universe symbol used as benchmark","schema":{"type":"string"},"example":"SPY"},{"name":"sort","in":"query","required":false,"description":"capture_ratio, downside_capture, upside_capture or downside_beta","schema":{"type":"string"},"example":"capture_ratio"},{"name":"window","in":"query","required":false,"description":"Lookback in trading days (60-756)","schema":{"type":"string"},"example":"252"},{"name":"class","in":"query","required":false,"description":"equity, sector, commodity, bond, crypto or all","schema":{"type":"string"},"example":"all"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Computed vs SPY over window_days of daily returns, split into the benchmark's up- and down-days. upside_capture > 100 = gains more than the market in rallies; downside_capture < 100 = loses less in sell-offs (defensive); capture_ratio > 1 = favourable asymmetry. downside_beta > upside_beta = more exposed in crashes than rallies. Read fresh per call, nothing cached.","class":"all","count":20,"source":"Yahoo Finance","results":[{"name":"Silver","rank":1,"class":"commodity","symbol":"SLV","up_days":141,"available":true,"down_days":111,"upside_beta":1.428,"observations":252,"capture_ratio":1.368,"downside_beta":1.147,"upside_capture":209.6,"downside_capture":153.2},{"name":"Utilities","rank":2,"class":"sector","symbol":"XLU","up_days":141,"available":true,"down_days":111,"upside_beta":0.151,"observations":252,"capture_ratio":1.314,"downside_beta":0.21,"upside_capture":26.7,"downside_capture":20.3},{"name":"Gold","rank":3,"class":"commodity","symbol":"GLD","up_days":141,"available":true,"down_days":111,"upside_beta":0.731,"observations":252,"capture_ratio":1.247,"downside_beta":0.131,"upside_capture":80.3,"downside_capture":64.3},{"name":"Health Care","rank":4,"class":"sector","symbol":"XLV","up_days":141,"available":true,"down_days":111,"upside_beta":0.666,"observations":252,"capture_ratio":1.152,"downside_beta":0.234,"upside_capture":47.3,"downside_capture":41.1},{"name":"Emerging Markets","rank":5,"class":"equity","symbol":"EEM","up_days":141,"available":true,"down_days":111,"upside_beta":1.566,"observations":252,"capture_ratio":1.115,"downside_beta":1.36,"upside_capture":136.1,"downside_capture":122.1},{"name":"Technology","rank":6,"class":"sector","symbol":"XLK","up_days":141,"available":true,"down_days":111,"upside_beta":1.342,"observations":252,"capture_ratio":1.081,"downside_beta":1.632,"upside_capture":173.4,"downside_capture":160.4},{"name":"US Small Caps","rank":7,"class":"equity","symbol":"IWM","up_days":141,"available":true,"down_days":111,"upside_beta":1.484,"observations":252,"capture_ratio":1.045,"downside_beta":1.202,"upside_capture":136.5,"downside_capture":130.6},{"name":"Nasdaq 100","rank":8,"class":"equity","symbol":"QQQ","up_days":141,"available":true,"down_days":111,"upside_beta":1.277,"observations":252,"capture_ratio":1.036,"downside_beta":1.336,"upside_capture":133.9,"downside_capture":129.3},{"name":"S&P 500","rank":9,"class":"equity","symbol":"SPY","up_days":141,"available":true,"down_days":111,"upside_beta":1,"observations":252,"capture_ratio":1,"downside_beta":1,"upside_capture":100,"downside_capture":100},{"name":"Developed ex-US","rank":10,"class":"equity","symbol":"EFA","up_days":141,"available":true,"down_days":111,"upside_beta":1.199,"observations":252,"capture_ratio":0.943,"downside_beta":0.821,"upside_capture":97,"downside_capture":102.8},{"name":"US Aggregate Bonds","rank":11,"class":"bond","symbol":"AGG","up_days":141,"available":true,"down_days":111,"upside_beta":0.177,"observations":252,"capture_ratio":0.894,"downside_beta":0.042,"upside_capture":10.2,"downside_capture":11.4},{"name":"Financials","rank":12,"class":"sector","symbol":"XLF","up_days":141,"available":true,"down_days":111,"upside_beta":0.758,"observations":252,"capture_ratio":0.807,"downside_beta":0.591,"upside_capture":70.4,"downside_capture":87.3},{"name":"20Y+ Treasuries","rank":13,"class":"bond","symbol":"TLT","up_days":141,"available":true,"down_days":111,"upside_beta":0.266,"observations":252,"capture_ratio":0.789,"downside_beta":0.022,"upside_capture":15,"downside_capture":19},{"name":"High-Yield Credit","rank":14,"class":"bond","symbol":"HYG","up_days":141,"available":true,"down_days":111,"upside_beta":0.334,"observations":252,"capture_ratio":0.779,"downside_beta":0.193,"upside_capture":20.8,"downside_capture":26.7},{"name":"Ethereum","rank":15,"class":"crypto","symbol":"ETH-USD","up_days":141,"available":true,"down_days":111,"upside_beta":2.268,"observations":252,"capture_ratio":0.603,"downside_beta":3.186,"upside_capture":193.6,"downside_capture":321},{"name":"Bitcoin","rank":16,"class":"crypto","symbol":"BTC-USD","up_days":141,"available":true,"down_days":111,"upside_beta":1.427,"observations":252,"capture_ratio":0.498,"downside_beta":1.891,"upside_capture":110.1,"downside_capture":221.2},{"name":"Consumer Staples","rank":17,"class":"sector","symbol":"XLP","up_days":141,"available":true,"down_days":111,"upside_beta":0.408,"observations":252,"capture_ratio":0.366,"downside_beta":-0.065,"upside_capture":-5.7,"downside_capture":-15.5},{"name":"Crude Oil","rank":18,"class":"commodity","symbol":"USO","up_days":141,"available":true,"down_days":111,"upside_beta":-2.164,"observations":252,"capture_ratio":0.351,"downside_beta":-0.207,"upside_capture":-71.5,"downside_capture":-203.7},{"name":"Broad Commodities","rank":19,"class":"commodity","symbol":"DBC","up_days":141,"available":true,"down_days":111,"upside_beta":-0.673,"observations":252,"capture_ratio":0.105,"downside_beta":0.151,"upside_capture":-5.9,"downside_capture":-56.3},{"name":"Energy","rank":20,"class":"sector","symbol":"XLE","up_days":141,"available":true,"down_days":111,"upside_beta":-0.513,"observations":252,"capture_ratio":0.07,"downside_beta":0.429,"upside_capture":-3.8,"downside_capture":-55.1}],"benchmark":"SPY","sorted_by":"capture_ratio","unavailable":[],"window_days":252,"benchmark_name":"S&P 500","best_asymmetry":{"symbol":"SLV","capture_ratio":1.368},"most_defensive":{"symbol":"USO","downside_capture":-203.7}},"meta":{"timestamp":"2026-06-12T10:34:45.989Z","request_id":"fff0c9d0-55e0-4f67-b73e-43d7e6b8f384"},"status":"ok","message":"Capture screener retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/asset":{"get":{"operationId":"get_v1_asset","tags":["Asset"],"summary":"Full asymmetry profile of one instrument","description":"","parameters":[{"name":"symbol","in":"query","required":true,"description":"Universe symbol","schema":{"type":"string"},"example":"TLT"},{"name":"benchmark","in":"query","required":false,"description":"Benchmark symbol","schema":{"type":"string"},"example":"SPY"},{"name":"window","in":"query","required":false,"description":"Lookback in trading days (60-756)","schema":{"type":"string"},"example":"252"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"20Y+ Treasuries","note":"Up- and down-capture vs SPY on the benchmark's up- and down-days; capture_ratio = upside/downside. downside_beta and upside_beta are the asset's beta on down- and up-days. Read fresh per call, nothing cached.","class":"bond","reads":{"capture_ratio":"poor asymmetry (gives up more than it gains)","crash_exposure":"more exposed in rallies than crashes (good asymmetry)","downside_capture":"defensive — cushions sell-offs"},"source":"Yahoo Finance","symbol":"TLT","up_days":141,"benchmark":"SPY","down_days":111,"upside_beta":0.266,"window_days":252,"observations":252,"capture_ratio":0.789,"downside_beta":0.022,"benchmark_name":"S&P 500","upside_capture":15,"downside_capture":19},"meta":{"timestamp":"2026-06-12T10:34:46.181Z","request_id":"11226ef6-235a-4f75-8e08-c51f82d958ea"},"status":"ok","message":"Asset capture retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/universe":{"get":{"operationId":"get_v1_universe","tags":["Universe"],"summary":"The cross-asset universe and its classes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The cross-asset universe the screener ranks. Pass class= to a screener call to rank within one class.","count":20,"assets":[{"name":"S&P 500","class":"equity","symbol":"SPY"},{"name":"Nasdaq 100","class":"equity","symbol":"QQQ"},{"name":"US Small Caps","class":"equity","symbol":"IWM"},{"name":"Developed ex-US","class":"equity","symbol":"EFA"},{"name":"Emerging Markets","class":"equity","symbol":"EEM"},{"name":"Technology","class":"sector","symbol":"XLK"},{"name":"Financials","class":"sector","symbol":"XLF"},{"name":"Energy","class":"sector","symbol":"XLE"},{"name":"Health Care","class":"sector","symbol":"XLV"},{"name":"Utilities","class":"sector","symbol":"XLU"},{"name":"Consumer Staples","class":"sector","symbol":"XLP"},{"name":"Gold","class":"commodity","symbol":"GLD"},{"name":"Silver","class":"commodity","symbol":"SLV"},{"name":"Crude Oil","class":"commodity","symbol":"USO"},{"name":"Broad Commodities","class":"commodity","symbol":"DBC"},{"name":"20Y+ Treasuries","class":"bond","symbol":"TLT"},{"name":"High-Yield Credit","class":"bond","symbol":"HYG"},{"name":"US Aggregate Bonds","class":"bond","symbol":"AGG"},{"name":"Bitcoin","class":"crypto","symbol":"BTC-USD"},{"name":"Ethereum","class":"crypto","symbol":"ETH-USD"}],"source":"Yahoo Finance","classes":["equity","sector","commodity","bond","crypto"]},"meta":{"timestamp":"2026-06-12T10:34:46.294Z","request_id":"29e4b765-7e89-4b1d-908a-11e647ba07a1"},"status":"ok","message":"Universe retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"benchmark is any universe symbol (default SPY). window is 60-756 trading days (default 252). sort is capture_ratio (default), downside_capture, upside_capture or downside_beta. class filters to equity/sector/commodity/bond/crypto (default all). Read fresh per call, nothing cached.","sorts":["capture_ratio","downside_capture","downside_beta","upside_capture"],"source":"Yahoo Finance daily closes, live","classes":["equity","sector","commodity","bond","crypto"],"service":"capture-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/asset":"Full asymmetry profile of one instrument (symbol=TLT, benchmark=SPY, window=252).","GET /v1/screener":"Rank the universe by up/down capture asymmetry (benchmark=SPY, sort=capture_ratio, window=252, class=all).","GET /v1/universe":"The cross-asset universe and its classes."},"description":"Upside/downside capture & downside beta — how much of a benchmark's gains an asset captures in up markets versus how much of its losses it suffers in down markets, live from Yahoo Finance daily closes (no key, nothing stored). upside_capture > 100 gains more than the market in rallies; downside_capture < 100 loses less in sell-offs; capture_ratio > 1 is favourable asymmetry. It also returns downside and upside beta (beta on the benchmark's down- and up-days). asset returns one instrument's asymmetry profile; screener ranks the cross-asset universe by capture ratio, downside capture or downside beta. The conditional / up-down asymmetry cut — distinct from the single unconditional beta screener, the correlation matrix, and the total-risk and tail-risk APIs.","universe_size":20,"upstream_status":"ok","best_asymmetry_vs_spy":"SLV"},"meta":{"timestamp":"2026-06-12T10:34:46.493Z","request_id":"a9031981-b880-445b-87c9-baa36cc806f5"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":685,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1140,"monthly_call_quota":15300,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3660,"monthly_call_quota":87000,"rps_limit":16,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":8240,"monthly_call_quota":476000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/capture-api"}