RATCHET · THE OBSERVATORY72H WINDOW

What Pyth's sponsored feeds actually did.

RATCHET settles real bets off Pyth's sponsored push feeds on Solana, which makes it a consumer that cannot look away when one misbehaves: a late publish here is not a log line, it is a voided bet and a refunded stake. We already read every feed once a minute to keep our own settlement record. These are the statistics that fall out of it — published because the advertised parameters are public and the observed ones are not, and because this kind of number has to come from outside the oracle to mean anything. Nothing here is a complaint. It is a measurement, with its own blind spots listed at the bottom.

OUR SAMPLING DUTY37.73% 1,630 of 4,320 possible minutes. Ours, not theirs — a serverless instance nobody woke records nothing.
READ FROM PYTH1,630 samples where the on-chain accounts answered. pyth-onchain 1630
WORST GAP · UPPER BOUND2.5m JUP — longest interval we can attribute to the feed. Windows where we stopped looking are excluded, not counted against it.
SETTLEMENTS COST0 bets voided and refunded because no oracle sample landed inside the 15-minute grace window. 52 deferred, 50 settled clean.

PER FEED · LAST 72 HOURS

FEEDSAMPLESUSABLETELEMETRYADVANCESBLIND (OURS) GAP MEDGAP P95GAP MAXSTALE>120s AGE MEDCONF MEDCONF P95 DIV MEDDIV MAXDIV nLAST PUBLISH
SOL7UVi…jLiE 1,630 100.00% 1,375 1,284 86 55s 106s 2.0m 3 31s 4.58 6.16 2.79 39.52 360 74s ago
BTC4cSM…PSPo 1,630 100.00% 1,375 1,283 86 55s 106s 2.0m 2 33s 3.36 4.99 2.37 30.68 360 74s ago
ETH42am…X6XC 1,630 100.00% 1,375 1,282 86 54s 106s 2.3m 3 33s 4.54 5.71 2.81 34.43 360 74s ago
BONKDBE3…wBiX 1,629 99.94% 1,374 1,281 86 53s 106s 2.0m 1 29s 21.68 24.79 7.57 55.87 360 57s ago
WIF6B23…YwbT 1,630 100.00% 1,375 1,284 86 53s 106s 2.3m 1 30s 12.23 15.91 5.44 46.91 360 87s ago
JUP7dbo…nxH5 1,630 100.00% 1,375 1,281 86 53s 106s 2.5m 1 31s 11.91 14.50 5996080.62 6525583.00 359 2m ago
PUMPHMm3…HJSH 1,630 100.00% 1,375 1,276 86 53s 107s 113s 0 30s 19.01 23.99 7.26 88.12 360 67s ago

USABLE — share of our Pyth reads where this feed passed every check (owner is a Pyth program, discriminator is PriceUpdateV2, verification level is Full, feed id matches, publish age under 120s). TELEMETRY — reads that carried publish_time, confidence and age, which is what every distribution to the right is computed from. It is lower than SAMPLES because price sampling predates this page; below 30 the distributions are withheld and the cell shows a dash. ADVANCES — publish_time moves we could attribute to the feed. BLIND (OURS) — pairs of looks more than 90s apart, where we stopped sampling; thrown out of every figure on this row rather than charged to the feed, because our outage is not their stall. GAP — seconds between consecutive publish_times. This is an upper bound: we only ever see a feed's latest publish, so an interval we measure may contain publishes we never saw. AGE — how old the price was when we read it, truncated by our own 120s filter (anything older is a miss, not an age). CONF — the publishers' own confidence band, in basis points of price. DIV — absolute distance from Coinbase spot, in basis points, sampled every 10 minutes, withheld below 6 cross-checks; DIV n is how many there have been.

WHAT THE TIMING COST · LIFETIME

This is the part only a game can measure. A shot expires; we look for the first oracle sample at or after that instant. If none has landed yet the shot is deferred and we look again. If the 15-minute grace window closes with nothing, the shot is voided and the stake goes back — nobody wins, nobody loses, and the feed's timing is the only reason.

FEEDSETTLED CLEANDEFERREDVOIDED
SOL31 25 0
BTC16 19 0
PUMP3 8 0

SINCE WE STARTED · 2026-08-20 → 2026-08-21

The table above is a 24-hour window, because the raw per-minute record is kept for four days and then expires — it exists for settlement, not for posterity. Every completed day is folded into a summary before that happens and the summary is kept for a year. This is the part that cannot be built by trying harder later. It can only be built by having started earlier.

DAYS MEASURED2complete UTC days folded and kept
SAMPLES KEPT1,585oracle reads behind every figure below
BEST DAY'S DUTY90.83%the densest day we have managed so far
STALE WINDOWS · ALL TIME7 attributable intervals longer than 120s, across every feed and every day
FEEDSAMPLESUSABLETELEMETRY CONF · DAILY MEDDAYSSTALEBLIND (OURS)REWINDS WORST GAP EVERWORST DIVERGENCE
SOL 1,585 100.00% 1,330 1 3 78 0 2.0m 2026-08-21 39.52 2026-08-21
BTC 1,585 100.00% 1,330 1 2 78 0 2.0m 2026-08-21 30.68 2026-08-21
ETH 1,585 100.00% 1,330 1 2 78 0 2.0m 2026-08-21 34.43 2026-08-21
BONK 1,584 99.94% 1,329 1 0 78 0 114s 2026-08-21 55.87 2026-08-21
WIF 1,585 100.00% 1,330 1 0 78 0 113s 2026-08-21 46.91 2026-08-21
JUP 1,585 100.00% 1,330 1 0 78 0 114s 2026-08-21 6525583.00 2026-08-21
PUMP 1,585 100.00% 1,330 1 0 78 0 113s 2026-08-21 88.12 2026-08-21

CONF · DAILY MED is the median of each day's median confidence band — a robust summary, but not the median of every individual reading, and the page says which it is rather than calling it "typical" and leaving you to guess. DAYS is how many days it rests on; below 3 the figure is withheld, because one day's median wearing the word typical, in a row whose sample count is summed across every day, is the same trick this page exists to avoid. REWINDS counts publish_time moving backwards, which should never happen. It is here because a number that is always zero is worth publishing precisely so that the day it is not, somebody notices.

METHOD

LIMITS

JSON · 1h · 24h · 72h · RATCHET · supply clock · the record · source · measured by a consumer with money on it · h51-2026-08-21