Documentation is in progress. Every page in this section describes the current implementation and may change as PolyLab evolves.
Understanding the Data

Core Metrics

In Progress Last updated 2026-03-10

Definitions for the main fields shown in the scanner and the exact distinction between raw upstream values and local derived values.

Current Implementation

This page is intentionally explicit and implementation-first. If the product or upstream APIs change, the current behavior described here can change with them.

Price

Price is the stored outcomePrices[i] value for the current outcome row. PolyLab does not model or smooth it. It is the snapshot value fetched from the Gamma market payload.

Implied probability

In PolyLab, implied probability is effectively the same displayed number as price for the outcome row. There is no separate probability model layered on top of it.

Implied odds

Implied odds are a presentation transform in the frontend:

1 / price

If price <= 0, implied odds are not meaningful.

Spread

Spread is stored from the upstream spread field. The API and database use a fraction, while the UI often presents it in cents or percentage-like shorthand for easier scanning.

Volume

volume_usd is taken directly from the upstream market payload. It is useful for ranking activity, but it is not the same thing as near-term executable liquidity.

Liquidity

liquidity_usd is also taken directly from the upstream market payload. It is one of the most practical coarse filters in the scanner because it removes a large amount of thin inventory quickly.

Expiration

Expiration is stored as end_date. Time-to-expiry filters are computed at query time by comparing end_date with the current backend time.

Category

Category is not an upstream market field by itself. PolyLab maps the first available event tag into the category column as a convenient primary label.

Outcome

Each row is a specific outcome name from the market payload, usually YES or NO for binary markets. The scanner is designed around outcome rows, not around a single abstract market object.

Derived versus raw fields

FieldSourceNotes
priceUpstream Gamma market payloadDirect snapshot value
spreadUpstream Gamma market payloadDirect snapshot value
volume_usdUpstream Gamma market payloadDirect snapshot value
liquidity_usdUpstream Gamma market payloadDirect snapshot value
end_dateUpstream Gamma market payloadDirect snapshot value
categoryDerived from event tagsFirst available tag becomes primary category
urlDerived locallyBuilt from event_slug as a Polymarket event URL
aprDerived locallyComputed from price and time remaining
implied oddsDerived in UI1 / price

How to combine these metrics

Use the raw fields for universe reduction and the derived fields for context:

  • use volume and liquidity to find usable markets
  • use spread to filter execution risk
  • use price to target scenario bands
  • use APR and smart-money counts only after the market is already interesting