Movers
Movers is Tapeboard's public, session-aware list of biggest market movers across ten categories — gainers, losers, most-active, premarket, after-hours, overnight Blue Ocean, crypto, 52-week highs, 52-week lows, and unusual volume — with a daily archive going back as far as the snapshot cron has run, plus an AI: Break It Down button on every row for a compliant read of what's moving each name.
Movers is the public landing surface for the biggest moves in the US market right now. Ten category pages, each at its own indexable URL — /movers/gainers, /movers/losers, /movers/premarket, /movers/overnight, and so on — plus a hub at /movers and a historical archive at /movers/archive. No login required.

What it is
Each category is a server-rendered table covering the major US indices ($SPX, $DJI, $COMPX, NYSE, NASDAQ), the 8 PM–4 AM ET Blue Ocean overnight session, and crypto. Categories outside their session window render a not active right now shell with the next-window copy.
A quality floor of price ≥ $2.00 AND volume ≥ 500k filters the homepage-facing categories (gainers, losers, most-active, premarket, after-hours) to keep sub-$2 OTC and thin-tape prints off the front page. 52w-highs, 52w-lows, and unusual-volume bypass the floor — they're statistical screens where excluding low-price names would misrepresent the data.
When to use it
Open /movers/premarket between 4:00 and 9:30 AM ET to see what's gapping on overnight news. Hit /movers/unusual-volume mid-session to find names trading 2x or more above their 10-day average — often the cleanest signal something real is happening before it hits news wires. Pull /movers/overnight after 8 PM ET for Blue Ocean session prints — Tapeboard is one of the few free surfaces that covers this session at all. The archive is for journaling: revisit a wild session and re-read what the leaderboard looked like at the close.
Open it
- Path:
/movers(hub),/movers/:category(one of ten categories),/movers/archive(daily snapshot index),/movers/archive/:date/:category(frozen daily snapshot) - Shortcut: none — public page, no in-app shortcut
- Tier-gate: Free / unauthenticated — every page is fully public and indexable
AI: Break It Down
Every mover row carries a compact [ AI: BREAK IT DOWN ] button that opens a bottom sheet answering one question — "what's moving this stock right now" — grounded in Tapeboard's own data. It's the same button and the same sheet on the Squeeze Leaderboard, the Research masthead, the Scanner's Live Positions panel, and each row of the in-app Watchlist panel — one AI surface, wired in everywhere you'd already be looking at a ticker.

