{"slug":"upcoming-reverse-stock-splits","qid":"price_mix","label":"Pre-split price of reverse splits: the calendar ahead versus the trailing twelve months","post_title":"Upcoming Reverse Stock Splits: Live Calendar","post_url":"/blog/upcoming-reverse-stock-splits#q-price_mix","columns":["price_bucket","upcoming_count","upcoming_pct","past_year_count","past_year_pct"],"rows":[{"price_bucket":"Under $1","upcoming_count":7,"upcoming_pct":38.9,"past_year_count":513,"past_year_pct":63.8},{"price_bucket":"$1 to $5","upcoming_count":4,"upcoming_pct":22.2,"past_year_count":151,"past_year_pct":18.8},{"price_bucket":"Over $5","upcoming_count":7,"upcoming_pct":38.9,"past_year_count":140,"past_year_pct":17.4}],"shape":"table","sql":"SELECT\n    price_bucket,\n    upcoming_count,\n    round(100.0 * upcoming_count / greatest(sum(upcoming_count) OVER (), 1), 1)   AS upcoming_pct,\n    past_year_count,\n    round(100.0 * past_year_count / greatest(sum(past_year_count) OVER (), 1), 1) AS past_year_pct\nFROM\n(\n    SELECT\n        b.ord                                          AS ord,\n        b.price_bucket                                 AS price_bucket,\n        toUInt32(countIf(m.cohort = 'upcoming'))       AS upcoming_count,\n        toUInt32(countIf(m.cohort = 'past_year'))      AS past_year_count\n    FROM\n    (\n        SELECT\n            arrayJoin([1, 2, 3])                                          AS ord,\n            multiIf(ord = 1, 'Under $1', ord = 2, '$1 to $5', 'Over $5')  AS price_bucket\n    ) AS b\n    LEFT JOIN\n    (\n        SELECT\n            cohort,\n            multiIf(pre_close < 1, 1, pre_close < 5, 2, 3) AS ord\n        FROM\n        (\n            SELECT\n                'upcoming'                          AS cohort,\n                s.ticker                            AS ticker,\n                argMax(toFloat64(d.close), d.date)  AS pre_close\n            FROM\n            (\n                SELECT ticker, execution_date\n                FROM global_markets.stocks_splits\n                WHERE execution_date >= today()\n                  AND split_from > split_to\n                  AND ticker NOT IN ('SPCX')\n                GROUP BY ticker, execution_date\n            ) AS s\n            INNER JOIN\n            (\n                SELECT ticker, date, close\n                FROM global_markets.stocks_daily_aggs\n                WHERE date >= today() - 30\n                  AND date <  today()\n                  AND ticker IN\n                  (\n                      SELECT ticker\n                      FROM global_markets.stocks_splits\n                      WHERE execution_date >= today()\n                        AND split_from > split_to\n                  )\n            ) AS d ON d.ticker = s.ticker\n            GROUP BY s.ticker, s.execution_date\n\n            UNION ALL\n\n            SELECT\n                'past_year'                                                                  AS cohort,\n                s.ticker                                                                     AS ticker,\n                argMin(toFloat64(d.close), d.date) * any(s.to_shares) / any(s.from_shares)  AS pre_close\n            FROM\n            (\n                SELECT\n                    ticker,\n                    execution_date,\n                    max(toFloat64(split_from)) AS from_shares,\n                    max(toFloat64(split_to))   AS to_shares\n                FROM global_markets.stocks_splits\n                WHERE execution_date >= today() - 365\n                  AND execution_date <  today()\n                  AND split_from > split_to\n                  AND split_to > 0\n                  AND ticker NOT IN ('SPCX')\n                GROUP BY ticker, execution_date\n            ) AS s\n            INNER JOIN\n            (\n                SELECT ticker, date, close\n                FROM global_markets.stocks_daily_aggs\n                WHERE date >= today() - 365\n                  AND date <  today()\n                  AND ticker IN\n                  (\n                      SELECT ticker\n                      FROM global_markets.stocks_splits\n                      WHERE execution_date >= today() - 365\n                        AND execution_date <  today()\n                        AND split_from > split_to\n                  )\n            ) AS d ON d.ticker = s.ticker\n            WHERE d.date >= s.execution_date\n              AND d.date <  s.execution_date + 7\n            GROUP BY s.ticker, s.execution_date\n        )\n    ) AS m ON m.ord = b.ord\n    GROUP BY b.ord, b.price_bucket\n)\nORDER BY ord","computed_at":"2026-09-19T15:08:27.260145+00:00","elapsed":1.164795545}