{"slug":"support-and-resistance-explained","qid":"break_rate","label":"break_rate","post_title":"support-and-resistance-explained","post_url":"/blog/lang/pcm/support-and-resistance-explained#q-break_rate","columns":["ticker","tests","closed_above_after","break_pct"],"rows":[{"ticker":"NVDA","tests":41,"closed_above_after":34,"break_pct":82.9},{"ticker":"AAPL","tests":78,"closed_above_after":62,"break_pct":79.5},{"ticker":"MSFT","tests":106,"closed_above_after":82,"break_pct":77.4},{"ticker":"SPY","tests":301,"closed_above_after":216,"break_pct":71.8}],"shape":"ranking","sql":"WITH bars AS\n(\n    SELECT\n        ticker,\n        date,\n        toFloat64(close) AS close_px,\n        toFloat64(high)  AS high_px\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA')\n      AND date >= '2019-01-01'\n      AND date <  '2026-09-20'\n),\nlevels AS\n(\n    SELECT\n        ticker,\n        date,\n        close_px,\n        max(high_px)  OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 63 PRECEDING AND 1 PRECEDING) AS swing_high,\n        max(close_px) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 FOLLOWING AND 5 FOLLOWING)  AS best_close_next5\n    FROM bars\n)\nSELECT\n    ticker,\n    count()                                                         AS tests,\n    countIf(best_close_next5 > swing_high)                          AS closed_above_after,\n    round(100 * countIf(best_close_next5 > swing_high) / count(), 1) AS break_pct\nFROM levels\nWHERE date >= '2019-04-01'\n  AND date <  '2026-09-01'\n  AND close_px <= swing_high\n  AND close_px >= swing_high * 0.995\nGROUP BY ticker\nORDER BY break_pct DESC","computed_at":"2026-09-27T15:34:08.586647+00:00","elapsed":0.012935447}