What the sheet shows. A short, structured card in five sections, always in this order: WHAT'S MOVING IT, BULL CASE, BEAR CASE, RISK FLAGS, and UNKNOWNS — the last one is deliberate: the model states plainly what the data doesn't tell you, instead of filling the gap with a guess. A compliance line ("What's moving the tape on TICKER — grounded in our data. Not investment advice.") sits above the content on every open, and the server's own disclaimer travels inside the card text itself. The copy is written to explain, never to recommend: no price targets, no "should you buy," no buy/sell verbs anywhere in the tool.
EARNINGS DESK tab. When a symbol is within about a week of its next earnings release, a second tab — Earnings Desk — appears next to Break It Down. It's a precomputed, read-only card (no on-demand generate button) covering EARNINGS QUALITY, REVENUE TREND, CASH FLOW & ACCRUALS, SURPRISE HISTORY, and RISK FLAGS, built around a pre-earnings research checklist — revenue acceleration, the accrual ratio, and buyback / share-count drift — grounded in the same SEC XBRL filings data as the Financials tab. If the cron hasn't produced a card yet for a name (or the print is more than about a week out), the tab simply doesn't appear.
Precomputed vs. on-demand. The day's top gainers, its most unusual-volume names, and the top of the Squeeze Leaderboard are precomputed ahead of time — opening the sheet on one of those names shows a card instantly, at no cost, even if you're not signed in. Any other symbol is generated on demand the first time someone asks for it, and that step is gated: anonymous visitors can read a cached card but can't trigger a fresh one (a Sign up free prompt appears instead); a free account unlocks on-demand generation at 3 breakdowns a day; Pro and Terminal generate without that daily meter. A Refresh / Deep dive → button re-runs the same generation once a card is showing. If the AI backend is briefly busy, the sheet shows a short "putting this together" wait state and checks back automatically rather than erroring.
How to use it
- Open
/movers. The hub shows all ten category cards in a responsive grid. Click to open one. - Read the H1 + intro paragraph — every category page documents its session window, source, and rank rule.
- Scan the table — sorted by category-specific rule (gainers by % desc; losers by % asc; most-active by volume desc; 52w-highs by proximity to the high; unusual-volume by
volumeRatiodesc). - Click any row to open
/chart/:symbol— the public chart page with full chart, stats strip, 52-week range, and news. - The
MORE_MOVERSstrip at the bottom of every category page links to every other category. - Visit
/movers/archivefor the snapshot index. Cron fires at 21:30 UTC on trading days (post-close, DST-safe), freezing top-50 in seven daily-meaningful categories (gainers, losers, most-active, 52w-highs, 52w-lows, unusual-volume, crypto). Click a date, then a category, to read the frozen list. - Live pages do not auto-poll — refresh the tab to re-pull the latest data.
- Click [ AI: BREAK IT DOWN ] on any row for a compliant "what's moving it" read — instant on the day's top gainers and unusual-volume names, on demand (with a free-tier daily limit) elsewhere.
Fields
Categories
| Slug | Window | Rank rule | ||
|---|---|---|---|---|
gainers | Live RTH | changePercent > 0, sorted desc | ||
losers | Live RTH | changePercent < 0, sorted asc | ||
most-active | Live RTH | Real per-symbol volume, sorted desc | ||
premarket | 4:00–9:30 AM ET weekdays | Same as gainers during window; gated outside | ||
afterhours | 4:00–8:00 PM ET weekdays | Sorted by `\ | changePercent\ | ` desc |
overnight | 8:00 PM–4:00 AM ET + weekends | Ranked by `\ | delta%\ | × √volume` |
crypto | 24/7 | Top-20 coins by market presence, sorted by 24h `\ | change\ | ` |
52w-highs | Live RTH | price ≥ 52w-high × 0.995, sorted by proximity | ||
52w-lows | Live RTH | price ≤ 52w-low × 1.005, sorted by proximity | ||
unusual-volume | Live RTH | volume / avg10dVolume ≥ 2, sorted by ratio desc |
Row columns
| Column | Always shown | Notes |
|---|---|---|
SYM | Yes | Ticker, links to /chart/:symbol |
NAME | Yes | Company name, ellipsised on narrow viewports |
PX | Yes | Last price (4-decimal for sub-$1) |
%CHG | Yes | Session % change, signed, coloured red/green |
VOL | Yes | Total session volume (K/M/B abbreviation) |
52W_HI | 52w-highs only | 52-week high price |
52W_LO | 52w-lows only | 52-week low price |
VOL_RATIO | unusual-volume only | volume / avg10dVolume (4.2x formatting, yellow) |
Universe coverage
crypto: top-20 coins (BTC, ETH, SOL, XRP, DOGE, ADA, AVAX, DOT, LINK, MATIC, SHIB, LTC, BCH, ATOM, UNI, NEAR, APT, SUI, AAVE, ALGO). Symbols use the dotlessBTCX/ETHXconvention in URLs.overnight: fixed 70-symbol watchlist — mega-cap tech, popular momentum names (PLTR, COIN, HOOD, MSTR, GME, DJT, CVNA), AI/quantum (SMCI, IONQ, RGTI, ACHR), biotech (MRNA, VRTX, LLY), select large-cap.
Limits
- Categories outside their session window render an
active=falseshell with areasonstring — no rows - Sub-$2 and sub-500k-volume names filtered out of gainers/losers/most-active/premarket/afterhours by the public-floor rule
most-activevolumes are real per-symbol values; if live volume is briefly unavailable the page zeros the figure rather than display an inaccurate session aggregate- Overnight is the 70-symbol fixed watchlist, not the full market
- Overnight rows have a 10-minute staleness gate — prints older than 10 min are dropped
- Crypto is the top-20 coins only, not the full crypto market
- Daily archive starts the first trading day cron ran — no backfill of older history; snapshots are top-50 per category per day
- Pages don't auto-refresh; reload the tab to re-pull
Troubleshooting
Session-gated category shows the Check back during that window message. Working as designed — premarket, afterhours, overnight block outside their windows. Use /movers/gainers or /movers/losers for the always-on view.
A ticker I expect isn't on the list. Three causes: (1) failed the price ≥ $2 AND volume ≥ 500k floor; (2) below the top-100-by-volume cutoff that feeds the enriched pipeline for 52w / unusual-volume; (3) the source for that category doesn't cover it (overnight watchlist is fixed 70 symbols, crypto is fixed 20 coins).
NO_ROWS_MATCHED · CHECK_BACK_SOON mid-session. Source feed returned empty or every row failed the filter — e.g. 52w-highs returns nothing if no name is within 0.5% of its 52-week high. Refresh in a minute.
§ERR / MOVERS · feed unavailable. The data source was briefly unavailable. Reload; if it persists, try again in a few minutes.
most-active row shows zero volume. Live per-symbol volume was briefly unavailable, so the inaccurate session aggregate was suppressed. Wait a few minutes for the data to repopulate.
Archive snapshot returns 404 / no snapshot available. Cron didn't fire for that day or hasn't run yet — snapshots only fire on trading days, never weekends or US market holidays.