Strasmore Research
Market Recap 2026-07-03

Market Recap: June 29, 2026 — The Day in Numbers

June 29, 2026 in two minutes, from stored SQL: the index scoreboard, breadth, a memory-stock round trip, options flow, rates, and the day's calendar.

Monday, June 29, 2026 was a broad, growth-led up day: QQQ gained 2.57%, SPY 1.62%, and 3968 liquid names rose against 2327 decliners across a regular 390-minute-bar session. Every number below is read from a stored query — expand any panel for the exact SQL. The tick-by-tick layer of the same day — the trade tape print by print, the quote stream, the spread math — lives in its own report: the June 29 microstructure deep dive.

The scoreboard

Every change compares June 29's last regular-session minute bar with Friday June 26's.

QuerySPY / QQQ / DIA / IWM — June 29 vs the June 26 close, regular hours
The exact SQL behind every number
WITH friday AS (
    SELECT ticker, argMax(close, window_start) AS friday_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00'
    GROUP BY ticker
),
monday AS (
    SELECT ticker,
           argMin(open, window_start) AS monday_open,
           argMax(close, window_start) AS monday_close,
           max(high) AS day_high,
           min(low) AS day_low,
           round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    GROUP BY ticker
)
SELECT
    m.ticker AS ticker,
    toFloat64(f.friday_close) AS jun26_close,
    toFloat64(m.monday_open) AS jun29_open,
    toFloat64(m.monday_close) AS jun29_close,
    round((toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) * 100, 2) AS pct_change,
    round(100 * (toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) / max(toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) OVER (), 1) AS pct_of_best_change,
    toFloat64(m.day_high) AS day_high,
    toFloat64(m.day_low) AS day_low,
    m.shares_traded_m AS shares_traded_m
FROM monday m
JOIN friday f ON m.ticker = f.ticker
ORDER BY m.ticker

SPY opened at $736.525 against Friday's $729.09 close and finished at $740.88, just under its $741.56 high. QQQ's +2.57% against DIA's +0.81% marks a growth-and-tech day; IWM added 0.45%.

Breadth says the rally was wide. An advancer is a ticker whose Monday regular-session close beat Friday's, counted only among names with at least $1 million traded — a filter that drops 5108 of 11475 dual-session tickers — names with less than $1 million traded on the day.

