spy_snapshot
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-20, from what-is-spy-etf.
- Rows × columns
- 1 × 13
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
latest_session_label |
text | 1 distinct value (September 18, 2026) | |
latest_close |
number | every row is 761.69 | US dollars |
high_52w |
number | every row is 779.37 | US dollars |
high_52w_label |
text | 1 distinct value (August 13, 2026) | |
low_52w |
number | every row is 629.28 | US dollars |
low_52w_label |
text | 1 distinct value (March 30, 2026) | |
pct_below_high |
number | every row is 2.3 | percent |
pct_above_low |
number | every row is 21 | percent |
avg_daily_volume_millions |
number | every row is 68.1 | count |
sessions_counted |
number | every row is 250 | |
payments_last_12m |
number | every row is 4 | |
dividends_last_12m |
number | every row is 7.58 | |
trailing_yield_pct |
number | every row is 1 | 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
(
SELECT sum(cash)
FROM
(
SELECT
ex_dividend_date,
toFloat64(any(cash_amount)) AS cash
FROM global_markets.stocks_dividends
WHERE ticker = 'SPY'
AND ex_dividend_date <= today()
AND ex_dividend_date > today() - 366
GROUP BY ex_dividend_date
)
) AS dividends_12m,
(
SELECT uniqExact(ex_dividend_date)
FROM global_markets.stocks_dividends
WHERE ticker = 'SPY'
AND ex_dividend_date <= today()
AND ex_dividend_date > today() - 366
) AS payments_12m
SELECT
concat(monthName(max(date)), ' ', toString(toDayOfMonth(max(date))), ', ', toString(toYear(max(date)))) AS latest_session_label,
round(toFloat64(argMax(close, date)), 2) AS latest_close,
round(toFloat64(max(high)), 2) AS high_52w,
concat(monthName(argMax(date, high)), ' ', toString(toDayOfMonth(argMax(date, high))), ', ', toString(toYear(argMax(date, high)))) AS high_52w_label,
round(toFloat64(min(low)), 2) AS low_52w,
concat(monthName(argMin(date, low)), ' ', toString(toDayOfMonth(argMin(date, low))), ', ', toString(toYear(argMin(date, low)))) AS low_52w_label,
round(100 * (1 - toFloat64(argMax(close, date)) / toFloat64(max(high))), 1) AS pct_below_high,
round(100 * (toFloat64(argMax(close, date)) / toFloat64(min(low)) - 1), 1) AS pct_above_low,
round(toFloat64(avg(volume)) / 1e6, 1) AS avg_daily_volume_millions,
uniqExact(date) AS sessions_counted,
payments_12m AS payments_last_12m,
round(dividends_12m, 2) AS dividends_last_12m,
round(100 * dividends_12m / toFloat64(argMax(close, date)), 2) AS trailing_yield_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date > today() - 366
AND date <= today()