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 | +40.7% | +18.8% | 89% | 0/9 | leading |
| AI memory | 4 | +41.2% | -0.4% | 100% | 0/4 | leading |
| Chip equipment | 8 | +23.8% | +17.4% | 100% | 0/8 | leading |
| AI networking | 3 | +28.3% | +20.7% | 67% | 0/3 | leading |
| AI power | 5 | +4.4% | +0.1% | 60% | 0/5 | leading |
| AI platforms | 6 | +12.3% | +4.7% | 83% | 0/6 | leading |
| Humanoid supply chain | 16 (15 in basket) | +7.0% | +6.8% | 60% | 0/16 | leading |
| Magnets & materials | 4 | -16.9% | -12.2% | 25% | 2/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 |
589.51 | +0.10% | 0.86 | +7.8% | +29.2% | 83% | 2.7% | 4.0B | 95% 4w | +7.3% | 73% of 30 med +6% · CVaR -18% |
$1,284 18% | — | neutral |
| SOXL semis ETF semis_etfleveraged |
164.27 | +0.34% | 0.88 | +22.2% | +39.1% | 49% | 7.2% | 7.9B | 76% 4w | -52.2% | 63% of 30 med +9% · CVaR -57% |
— | — | leveraged · not rated |
| SOXS semis ETF semis_etfleveragedinverse |
29.62 | -0.30% | 0.18 | -23.2% | -85.2% | 0% | 12.0% | 2.6B | 0% 4w | -98.7% | 17% of 36 med -21% · CVaR -65% |
— | 11 | 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% | +2.12% | +0.200% | above 20d | |
| MU | 8.91% | -1.02% | -0.091% | above 20d | |
| AMD | 8.23% | -0.34% | -0.028% | above 20d | |
| AVGO | 7.48% | +2.08% | +0.155% | above 20d | |
| INTC | 5.09% | -2.63% | -0.134% | above 20d | |
| MRVL | 4.66% | -0.38% | -0.018% | above 20d | |
| TSM | 4.65% | +2.75% | +0.128% | above 20d | |
| AMAT | 4.59% | +0.41% | +0.019% | above 20d | |
| LRCX | 4.27% | -0.49% | -0.021% | above 20d | |
| KLAC | 4.12% | -0.02% | -0.001% | 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 |
741.90 | +1.90% | 0.73 | +5.7% | +18.2% | 86% | 3.4% | 10.5B | 79% 4w | -28.1% | 57% of 30 med +3% · CVaR -25% |
$1,038 15% | — | neutral |
| GOOGL platform ndx100ai_platformmegacap |
346.47 | +0.86% | 0.65 | +1.0% | +2.3% | 67% | 2.5% | 8.5B | 90% 4w | -0.1% | 71% of 31 med +5% · CVaR -9% |
$1,383 20% | — | neutral |
| MSFT platform ndx100ai_platformmegacap |
525.18 | +1.48% | 1.07 | +4.4% | +21.6% | 93% | 2.2% | 11.2B | 96% 4w | +10.0% | 70% of 27 med +7% · CVaR -13% |
$1,400 20% cap | — | extended |
| AAPL megacap ndx100megacap |
332.89 | -0.24% | 0.51 | +0.1% | +15.1% | 92% | 2.1% | 12.9B | 99% 4w | +16.2% | 70% of 27 med +6% · CVaR -17% |
$1,400 20% cap | — | neutral |
| AMZN megacap ndx100megacap |
251.40 | -0.05% | 0.51 | +0.0% | +4.1% | 62% | 2.2% | 8.6B | 79% 4w | -25.5% | 73% of 30 med +6% · CVaR -22% |
$1,400 20% cap | — | neutral |
| NFLX megacap ndx100megacap |
67.50 | +0.66% | 0.14 | -7.5% | -19.6% | 1% | 2.8% | 2.5B | 77% 4w | -39.2% | 74% of 31 med +7% · CVaR -37% |
$1,240 18% | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| VRTX ndx100 |
503.50 | -0.24% | 0.05 | -2.6% | +6.3% | 65% | 2.4% | 552M | 92% 4w | +1.7% | 60% of 30 med +3% · CVaR -12% |
$1,400 20% cap | 0 | BUY ZONE |
| VRSK ndx100 |
163.28 | -0.37% | 0.10 | -5.5% | -13.5% | 8% | 3.2% | 237M | 83% 4w | -9.9% | 58% of 31 med +2% · CVaR -15% |
$1,093 16% | 0 | BUY ZONE |
| ORLY ndx100 |
83.90 | -1.18% | 0.13 | -1.7% | -7.7% | 5% | 2.1% | 464M | 100% 4w | +27.7% | 67% of 30 med +8% · CVaR -24% |
$1,400 20% cap | 0 | BUY ZONE |
| AXON ndx100 |
411.81 | -0.37% | 0.15 | -8.6% | -17.0% | 16% | 5.3% | 421M | 98% 4w | +20.9% | 59% of 32 med +20% · CVaR -28% |
$666 10% | 0 | BUY ZONE |
| BKNG ndx100 |
158.33 | -0.43% | 0.19 | -5.0% | -12.8% | 8% | 3.7% | 1.1B | 84% 4w | -5.0% | 75% of 32 med +4% · CVaR -19% |
$935 13% | — | BUY ZONE |
| PCAR ndx100 |
109.36 | -0.29% | 0.20 | -5.4% | -9.0% | 39% | 2.4% | 348M | 98% 4w | +8.1% | 61% of 31 med +6% · CVaR -17% |
$1,400 20% cap | — | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ALNY ndx100 |
219.89 | +0.08% | -0.08 | -10.3% | -27.2% | 5% | 4.7% | 368M | 79% 4w | -8.6% | 53% of 32 med +4% · CVaR -23% |
$753 11% | 1 | DIP · FAILS HOLD |
| KHC ndx100 |
21.84 | -1.58% | -0.07 | -8.5% | -6.1% | 20% | 2.7% | 355M | 37% 4w | -58.1% | 40% of 35 med -1% · CVaR -17% |
$1,285 18% | 4 | DIP · FAILS HOLD |
| REGN ndx100 |
726.47 | -1.19% | -0.01 | -6.6% | -1.1% | 58% | 2.9% | 503M | 63% 4w | -31.3% | 48% of 29 med -0% · CVaR -25% |
$1,203 17% | 0 | DIP · FAILS HOLD |
| NFLX megacap ndx100megacap |
67.50 | +0.66% | 0.14 | -7.5% | -19.6% | 1% | 2.8% | 2.5B | 77% 4w | -39.2% | 74% of 31 med +7% · CVaR -37% |
$1,240 18% | 30 | DIP · FAILS HOLD |
| PEPearnings in 2 sessions ndx100 |
125.65 | -0.19% | 0.16 | -4.3% | -13.0% | 0% | 1.7% | 1.0B | 78% 4w | -11.3% | 58% of 31 med +2% · CVaR -8% |
$1,400 20% cap | 7 | DIP · FAILS HOLD |
| TTD ndx100 |
11.98 | +0.25% | 0.17 | -10.1% | -46.7% | 0% | 4.6% | 272M | 70% 4w | -47.7% | 57% of 30 med +11% · CVaR -40% |
$758 11% | 27 | DIP · FAILS HOLD |
| MDLZ ndx100 |
58.49 | +0.52% | 0.18 | -3.0% | -0.2% | 58% | 2.0% | 469M | 79% 4w | -7.8% | 59% of 32 med +3% · CVaR -11% |
$1,400 20% cap | 0 | DIP · FAILS HOLD |
| ALB materials humanoid_materials |
104.37 | -0.21% | 0.19 | -7.4% | -32.4% | 13% | 4.2% | 265M | 49% 4w | -62.4% | 56% of 32 med +2% · CVaR -27% |
$837 12% | — | DIP · FAILS HOLD |
| PAYX ndx100 |
99.78 | +0.85% | 0.21 | -8.6% | -2.4% | 37% | 2.9% | 321M | 88% 4w | -2.9% | 66% of 32 med +5% · CVaR -17% |
$1,193 17% | — | neutral |
| GILD ndx100 |
144.63 | -0.08% | 0.21 | -2.4% | +6.8% | 80% | 2.3% | 790M | 77% 4w | -8.7% | 72% of 32 med +3% · CVaR -13% |
$1,400 20% cap | — | neutral |
| ADP ndx100 |
260.26 | +1.00% | 0.22 | -2.3% | +10.7% | 74% | 2.2% | 574M | 93% 4w | +3.8% | 67% of 30 med +6% · CVaR -17% |
$1,400 20% cap | — | neutral |
| ROST ndx100 |
226.37 | -0.95% | 0.23 | -1.8% | +4.1% | 74% | 2.3% | 499M | 80% 4w | -7.0% | 64% of 28 med +6% · CVaR -20% |
$1,400 20% cap | — | neutral |
| WMT ndx100 |
105.07 | +0.78% | 0.23 | -1.8% | -10.8% | 16% | 2.0% | 2.4B | 98% 4w | +7.6% | 68% of 31 med +7% · CVaR -13% |
$1,400 20% cap | — | neutral |
| CMCSA ndx100 |
21.57 | +0.00% | 0.24 | -6.6% | -17.9% | 0% | 2.9% | 667M | 57% 4w | -27.0% | 47% of 32 med -0% · CVaR -19% |
$1,218 17% | — | neutral |
| CDW ndx100 |
133.92 | +0.47% | 0.25 | -5.7% | +2.6% | 62% | 4.4% | 224M | 79% 4w | -31.3% | 69% of 32 med +7% · CVaR -17% |
$799 11% | — | neutral |
| CTAS ndx100 |
195.40 | +1.23% | 0.25 | -1.3% | +4.3% | 61% | 2.0% | 389M | 98% 4w | +21.9% | 67% of 30 med +9% · CVaR -15% |
$1,400 20% cap | — | neutral |
| FANG ndx100 |
184.08 | -0.34% | 0.25 | -4.5% | +0.4% | 65% | 2.8% | 382M | 68% 4w | -49.1% | 50% of 30 med +3% · CVaR -34% |
$1,264 18% | — | neutral |
| CSGP ndx100 |
27.66 | +1.02% | 0.28 | -4.3% | -30.7% | 1% | 3.9% | 183M | 62% 4w | -23.0% | 58% of 31 med +6% · CVaR -24% |
$908 13% | — | neutral |
| CPRT ndx100 |
27.65 | +1.58% | 0.28 | -5.3% | -17.3% | 3% | 3.1% | 282M | 86% 4w | -17.8% | 62% of 32 med +9% · CVaR -17% |
$1,137 16% | — | neutral |
| TTWO ndx100 |
203.46 | +0.36% | 0.28 | -2.4% | -9.3% | 19% | 3.1% | 492M | 76% 4w | -25.0% | 50% of 30 med +3% · CVaR -15% |
$1,134 16% | — | neutral |
| SBUX ndx100 |
94.43 | -0.30% | 0.29 | -2.0% | -3.6% | 56% | 2.1% | 656M | 75% 4w | -8.6% | 52% of 31 med +5% · CVaR -18% |
$1,400 20% cap | — | neutral |
| ADBE ndx100 |
238.79 | +0.46% | 0.31 | -2.8% | -7.9% | 27% | 3.7% | 1.2B | 63% 4w | -43.8% | 45% of 29 med -2% · CVaR -23% |
$939 13% | — | neutral |
| TMUS ndx100 |
164.64 | +0.61% | 0.32 | -3.1% | -13.0% | 5% | 2.6% | 753M | 94% 4w | +8.3% | 70% of 33 med +7% · CVaR -14% |
$1,346 19% | — | neutral |
| QCOM ndx100 |
180.79 | -2.21% | 0.33 | -2.7% | +7.7% | 46% | 4.5% | 1.9B | 75% 4w | -13.6% | 52% of 29 med +0% · CVaR -22% |
$780 11% | — | neutral |
| INTU ndx100 |
284.68 | +1.28% | 0.34 | -4.6% | -27.0% | 7% | 4.4% | 1.1B | 83% 4w | -11.4% | 67% of 30 med +9% · CVaR -32% |
$802 11% | — | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CIEN network ai_network |
389.69 | -0.42% | 1.00 | +10.3% | -0.6% | 50% | 5.5% | 781M | 76% 4w | -15.6% | 60% of 30 med +5% · CVaR -20% |
$634 9% | — | extended |
| CSCO ndx100 |
112.82 | +0.55% | 1.01 | +3.9% | +16.2% | 74% | 2.3% | 2.0B | 82% 4w | -3.2% | 66% of 29 med +5% · CVaR -14% |
$1,400 20% cap | — | extended |
| SNPS ndx100 |
488.47 | -0.29% | 1.02 | +17.9% | +9.8% | 72% | 4.0% | 670M | 88% 4w | -8.7% | 74% of 31 med +8% · CVaR -22% |
$874 12% | — | extended |
| BOTZ humanoid ETF humanoid_etf |
36.20 | +0.47% | 1.02 | +2.5% | -1.8% | 44% | 1.4% | 24M | 69% 4w | -28.2% | 55% of 29 med +4% · CVaR -21% |
$1,400 20% cap | — | extended |
| NVDA compute ndx100ai_computesoxx_top10 |
238.90 | +2.12% | 1.03 | +6.6% | +19.0% | 100% | 2.5% | 25.1B | 95% 4w | +9.5% | 79% of 29 med +11% · CVaR -26% |
$1,400 20% cap | — | extended |
| SHOP ndx100 |
160.11 | +5.76% | 1.04 | +15.0% | +23.6% | 77% | 4.3% | 1.0B | 77% 4w | -61.5% | 69% of 29 med +13% · CVaR -38% |
$823 12% | — | extended |
| LITE network ndx100ai_network |
1,091.67 | +0.58% | 1.04 | +14.6% | +45.7% | 100% | 6.0% | 3.7B | 66% 4w | -46.0% | 64% of 33 med +6% · CVaR -24% |
$586 8% | — | extended |
| TXN ndx100 |
294.90 | +0.37% | 1.04 | +8.5% | +19.0% | 80% | 2.7% | 1.5B | 88% 4w | -1.8% | 66% of 32 med +4% · CVaR -14% |
$1,285 18% | — | extended |
| ROK humanoid humanoid_association |
455.18 | +0.18% | 1.06 | +6.1% | +7.8% | 77% | 2.2% | 303M | 85% 4w | -3.3% | 67% of 30 med +8% · CVaR -22% |
$1,400 20% cap | — | extended |
| MSFT platform ndx100ai_platformmegacap |
525.18 | +1.48% | 1.07 | +4.4% | +21.6% | 93% | 2.2% | 11.2B | 96% 4w | +10.0% | 70% of 27 med +7% · CVaR -13% |
$1,400 20% cap | — | extended |
| LIN ndx100 |
482.38 | +0.60% | 1.08 | +3.2% | -0.3% | 61% | 1.7% | 922M | 100% 4w | +17.6% | 74% of 31 med +6% · CVaR -8% |
$1,400 20% cap | — | extended |
| PWR power ai_power |
683.42 | +1.01% | 1.08 | +6.7% | +12.7% | 73% | 3.2% | 588M | 93% 4w | +4.6% | 73% of 30 med +7% · CVaR -12% |
$1,104 16% | — | extended |
| TSM compute ai_computesoxx_top10 |
485.80 | +2.75% | 1.08 | +9.5% | +25.7% | 100% | 2.2% | 4.5B | 83% 4w | -16.0% | 74% of 31 med +10% · CVaR -18% |
$1,400 20% cap | — | extended |
| ON humanoid ndx100humanoid_association |
85.93 | +1.23% | 1.09 | +15.6% | +6.6% | 46% | 4.1% | 754M | 74% 4w | -38.7% | 59% of 32 med +5% · CVaR -30% |
$852 12% | — | 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.