STRASMORE/EXPLORE 2,830 QUERIES

How much of the spread survives: AAPL markout curve, 1 second to 5 minutes

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-08-13, from Why Market Makers Lose Money: Adverse Selection.

as of ranking 6×3read in context →
How much of the spread survives: AAPL markout curve, 1 second to 5 minutes — 6 rows by 3 columns, computed from US exchange, SIP and OPRA data.
horizonedge_at_fill_milsedge_after_mils
+1s19.6620.5
+5s19.6620.46
+15s19.7219.5
+30s19.7819.53
+60s19.6915.8
+300s19.689.81
Rows × columns
6 × 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 How much of the spread survives: AAPL markout curve, 1 second to 5 minutes, derived from the stored result.
ColumnTypeRangeNotes
horizon text 6 distinct values (+15s, +1s, +300s…)
edge_at_fill_mils number 19.66 to 19.78
edge_after_mils number 9.81 to 20.5

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
  qs AS (
    SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
           avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-05-14 14:00:00'
      AND sip_timestamp <  '2026-05-14 17:06:00'
      AND bid_price > 0 AND ask_price > bid_price
    GROUP BY ts
  ),
  fills AS (
    SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
           if(t.px > q.mid, 1, -1) AS taker_side
    FROM (
      SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
             toFloat64(price) AS px, toUInt64(size) AS shares
      FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= '2026-05-14 14:00:00'
        AND sip_timestamp <  '2026-05-14 17:00:00'
        AND size > 0
    ) AS t
    INNER JOIN qs AS q ON q.ts = t.ts
    WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
  )
SELECT
  concat('+', toString(e.secs), 's')                          AS horizon,
  round(1000 * avg(e.taker_side * (e.px - e.mid_at_fill)), 2) AS edge_at_fill_mils,
  round(1000 * avg(e.taker_side * (e.px - f.mid)), 2)         AS edge_after_mils
FROM (
  SELECT toUInt32(ts + secs) AS future_ts, secs, px, mid_at_fill, taker_side
  FROM (SELECT *, arrayJoin([1, 5, 15, 30, 60, 300]) AS secs FROM fills)
) AS e
INNER JOIN qs AS f ON f.ts = e.future_ts
GROUP BY e.secs
ORDER BY e.secs
⌘/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 analysisWhy Market Makers Lose Money: Adverse Selection
How far the price travels while a position waits: SPY and NVDA, May 2026 ranking 6×3 → AAPL prints by distance from the midpoint: share of volume and 60 second markout ranking 4×3 → AAPL fills by print size: credit at the fill and value 60 seconds later ranking 4×4 → AAPL trades by venue, latest session: off-exchange first ranking 19×4 → Venues publishing a bid in AAPL over one half hour, July 16 2026 ranking 16×4 → Typical quoted spread: six liquid names vs. two thin small caps, with the 100-share cost ranking 8×4 → See all 2,830 queries →