{"slug":"ukraine-invasion-market-2022","qid":"reversal_rarity","label":"QQQ sessions since 2003: intraday low ≤ −3% vs prior close AND close ≥ +1%","post_title":"Feb 24, 2022: War at the Open, Green by Close","post_url":"/blog/ukraine-invasion-market-2022#q-reversal_rarity","columns":["session","low_vs_prior_pct","close_vs_prior_pct","trough_to_close_pct"],"rows":[{"session":"2022-02-24","low_vs_prior_pct":-3.4,"close_vs_prior_pct":3.4,"trough_to_close_pct":7},{"session":"2022-10-13","low_vs_prior_pct":-3.2,"close_vs_prior_pct":2.3,"trough_to_close_pct":5.7}],"shape":"series","sql":"SELECT\n    toString(d) AS session,\n    low_vs_prior_pct,\n    close_vs_prior_pct,\n    trough_to_close_pct\nFROM (\n    SELECT\n        d,\n        round((lo / prev_c - 1) * 100, 1) AS low_vs_prior_pct,\n        round((c / prev_c - 1) * 100, 1) AS close_vs_prior_pct,\n        round((c / lo - 1) * 100, 1) AS trough_to_close_pct\n    FROM (\n        SELECT d, c, lo,\n               lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c\n        FROM (\n            SELECT\n                toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n                argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS c,\n                minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS lo\n            FROM global_markets.delayed_stocks_minute_aggs\n            WHERE ticker = 'QQQ'\n              AND window_start >= toDateTime('2003-01-01 00:00:00') AND window_start < toDateTime('2026-01-01 00:00:00')\n            GROUP BY d\n        )\n    )\n    WHERE prev_c > 0 AND isFinite(prev_c)\n)\nWHERE low_vs_prior_pct <= -3 AND close_vs_prior_pct >= 1\nORDER BY session","computed_at":"2026-07-26T06:18:50.093855+00:00","elapsed":9.79078885}