Ranked by %B ascending — which names are on sale — not by momentum. Measured on the AI complex over the 2023+ wave, forward 60 days: buying dips beat simply holding by +3.47 pts, while buying strength lost 2.65 pts and top-quartile 12-month momentum lost 3.01 pts. Owning the complex at all was worth +17.95%, which is roughly five times what the timing overlay adds. These are daily entries on the names as they stand today (in-sample, overlapping); the quarterly portfolio test further down did not confirm the dip rule.
Descriptive only. Nothing on this page was measured by regime, so it does not change a verdict. Broad risk-off = QQQ below its 200-day with VIX ≥ 25 or up 20% in 5 days; sector washout = SOXX below its 200-day or under 40% of the AI list above theirs.
Descriptive only; no verdict reads it. A theme leads for a few years and then hands over (the COVID winners kept dipping through late 2021 H2 and did not recover; a one-off analysis, not a committed result). "Breaking" = the theme's equal-weight basket is under its own 200-day while at least 40% of its names sit in the dip band at once; that threshold is a display choice, not a tested rule.
| Theme | Names | Basket vs 200d | Basket 20d | Names above 200d | In dip band | State |
|---|---|---|---|---|---|---|
| AI compute | 9 | +41.9% | +17.8% | 100% | 0/9 | leading |
| AI memory | 4 | +37.2% | -4.3% | 100% | 1/4 | leading |
| Chip equipment | 8 | +18.2% | +8.6% | 100% | 0/8 | leading |
| AI networking | 3 | +34.2% | +17.1% | 100% | 0/3 | leading |
| AI power | 5 | +5.4% | +2.9% | 80% | 0/5 | leading |
| AI platforms | 6 | +12.8% | +6.6% | 83% | 0/6 | leading |
| Humanoid supply chain | 16 (15 in basket) | +4.5% | +5.7% | 60% | 1/16 | leading |
| Magnets & materials | 4 | -15.5% | -13.4% | 25% | 3/4 | breaking |
%B says where price sits inside its normal trading channel. Below 0.20 means it has pulled back to the bottom of that channel — on sale. Above 1.00 is extended: too stretched to buy, and it returned 2.65 pts below simply holding.
Two studies disagree, so this is not a filter the verdict column applies. 46 large caps, 15y, fwd 60d: dips above the 200-day hit 71% vs 68% below — better odds, but below-200d averaged slightly more (+7.16% vs +6.96%). The AI complex, 2023+: dips below the 200-day were the best bucket of all, +7.49 pts vs the null. The Meta trade in the box below was 11.8% below its 200-day. Above = steadier; below = bigger and lumpier. Pick per your tolerance.
Both halves are gates, and 2y pos is often the binding one. p10 is the 10th-percentile outcome across past 2-year holds — your unlucky-but-realistic case; a −50% p10 means one in ten 2-year holds halved. These are the exact thresholds the verdict column applies, not a rule of thumb.
| %B < 0.20 dip rule | 2026-08-21 @ 549.47 | +35.4% | 18 days before the launch, and META was 11.8% below its 200-day |
| move + volume spike | 2026-09-09 @ 653.17 | +13.9% | the day after the launch |
| follow the analyst | 2026-09-21 @ 741.25 | +0.4% | the move was over |
The 3x pair moves with SOXX, so read SOXX's %B and size with SOXL/SOXS's ATR. SOXS is inverse: its %B means the opposite.
| Ticker | Close | 1d | %B | vs 20d | vs 200d | range | ATR | $vol/d | 2y pos | 2y p10 | 60d dips | size | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SOXX semis ETF semis_etf |
582.82 | -1.12% | 0.74 | +5.4% | +26.9% | 81% | 2.7% | 3.9B | 95% 4w | +7.3% | 73% of 30 med +6% · CVaR -18% |
$1,319 19% | — | neutral |
| SOXL semis ETF semis_etfleveraged |
158.91 | -3.26% | 0.75 | +15.0% | +33.2% | 47% | 7.3% | 7.8B | 76% 4w | -52.2% | 63% of 30 med +9% · CVaR -57% |
— | — | leveraged · not rated |
| SOXS semis ETF semis_etfleveragedinverse |
30.65 | +3.44% | 0.27 | -17.8% | -84.2% | 0% | 10.8% | 2.6B | 0% 4w | -98.7% | 17% of 36 med -21% · CVaR -65% |
— | — | leveraged · not rated |
The ten holdings behind SOXX, their fund weight, and how much of the day each one contributed (fund weight × its move, so together they explain about 61% of the fund).
| Ticker | Fund wt | 1d | Contrib | Trend | vs 20d |
|---|---|---|---|---|---|
| NVDA | 9.43% | -0.74% | -0.070% | above 20d | |
| MU | 8.91% | +4.06% | +0.362% | above 20d | |
| AMD | 8.23% | -0.55% | -0.045% | above 20d | |
| AVGO | 7.48% | +0.19% | +0.014% | above 20d | |
| INTC | 5.09% | +0.55% | +0.028% | BELOW 20d | |
| MRVL | 4.66% | -0.81% | -0.038% | above 20d | |
| TSM earnings in 5 sessions | 4.65% | -2.09% | -0.097% | above 20d | |
| AMAT | 4.59% | -1.81% | -0.083% | above 20d | |
| LRCX | 4.27% | -1.31% | -0.056% | above 20d | |
| KLAC | 4.12% | -0.32% | -0.013% | above 20d |
Breadth is context, not a trigger. Reproduce every number here with scripts/soxx_breadth_study.py (8 years of SOXX, entry at the next open). Broad strength has no edge: top-10 weight above its 20-day > 80% was +0.04 pts vs the null at 20 days (n=727; +0.00 at 5d, −0.03 at 1d). Weakness in the holdings (breadth < 20%, or their composite %B < 0.20) pointed the same way as SOXX's own dip signal but smaller (about +0.7 to +0.9 pts vs +1.3) and rests on a few hundred overlapping observations, so treat it as noise-level: it adds nothing you cannot read off SOXX's own %B. Use this table to see why SOXX moved, broad or one name, and take the direction call from SOXX's %B. SOXL and SOXS are daily-reset products and are not rated on this page.
META, GOOGL, MSFT, AAPL, AMZN, NFLX — tracked every day whether or not they signal.
| Ticker | Close | 1d | %B | vs 20d | vs 200d | range | ATR | $vol/d | 2y pos | 2y p10 | 60d dips | size | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| META platform ndx100ai_platformmegacap |
721.31 | -2.38% | 0.56 | +1.4% | +14.8% | 78% | 3.3% | 9.8B | 79% 4w | -28.1% | 57% of 30 med +3% · CVaR -25% |
$1,069 15% | — | neutral |
| GOOGL platform ndx100ai_platformmegacap |
350.50 | +0.81% | 0.79 | +1.7% | +3.3% | 69% | 2.4% | 8.5B | 90% 4w | -0.1% | 71% of 31 med +5% · CVaR -9% |
$1,400 20% cap | — | neutral |
| MSFT platform ndx100ai_platformmegacap |
529.76 | +0.09% | 0.99 | +4.6% | +22.6% | 96% | 2.1% | 11.2B | 96% 4w | +10.0% | 70% of 27 med +7% · CVaR -13% |
$1,400 20% cap | — | neutral |
| AAPL megacap ndx100megacap |
336.67 | +0.91% | 0.65 | +0.7% | +16.2% | 95% | 2.0% | 12.7B | 99% 4w | +16.2% | 70% of 27 med +6% · CVaR -17% |
$1,400 20% cap | — | neutral |
| AMZN megacap ndx100megacap |
259.92 | +1.42% | 1.02 | +3.3% | +7.5% | 72% | 2.2% | 8.6B | 79% 4w | -25.5% | 73% of 30 med +6% · CVaR -22% |
$1,400 20% cap | — | extended |
| NFLX megacap ndx100megacap |
69.70 | +1.47% | 0.33 | -3.5% | -16.7% | 5% | 2.6% | 2.4B | 77% 4w | -39.2% | 74% of 31 med +7% · CVaR -37% |
$1,326 19% | — | neutral |
Any symbol, priced now. The browser cannot call Yahoo directly (no CORS), so this
goes through this site's own /api/quote and then applies the same formulas as the
nightly table, ported from the Python — so a live check and the tables cannot disagree.
Cached 10 minutes.
%B below 0.2, liquid, and passes the 1–3 year hold gate (≥80% of rolling 2-year windows positive with a 10th percentile above -10%).
| Ticker | Close | 1d | %B | vs 20d | vs 200d | range | ATR | $vol/d | 2y pos | 2y p10 | 60d dips | size | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AXON ndx100 |
406.00 | -3.01% | 0.13 | -8.1% | -17.9% | 15% | 5.0% | 421M | 98% 4w | +20.8% | 59% of 32 med +20% · CVaR -28% |
$695 10% | 3 | BUY ZONE |
| PCAR ndx100 |
106.86 | -2.25% | 0.14 | -6.4% | -11.1% | 34% | 2.4% | 352M | 98% 4w | +8.1% | 61% of 31 med +6% · CVaR -17% |
$1,400 20% cap | 0 | BUY ZONE |
| BKNG ndx100 |
155.87 | -1.12% | 0.15 | -5.4% | -13.9% | 4% | 3.6% | 1.1B | 84% 4w | -5.0% | 75% of 32 med +4% · CVaR -19% |
$964 14% | 1 | BUY ZONE |
A move of 5%+ on 2×+ the 20-day average volume. This is a reaction, not a setup — something happened, and the rule does not know what or which direction it resolves.
Nothing in this group today.
Dips that fail the hold gate, plus names with no measured edge either way.
| Ticker | Close | 1d | %B | vs 20d | vs 200d | range | ATR | $vol/d | 2y pos | 2y p10 | 60d dips | size | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| WDC memory ndx100ai_memory |
405.42 | -1.37% | 0.06 | -8.1% | +0.5% | 46% | 7.0% | 3.2B | 53% 4w | -43.6% | 48% of 29 med -2% · CVaR -28% |
$498 7% | 30 | DIP · FAILS HOLD |
| KHC ndx100 |
21.98 | -0.23% | 0.10 | -6.8% | -5.4% | 22% | 2.6% | 357M | 37% 4w | -58.1% | 40% of 35 med -1% · CVaR -17% |
$1,332 19% | 5 | DIP · FAILS HOLD |
| PEPearnings today ndx100 |
123.73 | -1.58% | 0.11 | -4.9% | -14.2% | 0% | 1.8% | 1.0B | 78% 4w | -11.3% | 58% of 31 med +2% · CVaR -8% |
$1,400 20% cap | 30 | DIP · FAILS HOLD |
| ALB materials humanoid_materials |
102.75 | -3.39% | 0.12 | -6.9% | -33.3% | 12% | 4.1% | 263M | 49% 4w | -62.4% | 56% of 32 med +2% · CVaR -27% |
$848 12% | 3 | DIP · FAILS HOLD |
| ALNY ndx100 |
224.41 | +0.21% | 0.13 | -7.1% | -25.3% | 7% | 4.5% | 367M | 79% 4w | -8.6% | 53% of 32 med +4% · CVaR -23% |
$771 11% | 0 | DIP · FAILS HOLD |
| WDAY ndx100 |
184.26 | -1.23% | 0.13 | -2.8% | +17.5% | 54% | 4.0% | 568M | 67% 4w | -28.7% | 70% of 33 med +8% · CVaR -34% |
$868 12% | 0 | DIP · FAILS HOLD |
| BKR ndx100 |
55.41 | -3.01% | 0.14 | -2.8% | -6.5% | 46% | 3.0% | 422M | 66% 4w | -44.0% | 43% of 30 med -0% · CVaR -29% |
$1,159 17% | 1 | DIP · FAILS HOLD |
| CPRT ndx100 |
26.62 | -0.75% | 0.17 | -7.0% | -20.1% | 0% | 3.2% | 282M | 86% 4w | -18.4% | 62% of 32 med +8% · CVaR -17% |
$1,109 16% | 0 | DIP · FAILS HOLD |
| QCOM ndx100 |
177.12 | -2.16% | 0.18 | -4.9% | +5.5% | 43% | 4.3% | 1.8B | 75% 4w | -13.6% | 52% of 29 med +0% · CVaR -22% |
$810 12% | — | DIP · FAILS HOLD |
| SBUX ndx100 |
93.58 | -2.63% | 0.18 | -2.2% | -4.5% | 53% | 2.3% | 656M | 75% 4w | -8.6% | 47% of 30 med -1% · CVaR -18% |
$1,400 20% cap | — | DIP · FAILS HOLD |
| IDXX ndx100 |
506.67 | -1.70% | 0.19 | -1.9% | -13.4% | 1% | 2.7% | 263M | 77% 4w | -13.7% | 66% of 32 med +7% · CVaR -22% |
$1,317 19% | — | DIP · FAILS HOLD |
| ADBE ndx100 |
232.77 | -2.25% | 0.20 | -4.4% | -9.8% | 24% | 3.8% | 1.2B | 63% 4w | -43.9% | 45% of 29 med -2% · CVaR -23% |
$932 13% | — | DIP · FAILS HOLD |
| DXCM ndx100 |
84.30 | +1.09% | 0.20 | -2.5% | +15.0% | 79% | 2.7% | 315M | 64% 4w | -38.3% | 58% of 31 med +10% · CVaR -27% |
$1,287 18% | — | DIP · FAILS HOLD |
| ROST ndx100 |
225.53 | +0.59% | 0.20 | -2.1% | +3.6% | 73% | 2.3% | 504M | 80% 4w | -7.0% | 64% of 28 med +6% · CVaR -20% |
$1,400 20% cap | — | neutral |
| KDP ndx100 |
30.54 | -1.90% | 0.21 | -1.6% | +5.1% | 69% | 2.6% | 335M | 69% 4w | -9.4% | 57% of 30 med +2% · CVaR -10% |
$1,339 19% | — | neutral |
| VRTX ndx100 |
505.64 | +0.66% | 0.21 | -1.7% | +6.6% | 65% | 2.3% | 542M | 92% 4w | +1.7% | 60% of 30 med +3% · CVaR -12% |
$1,400 20% cap | — | neutral |
| REGN ndx100 |
742.12 | +0.46% | 0.22 | -3.7% | +1.1% | 63% | 2.8% | 503M | 63% 4w | -31.3% | 48% of 29 med -0% · CVaR -25% |
$1,264 18% | — | neutral |
| CMCSA ndx100 |
20.94 | -1.37% | 0.22 | -6.3% | -18.9% | 0% | 2.8% | 645M | 56% 4w | -27.0% | 47% of 32 med -0% · CVaR -19% |
$1,233 18% | — | neutral |
| STX memory ndx100ai_memory |
807.57 | +0.24% | 0.23 | -6.7% | +22.7% | 68% | 6.9% | 3.8B | 80% 4w | -13.2% | 68% of 31 med +12% · CVaR -24% |
$505 7% | — | neutral |
| TTD ndx100 |
12.09 | +1.43% | 0.26 | -7.9% | -45.6% | 0% | 4.4% | 272M | 70% 4w | -47.7% | 57% of 30 med +11% · CVaR -40% |
$802 11% | — | neutral |
| FANG ndx100 |
184.38 | -0.32% | 0.31 | -3.5% | +0.4% | 65% | 2.8% | 382M | 68% 4w | -49.1% | 50% of 30 med +3% · CVaR -34% |
$1,269 18% | — | neutral |
| PAYX ndx100 |
101.55 | +0.52% | 0.31 | -5.7% | -0.5% | 41% | 2.7% | 321M | 88% 4w | -3.0% | 66% of 32 med +5% · CVaR -17% |
$1,288 18% | — | neutral |
| CSGP ndx100 |
27.60 | -0.11% | 0.31 | -3.7% | -30.2% | 1% | 3.7% | 181M | 62% 4w | -23.0% | 58% of 31 med +6% · CVaR -24% |
$948 14% | — | neutral |
| NFLX megacap ndx100megacap |
69.70 | +1.47% | 0.33 | -3.5% | -16.7% | 5% | 2.6% | 2.4B | 77% 4w | -39.2% | 74% of 31 med +7% · CVaR -37% |
$1,326 19% | — | neutral |
| ORLY ndx100 |
84.61 | -0.62% | 0.33 | -0.8% | -6.9% | 9% | 2.1% | 476M | 100% 4w | +27.7% | 67% of 30 med +8% · CVaR -22% |
$1,400 20% cap | — | neutral |
%B above 1.00 — the stall zone, −2.65 pts vs the null at 60 days. Not a short signal; a not-today signal.
| Ticker | Close | 1d | %B | vs 20d | vs 200d | range | ATR | $vol/d | 2y pos | 2y p10 | 60d dips | size | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AVGO compute ndx100ai_computesoxx_top10 |
376.51 | +0.19% | 1.02 | +6.0% | +2.6% | 45% | 2.9% | 7.7B | 100% 4w | +27.3% | 69% of 29 med +8% · CVaR -15% |
$1,197 17% | — | extended |
| AMZN megacap ndx100megacap |
259.92 | +1.42% | 1.02 | +3.3% | +7.5% | 72% | 2.2% | 8.6B | 79% 4w | -25.5% | 73% of 30 med +6% · CVaR -22% |
$1,400 20% cap | — | extended |
| ADSK ndx100 |
235.05 | +1.63% | 1.04 | +8.3% | -1.2% | 37% | 3.6% | 450M | 74% 4w | -26.7% | 55% of 31 med +3% · CVaR -21% |
$972 14% | — | extended |
| COST ndx100 |
942.25 | +0.70% | 1.05 | +3.4% | -1.9% | 39% | 1.6% | 1.9B | 100% 4w | +26.7% | 60% of 30 med +7% · CVaR -9% |
$1,400 20% cap | — | extended |
| CSCO ndx100 |
117.39 | -0.47% | 1.07 | +7.3% | +20.3% | 81% | 2.3% | 2.0B | 82% 4w | -3.2% | 66% of 29 med +5% · CVaR -14% |
$1,400 20% cap | — | extended |
| CIEN network ai_network |
446.45 | +0.63% | 1.14 | +22.7% | +13.1% | 62% | 5.4% | 802M | 76% 4w | -15.6% | 60% of 30 med +5% · CVaR -20% |
$647 9% | — | extended |
Buy the dip names at each quarter-end, hold to the next, versus the same number of names drawn at random from the same list (2000 draws), after 0.20% costs. Thresholds were written before each run. Neither variant cleared them, so nothing here changes the verdicts above. The universe is today's AI leaders, which flatters dip entries; the mean is carried by one quarter (2026-03-31) in v1.
| Test | signal qtrs | mean net excess | qtrs positive | ex best qtr | p vs random | result |
|---|---|---|---|---|---|---|
| v1 · dip (%B < 0.20) | 23 | +4.2 pts | 52% | +1.0 pts | 0.071 | not promoted (failed: P1, P4) |
| v2 · dip + above 200-day | 18 | +3.3 pts | 39% | -4.8 pts | 0.259 | not promoted (failed: P1, P3, P4, P5, P6) |
The 1–3 year durability gate cannot be tested point-in-time on 10 years of data (needs 2016 prior sessions); it is judged forward only. Method and thresholds: docs/experiments/2026-09-24-preregistration-qr-s1-v{1,2}.md.
Daily entries at the next open on the 34 AI stocks over 10 years, edge vs every session for the same names. The rule was fixed before this ran: the grid can only demote the default, never pick a different cell. Result: not demoted — it sits on a plateau. Deeper dips test a little better and every cell is positive, but the default edge is +1.31 pts over 10 years, well below the +3.47 pts measured on 2023+ alone.
| edge vs null, pts | 20d | 40d | 60d | 90d |
|---|---|---|---|---|
| %B < 0.10 | +1.24 | +1.52 | +1.72 | +1.34 |
| %B < 0.15 | +1.13 | +1.35 | +1.52 | +1.09 |
| %B < 0.20 | +0.98 | +1.17 | +1.31 | +0.63 |
| %B < 0.25 | +0.85 | +1.05 | +1.28 | +0.57 |
| %B < 0.30 | +0.77 | +1.00 | +1.31 | +0.59 |
By year (default cell): 2016 +0.5% · 2017 +2.2% · 2018 +2.1% · 2019 +4.1% · 2020 +8.1% · 2021 +3.2% · 2022 +3.8% · 2023 +4.4% · 2024 +3.5% · 2025 -3.3% · 2026 +4.2%
By market: QQQ above 200 +0.72% · QQQ below 200 +2.16%
Same rule on indices since 1999 (no hand-picked names): QQQ +0.58% · SPY +0.85% · XLK +0.39% — positive on at least 2 of 3. Episodes are counted per name, and the names dip together, so the independent count is far lower than the raw one. Source: scripts/quarterly_rotation/robustness.py.