{"openapi":"3.1.0","info":{"title":"Risk-On / Risk-Off (RORO) Index","version":"1.0.0","description":"One number for the market's mood across asset classes — a live 0-100 risk-on / risk-off (RORO) score, computed from Yahoo Finance (no key, nothing stored). On any day capital is either reaching for risk or fleeing to safety, and the signal lives in the relationships between markets, not any single price. This blends four classic cross-asset gauges — stocks vs long bonds (SPY/TLT), high-yield vs investment-grade credit (HYG/LQD), copper vs gold (the growth metal vs the haven) and the VIX (inverted) — into one score: high = risk-on (greed), low = risk-off (fear). The score endpoint returns the composite, each gauge's contribution and a regime label; the components endpoint returns the four underlying ratios with where each sits in its recent range (its percentile), so you can see what is driving the mood. The cross-asset risk-sentiment / RORO composite cut — distinct from the intermarket-ratios feed (raw ratios), the volatility-index API and the price APIs. It synthesises the regime, not the parts.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/riskappetite-api","description":"oanor gateway"}],"tags":[{"name":"Score"},{"name":"Components"},{"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/score":{"get":{"operationId":"get_v1_score","tags":["Score"],"summary":"Composite 0-100 risk-appetite score with regime and per-gauge contributions","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"0-100 composite of four cross-asset gauges (stocks/bonds, credit, copper/gold, inverted VIX), each scored by its percentile over ~120 trading days. Above 55 = risk-on (greed); below 45 = risk-off (fear). A regime read, not a forecast.","regime":"strong risk-on (greed — capital chasing growth)","source":"Yahoo Finance","components":[{"gauge":"stocks_vs_bonds","risk_on_score":84.9},{"gauge":"credit","risk_on_score":64.7},{"gauge":"copper_vs_gold","risk_on_score":98.3},{"gauge":"volatility","risk_on_score":37.3}],"risk_appetite_score":71.3},"meta":{"timestamp":"2026-06-12T10:35:28.600Z","request_id":"7c02c667-86f1-489f-ad0d-b03c78a6d117"},"status":"ok","message":"Score 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/components":{"get":{"operationId":"get_v1_components","tags":["Components"],"summary":"The four cross-asset gauges with current value and percentile","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The four cross-asset gauges behind the risk-appetite score. value is the current ratio (or VIX level); risk_on_score is its percentile over ~120 trading days (higher = more risk-on). VIX is inverted so a low VIX scores high.","source":"Yahoo Finance","components":[{"pair":"SPY/TLT","gauge":"stocks_vs_bonds","value":8.5806,"meaning":"stocks outperforming long bonds = risk-on","risk_on_score":84.9},{"pair":"HYG/LQD","gauge":"credit","value":0.7329,"meaning":"high-yield outperforming investment-grade = risk-on","risk_on_score":64.7},{"pair":"HG=F/GC=F","gauge":"copper_vs_gold","value":0.001512,"meaning":"copper outperforming gold = growth/risk-on","risk_on_score":98.3},{"pair":"VIX (inverted)","gauge":"volatility","value":18.88,"meaning":"low VIX = calm/risk-on","risk_on_score":37.3}]},"meta":{"timestamp":"2026-06-12T10:35:28.713Z","request_id":"5b137304-c491-4ee7-9cfe-4b4cedc8e3dd"},"status":"ok","message":"Components 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":"Both data endpoints are parameter-less. The score is a 0-100 composite (high = risk-on); each gauge is scored by its percentile over ~120 trading days. Read fresh per call, nothing cached.","source":"Yahoo Finance (SPY, TLT, HYG, LQD, HG=F, GC=F, ^VIX), live","service":"riskappetite-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/score":"The composite risk-appetite score (0-100) with regime and per-gauge contributions.","GET /v1/components":"The four cross-asset gauges with their current value and percentile."},"description":"Risk-on / risk-off (RORO) index — one number for the market's mood across asset classes, from Yahoo Finance (no key, nothing stored). score blends stocks-vs-bonds (SPY/TLT), credit (HYG/LQD), copper-vs-gold and the inverted VIX into a 0-100 risk-appetite score with a regime label. components returns the four underlying gauges with where each sits in its recent range. The cross-asset risk-sentiment / RORO composite cut — distinct from the intermarket-ratios feed (raw ratios), the volatility-index API and the price APIs. It synthesises the regime, not the parts.","upstream_status":"ok","risk_appetite_score":71.3},"meta":{"timestamp":"2026-06-12T10:35:28.836Z","request_id":"a578a62c-211e-4785-8141-fffb731fc552"},"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":600,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1044,"monthly_call_quota":16200,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3266,"monthly_call_quota":82000,"rps_limit":15,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":7560,"monthly_call_quota":430000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/riskappetite-api"}