grid_intervals
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-09, from anatomy-of-an-option-contract.
| band_label | strikes_in_band | low_strike | high_strike | avg_interval |
|---|---|---|---|---|
| 0-5% | 7 | 325 | 355 | 5 |
| 5-10% | 6 | 310 | 370 | 12 |
| 10-25% | 19 | 260 | 420 | 8.89 |
| 25-50% | 23 | 175 | 510 | 15.23 |
- Rows × columns
- 4 × 5
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
band_label |
text | 4 distinct values (0-5%, 10-25%, 25-50%…) | |
strikes_in_band |
number | 6 to 23 | |
low_strike |
number | 175 to 325 | US dollars |
high_strike |
number | 355 to 510 | US dollars |
avg_interval |
number | 5 to 15.23 |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
WITH
last_day AS
(
SELECT max(date) AS d
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
),
chosen_expiry AS
(
SELECT expiration_date AS exp
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (SELECT d FROM last_day)
AND days_to_expiry BETWEEN 20 AND 60
GROUP BY expiration_date
ORDER BY count() DESC, expiration_date
LIMIT 1
),
spot AS
(
SELECT max(toFloat64(underlying_close)) AS s
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (SELECT d FROM last_day)
AND expiration_date = (SELECT exp FROM chosen_expiry)
)
SELECT
multiIf(
abs(100 * (toFloat64(strike_price) / (SELECT s FROM spot) - 1)) < 5, '0-5%',
abs(100 * (toFloat64(strike_price) / (SELECT s FROM spot) - 1)) < 10, '5-10%',
abs(100 * (toFloat64(strike_price) / (SELECT s FROM spot) - 1)) < 25, '10-25%',
'25-50%') AS band_label,
uniqExact(strike_price) AS strikes_in_band,
round(min(toFloat64(strike_price)), 2) AS low_strike,
round(max(toFloat64(strike_price)), 2) AS high_strike,
round((max(toFloat64(strike_price)) - min(toFloat64(strike_price))) / greatest(uniqExact(strike_price) - 1, 1), 2) AS avg_interval
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (SELECT d FROM last_day)
AND expiration_date = (SELECT exp FROM chosen_expiry)
AND abs(toFloat64(strike_price) / (SELECT s FROM spot) - 1) <= 0.5
GROUP BY band_label
ORDER BY min(abs(toFloat64(strike_price) / (SELECT s FROM spot) - 1)) ASC
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.