/api/v1/price-outlooks
Calibrated asset price outlooks
Returns the latest calibrated price outlook for each asset and horizon across commodities, crypto, and equities (asset-price/1). is_primary_horizon selects the nearest still-open horizon, including neutral horizons. Each outlook contains p10, p25, median_price (p50), p75, p90, named scenarios, and a whole-curve directional_take. Its label and strength describe score magnitude. basis_groups separates price sources and rules families, with settlement observations, execution quotes, provenance, and outlook fields in each group. price_signals is empty or contains one current call on its exact Hyperliquid execution group. Translated or estimated settlement groups have empty price_signals. Legacy scalar mirrors apply only to a sole exact-Hyperliquid group.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| asset | query | string | Optional asset filter: a key tail such as wti, gold, btc, or nvda, or a full assetKey such as commodity:wti. Unknown values return an empty series list. |
| anchor | query | string | Optional anchor-cadence filter, e.g. daily, two-day, weekly, monthly. The cadence set is open; unknown values return an empty series list. |
| asset_class | query | string | Optional asset-class filter: commodity, crypto, or equity (company is accepted as an alias for equity). asset_class=commodity returns every covered commodity series in one call. The class set is open; unknown values return an empty series list. |
Responses
200: Latest price outlook per series, with at most one current trade signal on its exact execution basis
| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| as_of required | string | Format: date-time | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contract required | "asset-price/1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| filters required | object | filters fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| series_count required | integer | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| series required | PriceOutlookSeriesEntry[] | series fields
|
401: Unauthorized
| Field | Type | Description |
|---|---|---|
| error required | string | Error code |
| message required | string | Human-readable message |
| retry_after | integer | Seconds to wait (only on 429) |
| retryAfter | integer | Seconds to wait for owner-scoped forecast-request quota errors. |
| limit_scope | string | Quota scope that rejected the request, such as standard or x_research. |
| quotaScope | string | Stable forecast-request quota scope, such as venue_market_daily. |
| limit | integer | Configured bound for the forecast-request quota that was exceeded. |
402: Payment Required
| Field | Type | Description |
|---|---|---|
| error required | string | Error code |
| message required | string | Human-readable message |
| retry_after | integer | Seconds to wait (only on 429) |
| retryAfter | integer | Seconds to wait for owner-scoped forecast-request quota errors. |
| limit_scope | string | Quota scope that rejected the request, such as standard or x_research. |
| quotaScope | string | Stable forecast-request quota scope, such as venue_market_daily. |
| limit | integer | Configured bound for the forecast-request quota that was exceeded. |
403: Insufficient credits for the requested route
| Field | Type | Description |
|---|---|---|
| error required | string | Error code |
| message required | string | Human-readable message |
| retry_after | integer | Seconds to wait (only on 429) |
| retryAfter | integer | Seconds to wait for owner-scoped forecast-request quota errors. |
| limit_scope | string | Quota scope that rejected the request, such as standard or x_research. |
| quotaScope | string | Stable forecast-request quota scope, such as venue_market_daily. |
| limit | integer | Configured bound for the forecast-request quota that was exceeded. |
422: Invalid request parameters
| Field | Type | Description |
|---|---|---|
| error required | string | Error code |
| message required | string | Human-readable message |
| retry_after | integer | Seconds to wait (only on 429) |
| retryAfter | integer | Seconds to wait for owner-scoped forecast-request quota errors. |
| limit_scope | string | Quota scope that rejected the request, such as standard or x_research. |
| quotaScope | string | Stable forecast-request quota scope, such as venue_market_daily. |
| limit | integer | Configured bound for the forecast-request quota that was exceeded. |
429: The caller exceeded a per-second, per-minute, daily, or concurrency limit. No credits are debited and no x402 payment is settled for this response.
| Field | Type | Description |
|---|---|---|
| error required | string | Error code |
| message required | string | Human-readable message |
| retry_after | integer | Seconds to wait (only on 429) |
| retryAfter | integer | Seconds to wait for owner-scoped forecast-request quota errors. |
| limit_scope | string | Quota scope that rejected the request, such as standard or x_research. |
| quotaScope | string | Stable forecast-request quota scope, such as venue_market_daily. |
| limit | integer | Configured bound for the forecast-request quota that was exceeded. |
Set QUOTIENT_API_KEY in your shell and replace example identifiers with returned IDs before running a request.
curl --request GET \
--header "x-quotient-api-key: $QUOTIENT_API_KEY" \
'https://quotient-api-gateway.onrender.com/api/v1/price-outlooks'{
"as_of": "2026-08-17T12:00:00.000Z",
"contract": "asset-price/1",
"filters": {
"asset": "copper",
"anchor": "weekly",
"asset_class": null
},
"series_count": 1,
"series": [
{
"series_id": "commodity:copper:price-outlook:weekly",
"asset_key": "commodity:copper",
"asset_class": "commodity",
"anchor_type": "weekly",
"display_name": "Copper",
"venue": "kalshi",
"contributing_venues": [
"kalshi"
],
"venue_series": "KXCOPPER",
"observable": "pyth:copper-usd",
"mode": "signal",
"mode_reason": "terminal ladder measured",
"headline": "Copper weekly settle outlook",
"maturity": "experimental",
"is_primary_horizon": true,
"basis_groups": [
{
"source": "basis-head",
"basis_id": "basis:pyth:copper-usd:official-close:v2",
"target_family_key": "sha256:copper-weekly-close-family",
"forecast_target_keys": [
"target:copper:2026-08-22:pyth:v2"
],
"forecast_target_key": "target:copper:2026-08-22:pyth:v2",
"resolution_reference": {
"schema_version": "1",
"basis_id": "basis:pyth:copper-usd:official-close:v2",
"settlement_spec_id": "settlement:kalshi:copper:2026-08-22:v2",
"forecast_target_key": "target:copper:2026-08-22:pyth:v2",
"observable_id": "pyth:copper-usd",
"provider": "pyth",
"instrument_id": "0xpyth-copper-usd",
"symbol": "COPPER/USD",
"contract_month": null,
"window": "17:00 America/New_York close",
"timezone": "America/New_York",
"rounding": "nearest 0.01",
"value": 6.52,
"value_kind": "estimated",
"estimate": {
"provider": "quotient-basis",
"method": "ewma-log/1",
"ci_low": 6.49,
"ci_high": 6.55,
"inputs_at": "2026-08-17T20:59:30Z",
"estimate_version": "basis-bridge/1"
},
"observed_at": "2026-08-17T21:00:00Z",
"freshness": "verified",
"mapping_status": "verified"
},
"reference_quote": {
"schema_version": "1",
"observation_id": "obs:quotient-basis:copper:20260817T210000Z",
"basis_id": "basis:pyth:copper-usd:official-close:v2",
"observable_id": "pyth:copper-usd",
"value": 6.52,
"value_kind": "estimated",
"estimate": {
"provider": "quotient-basis",
"method": "ewma-log/1",
"ci_low": 6.49,
"ci_high": 6.55,
"inputs_at": "2026-08-17T20:59:30Z",
"estimate_version": "basis-bridge/1"
},
"observed_at": "2026-08-17T21:00:00Z",
"freshness": "verified",
"publisher": "quotient-basis"
},
"execution_reference": {
"schema_version": "1",
"basis_id": null,
"settlement_spec_id": null,
"observable_id": "hyperliquid:xyz:COPPER:mark",
"provider": "hyperliquid",
"instrument_id": "xyz:COPPER",
"value": 6.58,
"value_kind": "observed",
"estimate": null,
"observed_at": "2026-08-17T21:00:04Z",
"freshness": "verified",
"mapping_status": "verified"
},
"basis_gap": {
"settlement_value": 6.52,
"settlement_value_kind": "estimated",
"execution_value": 6.58,
"absolute": 0.06,
"percentage": 0.0092,
"observed_at": "2026-08-17T21:00:04Z"
},
"basis_status": "verified",
"grounding_status": "estimated",
"suppression_reason": null,
"outlook": {
"outlook_id": "po:copper:weekly:pyth:v2:r4",
"anchor_date": "2026-08-22",
"revisions": 4,
"state": "neutral",
"side": null,
"strength": null,
"lean_side": null,
"lean_sigma": null,
"median_price": 6.55,
"p10": 6.28,
"p25": 6.42,
"p75": 6.72,
"p90": 6.91,
"scenarios": {
"downside_tail": {
"percentile": 0.1,
"price": 6.28,
"return_pct": -0.0368
},
"bear_case": {
"percentile": 0.25,
"price": 6.42,
"return_pct": -0.0153
},
"base_case": {
"percentile": 0.5,
"price": 6.55,
"return_pct": 0.0046
},
"bull_case": {
"percentile": 0.75,
"price": 6.72,
"return_pct": 0.0307
},
"upside_tail": {
"percentile": 0.9,
"price": 6.91,
"return_pct": 0.0598
}
},
"directional_take": {
"side": "bullish",
"strength": "moderate",
"label": "Bullish",
"score_sigma": 0.22,
"payoff_balance": 0.29,
"probability_above_spot": 0.56,
"expected_price": 6.57,
"expected_return_pct": 0.0082,
"expected_log_return": 0.0077,
"expected_upside_log": 0.0169,
"expected_downside_log": 0.0092,
"range_status": "complete",
"truncated_percentiles": [],
"method": "full_quantile_curve",
"version": "directional-take/2",
"is_price_signal": false
},
"spot_at_obs": 6.52,
"sigma_diffusive": 0.035,
"status": "active"
},
"provenance": {
"source_type": "researched_forecast",
"source_id": "forecast:copper:pyth:r4",
"input_at": "2026-08-17T20:58:00Z",
"model_version": "price-outlook-v4",
"config_version": "source-aware-v1",
"evidence_epoch": "2026-08-17T16:00:00Z",
"input_hash": "sha256:example",
"forecast_target_key": "target:copper:2026-08-22:pyth:v2",
"basis_id": "basis:pyth:copper-usd:official-close:v2"
},
"price_signals": [],
"contributing_venues": [
"kalshi"
]
}
],
"outlook": null,
"spot_at_obs": null,
"price_signals": []
}
]
}