STRASMORE/EXPLORE 3,127 QUERIES

half_day_volume

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-06, from us-market-holidays-in-japan-time.

as of series 10×5read in context →
half_day_volume — 10 rows by 5 columns, computed from US exchange, SIP and OPRA data.
session_datesession_labelhalf_day_okutrailing20_okuvs_trailing20_pct
2022-11-252022年11月25日38.4110.934.7
2023-07-032023年7月3日52.5102.751.2
2023-11-242023年11月24日41.299.341.5
2024-07-032024年7月3日60.510159.9
2024-11-292024年11月29日72119.560.2
2024-12-242024年12月24日59.512248.8
2025-07-032025年7月3日92.815061.9
2025-11-282025年11月28日81.5164.649.5
2025-12-242025年12月24日64.9145.544.6
2026-10-052026年10月5日174.9172.7101.3
Rows × columns
10 × 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 half_day_volume, derived from the stored result.
ColumnTypeRangeNotes
session_date date 2022-11-25 to 2026-10-05
session_label text 10 distinct values (2022年11月25日, 2023年11月24日, 2023年7月3日…)
half_day_oku number 38.4 to 174.9
trailing20_oku number 99.3 to 172.7
vs_trailing20_pct number 34.7 to 101.3 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
spy AS
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York'))       AS session_date,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_min
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2021-12-01'
),
early AS
(
    SELECT session_date
    FROM spy
    WHERE et_min >= 570 AND et_min < 960
    GROUP BY session_date
    HAVING count() BETWEEN 180 AND 240
       AND max(et_min) < 790
),
tape AS
(
    SELECT
        date,
        toFloat64(sum(volume)) AS shares
    FROM global_markets.stocks_daily_aggs
    WHERE date >= '2021-11-01'
    GROUP BY date
),
rolled AS
(
    SELECT
        date,
        shares,
        avg(shares) OVER (ORDER BY date ASC ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS shares_20
    FROM tape
)
SELECT
    toString(r.date)                                 AS session_date,
    concat(toString(toYear(r.date)), '年',
           toString(toMonth(r.date)), '月',
           toString(toDayOfMonth(r.date)), '日')     AS session_label,
    round(r.shares / 1e8, 1)                         AS half_day_oku,
    round(r.shares_20 / 1e8, 1)                      AS trailing20_oku,
    round(100 * r.shares / r.shares_20, 1)           AS vs_trailing20_pct
FROM rolled AS r
INNER JOIN early AS e ON e.session_date = r.date
ORDER BY r.date
⌘/Ctrl + Enter

Work with this data in your AI assistant

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