STRASMORE/EXPLORE 3,293 QUERIES

earnings_term_structure

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-24, from msft-stock-price-analysis.

as of series 11×8read in context →
earnings_term_structure — 11 rows by 8 columns, computed from US exchange, SIP and OPRA data.
expiry_dateexpiry_labelas_ofdteatm_iv_pctexpected_move_pctexpected_move_usdcontracts
2026-10-302026/10/302026/10/22846.26.8435.716
2026-11-022026/11/022026/10/221140.47.0136.5714
2026-11-042026/11/042026/10/221339.27.3938.5910
2026-11-062026/11/062026/10/221538.77.8540.9516
2026-11-132026/11/132026/10/222235.78.7645.738
2026-11-202026/11/202026/10/222933.19.3248.6516
2026-11-272026/11/272026/10/223631.29.8151.218
2026-12-042026/12/042026/10/224331.310.7356.038
2026-12-182026/12/182026/10/225730.211.9362.278
2027-01-152027/01/152026/10/228529.114.0573.328
2027-02-192027/02/192026/10/221203017.289.798
Rows × columns
11 × 8
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 earnings_term_structure, derived from the stored result.
ColumnTypeRangeNotes
expiry_date date 2026-10-30 to 2027-02-19
expiry_label text 11 distinct values (2026/10/30, 2026/11/02, 2026/11/04…)
as_of text 1 distinct value (2026/10/22)
dte number 8 to 120
atm_iv_pct number 29.1 to 46.2 percent
expected_move_pct number 6.84 to 17.2 percent
expected_move_usd number 35.7 to 89.79 US dollars
contracts number 8 to 16 count

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
    toString(expiration_date)                                                       AS expiry_date,
    formatDateTime(expiration_date, '%Y/%m/%d')                                     AS expiry_label,
    formatDateTime(any(date), '%Y/%m/%d')                                           AS as_of,
    any(days_to_expiry)                                                             AS dte,
    round(avg(implied_volatility) * 100, 1)                                         AS atm_iv_pct,
    round(avg(implied_volatility) * sqrt(any(days_to_expiry) / 365) * 100, 2)       AS expected_move_pct,
    round(any(toFloat64(underlying_close)) * avg(implied_volatility)
          * sqrt(any(days_to_expiry) / 365), 2)                                     AS expected_move_usd,
    count()                                                                         AS contracts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'MSFT'
  AND date >= today() - 14
  AND date = (
        SELECT max(date)
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'MSFT'
          AND date >= today() - 14
      )
  AND iv_converged = 1
  AND volume > 0
  AND underlying_close > 0
  AND days_to_expiry BETWEEN 5 AND 120
  AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.02
GROUP BY expiration_date
HAVING count() >= 2
ORDER BY expiration_date
⌘/Ctrl + Enter

在你的 AI 助理中使用這些資料

開啟即可查詢,已帶入本頁資料。免費,無需帳號。