Option spikes

For every contract, the largest directed move found anywhere inside the selected search frame: an earlier local low to a later high (a rise), or an earlier high to a later low (a fall). The frame is only a boundary—the calculation does not compare its opening and closing prices. Extremes come from minute bars (per-second bars where available) and are checked against bid and ask quoted in the same minute.

Session—
Last bar, NY—
Search frame, NY—
Contracts tracked—
With quotes—
Stream—
Selection
Spikes
Search frame
Filters

…

×italic spike: its start or peak was not checked against a quote

How the page is built

The tape receives a minute bar for every option contract that trades and, for up to a thousand contracts, their quotes; the price-changes page adds per-second bars for contracts it shows. For a rolling frame, every bar wholly inside the displayed start–end bounds is scanned in chronological order. Every local low may start a later rise and every local high may start a later fall; the strongest valid pair wins. Thus “last hour” may return a move from 37 minutes ago to 15 minutes ago—it is not an open-to-close return. A bar whose minute has a quote is trimmed to that minute's lowest bid and highest ask, so a lone bad print cannot become a verified spike. The trim does not look at trade size, so the start-bar volume switch is a separate guard: a spike may only start from a bar that traded at least that many contracts. Quote ranges are saved every five minutes and restored after a restart, and the underlyings' minute prices are re-read from REST, so a restart no longer empties the verification marks or the underlying column for the session so far.

Start prices below $0.05 are ignored. "Now" is the latest print of the contract; retrace is (peak − now) / (peak − start). Δ underlying compares the underlying's last prices, from the stock tape, at the start and at the peak. The table refreshes every five seconds while it is visible; a larger spike replaces a smaller one the moment it prints.