RATCHET · THE OBSERVATORY24H 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 DUTY90.14% 1,298 of 1,440 possible minutes. Ours, not theirs — a serverless instance nobody woke records nothing.
READ FROM PYTH1,298 samples where the on-chain accounts answered. pyth-onchain 1298
WORST GAP · UPPER BOUND2.0m SOL — 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 24 HOURS

FEEDSAMPLESUSABLETELEMETRYADVANCESBLIND (OURS) GAP MEDGAP P95GAP MAXSTALE>120s AGE MEDCONF MEDCONF P95 DIV MEDDIV MAXDIV nLAST PUBLISH
SOL7UVi…jLiE 1,298 100.00% 1,298 1,221 73 56s 106s 2.0m 3 31s 4.59 6.11 2.82 36.32 337 3m ago
BTC4cSM…PSPo 1,298 100.00% 1,298 1,220 73 55s 106s 2.0m 2 33s 3.36 5.00 2.33 30.68 337 3m ago
ETH42am…X6XC 1,298 100.00% 1,298 1,219 73 54s 106s 2.0m 2 33s 4.56 5.71 2.81 34.43 337 3m ago
BONKDBE3…wBiX 1,297 99.92% 1,297 1,217 73 53s 106s 114s 0 29s 21.61 24.67 7.81 55.87 337 2m ago
WIF6B23…YwbT 1,298 100.00% 1,298 1,221 73 53s 106s 113s 0 30s 12.22 15.89 5.55 46.91 337 3m ago
JUP7dbo…nxH5 1,298 100.00% 1,298 1,217 73 53s 106s 114s 0 31s 11.92 14.52 6005530.57 6525583.00 336 3m ago
PUMPHMm3…HJSH 1,298 100.00% 1,298 1,213 73 53s 106s 113s 0 30s 19.02 24.07 7.26 88.12 337 2m 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