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 | +35.7% | +13.1% | 89% | 0/9 | leading |
| AI memory | 4 | +46.9% | +11.9% | 100% | 0/4 | leading |
| Chip equipment | 8 | +13.1% | +6.7% | 88% | 0/8 | leading |
| AI networking | 3 | +13.6% | -0.3% | 67% | 0/3 | leading |
| AI power | 5 | +1.0% | +1.5% | 60% | 0/5 | leading |
| AI platforms | 6 | +9.4% | +0.6% | 83% | 2/6 | leading |
| Humanoid supply chain | 16 (15 in basket) | +3.9% | +5.5% | 60% | 1/16 | leading |
| Magnets & materials | 4 | -16.1% | -15.6% | 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 |
560.79 | -2.08% | 0.80 | +6.0% | +24.8% | 76% | 3.1% | 4.2B | 95% 4w | +7.3% | 72% of 29 med +6% · CVaR -18% |
$1,131 16% | — | neutral |
| SOXL semis ETF semis_etfleveraged |
142.29 | -6.05% | 0.78 | +15.6% | +23.4% | 41% | 8.8% | 8.1B | 76% 4w | -52.2% | 63% of 30 med +9% · CVaR -57% |
— | — | leveraged · not rated |
| SOXS semis ETF semis_etfleveragedinverse |
34.43 | +6.17% | 0.19 | -20.1% | -83.9% | 0% | 12.1% | 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% | +1.68% | +0.159% | above 20d | |
| MU earnings in 1 session | 8.91% | -2.61% | -0.233% | above 20d | |
| AMD | 8.23% | -3.61% | -0.297% | above 20d | |
| AVGO | 7.48% | -0.92% | -0.069% | BELOW 20d | |
| INTC | 5.09% | -5.67% | -0.288% | above 20d | |
| MRVL | 4.66% | -3.83% | -0.179% | above 20d | |
| TSM | 4.65% | +0.50% | +0.023% | above 20d | |
| AMAT | 4.59% | +0.36% | +0.017% | above 20d | |
| LRCX | 4.27% | -0.23% | -0.010% | above 20d | |
| KLAC | 4.12% | +0.67% | +0.027% | 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 |
715.62 | -4.79% | 0.70 | +7.2% | +14.4% | 75% | 3.9% | 10.6B | 79% 4w | -28.1% | 57% of 30 med +3% · CVaR -25% |
$894 13% | — | neutral |
| GOOGL platform ndx100ai_platformmegacap |
342.75 | -0.34% | 0.53 | +0.2% | +1.4% | 64% | 2.5% | 8.5B | 90% 4w | -0.1% | 71% of 31 med +5% · CVaR -9% |
$1,400 20% cap | — | neutral |
| MSFT platform ndx100ai_platformmegacap |
509.22 | -1.35% | 0.85 | +1.9% | +18.2% | 85% | 2.3% | 11.3B | 96% 4w | +10.0% | 70% of 27 med +7% · CVaR -13% |
$1,400 20% cap | — | neutral |
| AAPL megacap ndx100megacap |
338.40 | -0.78% | 0.75 | +2.4% | +17.6% | 97% | 2.0% | 13.1B | 99% 4w | +16.2% | 70% of 27 med +6% · CVaR -17% |
$1,400 20% cap | — | neutral |
| AMZN megacap ndx100megacap |
246.15 | -1.41% | 0.07 | -2.8% | +2.2% | 56% | 2.3% | 8.6B | 79% 4w | -25.5% | 73% of 30 med +6% · CVaR -22% |
$1,400 20% cap | — | DIP · FAILS HOLD |
| NFLX megacap ndx100megacap |
69.23 | -2.70% | 0.07 | -9.1% | -18.1% | 3% | 3.1% | 2.5B | 77% 4w | -39.2% | 74% of 31 med +7% · CVaR -37% |
$1,124 16% | 30 | DIP · FAILS HOLD |
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MNST ndx100 |
41.86 | -2.90% | -0.06 | -4.7% | -1.0% | 53% | 2.5% | 448M | 95% 4w | +3.8% | 66% of 32 med +7% · CVaR -13% |
$1,386 20% | 0 | BUY ZONE |
| PAYX ndx100 |
99.30 | -2.04% | -0.01 | -14.0% | -3.1% | 36% | 3.3% | 315M | 88% 4w | -2.5% | 66% of 32 med +5% · CVaR -17% |
$1,059 15% | 3 | BUY ZONE |
| ORCL platform ai_platform |
132.60 | -3.28% | 0.01 | -10.2% | -18.8% | 9% | 5.3% | 4.2B | 98% 4w | +14.4% | 60% of 30 med +3% · CVaR -23% |
$665 9% | 30 | BUY ZONE |
| XEL ndx100 |
69.39 | -0.59% | 0.05 | -5.3% | -9.9% | 0% | 1.9% | 393M | 82% 4w | -6.9% | 61% of 31 med +3% · CVaR -10% |
$1,400 20% cap | 1 | BUY ZONE |
| PCAR ndx100 |
111.65 | +0.31% | 0.12 | -6.1% | -7.1% | 44% | 2.5% | 348M | 98% 4w | +8.1% | 61% of 31 med +6% · CVaR -17% |
$1,400 20% cap | — | BUY ZONE |
| AEP ndx100 |
118.20 | -0.13% | 0.14 | -2.8% | -5.8% | 39% | 1.6% | 462M | 86% 4w | -2.5% | 67% of 30 med +5% · CVaR -14% |
$1,400 20% cap | — | BUY ZONE |
| AXON ndx100 |
424.75 | -1.25% | 0.14 | -11.2% | -15.0% | 19% | 5.8% | 434M | 98% 4w | +21.3% | 59% of 32 med +20% · CVaR -28% |
$607 9% | — | BUY ZONE |
| ADP ndx100 |
261.80 | -0.71% | 0.15 | -3.5% | +11.4% | 76% | 2.1% | 556M | 93% 4w | +4.1% | 68% of 31 med +6% · CVaR -17% |
$1,400 20% cap | — | BUY ZONE |
| VRSK ndx100 |
167.77 | -0.85% | 0.15 | -6.2% | -11.7% | 13% | 3.4% | 248M | 83% 4w | -9.6% | 58% of 31 med +2% · CVaR -15% |
$1,029 15% | — | BUY ZONE |
| CSCO ndx100 |
106.74 | +0.04% | 0.17 | -2.0% | +10.4% | 64% | 2.6% | 2.0B | 82% 4w | -3.2% | 66% of 29 med +5% · CVaR -14% |
$1,358 19% | — | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CDW ndx100 |
130.33 | -3.77% | -0.17 | -11.2% | -0.4% | 51% | 4.7% | 239M | 79% 4w | -30.4% | 69% of 32 med +7% · CVaR -17% |
$746 11% | 0 | DIP · FAILS HOLD |
| REGN ndx100 |
752.25 | -4.54% | -0.02 | -5.9% | +2.4% | 66% | 2.8% | 494M | 64% 4w | -31.3% | 47% of 30 med -0% · CVaR -25% |
$1,271 18% | 1 | DIP · FAILS HOLD |
| CSGP ndx100 |
27.02 | -3.81% | 0.00 | -9.7% | -33.9% | 0% | 4.5% | 184M | 62% 4w | -22.8% | 58% of 31 med +6% · CVaR -24% |
$775 11% | 2 | DIP · FAILS HOLD |
| TTD ndx100 |
12.34 | -2.06% | 0.02 | -11.1% | -46.6% | 0% | 5.0% | 264M | 70% 4w | -47.0% | 57% of 30 med +11% · CVaR -40% |
$698 10% | 30 | DIP · FAILS HOLD |
| MELI ndx100 |
1,712.41 | -2.29% | 0.03 | -8.3% | -7.1% | 17% | 3.5% | 769M | 78% 4w | -24.0% | 57% of 30 med +10% · CVaR -30% |
$1,014 14% | 0 | DIP · FAILS HOLD |
| INTU ndx100 |
269.40 | -2.32% | 0.04 | -14.5% | -32.5% | 4% | 5.0% | 1.2B | 84% 4w | -10.7% | 67% of 30 med +9% · CVaR -32% |
$701 10% | 13 | DIP · FAILS HOLD |
| MDLZ ndx100 |
60.18 | -0.12% | 0.05 | -2.3% | +2.1% | 66% | 2.0% | 473M | 79% 4w | -7.7% | 59% of 32 med +3% · CVaR -11% |
$1,400 20% cap | 0 | DIP · FAILS HOLD |
| NFLX megacap ndx100megacap |
69.23 | -2.70% | 0.07 | -9.1% | -18.1% | 3% | 3.1% | 2.5B | 77% 4w | -39.2% | 74% of 31 med +7% · CVaR -37% |
$1,124 16% | 30 | DIP · FAILS HOLD |
| CPRT ndx100 |
27.22 | -1.34% | 0.07 | -11.1% | -19.3% | 0% | 3.5% | 290M | 86% 4w | -16.5% | 62% of 32 med +9% · CVaR -17% |
$999 14% | — | DIP · FAILS HOLD |
| AMZN megacap ndx100megacap |
246.15 | -1.41% | 0.07 | -2.8% | +2.2% | 56% | 2.3% | 8.6B | 79% 4w | -25.5% | 73% of 30 med +6% · CVaR -22% |
$1,400 20% cap | — | DIP · FAILS HOLD |
| KHC ndx100 |
23.56 | -0.30% | 0.08 | -4.0% | +1.2% | 46% | 2.5% | 354M | 37% 4w | -58.1% | 40% of 35 med -1% · CVaR -17% |
$1,380 20% | — | DIP · FAILS HOLD |
| TTWO ndx100 |
202.35 | +0.45% | 0.11 | -4.3% | -10.2% | 17% | 3.4% | 495M | 76% 4w | -25.0% | 50% of 30 med +3% · CVaR -15% |
$1,021 15% | — | DIP · FAILS HOLD |
| PEP ndx100 |
128.50 | -0.10% | 0.12 | -4.3% | -11.3% | 1% | 1.7% | 1.0B | 78% 4w | -11.2% | 58% of 31 med +2% · CVaR -8% |
$1,400 20% cap | — | DIP · FAILS HOLD |
| FANG ndx100 |
185.23 | -0.77% | 0.13 | -6.1% | +1.5% | 66% | 3.3% | 381M | 68% 4w | -49.1% | 50% of 30 med +3% · CVaR -34% |
$1,070 15% | — | DIP · FAILS HOLD |
| ROP ndx100 |
354.00 | -1.27% | 0.13 | -8.4% | -4.3% | 20% | 2.8% | 283M | 85% 4w | -15.7% | 64% of 33 med +3% · CVaR -13% |
$1,242 18% | — | DIP · FAILS HOLD |
| ADBE ndx100 |
231.01 | -1.89% | 0.13 | -10.0% | -11.9% | 23% | 4.2% | 1.2B | 64% 4w | -43.2% | 45% of 29 med -2% · CVaR -23% |
$841 12% | — | DIP · FAILS HOLD |
| CMCSA ndx100 |
21.79 | -0.55% | 0.14 | -10.4% | -17.4% | 0% | 3.3% | 667M | 57% 4w | -26.9% | 47% of 32 med -0% · CVaR -19% |
$1,062 15% | — | DIP · FAILS HOLD |
| NOW platform ai_platform |
131.45 | -3.07% | 0.14 | -4.8% | +12.9% | 46% | 4.6% | 2.0B | 78% 4w | -21.4% | 65% of 31 med +8% · CVaR -25% |
$756 11% | — | DIP · FAILS HOLD |
| ALB materials humanoid_materials |
107.39 | -2.13% | 0.18 | -10.2% | -30.7% | 20% | 4.8% | 267M | 49% 4w | -62.4% | 56% of 32 med +2% · CVaR -27% |
$729 10% | — | DIP · FAILS HOLD |
| CSX ndx100 |
46.76 | -0.04% | 0.20 | -2.8% | +6.5% | 68% | 2.0% | 494M | 90% 4w | -0.2% | 70% of 33 med +5% · CVaR -12% |
$1,400 20% cap | — | neutral |
| ADSK ndx100 |
207.19 | -1.06% | 0.23 | -6.7% | -13.9% | 14% | 4.0% | 442M | 74% 4w | -26.7% | 55% of 31 med +3% · CVaR -21% |
$873 12% | — | neutral |
| TSLA humanoid ndx100humanoid_oem |
357.45 | -3.94% | 0.24 | -2.4% | -9.5% | 31% | 3.6% | 12.2B | 73% 4w | -33.4% | 50% of 32 med +2% · CVaR -37% |
$969 14% | — | neutral |
| TMUS ndx100 |
166.45 | +0.62% | 0.24 | -5.0% | -12.4% | 6% | 2.9% | 788M | 95% 4w | +8.6% | 67% of 33 med +7% · CVaR -14% |
$1,194 17% | — | neutral |
| BKNG ndx100 |
163.87 | -0.05% | 0.28 | -6.7% | -10.4% | 16% | 4.0% | 1.1B | 84% 4w | -5.0% | 75% of 32 med +4% · CVaR -19% |
$876 13% | — | neutral |
| SBUX ndx100 |
95.27 | +0.43% | 0.28 | -3.9% | -2.4% | 59% | 2.4% | 657M | 75% 4w | -8.6% | 52% of 31 med +6% · CVaR -18% |
$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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AME humanoid humanoid_association |
251.67 | +0.37% | 1.02 | +5.4% | +10.1% | 92% | 2.0% | 298M | 99% 4w | +15.3% | 67% of 30 med +6% · CVaR -17% |
$1,400 20% cap | — | extended |
| EMR humanoid humanoid_association |
159.39 | +0.73% | 1.05 | +5.3% | +11.2% | 89% | 2.3% | 334M | 85% 4w | -3.4% | 65% of 31 med +3% · CVaR -13% |
$1,400 20% cap | — | extended |
| MAR ndx100 |
358.57 | +1.86% | 1.07 | +5.5% | +3.3% | 70% | 2.1% | 522M | 90% 4w | -0.2% | 72% of 29 med +4% · CVaR -24% |
$1,400 20% cap | — | 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.