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 DUTY57.31% 2,476 of 4,320 possible minutes. Ours, not theirs — a serverless instance nobody woke records nothing.
READ FROM PYTH2,476 samples where the on-chain accounts answered. pyth-onchain 2476
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 COST22 bets voided and refunded because no oracle sample landed inside the 15-minute grace window. 79 deferred, 59 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 2,476 100.00% 2,221 1,980 233 59s 105s 2.0m 5 24s 4.47 5.91 2.23 39.52 592 29s ago
BTC4cSM…PSPo 2,476 100.00% 2,221 1,979 233 59s 106s 2.1m 6 25s 3.17 4.51 1.48 30.68 592 29s ago
ETH42am…X6XC 2,476 100.00% 2,221 1,977 233 59s 106s 2.3m 7 26s 4.28 5.54 1.87 34.43 592 29s ago
BONKDBE3…wBiX 2,475 99.96% 2,220 1,978 233 53s 106s 2.0m 1 29s 21.00 24.39 6.91 60.29 592 29s ago
WIF6B23…YwbT 2,476 100.00% 2,221 1,979 233 53s 106s 2.3m 1 30s 12.02 15.55 5.44 46.91 592 37s ago
JUP7dbo…nxH5 2,476 100.00% 2,221 1,974 233 53s 106s 2.5m 1 30s 11.88 14.42 5889993.69 6525583.00 484 29s ago
PUMPHMm3…HJSH 2,476 100.00% 2,221 1,974 233 53s 106s 2.1m 1 29s 18.86 24.29 8.02 111.66 592 6s 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
SOL34 36 10
BTC16 20 1
BONK1 5 4
WIF0 1 1
JUP1 2 2
PUMP7 15 4

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

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 MEASURED3complete UTC days folded and kept
SAMPLES KEPT2,337oracle reads behind every figure below
BEST DAY'S DUTY90.83%the densest day we have managed so far
STALE WINDOWS · ALL TIME17 attributable intervals longer than 120s, across every feed and every day
FEEDSAMPLESUSABLETELEMETRY CONF · DAILY MEDDAYSSTALEBLIND (OURS)REWINDS WORST GAP EVERWORST DIVERGENCE
SOL 2,337 100.00% 2,082 2 5 217 0 2.0m 2026-08-21 39.52 2026-08-21
BTC 2,337 100.00% 2,082 2 6 217 0 2.1m 2026-08-22 30.68 2026-08-21
ETH 2,337 100.00% 2,082 2 6 217 0 2.1m 2026-08-22 34.43 2026-08-21
BONK 2,336 99.96% 2,081 2 0 217 0 117s 2026-08-22 60.29 2026-08-22
WIF 2,337 100.00% 2,082 2 0 217 0 113s 2026-08-21 46.91 2026-08-21
JUP 2,337 100.00% 2,082 2 0 217 0 114s 2026-08-21 6525583.00 2026-08-21
PUMP 2,337 100.00% 2,082 2 0 217 0 114s 2026-08-22 111.66 2026-08-22

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 · h64-2026-08-23