{"slug":"sell-in-may-and-go-away","qid":"season_pairs","label":"S&P 500 tracker: May to October vs November to April, season by season","post_title":"Does Sell in May and Go Away Work?","post_url":"/blog/sell-in-may-and-go-away#q-season_pairs","columns":["year","may_oct_pct","nov_apr_pct"],"rows":[{"year":2005,"may_oct_pct":4.32,"nov_apr_pct":8.65},{"year":2006,"may_oct_pct":5.06,"nov_apr_pct":7.58},{"year":2007,"may_oct_pct":4.43,"nov_apr_pct":-10.56},{"year":2008,"may_oct_pct":-29.81,"nov_apr_pct":-10.03},{"year":2009,"may_oct_pct":18.54,"nov_apr_pct":14.66},{"year":2010,"may_oct_pct":-0.29,"nov_apr_pct":15.19},{"year":2011,"may_oct_pct":-8.13,"nov_apr_pct":11.53},{"year":2012,"may_oct_pct":1.02,"nov_apr_pct":13.06},{"year":2013,"may_oct_pct":10.03,"nov_apr_pct":7.21},{"year":2014,"may_oct_pct":7.04,"nov_apr_pct":3.37},{"year":2015,"may_oct_pct":-0.29,"nov_apr_pct":-0.73},{"year":2016,"may_oct_pct":3,"nov_apr_pct":12.04},{"year":2017,"may_oct_pct":7.98,"nov_apr_pct":2.85},{"year":2018,"may_oct_pct":2.36,"nov_apr_pct":8.6},{"year":2019,"may_oct_pct":3.16,"nov_apr_pct":-4.24},{"year":2020,"may_oct_pct":12.45,"nov_apr_pct":27.8},{"year":2021,"may_oct_pct":10.05,"nov_apr_pct":-10.27},{"year":2022,"may_oct_pct":-6.27,"nov_apr_pct":7.7},{"year":2023,"may_oct_pct":0.55,"nov_apr_pct":20.04},{"year":2024,"may_oct_pct":13.25,"nov_apr_pct":-2.5},{"year":2025,"may_oct_pct":23.03,"nov_apr_pct":5.34}],"shape":"ranking","sql":"WITH monthly AS (\n    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,\n           argMax(close, window_start) AS month_close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2005-04-01')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-04-30')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY month_start\n)\nSELECT toYear(apr_m.month_start) AS year,\n       round(100 * (toFloat64(oct_m.month_close) / toFloat64(apr_m.month_close) - 1), 2) AS may_oct_pct,\n       round(100 * (toFloat64(apr_next.month_close) / toFloat64(oct_m.month_close) - 1), 2) AS nov_apr_pct\nFROM monthly AS apr_m\nINNER JOIN monthly AS oct_m ON oct_m.month_start = addMonths(apr_m.month_start, 6)\nINNER JOIN monthly AS apr_next ON apr_next.month_start = addMonths(apr_m.month_start, 12)\nWHERE toMonth(apr_m.month_start) = 4\nORDER BY year","computed_at":"2026-08-03T10:51:43.320167+00:00","elapsed":0.003722418}