Loading shell…

Signal Backtests

How Orrery's price-based signals performed historically, replayed on the top 15 markets by volume.

Method

We fetch the CLOB 1-month price history for each of the top 15 markets by 24h volume and walk it minute by minute. At each point, we re-apply the live signal rule as it exists in src/lib/signals.ts. When it fires, we record the price and measure it 1h, 6h, and 24h later. A 1-hour cooldown prevents double-counting clustered firings. The "win rate" is the fraction of firings whose 24h move continued in the signalled direction.

Flow and resolution-risk need trade-feed / event-time data that CLOB history doesn't expose — they're forward-only for now. We'll publish their backtests once we start recording signal-firing snapshots.

updated 0s ago·src:Polymarket CLOB

Momentum

532 firings across 9 markets

Price + 1h direction + 24h direction all aligned, with ≥3pp 24h move. Expected to continue in the same direction.

Win rate (24h)

59%

513 measured

Avg move · 1h

-0.03pp

Avg move · 6h

+0.03pp

Avg move · 24h

-0.27pp

Per-market breakdown (9 markets fired)

Divergence

257 firings across 9 markets

1h move running against the 24h trend. Expected to continue short-term in the 1h direction before 24h reasserts.

Win rate (24h)

49%

252 measured

Avg move · 1h

+0.01pp

Avg move · 6h

-0.70pp

Avg move · 24h

+0.44pp

Per-market breakdown (9 markets fired)

Honest caveats

  • Small samples. CLOB returns ~30 days of minute-level history; short-dated markets may have very few firings. Anything below 10 measured firings shows a dash instead of a win rate so we don't overstate confidence.
  • Survivorship. This backtest runs on markets currently live — not on markets that already resolved and disappeared. Future work: store signal-firing snapshots as they happen so we can backtest against the full historical universe.
  • No execution costs. Avg-move figures are mid-price to mid-price. Real entry/exit would pay spread, slippage, and Polymarket fees — so a +1.5pp 24h move is not +1.5pp of profit.
  • Signal drift. If we tune the rule in lib/signals.ts, these numbers change. That's the point — the UI always shows the backtest of the rule as it's currently running.