Core Metrics
Definitions for the main fields shown in the scanner and the exact distinction between raw upstream values and local derived values.
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
| Field | Source | Notes |
|---|---|---|
price | Upstream Gamma market payload | Direct snapshot value |
spread | Upstream Gamma market payload | Direct snapshot value |
volume_usd | Upstream Gamma market payload | Direct snapshot value |
liquidity_usd | Upstream Gamma market payload | Direct snapshot value |
end_date | Upstream Gamma market payload | Direct snapshot value |
category | Derived from event tags | First available tag becomes primary category |
url | Derived locally | Built from event_slug as a Polymarket event URL |
apr | Derived locally | Computed from price and time remaining |
| implied odds | Derived in UI | 1 / 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