Get beta against a benchmark
The beta, alpha and R-squared of an instrument's log returns regressed on a benchmark's, over a lookback. Both series are aligned on their common dates first, so the regression uses only the days both traded. When the aligned data is insufficient (fewer than three overlapping observations) or degenerate (a benchmark with zero return variance), beta, alpha and rSquared are ALL null and observations names the honest reason - never a fabricated beta of 1. Returns 404 for an unknown subject instrument.
The beta, alpha and R-squared of an instrument's log returns regressed on a benchmark's, over a lookback. Both series are aligned on their common dates first, so the regression uses only the days both traded. When the aligned data is insufficient (fewer than three overlapping observations) or degenerate (a benchmark with zero return variance), beta, alpha and rSquared are ALL null and observations names the honest reason - never a fabricated beta of 1. Returns 404 for an unknown subject instrument.
Authorization
ApiKeyAuth correlations:readPresent your API key as a bearer token: Authorization: Bearer pk_live_....
Two environments are issued per account. A pk_test_ sandbox key returns the SAME real historical data as a live key and does NOT consume your LIVE allowance, so learning the API is free. It has its own separate windows and can be rate limited on them. A pk_live_ key reads against your allowance.
Keys carry explicit scopes (instruments:read, prices:read, actions:read, fx:read, earnings:read, options:read, news:read, sentiment:read, events:read, analytics:read, correlations:read, technicals:read, macro:read) and are enforced fail-closed, so a leaked key is bounded to what it was issued for. Revocation is immediate.
In: header
Scope: correlations:read
Path Parameters
Instrument identifier (UUID).
uuidQuery Parameters
The benchmark instrument id the subject is regressed against (e.g. the id for SPY).
uuidLookback window in CALENDAR days over which stored daily closes are read and converted to returns. Trading days are roughly 70% of this. Defaults to 90, bounded 20-504.
20 <= value <= 50490Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/instruments/497f6eca-6276-4993-bfeb-53cbbbba6f08/beta?benchmark=497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "data": { "instrumentId": "string", "benchmarkId": "string", "beta": 0, "alpha": 0, "rSquared": 0, "observations": -9007199254740991, "assumptions": { "lookbackDays": -9007199254740991, "returnType": "log" } }, "meta": { "asOf": "string", "source": "string", "stale": true }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}List analyst rating-consensus snapshots GET
Sell-side analyst rating-consensus history for an instrument, newest first. The CHANGE across snapshots is the analyst-revision signal; counts are carried verbatim.
List corporate actions GET
Corporate actions for an instrument, filtered by effective date. Each action carries effectiveDate (when it happened), knowledgeDate (when it became knowable) and knowledgeProvenance (how that instant was established). asOf filters on knowledgeDate, so an action that only became knowable after your cut-off is absent. knowledgeDate is deliberately not createdAt: for an announced dividend it is the end of the declaration day, and for a backfilled action it is null, meaning we cannot honestly date it - such actions are excluded from every asOf read unless you set includeBackfilled.