- Nasdaq 100 added as a second universe. Every name has a live stock detail page (same chart + signal as bottleneck names), and the Analysis tab now spans two views — Bottleneck Analysis and Nasdaq 100 Analysis — with a one-click toggle between them.
- Bottleneck Analysis is now the site’s home page. Visiting / redirects there; the legacy issue front still lives at /bottlenecks (reachable from the new Bottlenecks ▾ dropdown).
- Sector pages restructured into one long scroll. All chokepoints stack vertically; a sticky chip strip up top doubles as a jump-nav, smooth-scrolling on click and auto-highlighting as you read. Each stock condenses into a compact row with an expandable price chart.
- Legacy /sector/<sector>/choke/<choke> URLs now redirect to the anchor on the new single-page sector view.
- Editorial Bull / Bear / Watch fields removed from every stock — the live signal block (Power Trend, RSI, distance-from-21EMA, etc.) is the single source of ‘why does this look the way it does.’
- New batch quote endpoint (/api/quotes-batch) replaces 70+ per-row fetches with one round trip — cuts sector-page load on cold cache by roughly an order of magnitude.
- Top nav split-dropdowns: Analysis ▾ and Bottlenecks ▾ each link to their index AND open a menu (universes / sectors). Search and Buy-Me-a-Coffee stay on the right rail.
Mechanical price-math only — never investment advice. Auto-refreshes every 15 minutes. The Nasdaq-100 constituent list is hand-maintained; expect a quarterly refresh.
- Analysis page restructured around three questions (Best entry, Just turned up, Constructive pullbacks) instead of separate Buy / Watch tabs — each row carries its own BUY/WATCH chip.
- New sector filter at the top — multi-select chips per sector, plus High growth (3m ≥ 20%) and Emerging (1m ≥ 10%) preset shortcuts. Replaces the old sector / chokepoint dropdowns.
- Tightened Buy gates: dropped the redundant '8% from 52-week high' test, added a '≤10% from 21-day EMA' chase guard, and added a '3-month return ≥ universe median' relative-performance gate. Names that lag the universe get demoted to Watch with an explicit reason.
- Removed the sector-weighting toggle — sector composition is now controlled explicitly by the filter chips, no hidden ranking tilt.
- Rank-blend weights calibrated to quant / practitioner literature (Weinstein, Minervini, Shannon, O'Neil/IBD): Just turned up adds a 20% 21-EMA-slope factor; Constructive pullbacks weights slope at 40% because the thesis depends on a rising line.
- Lists expanded to 20 names per section, with 'Show all' to see the full pool. Sector-strength leaderboard switched to absolute medians so chip and table numbers always match.
Mechanical price-math only — never investment advice. Auto-refreshes every 15 minutes.
- New Analysis tab — a live, rules-based read of every tradable name in the research, grouped into Buy and Watch.
- Buy is sorted by Best entry (closeness to the 21-day EMA) and Just turned up (freshest uptrends); Watch by Best entry and Constructive pullbacks.
- Rankings factor in sector strength (each sector's recent median return vs. the universe) and favor still-rising trends over sideways stalls.
- Sector strength leaderboard, plus Sector and Chokepoint filters that narrow every list.
- Plain-English explainer, glossary, and the exact rules behind every label; price charts now include a 21-day EMA and a clear legend.
The Analysis page reads live prices (15-minute refresh) and is purely mechanical — not investment advice.
- Initial public release of the Midnight Markets newsletter site.
First time hosting this project publicly. Future updates will be tracked here.