{"slug":"quote-driven-vs-order-driven-markets","qid":"offexchange","label":"Share of consolidated volume reported off exchange, by month","post_title":"Quote-Driven vs Order-Driven Markets","post_url":"/blog/quote-driven-vs-order-driven-markets#q-offexchange","columns":["month","month_label","aapl_pct","ko_pct","spy_pct"],"rows":[{"month":"2025-08","month_label":"Aug 2025","aapl_pct":37.3,"ko_pct":31.6,"spy_pct":24.2},{"month":"2025-09","month_label":"Sep 2025","aapl_pct":34.2,"ko_pct":34,"spy_pct":24.7},{"month":"2025-10","month_label":"Oct 2025","aapl_pct":31.7,"ko_pct":33.8,"spy_pct":22.8},{"month":"2025-11","month_label":"Nov 2025","aapl_pct":31.4,"ko_pct":30.5,"spy_pct":25.1},{"month":"2025-12","month_label":"Dec 2025","aapl_pct":28.5,"ko_pct":30.1,"spy_pct":26.3},{"month":"2026-01","month_label":"Jan 2026","aapl_pct":32.9,"ko_pct":34.5,"spy_pct":24.8},{"month":"2026-02","month_label":"Feb 2026","aapl_pct":31.4,"ko_pct":29,"spy_pct":24.6},{"month":"2026-03","month_label":"Mar 2026","aapl_pct":26.8,"ko_pct":24.6,"spy_pct":27.7},{"month":"2026-04","month_label":"Apr 2026","aapl_pct":32.7,"ko_pct":30.5,"spy_pct":33.8},{"month":"2026-05","month_label":"May 2026","aapl_pct":31.3,"ko_pct":30.2,"spy_pct":33.1},{"month":"2026-06","month_label":"Jun 2026","aapl_pct":27.8,"ko_pct":25.2,"spy_pct":31.2},{"month":"2026-07","month_label":"Jul 2026","aapl_pct":33.9,"ko_pct":31.9,"spy_pct":32.9}],"shape":"series","sql":"WITH\nfacility AS\n(\n    SELECT\n        ticker,\n        date,\n        max(toFloat64(total_volume)) AS facility_shares\n    FROM global_markets.stocks_short_volume\n    WHERE date >= '2025-08-01'\n      AND date <  '2026-08-01'\n      AND ticker IN ('AAPL', 'KO', 'SPY')\n    GROUP BY ticker, date\n),\ntape AS\n(\n    SELECT\n        ticker,\n        date,\n        max(toFloat64(volume)) AS consolidated_shares\n    FROM global_markets.stocks_daily_aggs\n    WHERE date >= '2025-08-01'\n      AND date <  '2026-08-01'\n      AND ticker IN ('AAPL', 'KO', 'SPY')\n    GROUP BY ticker, date\n),\njoined AS\n(\n    SELECT\n        f.ticker              AS ticker,\n        f.date                AS date,\n        f.facility_shares     AS facility_shares,\n        t.consolidated_shares AS consolidated_shares\n    FROM facility AS f\n    INNER JOIN tape AS t ON f.ticker = t.ticker AND f.date = t.date\n)\nSELECT\n    formatDateTime(date, '%Y-%m') AS month,\n    formatDateTime(date, '%b %Y') AS month_label,\n    round(100 * sumIf(facility_shares, ticker = 'AAPL') / sumIf(consolidated_shares, ticker = 'AAPL'), 1) AS aapl_pct,\n    round(100 * sumIf(facility_shares, ticker = 'KO')   / sumIf(consolidated_shares, ticker = 'KO'), 1)   AS ko_pct,\n    round(100 * sumIf(facility_shares, ticker = 'SPY')  / sumIf(consolidated_shares, ticker = 'SPY'), 1)  AS spy_pct\nFROM joined\nGROUP BY month, month_label\nHAVING countIf(ticker = 'AAPL') > 0\n   AND countIf(ticker = 'KO') > 0\n   AND countIf(ticker = 'SPY') > 0\nORDER BY month","computed_at":"2026-08-11T15:48:11.475336+00:00","elapsed":0.003873491}