STRASMORE/EXPLORE 3,293 QUERIES

The two expirations bracketing 30 days, and the IV30 they produce (AAPL, June 15, 2026)

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-09-12, from What Is an Implied Volatility Index? IV30 & VIX.

as of table 2×7read in context →
The two expirations bracketing 30 days, and the IV30 they produce (AAPL, June 15, 2026) — 2 rows by 7 columns, computed from US exchange, SIP and OPRA data.
legexpirydteatm_iv_pctcontract_countweight_pctiv30_pct
nearJuly 10, 20262521.77628.621.83
farJuly 17, 20263221.85671.421.83
Rows × columns
2 × 7
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for The two expirations bracketing 30 days, and the IV30 they produce (AAPL, June 15, 2026), derived from the stored result.
ColumnTypeRangeNotes
leg text 2 distinct values (far, near)
expiry text 2 distinct values (July 10, 2026, July 17, 2026)
dte number 25 to 32
atm_iv_pct number 21.77 to 21.85 percent
contract_count number every row is 6 count
weight_pct number 28.6 to 71.4 percent
iv30_pct number every row is 21.83 percent

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.

SELECT
    leg,
    leg_expiry                                              AS expiry,
    leg_dte                                                 AS dte,
    round(leg_iv * 100, 2)                                  AS atm_iv_pct,
    leg_contracts                                           AS contract_count,
    round(leg_weight * 100, 1)                              AS weight_pct,
    round(sqrt((near_iv * near_iv * near_dte * (far_dte - 30)
              + far_iv * far_iv * far_dte * (30 - near_dte))
              / (far_dte - near_dte) / 30) * 100, 2)        AS iv30_pct
FROM
(
    SELECT
        maxIf(days_to_expiry, days_to_expiry <= 30)                     AS near_dte,
        minIf(days_to_expiry, days_to_expiry > 30)                      AS far_dte,
        argMaxIf(atm_iv, days_to_expiry, days_to_expiry <= 30)          AS near_iv,
        argMinIf(atm_iv, days_to_expiry, days_to_expiry > 30)           AS far_iv,
        argMaxIf(expiry_label, days_to_expiry, days_to_expiry <= 30)    AS near_expiry,
        argMinIf(expiry_label, days_to_expiry, days_to_expiry > 30)     AS far_expiry,
        argMaxIf(contracts, days_to_expiry, days_to_expiry <= 30)       AS near_contracts,
        argMinIf(contracts, days_to_expiry, days_to_expiry > 30)        AS far_contracts
    FROM
    (
        SELECT
            concat(monthName(expiration_date), ' ', toString(toDayOfMonth(expiration_date)), ', ', toString(toYear(expiration_date))) AS expiry_label,
            days_to_expiry,
            avg(toFloat64(implied_volatility))  AS atm_iv,
            count()                             AS contracts
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'AAPL'
          AND date = '2026-06-15'
          AND iv_converged = 1
          AND volume > 0
          AND days_to_expiry BETWEEN 7 AND 90
          AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.025
        GROUP BY expiration_date, days_to_expiry
        HAVING contracts >= 2
    )
)
ARRAY JOIN
    ['near', 'far']                                     AS leg,
    [near_expiry, far_expiry]                           AS leg_expiry,
    [near_dte, far_dte]                                 AS leg_dte,
    [near_iv, far_iv]                                   AS leg_iv,
    [near_contracts, far_contracts]                     AS leg_contracts,
    [(far_dte - 30) / (far_dte - near_dte),
     (30 - near_dte) / (far_dte - near_dte)]            AS leg_weight
ORDER BY leg_dte
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisWhat Is an Implied Volatility Index? IV30 & VIX
AAPL IV30 rebuilt daily, with its near and far legs (June 15 to August 31, 2026) series 54×5 → AAPL near-the-money IV by expiration, June 15, 2026 series 13×5 → The same IV30 recipe across six household names, June 15, 2026 ranking 6×4 → One input, three levels: weekly average IV for AAPL, NVDA and KO (20 to 45 days out) series 53×5 → NVDA front band vs 91-180 day band: median near-the-money IV per session, Feb 10 to Mar 14, 2025 series 24×4 → Same underlying, same IV, rising vega: AAPL by days to expiry (July 2026) ranking 14×4 → See all 3,293 queries →