Reverse-Split Calendar
get_reverse_splitsReverse-split calendar: every US reverse stock split, executed and UPCOMING, with pre-split price, market-cap tier, and dilution/shelf cross-links.
One row per (ticker, execution date), sourced daily from Polygon's reference splits feed. Because the feed carries future execution dates, upcoming=true is a genuine forward calendar (~40 scheduled splits at any moment); ~70-100 reverse splits execute per month, almost all sub-$1 microcaps curing a listing deficiency. first_seen_at records when the pull first observed the row (an announcement proxy; for rows backfilled before launch it is set to the execution date itself and is synthetic).
Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees full history and the forward calendar.
Research context, stated plainly: in the Alphanume anomaly sweep (2022-2026, matched-control event study), reverse-split names underperform controls by roughly -6%/-12%/-18%/-40% over the 21/63/126/252 sessions after execution (~60% of events negative; Kim-Klein-Rosenfeld 2008 found the same). That makes this a screening/avoidance signal -- e.g. exclude fresh reverse-splitters from long screens, or use the calendar to anticipate the event. It is NOT a tradeable short card: borrow on these names is scarce and expensive and is not modeled anywhere, the calendar-time short portfolio was statistically inconclusive net of costs, and the long-horizon numbers are survivor-conditioned (only ~47% of events still have a full price history 252 sessions out). No CAR columns are served; the feed is the product.
Enrichment semantics. sub_dollar_flag marks names whose unadjusted close the session before the split was under $1 (the raw price is an internal input and is not served). market_cap_before / market_cap_tier are populated from 2024-01-02 (NULL earlier -- the cap history starts there). ratio = split_to/split_from (<1 = reverse; a 1-for-10 is 0.1); is_deficiency_candidate flags ratio <= 0.5, separating real consolidations from ADR-fee-style near-1.0 adjustments, which are served raw. dilution_link_flag/shelf_link_flag mark an S-1 or S-3/F-3 filing by the same ticker in the trailing 365 days (dilution links meaningful from 2026, shelf links from 2025 -- the linked datasets' own history floors). Upcoming rows carry NULL sub_dollar_flag until execution; OTC names outside the coverage universe may keep it NULL along with cap fields. Open-end mutual fund share adjustments are excluded at ingest; ETFs and closed-end funds are included.
Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date and cursor_ticker back to fetch the next page.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters. | |
| ticker | No | Ticker symbol filter, e.g. 'AAPL'. Case-insensitive. | |
| date_gt | No | Start of date range, exclusive (YYYY-MM-DD). | |
| date_lt | No | End of date range, exclusive (YYYY-MM-DD). | |
| cap_tier | No | Market-cap tier as of the session before the split (from the Alphanume cap history; populated from 2024-01-02). | |
| date_gte | No | Start of date range, inclusive (YYYY-MM-DD). | |
| date_lte | No | End of date range, inclusive (YYYY-MM-DD). | |
| max_rows | No | Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this. | |
| upcoming | No | 'true' = only splits with an execution date today or later (the forward calendar); 'false' = only already-executed splits. Omit for both. | |
| ratio_gte | No | Only rows with ratio >= this value, range (0, 1]. ratio = split_to/split_from, so 0.1 is a 1-for-10. | |
| ratio_lte | No | Only rows with ratio <= this value, range (0, 1]. ratio_lte=0.1 keeps 1-for-10 and larger consolidations. | |
| sub_dollar | No | 'true' = only names whose unadjusted close before the split was under $1 (the classic deficiency-cure cohort); 'false' = $1 and above. | |
| cursor_date | No | Pagination: the 'cursor_date' value from the previous response's next_cursor. Must be sent together with cursor_ticker. | |
| cursor_ticker | No | Pagination: the 'cursor_ticker' value from the previous response's next_cursor. Must be sent together with cursor_date. | |
| updated_since | No | Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs. | |
| deficiency_only | No | 'true' = only listing-deficiency-sized splits (ratio <= 0.5, i.e. 1-for-2 or larger). Filters out ADR-fee-style near-1.0 adjustments. |