Methodology

How Daybreak works

Every probability on every surface is sourced from real money. This page describes where that data comes from, how we process it, and what we will never do with it.

Data sources

Polymarket

The primary prediction-market source at foundation. We ingest all active markets via the Gamma API (metadata) and the CLOB prices-history API (daily-close price history), updated hourly. As of writing: 999 active markets tracked across six categories: politics, macro, geopolitics, crypto, tech, and other.

Category assignment is deterministic from Polymarket's own tagging with a small normalization layer applied on ingest. Market identity uses a deterministic string key “polymarket:<slug>” so upserts are idempotent.

Coming next

Kalshi, Manifold, Metaculus, FRED macro series, and financial derivatives (rates futures, equity options) are added when the widget that needs them reaches the build queue. Multi-source divergence analysis — when prediction markets and futures-implied probabilities disagree — ships as its own widget and will be documented here when it does.

Calibration database

The calibration database answers: historically, when a prediction market in category X priced an event at probability P with T days to resolution, how often did that event actually occur?

Calibration is computed against a three-axis grid:

AxisBucketsDetail
Probability1010 pp bands — 0–10%, 10–20%, …, 90–100%
Time-to-resolution4≤7d, ≤30d, ≤90d, ≤365d
Category6politics, macro, geopolitics, crypto, tech, other

Total grid: 240 cells (6 × 10 × 4). Each cell requires at least n = 10 resolved markets before it is surfaced — below that it carries a low-confidence flag and is shown with an explicit caveat.

Foundation state: 758 resolved markets ingested, 128 / 240 cells populated. The database fills in over time as markets resolve under the live ingest pipeline. There is no shortcut — depth is the point.

Cell identifiers follow the format “polymarket:politics:0.70-0.80:30d” — source, category, probability band, time bucket. Every calibration annotation in the product traces back to a cell identifier so the claimed count is always verifiable.

Anomaly baselines

The Biggest Movers strip ranks markets not by raw point-change, but by how unusual today's move is for that specific market. A 3-point move in a thin geopolitics market may be the first signal of something; a 3-point move in a liquid, high-volume market is often noise. Unusualness is measured as a z-score against each market's own baseline.

The window. Each market's baseline is its 30-dayrolling-vol — the standard deviation of daily log-returns over the prior 30 trading days. A market's z-score on a given day is its log-return divided by that baseline. A score of 2.6σmeans today's move was 2.6 times larger than a typical daily move for that market. The window is 30 days rather than 90 because Polymarket's market-age distribution makes a 90-day floor too exclusionary — it would drop 53% of the universe.

Exclusion floors. Three filters apply before a market appears in any strip:

FloorValueWhy
History≥ 30 daily closesBelow this the baseline stdev is too noisy to trust
Volume≥ $5,000 24h volumeBelow this, moves are toy-book noise on a single trade
LiquidityliquidityScore ≥ 0.4Below this, the order book is too thin for daily closes to be meaningful

Excluded markets are counted in the tile header (“N tracked · M excluded”) so the exclusion is transparent rather than silent.

Quiet Movers. The Quiet Movers strip surfaces markets where the z-score is less than 0.5 (“less than half a typical daily move”) but a known scheduled event lands within the next 7 days. The hypothesis: a market that hasn't repriced ahead of a known event is worth watching.

Events are drawn from a curated event_calendar.json— FOMC dates, SCOTUS ruling windows, elections, central bank meetings, and major economic releases, each tagged with the market IDs most likely to be affected. We do not infer event associations algorithmically; only manually tagged markets qualify. The limitation is honesty: if a market isn't in the calendar, it won't appear as a quiet mover, even if it should be.

Cold-start honesty. On the day the widget shipped, event-calendar entries had empty affectedMarketIds. The quiet-mover strip fills in over time as the calendar is manually curated. We track a quiet-mover hit rate — whether quiet markets actually reprice within 7 days of the listed event — as the moat-validation metric. It will not have enough data to be meaningful until 14+ days post-ship.

Move baselines (summary)

When a market moves, Daybreak shows not just the raw points but whether that move is unusual for that specific market. A 3-point move in a liquid Fed-funds market is noise; a 3-point move in a thin geopolitics market may be the first signal of something.

Unusualness is measured against each market's own 30-day rolling-vol baseline — the standard deviation of daily log-returns over the prior 30 trading days. A market qualifies for the Biggest Movers strip only after accumulating at least 30 daily closes of history (the data-availability floor).

At foundation: approximately 58% of active Polymarket markets clear this floor. The number rises every day as the hourly pipeline accumulates history. Markets below the floor are excluded silently — the tile copy will report the tracking count and exclusion count transparently.

What we never do

No LLM-generated probability numbers. Every probability is sourced directly from market data. Language models are used for prose generation only, and every number they handle is verified against the structured input passed to them before it appears in any output. This is non-negotiable — it is the most load-bearing trust commitment the product makes.

Thin markets carry a caveat. Every output includes liquidity context — open interest, volume, and a flag for markets with concentrated or unusual activity. We never present a number cleanly when the data behind it is messy.

Anomalous flow is described, not accused. When wallet-level analysis flags unusual activity, we describe what we observe — volume, concentration, wallet age — and never draw conclusions about intent. Language like “manipulation” or “insider trading” never appears on any surface.

Calibration gaps are disclosed. Cells below the n = 10 floor are shown with a low-confidence flag. We do not populate empty cells with interpolated guesses.

Report an inaccuracy

If you spot a number that looks wrong, a market that's misclassified, or a calibration ribbon that seems off — report it. Every report is logged, investigated, and addressed.

Report inaccuracy →

Reports logged. Response within 48h.