STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

March 9, 2009: The Bottom, On the Tape
The turn week: SPY, Citigroup, and the 10-year yield, March 9-13series · 2026-07-26 · 5×6Preview: a 5-point series, roughly flat. One year off the low: the crisis epicenter vs the broad markettable · 2026-07-26 · 9×5 SPY by half-hour: March 9, 2009 regular sessionseries · 2026-07-26 · 13×4Preview: a 13-point series, roughly flat. Peak to trough to round trip: the whole crisis in one rowscalar · 2026-07-26 · 1×6156.41 Sixteen weeks after the low: weekly lows, closes, and the running minimumranking · 2026-07-26 · 16×4Preview: 16 ranked values, smallest first. SPY on March 9, 2009: the generational low, receiptedscalar · 2026-07-26 · 1×1468.84 Four major lows: SPY forward returns at three and twelve monthsseries · 2026-07-26 · 4×4Preview: a 4-point series, ending higher.
The turn week: SPY, Citigroup, and the 10-year yield, March 9-13

The turn week: SPY, Citigroup, and the 10-year yield, March 9-13

most recentas of series 5×6read in context →
The turn week: SPY, Citigroup, and the 10-year yield, March 9-13 — 5 rows by 6 columns, computed from US exchange, SIP and OPRA data.
sessionspy_closespy_change_pctspy_shares_mciti_closeten_year_pct
2009-03-0968.07-1.1357.41.052.89
2009-03-1072.216.1401.31.442.99
2009-03-1172.60.5350.11.542.95
2009-03-1275.514407.41.662.89
2009-03-1376.090.8332.71.782.89
the exact SQL behind every number
WITH daily AS (
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
        argMaxIf(toFloat64(close), window_start, ticker = 'SPY' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS spy_close_raw,
        round(argMaxIf(toFloat64(close), window_start, ticker = 'C' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS citi_close,
        round(toFloat64(sumIf(volume, ticker = 'SPY')) / 1e6, 1) AS spy_shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'C')
      AND window_start >= toDateTime('2009-03-06 04:00:00') AND window_start < toDateTime('2009-03-14 00:00:00')
    GROUP BY et_date
)
SELECT
    toString(d.et_date) AS session,
    round(d.spy_close_raw, 2) AS spy_close,
    round((d.spy_close_raw / d.prev_close - 1) * 100, 1) AS spy_change_pct,
    d.spy_shares_m,
    d.citi_close,
    t.ten_year_pct
FROM (
    SELECT *, lagInFrame(spy_close_raw) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
) AS d
LEFT JOIN (
    SELECT date, round(toFloat64(yield_10_year), 2) AS ten_year_pct
    FROM global_markets.treasury_yields
    WHERE date BETWEEN '2009-03-09' AND '2009-03-13'
) AS t ON d.et_date = t.date
WHERE d.et_date >= toDate('2009-03-09')
ORDER BY d.et_date
$