{"slug":"is-there-a-minimum-holding-period-for-stocks","qid":"wash_sale_window","label":"SPY daily closes across a pinned 61 day wash sale window, Jan to Mar 2025","post_title":"Is There a Minimum Holding Period for Stocks?","post_url":"/blog/is-there-a-minimum-holding-period-for-stocks#q-wash_sale_window","columns":["date","session_label","close","change_pct"],"rows":[{"date":"2025-01-15","session_label":"Jan 15, 2025","close":592.78,"change_pct":-2.78},{"date":"2025-01-16","session_label":"Jan 16, 2025","close":591.64,"change_pct":-2.96},{"date":"2025-01-17","session_label":"Jan 17, 2025","close":597.58,"change_pct":-1.99},{"date":"2025-01-21","session_label":"Jan 21, 2025","close":603.05,"change_pct":-1.09},{"date":"2025-01-22","session_label":"Jan 22, 2025","close":606.44,"change_pct":-0.53},{"date":"2025-01-23","session_label":"Jan 23, 2025","close":609.75,"change_pct":0.01},{"date":"2025-01-24","session_label":"Jan 24, 2025","close":607.97,"change_pct":-0.28},{"date":"2025-01-27","session_label":"Jan 27, 2025","close":599.37,"change_pct":-1.69},{"date":"2025-01-28","session_label":"Jan 28, 2025","close":604.52,"change_pct":-0.85},{"date":"2025-01-29","session_label":"Jan 29, 2025","close":601.81,"change_pct":-1.29},{"date":"2025-01-30","session_label":"Jan 30, 2025","close":605.04,"change_pct":-0.76},{"date":"2025-01-31","session_label":"Jan 31, 2025","close":601.82,"change_pct":-1.29},{"date":"2025-02-03","session_label":"Feb 3, 2025","close":597.77,"change_pct":-1.96},{"date":"2025-02-04","session_label":"Feb 4, 2025","close":601.78,"change_pct":-1.3},{"date":"2025-02-05","session_label":"Feb 5, 2025","close":604.22,"change_pct":-0.9},{"date":"2025-02-06","session_label":"Feb 6, 2025","close":606.32,"change_pct":-0.55},{"date":"2025-02-07","session_label":"Feb 7, 2025","close":600.77,"change_pct":-1.46},{"date":"2025-02-10","session_label":"Feb 10, 2025","close":604.85,"change_pct":-0.8},{"date":"2025-02-11","session_label":"Feb 11, 2025","close":605.31,"change_pct":-0.72},{"date":"2025-02-12","session_label":"Feb 12, 2025","close":603.36,"change_pct":-1.04},{"date":"2025-02-13","session_label":"Feb 13, 2025","close":609.73,"change_pct":0},{"date":"2025-02-14","session_label":"Feb 14, 2025","close":609.7,"change_pct":0},{"date":"2025-02-18","session_label":"Feb 18, 2025","close":611.49,"change_pct":0.29},{"date":"2025-02-19","session_label":"Feb 19, 2025","close":612.93,"change_pct":0.53},{"date":"2025-02-20","session_label":"Feb 20, 2025","close":610.38,"change_pct":0.11},{"date":"2025-02-21","session_label":"Feb 21, 2025","close":599.94,"change_pct":-1.6},{"date":"2025-02-24","session_label":"Feb 24, 2025","close":597.21,"change_pct":-2.05},{"date":"2025-02-25","session_label":"Feb 25, 2025","close":594.24,"change_pct":-2.54},{"date":"2025-02-26","session_label":"Feb 26, 2025","close":594.54,"change_pct":-2.49},{"date":"2025-02-27","session_label":"Feb 27, 2025","close":585.05,"change_pct":-4.04},{"date":"2025-02-28","session_label":"Feb 28, 2025","close":594.18,"change_pct":-2.55},{"date":"2025-03-03","session_label":"Mar 3, 2025","close":583.77,"change_pct":-4.25},{"date":"2025-03-04","session_label":"Mar 4, 2025","close":576.86,"change_pct":-5.39},{"date":"2025-03-05","session_label":"Mar 5, 2025","close":583.06,"change_pct":-4.37},{"date":"2025-03-06","session_label":"Mar 6, 2025","close":572.71,"change_pct":-6.07},{"date":"2025-03-07","session_label":"Mar 7, 2025","close":575.92,"change_pct":-5.54},{"date":"2025-03-10","session_label":"Mar 10, 2025","close":560.58,"change_pct":-8.06},{"date":"2025-03-11","session_label":"Mar 11, 2025","close":555.92,"change_pct":-8.82},{"date":"2025-03-12","session_label":"Mar 12, 2025","close":558.87,"change_pct":-8.34},{"date":"2025-03-13","session_label":"Mar 13, 2025","close":551.42,"change_pct":-9.56},{"date":"2025-03-14","session_label":"Mar 14, 2025","close":562.81,"change_pct":-7.69}],"shape":"series","sql":"WITH\n(\n    SELECT toFloat64(any(close))\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND date = '2025-02-14'\n) AS sale_day_close\nSELECT\n    toString(date)                                          AS date,\n    formatDateTime(toDate(date), '%b %e, %Y')               AS session_label,\n    round(toFloat64(close), 2)                              AS close,\n    round(100 * (toFloat64(close) / sale_day_close - 1), 2) AS change_pct\nFROM global_markets.stocks_daily_aggs\nWHERE ticker = 'SPY'\n  AND date >= '2025-01-15'\n  AND date <= '2025-03-16'\nORDER BY date","computed_at":"2026-10-05T15:13:23.928200+00:00","elapsed":0.003071972}