{"slug":"tase-vs-us-trading-days","qid":"gap_by_year","label":"gap_by_year","post_title":"tase-vs-us-trading-days","post_url":"/blog/lang/he/tase-vs-us-trading-days#q-gap_by_year","columns":["year","spy_avg_abs_gap_pct","qqq_avg_abs_gap_pct","spy_weekend_count"],"rows":[{"year":2003,"spy_avg_abs_gap_pct":0.32,"qqq_avg_abs_gap_pct":0.57,"spy_weekend_count":16},{"year":2004,"spy_avg_abs_gap_pct":0.29,"qqq_avg_abs_gap_pct":0.41,"spy_weekend_count":44},{"year":2011,"spy_avg_abs_gap_pct":0.78,"qqq_avg_abs_gap_pct":0.83,"spy_weekend_count":45},{"year":2012,"spy_avg_abs_gap_pct":0.4,"qqq_avg_abs_gap_pct":0.42,"spy_weekend_count":46},{"year":2013,"spy_avg_abs_gap_pct":0.33,"qqq_avg_abs_gap_pct":0.36,"spy_weekend_count":47},{"year":2014,"spy_avg_abs_gap_pct":0.28,"qqq_avg_abs_gap_pct":0.29,"spy_weekend_count":46},{"year":2015,"spy_avg_abs_gap_pct":0.42,"qqq_avg_abs_gap_pct":0.52,"spy_weekend_count":45},{"year":2016,"spy_avg_abs_gap_pct":0.34,"qqq_avg_abs_gap_pct":0.38,"spy_weekend_count":44},{"year":2017,"spy_avg_abs_gap_pct":0.23,"qqq_avg_abs_gap_pct":0.28,"spy_weekend_count":45},{"year":2018,"spy_avg_abs_gap_pct":0.42,"qqq_avg_abs_gap_pct":0.59,"spy_weekend_count":47},{"year":2019,"spy_avg_abs_gap_pct":0.45,"qqq_avg_abs_gap_pct":0.58,"spy_weekend_count":47},{"year":2020,"spy_avg_abs_gap_pct":1.28,"qqq_avg_abs_gap_pct":1.23,"spy_weekend_count":45},{"year":2021,"spy_avg_abs_gap_pct":0.42,"qqq_avg_abs_gap_pct":0.52,"spy_weekend_count":44},{"year":2022,"spy_avg_abs_gap_pct":0.62,"qqq_avg_abs_gap_pct":0.68,"spy_weekend_count":44},{"year":2023,"spy_avg_abs_gap_pct":0.3,"qqq_avg_abs_gap_pct":0.38,"spy_weekend_count":44},{"year":2024,"spy_avg_abs_gap_pct":0.36,"qqq_avg_abs_gap_pct":0.5,"spy_weekend_count":47},{"year":2025,"spy_avg_abs_gap_pct":0.68,"qqq_avg_abs_gap_pct":0.91,"spy_weekend_count":46},{"year":2026,"spy_avg_abs_gap_pct":0.46,"qqq_avg_abs_gap_pct":0.66,"spy_weekend_count":34}],"shape":"ranking","sql":"WITH deduped AS\n(\n    SELECT\n        ticker,\n        date,\n        max(toFloat64(open))  AS open_px,\n        max(toFloat64(close)) AS close_px\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('SPY', 'QQQ')\n    GROUP BY ticker, date\n),\nchained AS\n(\n    SELECT\n        ticker,\n        date,\n        open_px,\n        lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close,\n        lagInFrame(date)     OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_date\n    FROM deduped\n),\nweekend AS\n(\n    SELECT\n        ticker,\n        date,\n        abs(100 * (open_px / prev_close - 1)) AS abs_gap_pct\n    FROM chained\n    WHERE prev_close > 0\n      AND open_px > 0\n      AND toDayOfWeek(prev_date) = 5\n      AND toDayOfWeek(date) = 1\n)\nSELECT\n    toYear(date)                                 AS year,\n    round(avgIf(abs_gap_pct, ticker = 'SPY'), 2) AS spy_avg_abs_gap_pct,\n    round(avgIf(abs_gap_pct, ticker = 'QQQ'), 2) AS qqq_avg_abs_gap_pct,\n    countIf(ticker = 'SPY')                      AS spy_weekend_count\nFROM weekend\nGROUP BY year\nHAVING countIf(ticker = 'SPY') > 0\n   AND countIf(ticker = 'QQQ') > 0\nORDER BY year","computed_at":"2026-10-16T15:19:54.852106+00:00","elapsed":0.004590262}