Saturn2022Docs

The market

Where volatility comes from

The oracle was already publishing volatility. Nobody was reading it. The feed moves only when the price has moved a fixed step, so its timestamps are the record.

The idea

A Chainlink feed does not publish on a clock. It publishes when the price has moved about half a percent, and not before. So a feed that speaks every few minutes is watching something that will not sit still, and one that goes quiet for hours is watching something that has. The gaps are the volatility, and reading them means reading no prices.

The arithmetic is old. A random walk with volatility σ takes d²/σ² expected time to first cross a barrier d away, so σ = d · √(year / mean interval). That estimator is Cho and Frees, Estimating the Volatility of Discrete Stock Prices, Journal of Finance 43(2), 1988, and the work on price durations that followed. Nothing here improves on it. What a deviation feed adds is that it istheir experiment: they had to construct passage events out of data, and a feed of this kind emits nothing else.

SpaceX, on the day this was written: its feed updated every 38 minutes on average, that spacing says 70% a year, and its own price history says 69%. Nobody told the contract SpaceX was volatile.

The estimator trap

The textbook route, log-returns weighted by their time gaps, is three times wrong on this data: on SpaceX it answered 228% where the price history said 69%. Deviation feeds sample on events, so busy stretches contribute many observations and quiet stretches almost none, and time-weighting amplifies exactly the stretches that are already over-represented. Counting crossings has no such bias, because the count is the event itself. The estimator that looks naive is the one that agrees with the market.

Checked against the prices

The test that means something is against the realized volatility of the very same rounds, not against a quoted options market, which prices the future and charges for the risk of doing so. Across eighteen feeds and about 5,300 rounds, spanning assets from 21% to 95% realized volatility, the ratio averages 1.000 with a spread of 3.8%; the worst asset sits at 0.918.

The spread matters more than the average. A bias that is the same size on every asset is a constant to divide out, which is what the contract does. One that wandered would not be fixable at all. And the estimator anyone would actually reach for, weighting each squared move by its own gap, was off by more than double on seventeen of those eighteen feeds: deviation feeds sample when the price moves, so the busy stretches over-represent themselves and that weighting amplifies exactly them.

What we predicted and got wrong

A round appears once a move has passed the threshold, so every observed move should be the threshold plus an overshoot, and a low quantile should read the barrier better than the median does. It does not. Using the tenth percentile made the spread worse, 15.0% against 5.2%. The median is the better read and we have no clean account of why. It is recorded because a measurement that killed a prediction is worth as much as one that started it.

One threshold per feed

The estimate scales linearly with d, so a borrowed threshold skews an asset’s options by the ratio of its real threshold to the borrowed one, in one direction, forever. That is not noise: it is a standing mispricing an informed buyer can farm, and the writer is always the one paying for it. So d is measured per feed, from sixty of its own rounds, as the median move between consecutive publishes.

Across seventeen feeds the thresholds run from 0.5078% on the S&P 500 to 0.5899% on the thinnest name, a spread of about twelve percent. Every market is deployed with its own figure, and the same figure is what the board and the lens are called with, so the page and the contract cannot drift apart.

What it cannot see

The look-back is 290 rounds, which on a quiet feed reaches weeks into the past, so the figure is a running average rather than an instantaneous read; that length is what buys the 3.8% spread, and a shorter window is not merely noisier but differently biased. A feed that pauses over a weekend stretches the mean interval, which biases the estimate down until trading resumes; the feeds publish 24/5, which bounds how long that lasts. And the threshold is inferred from published moves rather than read from a config, so a feed that changes its threshold will need recalibrating rather than announcing it.