{"slug":"support-and-resistance-explained","qid":"spy_trace","label":"spy_trace","post_title":"support-and-resistance-explained","post_url":"/blog/lang/pcm/support-and-resistance-explained#q-spy_trace","columns":["date","close_price","swing_high_level","gap_pct"],"rows":[{"date":"2026-04-01","close_price":655.24,"swing_high_level":697.84,"gap_pct":-6.1},{"date":"2026-04-02","close_price":655.83,"swing_high_level":697.84,"gap_pct":-6.02},{"date":"2026-04-06","close_price":658.93,"swing_high_level":697.84,"gap_pct":-5.58},{"date":"2026-04-07","close_price":659.22,"swing_high_level":697.84,"gap_pct":-5.53},{"date":"2026-04-08","close_price":676.01,"swing_high_level":697.84,"gap_pct":-3.13},{"date":"2026-04-09","close_price":679.91,"swing_high_level":697.84,"gap_pct":-2.57},{"date":"2026-04-10","close_price":679.46,"swing_high_level":697.84,"gap_pct":-2.63},{"date":"2026-04-13","close_price":686.1,"swing_high_level":697.84,"gap_pct":-1.68},{"date":"2026-04-14","close_price":694.46,"swing_high_level":697.84,"gap_pct":-0.48},{"date":"2026-04-15","close_price":699.94,"swing_high_level":697.84,"gap_pct":0.3},{"date":"2026-04-16","close_price":701.66,"swing_high_level":700.28,"gap_pct":0.2},{"date":"2026-04-17","close_price":710.14,"swing_high_level":702.78,"gap_pct":1.05},{"date":"2026-04-20","close_price":708.72,"swing_high_level":712.39,"gap_pct":-0.52},{"date":"2026-04-21","close_price":704.08,"swing_high_level":712.39,"gap_pct":-1.17},{"date":"2026-04-22","close_price":711.21,"swing_high_level":712.39,"gap_pct":-0.17},{"date":"2026-04-23","close_price":708.45,"swing_high_level":712.39,"gap_pct":-0.55},{"date":"2026-04-24","close_price":713.94,"swing_high_level":712.39,"gap_pct":0.22},{"date":"2026-04-27","close_price":715.17,"swing_high_level":714.47,"gap_pct":0.1},{"date":"2026-04-28","close_price":711.69,"swing_high_level":715.63,"gap_pct":-0.55},{"date":"2026-04-29","close_price":711.58,"swing_high_level":715.63,"gap_pct":-0.57},{"date":"2026-04-30","close_price":718.66,"swing_high_level":715.63,"gap_pct":0.42},{"date":"2026-05-01","close_price":720.65,"swing_high_level":719.79,"gap_pct":0.12},{"date":"2026-05-04","close_price":718.01,"swing_high_level":724.87,"gap_pct":-0.95},{"date":"2026-05-05","close_price":723.77,"swing_high_level":724.87,"gap_pct":-0.15},{"date":"2026-05-06","close_price":733.83,"swing_high_level":725.04,"gap_pct":1.21},{"date":"2026-05-07","close_price":731.58,"swing_high_level":734.59,"gap_pct":-0.41},{"date":"2026-05-08","close_price":737.62,"swing_high_level":736.13,"gap_pct":0.2},{"date":"2026-05-11","close_price":739.3,"swing_high_level":738.08,"gap_pct":0.17},{"date":"2026-05-12","close_price":738.18,"swing_high_level":740.79,"gap_pct":-0.35},{"date":"2026-05-13","close_price":742.31,"swing_high_level":740.79,"gap_pct":0.21},{"date":"2026-05-14","close_price":748.17,"swing_high_level":743.91,"gap_pct":0.57},{"date":"2026-05-15","close_price":739.17,"swing_high_level":749.53,"gap_pct":-1.38},{"date":"2026-05-18","close_price":738.65,"swing_high_level":749.53,"gap_pct":-1.45},{"date":"2026-05-19","close_price":733.73,"swing_high_level":749.53,"gap_pct":-2.11},{"date":"2026-05-20","close_price":741.25,"swing_high_level":749.53,"gap_pct":-1.1},{"date":"2026-05-21","close_price":742.72,"swing_high_level":749.53,"gap_pct":-0.91},{"date":"2026-05-22","close_price":745.64,"swing_high_level":749.53,"gap_pct":-0.52},{"date":"2026-05-26","close_price":750.59,"swing_high_level":749.53,"gap_pct":0.14},{"date":"2026-05-27","close_price":750.46,"swing_high_level":752.13,"gap_pct":-0.22},{"date":"2026-05-28","close_price":754.6,"swing_high_level":752.13,"gap_pct":0.33},{"date":"2026-05-29","close_price":756.48,"swing_high_level":755.15,"gap_pct":0.18},{"date":"2026-06-01","close_price":758.54,"swing_high_level":758.08,"gap_pct":0.06},{"date":"2026-06-02","close_price":759.57,"swing_high_level":760.28,"gap_pct":-0.09},{"date":"2026-06-03","close_price":754.24,"swing_high_level":760.4,"gap_pct":-0.81},{"date":"2026-06-04","close_price":757.09,"swing_high_level":760.4,"gap_pct":-0.44},{"date":"2026-06-05","close_price":737.55,"swing_high_level":760.4,"gap_pct":-3},{"date":"2026-06-08","close_price":739.22,"swing_high_level":760.4,"gap_pct":-2.79},{"date":"2026-06-09","close_price":737.05,"swing_high_level":760.4,"gap_pct":-3.07},{"date":"2026-06-10","close_price":725.43,"swing_high_level":760.4,"gap_pct":-4.6},{"date":"2026-06-11","close_price":737.76,"swing_high_level":760.4,"gap_pct":-2.98},{"date":"2026-06-12","close_price":741.75,"swing_high_level":760.4,"gap_pct":-2.45},{"date":"2026-06-15","close_price":754.83,"swing_high_level":760.4,"gap_pct":-0.73},{"date":"2026-06-16","close_price":750.33,"swing_high_level":760.4,"gap_pct":-1.32},{"date":"2026-06-17","close_price":740.96,"swing_high_level":760.4,"gap_pct":-2.56},{"date":"2026-06-18","close_price":746.74,"swing_high_level":760.4,"gap_pct":-1.8},{"date":"2026-06-22","close_price":744.39,"swing_high_level":760.4,"gap_pct":-2.11},{"date":"2026-06-23","close_price":733.58,"swing_high_level":760.4,"gap_pct":-3.53},{"date":"2026-06-24","close_price":733.24,"swing_high_level":760.4,"gap_pct":-3.57},{"date":"2026-06-25","close_price":734.3,"swing_high_level":760.4,"gap_pct":-3.43},{"date":"2026-06-26","close_price":728.99,"swing_high_level":760.4,"gap_pct":-4.13},{"date":"2026-06-29","close_price":741,"swing_high_level":760.4,"gap_pct":-2.55},{"date":"2026-06-30","close_price":746.77,"swing_high_level":760.4,"gap_pct":-1.79}],"shape":"series","sql":"WITH bars AS\n(\n    SELECT\n        date,\n        toFloat64(close) AS close_px,\n        toFloat64(high)  AS high_px\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND date >= '2025-11-01'\n      AND date <  '2026-07-01'\n),\nlevelled AS\n(\n    SELECT\n        date,\n        close_px,\n        max(high_px) OVER (ORDER BY date ASC ROWS BETWEEN 63 PRECEDING AND 1 PRECEDING) AS swing_high\n    FROM bars\n)\nSELECT\n    toString(date)                              AS date,\n    round(close_px, 2)                          AS close_price,\n    round(swing_high, 2)                        AS swing_high_level,\n    round(100 * (close_px / swing_high - 1), 2) AS gap_pct\nFROM levelled\nWHERE date >= '2026-04-01'\nORDER BY date","computed_at":"2026-09-27T15:34:09.458376+00:00","elapsed":0.00294835}