| id required | string | |
| created_at | string | Compatibility alias for published_at Format: date-time |
| published_at | string | When the signal itself was published Format: date-time |
| forecast_updated_at | string | null | When Q's latest forecast for the market was created Format: date-time |
| is_new_today | boolean | True when published_at falls on the current UTC calendar day |
| is_fresh | boolean | True when forecast_updated_at is no more than six hours old |
| is_active | boolean | True while the signal is non-terminal; false only for retired signals. This is independent of is_new_today and is_fresh. |
| side | "YES" | "NO" | The trade side: sign of (Q − market price) at publish |
| entry_q | number | Quotient probability at publish (0-100 YES scale) |
| entry_pm | number | Legacy wire name for the source venue's YES price at signal publication (0-100). The field applies to every supported prediction-market venue. |
| entry_spread_pp | number | Raw |entry_q − entry_pm| in percentage points |
| window_days | integer | null | Days to resolution at publish |
| resolves_in_window | boolean | Market settles inside the 7-day hold, so the upside runs to 100¢ |
| forecast_status | object | null | Forecast status using verified live prices and the less favorable of the frozen signal entry and latest forecast venue snapshot, measured on the frozen signal side. Null when a live quote or forecast is unavailable. Settlement provenance is independent metadata.forecast_status fields| Field | Type | Description |
|---|
| state required | "warning" | "caution" | "converged" | "converging" | "sideways" | "diverging" | | | cents required | integer | Movement states: gap closed (+) or opened (−) over the window. converged: how far past Q the venue sits. Adverse tiers: the move from the worse anchor in position-space cents (negative). | | adverse_move_pct required | number | null | The standing worse-of-anchors adverse move, RELATIVE % of anchor cost, positive = against Q's side. Served on every state — a 14.9% move stays visible below the caution line. Negative means the market has moved in Q's favour. Null when no anchor is priced. | | basis required | "since_publish" | "since_forecast" | The window the read measured: an adverse tier stamps the anchor that fired; other states carry the surface's measurement window. | | price_source required | "live" | "graph" | live = verified venue quote; graph = an explicitly stale graph_snapshot for a venue without a live adapter. Graph snapshots carry stale discovery data. |
|
| retired_reason | "resolved" | "flipped" | "fading_q" | "expired" | null | |
| conviction_tier | integer | null | 1-3 from the forecaster's ensemble-draw dispersion (3 = draws tightly agree). Not spread. |
| conviction | "high" | "medium" | "low" | null | |
| has_band | boolean | False only when no conviction estimate could be computed at all (missing Q or price). Pre-ensemble inferred estimates report true with tier capped at 2. |
| latest_q | number | null | Latest canonical Q (0-1) |
| thesis required | string | null | Reviewable thesis paired with latest_q. Falls back to the latest forecast's BLUF; null when neither is stored. |
| q_side | "YES" | "NO" | The side Q's latest forecast favors at current prices |
| q_value_cents | integer | null | The side share priced at Q's latest probability (¢) |
| entry_cost_cents | integer | null | Side cost at publish (¢) |
| current_cost_cents | integer | null | Side cost now (¢) |
| distance_to_convergence_cents | integer | null | Cents from current cost to Q's price (or 100¢ when resolves_in_window); <= 0 means the market has reached Q |
| converge_upside_pct | integer | null | % gain from current cost if the market price moves to Q |
| max_roi_pct | integer | null | Max upside: % return from current cost if the market resolves on Q's side (side share settles at 100¢) assuming resolution on that side |
| live_priced | boolean | True only when current pricing came from a verified live Polymarket International or Kalshi venue quote. A failed or unsupported quote does not fall back to graph odds. |
| priced_at | string | null | Observation timestamp of the verified live venue quote; null when unavailable. Format: date-time |
| capacity_usd_at_2c | number | null | Persisted near-touch depth within 2¢, USD notional (refreshed ~12h) |
| capacity_available | boolean | null | |
| capacity_basis | "depth-2c" | "volume-fallback" | null | volume-fallback = capacity unknown but 24h volume >= 5000 |
| capacity_as_of | string | null | Format: date-time |
| drawdown_risk_elevated | boolean | null | True when Quotient's risk model puts at least a 15% probability on this signal's side losing most of its remaining value within roughly 72 hours of the latest forecast (forecast_updated_at). The model head is trained on matured 72-hour price paths: a side counts as a deep drawdown when its price printed twice within two hours at or below a quarter of the entry price, or when the market resolved against it. Null means no current read: the forecast predates the risk model (August 2026) or the read has aged past the model's ~72h horizon with unknown current risk. This separate model measures path risk; conviction_tier measures ensemble-draw dispersion. Near expiry, elevated readings are common on both sides, because resolution itself takes the losing side down by more than 75%. |
| crash_risk_elevated | boolean | null | Deprecated former name for drawdown_risk_elevated; same value. Emitted for one release. |
| venue_quote required | VenueQuoteV1 | venue_quote fields| Field | Type | Description |
|---|
| schema_version required | "1" | | | venue required | "polymarket" | "polymarket_us" | "kalshi" | "limitless" | null | Prediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless. | | market_id required | string | null | | | yes_bid required | number | null | Minimum: 0; Maximum: 1 | | yes_ask required | number | null | Minimum: 0; Maximum: 1 | | yes_last required | number | null | Minimum: 0; Maximum: 1 | | selected_probability required | number | null | Prediction-market YES probability selected for the enclosing response. Inspect freshness and quote_method before treating it as current. Minimum: 0; Maximum: 1 | | quote_method required | string | null | midpoint, bid, ask, fresh last, or graph_snapshot. Null when pricing is unavailable. | | venue_timestamp required | string | null | Source clock for the selected quote: book update for book methods, last-trade time for last, or catalog observation time for graph_snapshot. Format: date-time | | observed_at required | string | null | When Quotient observed the live quote or stored graph snapshot. Format: date-time | | freshness required | CapabilityState | |
|
| resolution_reference required | SourceReferenceV1 | null | Optional settlement-feed context. Signal eligibility uses venue pricing.resolution_reference fields| Field | Type | Description |
|---|
| schema_version required | "1" | | | basis_id required | string | null | | | settlement_spec_id required | string | null | | | forecast_target_key | string | null | | | observable_id required | string | null | | | provider required | string | null | | | instrument_id required | string | null | | | symbol | string | null | | | contract_month | string | null | | | roll_rule | string | null | | | unit | string | null | | | currency | string | null | | | price_field | string | null | | | candle_interval | string | null | | | session | string | null | | | window | string | null | | | timezone | string | null | | | rounding | string | null | | | value required | number | null | | | value_kind required | ValueKind | observed = a provider print. estimated = Quotient's basis estimate carrying a mandatory estimate block; the value belongs to the estimator, not to the settlement provider the rules name. | | estimate required | EstimateV1 | null | Present exactly when value_kind is estimated; a malformed block fails closed as a missing value.estimate fields| Field | Type | Description |
|---|
| provider required | string | The estimator, e.g. quotient-basis. Attribution belongs here, not to the rules provider. | | method required | string | Estimator method identity, e.g. ewma-log/1. | | ci_low required | number | | | ci_high required | number | | | inputs_at required | string | When the estimator's inputs were observed. Format: date-time | | estimate_version required | string | null | |
| | provider_timestamp | string | null | Format: date-time | | source_timestamp | string | null | Format: date-time | | observed_at | string | null | Format: date-time | | freshness required | CapabilityState | | | collection_transport | string | null | | | strike | number | null | | | comparator | string | null | | | fixing_window_start | string | null | | | fixing_window_end | string | null | | | barrier_window_start | string | null | | | barrier_window_end | string | null | | | payout_semantics | string | null | | | rules_url | string | null | Format: uri | | rules_hash | string | null | | | rules_version | string | null | | | mapping_provenance | string | null | | | mapping_status required | CapabilityState | |
|
| execution_reference required | SourceReferenceV1 | null | Settlement observable and contract semantics. provider identifies the instrument used by the settlement rules. Estimated values are attributed to the estimate block's provider. Asset identity is recorded separately.execution_reference fields| Field | Type | Description |
|---|
| schema_version required | "1" | | | basis_id required | string | null | | | settlement_spec_id required | string | null | | | forecast_target_key | string | null | | | observable_id required | string | null | | | provider required | string | null | | | instrument_id required | string | null | | | symbol | string | null | | | contract_month | string | null | | | roll_rule | string | null | | | unit | string | null | | | currency | string | null | | | price_field | string | null | | | candle_interval | string | null | | | session | string | null | | | window | string | null | | | timezone | string | null | | | rounding | string | null | | | value required | number | null | | | value_kind required | ValueKind | observed = a provider print. estimated = Quotient's basis estimate carrying a mandatory estimate block; the value belongs to the estimator, not to the settlement provider the rules name. | | estimate required | EstimateV1 | null | Present exactly when value_kind is estimated; a malformed block fails closed as a missing value.estimate fields| Field | Type | Description |
|---|
| provider required | string | The estimator, e.g. quotient-basis. Attribution belongs here, not to the rules provider. | | method required | string | Estimator method identity, e.g. ewma-log/1. | | ci_low required | number | | | ci_high required | number | | | inputs_at required | string | When the estimator's inputs were observed. Format: date-time | | estimate_version required | string | null | |
| | provider_timestamp | string | null | Format: date-time | | source_timestamp | string | null | Format: date-time | | observed_at | string | null | Format: date-time | | freshness required | CapabilityState | | | collection_transport | string | null | | | strike | number | null | | | comparator | string | null | | | fixing_window_start | string | null | | | fixing_window_end | string | null | | | barrier_window_start | string | null | | | barrier_window_end | string | null | | | payout_semantics | string | null | | | rules_url | string | null | Format: uri | | rules_hash | string | null | | | rules_version | string | null | | | mapping_provenance | string | null | | | mapping_status required | CapabilityState | |
|
| basis_status required | BasisStatus | |
| grounding_status required | GroundingStatus | actionable requires a verified settlement mapping and every required fresh source input. estimated authorizes the same reads as actionable and are attributed to Quotient: the reference value is Quotient's basis estimate (value_kind estimated) with a tight confidence interval. Ordering: actionable > estimated > diagnostic > unavailable; automated use and execution handoffs require actionable or estimated grounding. |
| suppression_reason required | string | null | venue_quote_unavailable when the live quote is missing (the only availability gate); other values describe optional settlement-feed context or the perp execution handoff. |
| market required | TradeSignalMarket | market fields| Field | Type | Description |
|---|
| venue required | "polymarket" | "polymarket_us" | "kalshi" | "limitless" | Prediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless. | | nativeMarketId required | string | | | nativeEventId required | string | null | | | seriesTicker required | string | null | | | marketKey required | string | | | quotientMarketId required | string | Stable Quotient market-page id: bare numeric for legacy Polymarket rows, venue-prefixed (kalshi:TICKER, polymarket_us:123, …) elsewhere. quotientUrl is exactly https://quotient.social/markets/{quotientMarketId} (URL-encoded) — the id form the market page resolves for every venue. A market with no Quotient coverage yet may not have a page. | | slug required | string | null | | | marketUrl required | string | null | Connector-owned market page URL; null when unavailable. Format: uri | | sourceUrl required | string | null | Connector provenance or API source URL. Format: uri | | broker_channels required | "robinhood"[] | Retail brokers that carry this exact venue contract (same order book, same settlement). A broker distributes the venue contract; venue and marketKey remain the contract's identity. Today only robinhood, stamped on Kalshi rows from Robinhood's public listings; empty when no broker lists the market. Filter with topic=robinhood on /markets, /markets/mispriced and /signals, or tag=robinhood on /markets/search. | | robinhood_category required | string | null | Robinhood's own category slug for the listing (economics, politics, crypto, climate, …); null when not listed on Robinhood. | | robinhood_url required | string | null | Deep link to the Robinhood event page; null when not listed on Robinhood. Format: uri | | question | string | | | condition_id | string | null | Polymarket condition ID when the source venue provides that identifier; null for non-Polymarket rows. Use marketKey for venue-neutral identity. | | end_date | string | null | Format: date-time | | market_odds | number | null | Current selected source-venue YES probability (0-1), exactly matching venue_quote.selected_probability when present. | | volume_24h | number | null | Nullable venue-reported 24-hour activity; not directly comparable across venues. | | quotientUrl | string | null | | | polymarketUrl | string | null | Legacy Polymarket navigation alias. Populated only for Polymarket International rows and null for Polymarket US, Kalshi, and Limitless; use marketUrl for venue-neutral navigation. | | relationships required | RelationshipsEnvelope | Bounded, non-recursive graph references. Each category publishes at most 50 lightweight refs. These refs contain no forecast probability, venue odds, aggregate asset probability, or inferred causal AFFECTS edge.relationships fields| Field | Type | Description |
|---|
| assets required | RelationshipAssetRef[] | Maximum items: 50 assets fields| Field | Type | Description |
|---|
| relationship required | "HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL" | Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships. | | direction required | "incoming" | "outgoing" | Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs. | | via required | "direct" | "market" | "asset" | direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref. | | id required | string | Format: uuid | | assetKey required | string | | | name required | string | | | ticker required | string | null | | | asset_type required | string | |
| | markets required | RelationshipMarketRef[] | Maximum items: 50 markets fields| Field | Type | Description |
|---|
| relationship required | "HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL" | Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships. | | direction required | "incoming" | "outgoing" | Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs. | | via required | "direct" | "market" | "asset" | direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref. | | marketKey required | string | | | venue required | "polymarket" | "polymarket_us" | "kalshi" | "limitless" | Prediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless. | | nativeMarketId required | string | | | question required | string | null | |
| | signals required | RelationshipSignalRef[] | Maximum items: 50 signals fields| Field | Type | Description |
|---|
| relationship required | "HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL" | Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships. | | direction required | "incoming" | "outgoing" | Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs. | | via required | "direct" | "market" | "asset" | direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref. | | id required | string | | | signal_type required | "prediction_market" | | | canonical_endpoint required | "/api/v1/signals" | | | side required | string | null | | | published_at required | string | null | |
| | truncated required | object | truncated fields| Field | Type | Description |
|---|
| assets required | boolean | | | markets required | boolean | | | signals required | boolean | |
|
|
|
| relationships required | RelationshipsEnvelope | Bounded, non-recursive graph references. Each category publishes at most 50 lightweight refs. These refs contain no forecast probability, venue odds, aggregate asset probability, or inferred causal AFFECTS edge.relationships fields| Field | Type | Description |
|---|
| assets required | RelationshipAssetRef[] | Maximum items: 50 assets fields| Field | Type | Description |
|---|
| relationship required | "HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL" | Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships. | | direction required | "incoming" | "outgoing" | Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs. | | via required | "direct" | "market" | "asset" | direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref. | | id required | string | Format: uuid | | assetKey required | string | | | name required | string | | | ticker required | string | null | | | asset_type required | string | |
| | markets required | RelationshipMarketRef[] | Maximum items: 50 markets fields| Field | Type | Description |
|---|
| relationship required | "HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL" | Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships. | | direction required | "incoming" | "outgoing" | Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs. | | via required | "direct" | "market" | "asset" | direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref. | | marketKey required | string | | | venue required | "polymarket" | "polymarket_us" | "kalshi" | "limitless" | Prediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless. | | nativeMarketId required | string | | | question required | string | null | |
| | signals required | RelationshipSignalRef[] | Maximum items: 50 signals fields| Field | Type | Description |
|---|
| relationship required | "HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL" | Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships. | | direction required | "incoming" | "outgoing" | Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs. | | via required | "direct" | "market" | "asset" | direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref. | | id required | string | | | signal_type required | "prediction_market" | | | canonical_endpoint required | "/api/v1/signals" | | | side required | string | null | | | published_at required | string | null | |
| | truncated required | object | truncated fields| Field | Type | Description |
|---|
| assets required | boolean | | | markets required | boolean | | | signals required | boolean | |
|
|