STRASMORE/EXPLORE 2,707 QUERIES

NVDA: implied move both ways versus the realized move, report by report

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-27, from Do Stocks Move as Much as Options Predict?.

as of series 7×5read in context →
NVDA: implied move both ways versus the realized move, report by report — 7 rows by 5 columns, computed from US exchange, SIP and OPRA data.
report_datereport_labelstraddle_implied_pctiv_root_t_pctrealized_pct
2025-02-26February 26, 202510.5713.275.12
2025-05-28May 28, 20256.928.672.72
2025-08-27August 27, 20256.488.120.88
2025-11-19November 19, 20257.659.60.4
2026-02-25February 25, 20266.097.644.13
2026-05-20May 20, 20266.227.770.5
2026-08-26August 26, 20265.97.47.01
Rows × columns
7 × 5
Period covered
to
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 NVDA: implied move both ways versus the realized move, report by report, derived from the stored result.
ColumnTypeRangeNotes
report_date date 2025-02-26 to 2026-08-26
report_label text 7 distinct values
straddle_implied_pct number 5.9 to 10.57 percent
iv_root_t_pct number 7.4 to 13.27 percent
realized_pct number 0.4 to 7.01 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.

WITH
reports AS (
    SELECT
        toString(ticker)    AS sym,
        toDate(filing_date) AS report_date
    FROM global_markets.stocks_8k_text
    WHERE ticker = 'NVDA'
      AND filing_date >= '2021-09-01'
      AND filing_date <  '2026-09-20'
      AND (items_text ILIKE '%results of operations and financial condition%'
        OR items_text ILIKE '%item 2.02%')
    GROUP BY sym, report_date
),
sessions AS (
    SELECT
        toString(ticker) AS sym,
        toDate(date)     AS session_date,
        toFloat64(close) AS px
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('NVDA')
      AND date >= '2021-08-01'
      AND date <  '2026-09-27'
      AND close > 0
),
spans AS (
    SELECT
        r.sym         AS sym,
        r.report_date AS report_date,
        maxIf(s.session_date, s.session_date < r.report_date) AS pre_date,
        minIf(s.session_date, s.session_date > r.report_date) AS post_date
    FROM reports AS r
    INNER JOIN sessions AS s ON s.sym = r.sym
    WHERE s.session_date >= r.report_date - 8
      AND s.session_date <= r.report_date + 8
    GROUP BY r.sym, r.report_date
    HAVING countIf(s.session_date < r.report_date) > 0
       AND countIf(s.session_date > r.report_date) > 0
),
moves AS (
    SELECT
        sp.sym         AS sym,
        sp.report_date AS report_date,
        sp.pre_date    AS pre_date,
        round(100 * abs(b.px / a.px - 1), 2) AS realized_pct
    FROM spans AS sp
    INNER JOIN sessions AS a ON a.sym = sp.sym AND a.session_date = sp.pre_date
    INNER JOIN sessions AS b ON b.sym = sp.sym AND b.session_date = sp.post_date
),
greeks AS (
    SELECT
        toString(underlying_symbol)   AS sym,
        toDate(date)                  AS pre_date,
        toDate(expiration_date)       AS expiry,
        lower(option_type)            AS side,
        toFloat64(strike_price)       AS strike,
        toFloat64(option_close)       AS opt_px,
        toFloat64(underlying_close)   AS spot,
        toFloat64(implied_volatility) AS iv,
        toUInt16(days_to_expiry)      AS dte
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('NVDA')
      AND date >= '2021-09-01'
      AND date <  '2026-09-20'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 1 AND 45
      AND underlying_close > 0
      AND option_close > 0
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
),
chain AS (
    SELECT
        g.sym      AS sym,
        g.pre_date AS pre_date,
        g.expiry   AS expiry,
        g.side     AS side,
        g.strike   AS strike,
        g.opt_px   AS opt_px,
        g.spot     AS spot,
        g.iv       AS iv,
        g.dte      AS dte
    FROM greeks AS g
    INNER JOIN moves AS m ON m.sym = g.sym AND m.pre_date = g.pre_date
    WHERE g.expiry > m.report_date
),
front AS (
    SELECT sym, pre_date, min(expiry) AS expiry
    FROM chain
    GROUP BY sym, pre_date
),
straddles AS (
    SELECT
        c.sym       AS sym,
        c.pre_date  AS pre_date,
        c.strike    AS strike,
        any(c.spot) AS spot,
        max(c.dte)  AS dte,
        avgIf(c.opt_px, c.side IN ('call', 'c')) AS call_px,
        avgIf(c.opt_px, c.side IN ('put', 'p'))  AS put_px,
        avg(c.iv)   AS atm_iv
    FROM chain AS c
    INNER JOIN front AS f
        ON f.sym = c.sym AND f.pre_date = c.pre_date AND f.expiry = c.expiry
    GROUP BY c.sym, c.pre_date, c.strike
    HAVING countIf(c.side IN ('call', 'c')) > 0
       AND countIf(c.side IN ('put', 'p')) > 0
),
implied AS (
    SELECT
        sym,
        pre_date,
        argMin(round(100 * (call_px + put_px) / spot, 2), abs(strike / spot - 1)) AS straddle_pct,
        argMin(round(100 * atm_iv * sqrt(dte / 365), 2), abs(strike / spot - 1))  AS iv_root_t_pct
    FROM straddles
    GROUP BY sym, pre_date
)
SELECT
    toString(m.report_date) AS report_date,
    concat(monthName(m.report_date), ' ', toString(toDayOfMonth(m.report_date)), ', ', toString(toYear(m.report_date))) AS report_label,
    i.straddle_pct          AS straddle_implied_pct,
    i.iv_root_t_pct         AS iv_root_t_pct,
    m.realized_pct          AS realized_pct
FROM moves AS m
INNER JOIN implied AS i ON i.sym = m.sym AND i.pre_date = m.pre_date
WHERE i.straddle_pct > 0
ORDER BY m.report_date
⌘/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 analysisDo Stocks Move as Much as Options Predict?
Implied versus realized earnings moves, large caps scored print by print table 13×8 → The ten widest overshoots: realized versus implied ranking 10×4 → Where the realized move landed relative to implied ranking 6×4 → Under-implied share and median ratio, year by year ranking 2×4 → NVDA after its late-May 2023 report: implied volatility and where the stock went series 12×6 → Apple: implied volatility and the expected move at six horizons, one session table 6×7 → See all 2,707 queries →