{"slug":"buy-side-vs-sell-side-liquidity","qid":"breaks_by_year","label":"breaks_by_year","post_title":"buy-side-vs-sell-side-liquidity","post_url":"/blog/lang/ar/buy-side-vs-sell-side-liquidity#q-breaks_by_year","columns":["year","sessions","cleared_prior_high","closed_back_below","rejection_rate_pct","period_avg_rejection_pct"],"rows":[{"year":"2015","sessions":251,"cleared_prior_high":27,"closed_back_below":12,"rejection_rate_pct":44.4,"period_avg_rejection_pct":39.9},{"year":"2016","sessions":252,"cleared_prior_high":53,"closed_back_below":19,"rejection_rate_pct":35.8,"period_avg_rejection_pct":39.9},{"year":"2017","sessions":251,"cleared_prior_high":66,"closed_back_below":28,"rejection_rate_pct":42.4,"period_avg_rejection_pct":39.9},{"year":"2018","sessions":251,"cleared_prior_high":40,"closed_back_below":10,"rejection_rate_pct":25,"period_avg_rejection_pct":39.9},{"year":"2019","sessions":252,"cleared_prior_high":75,"closed_back_below":29,"rejection_rate_pct":38.7,"period_avg_rejection_pct":39.9},{"year":"2020","sessions":253,"cleared_prior_high":71,"closed_back_below":26,"rejection_rate_pct":36.6,"period_avg_rejection_pct":39.9},{"year":"2021","sessions":252,"cleared_prior_high":84,"closed_back_below":31,"rejection_rate_pct":36.9,"period_avg_rejection_pct":39.9},{"year":"2022","sessions":251,"cleared_prior_high":33,"closed_back_below":13,"rejection_rate_pct":39.4,"period_avg_rejection_pct":39.9},{"year":"2023","sessions":250,"cleared_prior_high":58,"closed_back_below":28,"rejection_rate_pct":48.3,"period_avg_rejection_pct":39.9},{"year":"2024","sessions":252,"cleared_prior_high":73,"closed_back_below":37,"rejection_rate_pct":50.7,"period_avg_rejection_pct":39.9},{"year":"2025","sessions":250,"cleared_prior_high":69,"closed_back_below":29,"rejection_rate_pct":42,"period_avg_rejection_pct":39.9},{"year":"2026","sessions":187,"cleared_prior_high":33,"closed_back_below":10,"rejection_rate_pct":30.3,"period_avg_rejection_pct":39.9}],"shape":"table","sql":"WITH bars AS\n(\n    SELECT\n        date,\n        max(toFloat64(high))  AS day_high,\n        max(toFloat64(close)) AS day_close\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND date >= '2015-01-01'\n      AND date <  '2026-10-01'\n    GROUP BY date\n),\nflagged AS\n(\n    SELECT\n        date,\n        day_high,\n        day_close,\n        max(day_high) OVER (ORDER BY date ASC ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS prior_high\n    FROM bars\n),\nyearly AS\n(\n    SELECT\n        toString(toYear(date))                                    AS year,\n        count()                                                   AS sessions,\n        countIf(day_high > prior_high)                            AS cleared_prior_high,\n        countIf(day_high > prior_high AND day_close < prior_high)  AS closed_back_below\n    FROM flagged\n    WHERE prior_high > 0\n    GROUP BY year\n)\nSELECT\n    year,\n    sessions,\n    cleared_prior_high,\n    closed_back_below,\n    round(100 * closed_back_below / cleared_prior_high, 1)                           AS rejection_rate_pct,\n    round(100 * sum(closed_back_below) OVER () / sum(cleared_prior_high) OVER (), 1) AS period_avg_rejection_pct\nFROM yearly\nORDER BY year","computed_at":"2026-10-01T15:29:47.497065+00:00","elapsed":0.006702171}