STRASMORE/EXPLORE 2,549 QUERIES

book_speed

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-24, from latency-models-in-hft-backtests.

as of ranking 5×3read in context →
book_speed — 5 rows by 3 columns, computed from US exchange, SIP and OPRA data.
symbolreplaced_within_5ms_pctreplaced_within_50ms_pct
SPY81.295.8
AAPL77.488.1
NVDA76.693.4
KO72.883.9
MSFT71.481.9
Rows × columns
5 × 3
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 book_speed, derived from the stored result.
ColumnTypeRangeNotes
symbol text 5 distinct values (AAPL, KO, MSFT…)
replaced_within_5ms_pct number 71.4 to 81.2 percent
replaced_within_50ms_pct number 81.9 to 95.8 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 gaps AS
(
    SELECT
        ticker,
        dateDiff('millisecond',
                 lagInFrame(sip_timestamp) OVER (PARTITION BY ticker ORDER BY sip_timestamp, sequence_number
                     ROWS BETWEEN 1 PRECEDING AND CURRENT ROW),
                 sip_timestamp) AS gap_ms
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')
      AND sip_timestamp >= '2026-09-15 14:00:00'
      AND sip_timestamp <  '2026-09-15 15:00:00'
      AND bid_price > 0
      AND ask_price > bid_price
)
SELECT
    ticker                                                       AS symbol,
    round(100 * countIf(gap_ms BETWEEN 0 AND 5) / count(), 1)     AS replaced_within_5ms_pct,
    round(100 * countIf(gap_ms BETWEEN 0 AND 50) / count(), 1)    AS replaced_within_50ms_pct
FROM gaps
GROUP BY ticker
ORDER BY replaced_within_5ms_pct DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

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

More from this analysislatency-models-in-hft-backtests
quote_staleness ranking 9×2 → mid_drift ranking 4×2 → session_speed series 78×2 → Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays ranking 25×4 → Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years) ranking 25×3 → SPY options median spread by expiration date, near-the-money strikes only ranking 25×4 → See all 2,549 queries →