{"slug":"the-wash-sale-rule-and-options","qid":"december_ladder","label":"Every December session and how far its wash sale window reaches into the new year","post_title":"Wash Sale Rule and Options: The 61-Day Window","post_url":"/blog/the-wash-sale-rule-and-options#q-december_ladder","columns":["session_date","sold_on","sessions_in_window","window_days_in_new_year"],"rows":[{"session_date":"2025-12-01","sold_on":"Dec 1","sessions_in_window":41,"window_days_in_new_year":0},{"session_date":"2025-12-02","sold_on":"Dec 2","sessions_in_window":41,"window_days_in_new_year":1},{"session_date":"2025-12-03","sold_on":"Dec 3","sessions_in_window":42,"window_days_in_new_year":2},{"session_date":"2025-12-04","sold_on":"Dec 4","sessions_in_window":41,"window_days_in_new_year":3},{"session_date":"2025-12-05","sold_on":"Dec 5","sessions_in_window":40,"window_days_in_new_year":4},{"session_date":"2025-12-08","sold_on":"Dec 8","sessions_in_window":40,"window_days_in_new_year":7},{"session_date":"2025-12-09","sold_on":"Dec 9","sessions_in_window":41,"window_days_in_new_year":8},{"session_date":"2025-12-10","sold_on":"Dec 10","sessions_in_window":42,"window_days_in_new_year":9},{"session_date":"2025-12-11","sold_on":"Dec 11","sessions_in_window":41,"window_days_in_new_year":10},{"session_date":"2025-12-12","sold_on":"Dec 12","sessions_in_window":40,"window_days_in_new_year":11},{"session_date":"2025-12-15","sold_on":"Dec 15","sessions_in_window":40,"window_days_in_new_year":14},{"session_date":"2025-12-16","sold_on":"Dec 16","sessions_in_window":41,"window_days_in_new_year":15},{"session_date":"2025-12-17","sold_on":"Dec 17","sessions_in_window":42,"window_days_in_new_year":16},{"session_date":"2025-12-18","sold_on":"Dec 18","sessions_in_window":41,"window_days_in_new_year":17},{"session_date":"2025-12-19","sold_on":"Dec 19","sessions_in_window":40,"window_days_in_new_year":18},{"session_date":"2025-12-22","sold_on":"Dec 22","sessions_in_window":39,"window_days_in_new_year":21},{"session_date":"2025-12-23","sold_on":"Dec 23","sessions_in_window":40,"window_days_in_new_year":22},{"session_date":"2025-12-24","sold_on":"Dec 24","sessions_in_window":41,"window_days_in_new_year":23},{"session_date":"2025-12-26","sold_on":"Dec 26","sessions_in_window":39,"window_days_in_new_year":25},{"session_date":"2025-12-29","sold_on":"Dec 29","sessions_in_window":40,"window_days_in_new_year":28},{"session_date":"2025-12-30","sold_on":"Dec 30","sessions_in_window":41,"window_days_in_new_year":29},{"session_date":"2025-12-31","sold_on":"Dec 31","sessions_in_window":42,"window_days_in_new_year":30}],"shape":"series","sql":"WITH sessions AS\n(\n    SELECT DISTINCT date AS d\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND date >= '2025-10-20'\n      AND date <  '2026-02-10'\n)\nSELECT\n    toString(sale.d)                                                    AS session_date,\n    concat(formatDateTime(sale.d, '%b'), ' ', toString(toDayOfMonth(sale.d))) AS sold_on,\n    countIf(s.d >= sale.d - 30 AND s.d <= sale.d + 30)                   AS sessions_in_window,\n    greatest(dateDiff('day', toDate('2025-12-31'), sale.d + 30), 0)      AS window_days_in_new_year\nFROM\n(\n    SELECT d\n    FROM sessions\n    WHERE d >= '2025-12-01'\n      AND d <  '2026-01-01'\n) AS sale\nCROSS JOIN sessions AS s\nGROUP BY sale.d\nORDER BY sale.d","computed_at":"2026-08-13T15:39:29.149163+00:00","elapsed":0.002403103}