QueryAdvancers vs decliners among tickers with at least $1M traded on June 29
The exact SQL behind every number
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-29 00:00:00') AS monday_dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE (window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
       OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
    GROUP BY ticker
)
SELECT
    countIf(monday_close > friday_close AND monday_dollar_volume >= 1000000) AS advancers,
    countIf(monday_close < friday_close AND monday_dollar_volume >= 1000000) AS decliners,
    countIf(monday_close = friday_close AND monday_dollar_volume >= 1000000) AS unchanged,
    countIf(monday_dollar_volume >= 1000000) AS liquid_tickers,
    count() AS tickers_traded_both_sessions,
    count() - countIf(monday_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(monday_close > friday_close AND monday_dollar_volume >= 1000000)
        / countIf(monday_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE friday_close > 0 AND monday_close > 0

3968 advancers, 2327 decliners, 72 unchanged: 62.3% of the liquid tape rose.

The day's highlight: memory and storage

Four names traded the same theme with very different outcomes — we report co-movement and magnitude; the data does not say why.

QueryThe memory/storage names: change vs Friday's close and intraday range
The exact SQL behind every number
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
        maxIf(toFloat64(high), window_start >= '2026-06-29 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-06-29 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-06-29 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-29 00:00:00') AS high_bar
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
        OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round(friday_close, 2) AS jun26_close,
    round(monday_close, 2) AS jun29_close,
    round((monday_close / friday_close - 1) * 100, 2) AS pct_chg,
    round(day_high, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct
FROM per_name
ORDER BY ticker

MU is the textbook case of range versus net change: a 12.22% intraday range — a $1023.65 low at 10:18 ET, a $1148.79 high at 15:59 — yet a close only 1.97% above Friday. Western Digital rose 11.15%, Seagate 8.17%; SanDisk closed -1.9% against Friday across a 10.33% range. A close hides what holders lived through.

Where the money traded

By dollars traded, Micron (MU) towered over everything, index funds included: $58.47 billion in regular hours against SPY's $33.97 billion. By share count the day looks completely different.

QueryVolume leaders two ways: top 6 by dollars traded, top 4 by shares traded
The exact SQL behind every number
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, shares_m,
    round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
        / max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
    SELECT
        'by dollars traded' AS leaderboard,
        ticker,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    GROUP BY ticker
    ORDER BY dollar_volume_bn DESC
    LIMIT 6
    UNION ALL
    SELECT
        'by shares traded' AS leaderboard,
        ticker,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    GROUP BY ticker
    ORDER BY shares_m DESC
    LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESC

Share-count boards mislead: the share leaders were SOXS, a 3x-leveraged inverse semiconductor ETF (695.3 million shares), and INLF, a penny stock whose 353.8 million shares were worth only about $23 million all day. Dollar volume shows where money actually moved.

In 30-minute buckets of New York time, June 29 traces the classic volume "smile":

QueryShares traded per 30-minute bucket, regular hours (billions)
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
    round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket,
    round(100 * (sum(toFloat64(volume)) / min(sum(toFloat64(volume))) OVER () - 1), 1) AS pct_above_trough
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY et_time
ORDER BY et_time

2.3 billion shares in the opening half hour, a 0.77 billion trough at 13:30, and the day's biggest bucket — 2.39 billion — in the closing half hour, the stretch where closing auctions and index-tracking flows traditionally concentrate. What sits underneath the minute bars — the busiest single minutes, the largest prints, odd lots, the quote stream — is in the microstructure deep dive.

The options tape

Options traded 66.33 million contracts across 11.04 million prints.

QueryOne row for the whole options day: volume, 0DTE, the holiday-shifted week
The exact SQL behind every number
WITH
    (
        SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
                any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
                sum(size), count(), round(avg(toFloat64(price)), 3))
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
        GROUP BY ticker
        ORDER BY sum(size) DESC
        LIMIT 1
    ) AS top_contract,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    ) AS spy_regular_close
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
    round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260629') / sum(size), 1) AS same_day_expiry_pct,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
    countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
    countIf(sip_timestamp < '2026-06-29 13:30:00') AS premarket_prints,
    countIf(sip_timestamp < '2026-06-29 13:30:00'
        AND underlying_symbol NOT IN ('SPX', 'SPXW', 'XSP', 'RUTW', 'VIX', 'VIXW')) AS premarket_non_index_prints,
    arrayStringConcat(arraySort(groupUniqArrayIf(underlying_symbol, sip_timestamp < '2026-06-29 13:30:00')), ', ') AS premarket_underlyings,
    round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
    top_contract.1 AS top_contract_underlying,
    top_contract.2 AS top_contract_strike,
    top_contract.3 AS top_contract_type,
    top_contract.4 AS top_contract_expiry,
    top_contract.5 AS top_contract_volume,
    round(top_contract.7, 3) AS top_contract_avg_price,
    round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'

Calls took 55.7% of contract volume, and 35.8% of everything that traded expired that same Monday — the zero-days-to-expiry (0DTE) share. The busiest single contract anywhere was the same-day SPY $741 call: 788133 contracts at a per-print average premium of $0.474, with SPY's last-minute-bar close landing 0.12 dollars below the strike — on our measure, the day's most-traded option finished out of the money. SPY led all underlyings at 12.01 million contracts; QQQ was second at 7.32 million.

The expiration calendar bends around holidays: contracts expiring Friday, July 3 traded 0 times all day — that expiration does not exist — while the Thursday, July 2 expiry traded 10.73 million contracts, the weekly having shifted ahead of the closure.

Rates: the curve barely moved

Treasuries had a quiet Monday. Yields are daily closes; changes are against Friday, June 26.

QueryThe Treasury curve, June 29 close vs June 26 (populated maturities only)
The exact SQL behind every number
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jun29_yield_pct,
    round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
    SELECT arrayJoin([
        ('1 month',  toFloat64(mon.yield_1_month),  toFloat64(fri.yield_1_month)),
        ('3 month',  toFloat64(mon.yield_3_month),  toFloat64(fri.yield_3_month)),
        ('1 year',   toFloat64(mon.yield_1_year),   toFloat64(fri.yield_1_year)),
        ('2 year',   toFloat64(mon.yield_2_year),   toFloat64(fri.yield_2_year)),
        ('5 year',   toFloat64(mon.yield_5_year),   toFloat64(fri.yield_5_year)),
        ('10 year',  toFloat64(mon.yield_10_year),  toFloat64(fri.yield_10_year)),
        ('30 year',  toFloat64(mon.yield_30_year),  toFloat64(fri.yield_30_year)),
        ('2s10s spread', toFloat64(mon.yield_10_year - mon.yield_2_year), toFloat64(fri.yield_10_year - fri.yield_2_year))
    ]) AS t
    FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-29') AS mon,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-26') AS fri
)

The 10-year closed at 4.38%, unchanged on the day (0 bp), while the 3-month bill added 4 bp to 3.87%. The 2s10s spread — the 10-year yield minus the 2-year — closed at 0.28 percentage points, a one-day change of -3 bp: still positive, slightly flatter.

The calendar behind the day

QueryJune 29's corporate calendar and information flow, in one row
The exact SQL behind every number
WITH
    (
        SELECT (argMax(d, n), max(n))
        FROM (
            SELECT ex_dividend_date AS d, count() AS n
            FROM global_markets.stocks_dividends
            WHERE ex_dividend_date BETWEEN '2026-06-22' AND '2026-07-02'
            GROUP BY d
        )
    ) AS peak_ex_div,
    (
        SELECT (countIf(form_type = '424B2'), countIf(form_type = '4'), countIf(form_type = '8-K'), count())
        FROM global_markets.stocks_sec_edgar_index
        WHERE filing_date = '2026-06-29'
    ) AS filings,
    (
        SELECT (count(), uniqExact(publisher), countIf(has(tickers, 'NVDA')))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-29'
    ) AS news,
    (
        SELECT max(n)
        FROM (
            SELECT t, count() AS n
            FROM (
                SELECT arrayJoin(tickers) AS t
                FROM global_markets.stocks_news
                WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-29'
            )
            WHERE t NOT IN ('NVDA', 'SPCX')
            GROUP BY t
        )
    ) AS runner_up_articles,
    (
        SELECT (any(split_from), any(split_to), count())
        FROM global_markets.stocks_splits
        WHERE ticker = 'HON' AND execution_date = '2026-06-29'
    ) AS hon_split,
    (
        SELECT (
            round(toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')), 2),
            round(toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')), 2)
        )
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'HON'
          AND ((window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
            OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
    ) AS hon_close
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-29') AS ex_dividend_records_jun29,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-29'
        AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'GOOG', 'META', 'TSLA', 'JPM', 'JNJ',
                       'XOM', 'KO', 'PG', 'V', 'MA', 'HD', 'WMT', 'CVX', 'MRK', 'PEP',
                       'SPY', 'QQQ', 'DIA', 'IWM', 'VTI')) AS household_name_ex_dividends,
    peak_ex_div.1 AS busiest_ex_div_day_of_window,
    peak_ex_div.2 AS busiest_ex_div_day_records,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-06-29') AS splits_executed,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-29') AS ipos_listed_jun29,
    (SELECT arrayStringConcat(groupArray(ticker), ', ') FROM (
        SELECT ticker FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-01' ORDER BY ticker
    )) AS jul1_ipo_debuts,
    filings.4 AS sec_filings,
    filings.1 AS prospectus_424b2_filings,
    filings.2 AS insider_form4_filings,
    filings.3 AS filings_8k,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    news.3 AS nvda_articles,
    runner_up_articles AS next_most_covered_articles,
    news.3 - runner_up_articles AS nvda_minus_next_most_covered,
    hon_split.3 AS hon_split_records,
    hon_split.1 AS hon_split_from,
    hon_split.2 AS hon_split_to,
    hon_close.1 AS hon_close_jun26,
    hon_close.2 AS hon_close_jun29,
    (SELECT toDate(max(published)) FROM global_markets.news) AS second_feed_last_article

449 dividend records went ex-dividend on June 29 — own the stock before its ex-dividend date or the payment is not yours — yet among 25 household names we checked, 0 appeared. The quarter-end wave crested at 747 records on 2026-07-01. 23 splits executed; 0 IPOs listed, the week's name-brand debuts (BSP, ITG, LIME) coming that Wednesday.

The SEC logged 6173 filings dated June 29: 1473 structured-product pricing supplements (form 424B2) and 1277 insider-trade reports (Form 4) dwarf the 231 8-Ks that make headlines. Our equity news feed carried 170 articles from just 3 publishers. Excluding one reused symbol the vendor tags ambiguously (dropped inside the query itself), the most-covered name was NVDA at 14 articles; the runner-up counted 12.

Data notes

Weird data gets a note, never silent exclusion — the three below touch this post's headline numbers; the rest live in the expander.

  • Dollar volume is a per-minute proxy. Every dollar-volume figure here is close × volume summed per minute bar — close to, but not exactly, the sum of individual print values.
  • A lone print can contaminate a minute bar's high or low. QQQ's 11:07 ET bar carries a $709.58 low while no surrounding bar dipped below $715.09 — a single print $5.51 under the concurrent market. Every high and low displayed above was cross-checked against adjacent bars; QQQ's session low of $705.172 is traced by a long run of consecutive mid-morning bars, not a lone print.
  • Treasury coverage is thinner than the schema. Four advertised maturities (the 6-month, 3-, 7- and 20-year) have never been populated; the curve above shows the seven that exist, plus the 2s10s row.
Full data notes
  • A Honeywell "reverse split" the tape contradicts. The corporate-actions feed carries 1 HON record dated June 29: a 2-for-1 reverse split. HON closed $231.3 Friday and $227.71 Monday — no doubling. We did not apply it.
  • A second news feed is dead, not quiet. Its latest article is dated 2026-05-25 — the article count above is one vendor's feed, not "all market news."
  • The tick-level receipts moved. Crossed quotes, the phantom-volume correction on the trade tape, and the truncated FINRA short-volume file (and why daily short volume is not short interest) are documented, with receipts, in the microstructure deep dive.

The session, verified

QuerySession check: the holiday calendar and SPY's observed minute-bar span
The exact SQL behind every number
WITH
    (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-06-29') AS next_closure,
    (
        SELECT (
            round(toFloat64(minIf(low, formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') = '11:07')), 2),
            round(toFloat64(minIf(low, formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') IN ('11:04', '11:05', '11:06', '11:08', '11:09', '11:10'))), 2)
        )
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'QQQ' AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    ) AS qqq_lone
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-06-29') AS holiday_rows_jun29,
    next_closure AS next_closure_date,
    (SELECT any(name) FROM global_markets.stocks_market_holidays WHERE date = next_closure) AS next_closure_name,
    (SELECT any(status) FROM global_markets.stocks_market_holidays WHERE date = next_closure) AS next_closure_status,
    formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
    formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
    count() AS spy_minute_bars,
    countIf(window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00') AS regular_session_bars,
    qqq_lone.1 AS qqq_1107_lone_low,
    qqq_lone.2 AS qqq_1107_adjacent_bars_low,
    round(qqq_lone.2 - qqq_lone.1, 2) AS qqq_lone_print_below_adjacent
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-29 00:00:00' AND window_start < '2026-06-30 00:00:00'

The holiday calendar holds 0 rows for June 29 — a regular full session — and SPY's bars run 04:00 to 19:59 New York time with exactly 390 regular-window bars. The next closure is 2026-07-03 ("Independence Day", status closed) — a full close, not a half-day, with July 4 landing on a Saturday in 2026.

Methodology

  • Timestamps are stored in UTC and converted to New York time inside the queries. "Close" means the last regular-session minute bar, not the official auction print; day changes compare June 29 with June 26. The session type was verified against the holiday calendar and the observed bar span — never assumed. Equity minute bars come from the delayed consolidated feed — delayed by minutes intraday, complete well before this post's publication.
  • Decimal columns are cast to 64-bit floats before ratio arithmetic; option expiries are re-parsed from the OCC ticker (the table's own expiry column is broken). The options panel is read once, at authoring time, through the gated read-only path — readers never trigger live queries. Warehouse state as of July 3, 2026.

Every panel is a stored query result — chart, table, and SQL are one object. Paste any of them into the Strasmore terminal and make them your own.