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.
%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 | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SOXX semis_etf |
566.07 | +0.06% | 0.94 | +8.0% | +26.7% | 77% | 3.1% | 4.2B | 95% 4w | +7.3% | — | neutral |
| SOXL semis_etfleveraged |
146.33 | +0.05% | 0.93 | +21.9% | +28.0% | 43% | 8.6% | 8.1B | 76% 4w | -52.2% | — | leveraged · not rated |
| SOXS semis_etfleveragedinverse |
33.63 | -0.09% | 0.07 | -24.3% | -81.6% | 0% | 13.1% | 2.6B | 0% 4w | -98.7% | 30 | 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.41% | -0.039% | above 20d | |
| MU | 8.91% | +0.81% | +0.072% | above 20d | |
| AMD | 8.23% | +2.38% | +0.196% | above 20d | |
| AVGO | 7.48% | -1.30% | -0.098% | BELOW 20d | |
| INTC | 5.09% | +3.91% | +0.199% | above 20d | |
| MRVL | 4.66% | -0.75% | -0.035% | above 20d | |
| TSM | 4.65% | +1.03% | +0.048% | above 20d | |
| AMAT | 4.59% | -0.03% | -0.001% | above 20d | |
| LRCX | 4.27% | -0.04% | -0.002% | above 20d | |
| KLAC | 4.12% | -0.40% | -0.016% | 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 | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| META ndx100ai_platformmegacap |
777.59 | +4.50% | 1.02 | +19.4% | +24.4% | 100% | 3.5% | 10.6B | 79% 4w | -28.1% | — | extended |
| GOOGL ndx100ai_platformmegacap |
342.36 | +1.34% | 0.52 | +0.1% | +1.4% | 64% | 2.6% | 8.7B | 90% 4w | -0.1% | — | neutral |
| MSFT ndx100ai_platformmegacap |
497.93 | -0.53% | 0.44 | -0.3% | +15.7% | 79% | 2.2% | 11.4B | 96% 4w | +10.0% | — | neutral |
| AAPL ndx100megacap |
335.92 | -0.33% | 0.74 | +2.4% | +17.0% | 96% | 2.1% | 13.4B | 99% 4w | +16.2% | — | neutral |
| AMZN ndx100megacap |
249.38 | +0.04% | 0.21 | -2.1% | +3.6% | 59% | 2.4% | 8.7B | 79% 4w | -25.5% | — | neutral |
| NFLX ndx100megacap |
71.72 | +0.50% | 0.13 | -7.1% | -15.5% | 7% | 3.1% | 2.5B | 77% 4w | -39.2% | — | 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 | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PAYX ndx100 |
101.59 | -2.78% | -0.11 | -14.0% | -0.9% | 41% | 3.4% | 315M | 88% 4w | -2.3% | 1 | BUY ZONE |
| XEL ndx100 |
69.56 | -1.56% | -0.07 | -5.9% | -9.7% | 0% | 1.9% | 392M | 82% 4w | -6.9% | 0 | BUY ZONE |
| AEP ndx100 |
117.57 | -0.70% | -0.04 | -3.7% | -6.3% | 39% | 1.7% | 466M | 86% 4w | -2.5% | 0 | BUY ZONE |
| PCAR ndx100 |
110.67 | -1.27% | -0.03 | -8.1% | -7.9% | 42% | 2.6% | 345M | 98% 4w | +8.1% | 1 | BUY ZONE |
| VRSK ndx100 |
168.65 | -1.83% | 0.11 | -6.8% | -11.5% | 14% | 3.6% | 255M | 83% 4w | -9.3% | — | BUY ZONE |
| ORCL ai_platform |
139.54 | -3.47% | 0.11 | -6.6% | -15.0% | 13% | 5.3% | 4.3B | 98% 4w | +14.6% | — | BUY ZONE |
| MNST ndx100 |
42.67 | -2.82% | 0.13 | -3.8% | +1.0% | 59% | 2.3% | 448M | 95% 4w | +3.8% | — | BUY ZONE |
| BKNG ndx100 |
157.41 | +0.97% | 0.13 | -12.3% | -14.1% | 6% | 4.2% | 1.1B | 84% 4w | -5.0% | — | BUY ZONE |
| ADP ndx100 |
263.11 | -0.22% | 0.14 | -3.8% | +12.0% | 77% | 2.2% | 575M | 93% 4w | +4.2% | — | BUY ZONE |
| CSCO ndx100 |
106.97 | +0.51% | 0.14 | -2.2% | +11.0% | 65% | 2.7% | 2.0B | 82% 4w | -3.2% | — | BUY ZONE |
| TMUS ndx100 |
165.35 | -0.19% | 0.14 | -6.3% | -13.1% | 4% | 3.2% | 797M | 95% 4w | +8.7% | — | BUY ZONE |
| CCEP ndx100 |
100.31 | +0.62% | 0.19 | -3.7% | +2.5% | 59% | 2.1% | 179M | 94% 4w | +5.4% | — | 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 | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CDW ndx100 |
139.46 | -4.58% | -0.06 | -6.0% | +6.5% | 66% | 4.3% | 240M | 79% 4w | -30.4% | 0 | DIP · FAILS HOLD |
| TTD ndx100 |
12.63 | -0.39% | -0.01 | -9.7% | -46.0% | 0% | 5.2% | 264M | 70% 4w | -46.8% | 30 | DIP · FAILS HOLD |
| INTU ndx100 |
277.13 | -3.37% | -0.01 | -14.2% | -31.3% | 5% | 5.1% | 1.2B | 84% 4w | -10.3% | 15 | DIP · FAILS HOLD |
| PEP ndx100 |
128.15 | -1.56% | -0.00 | -5.3% | -11.7% | 0% | 1.8% | 1.1B | 78% 4w | -11.1% | 4 | DIP · FAILS HOLD |
| CSGP ndx100 |
27.86 | -1.42% | 0.03 | -8.2% | -32.5% | 1% | 4.4% | 183M | 62% 4w | -22.7% | 0 | DIP · FAILS HOLD |
| MELI ndx100 |
1,754.13 | -2.51% | 0.04 | -7.1% | -5.0% | 22% | 3.4% | 765M | 78% 4w | -24.0% | 2 | DIP · FAILS HOLD |
| CPRT ndx100 |
28.04 | -2.87% | 0.05 | -10.0% | -17.1% | 5% | 3.7% | 294M | 87% 4w | -16.3% | 0 | DIP · FAILS HOLD |
| KHC ndx100 |
23.86 | +0.29% | 0.09 | -3.4% | +2.5% | 50% | 2.6% | 357M | 37% 4w | -58.1% | 2 | DIP · FAILS HOLD |
| CMCSA ndx100 |
22.13 | -1.86% | 0.10 | -10.8% | -16.2% | 2% | 3.3% | 667M | 57% 4w | -26.9% | — | DIP · FAILS HOLD |
| KDP ndx100 |
30.88 | -2.77% | 0.12 | -2.8% | +6.0% | 70% | 2.4% | 354M | 70% 4w | -9.2% | — | DIP · FAILS HOLD |
| NFLX ndx100megacap |
71.72 | +0.50% | 0.13 | -7.1% | -15.5% | 7% | 3.1% | 2.5B | 77% 4w | -39.2% | — | DIP · FAILS HOLD |
| TTWO ndx100 |
202.98 | -1.62% | 0.14 | -5.5% | -10.1% | 18% | 3.7% | 502M | 76% 4w | -25.0% | — | DIP · FAILS HOLD |
| ALB humanoid_materials |
108.25 | -4.60% | 0.15 | -11.5% | -30.2% | 21% | 4.9% | 269M | 49% 4w | -62.4% | — | DIP · FAILS HOLD |
| MDLZ ndx100 |
60.86 | -0.94% | 0.15 | -1.5% | +3.3% | 71% | 2.0% | 477M | 79% 4w | -7.6% | — | DIP · FAILS HOLD |
| SBUX ndx100 |
93.65 | -0.52% | 0.15 | -6.7% | -4.0% | 54% | 2.5% | 657M | 75% 4w | -8.6% | — | DIP · FAILS HOLD |
| FANG ndx100 |
189.01 | +1.81% | 0.16 | -4.8% | +3.8% | 71% | 3.3% | 382M | 68% 4w | -49.1% | — | DIP · FAILS HOLD |
| ROP ndx100 |
364.02 | -0.64% | 0.17 | -7.4% | -1.8% | 25% | 2.8% | 285M | 85% 4w | -15.4% | — | DIP · FAILS HOLD |
| ADBE ndx100 |
238.93 | -0.73% | 0.17 | -8.9% | -9.2% | 27% | 4.1% | 1.2B | 64% 4w | -43.1% | — | DIP · FAILS HOLD |
| CSX ndx100 |
46.95 | -0.51% | 0.21 | -3.3% | +7.2% | 69% | 2.1% | 507M | 90% 4w | -0.2% | — | neutral |
| AMZN ndx100megacap |
249.38 | +0.04% | 0.21 | -2.1% | +3.6% | 59% | 2.4% | 8.7B | 79% 4w | -25.5% | — | neutral |
| AXON ndx100 |
445.00 | -1.24% | 0.24 | -10.3% | -11.2% | 24% | 5.7% | 442M | 98% 4w | +21.6% | — | neutral |
| ODFL ndx100 |
174.93 | -1.57% | 0.24 | -4.5% | -11.9% | 40% | 3.2% | 311M | 88% 4w | -5.8% | — | neutral |
| RRX humanoid_disclosed |
151.11 | -0.86% | 0.26 | -3.2% | -19.7% | 21% | 4.0% | 201M | 80% 4w | -7.1% | — | neutral |
| COST ndx100 |
896.48 | -0.91% | 0.26 | -1.8% | -6.4% | 20% | 1.5% | 1.9B | 100% 4w | +27.0% | — | neutral |
| BKR ndx100 |
57.29 | -1.28% | 0.27 | -4.8% | -2.5% | 53% | 3.0% | 446M | 66% 4w | -44.0% | — | 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 | msgs | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| INTC ndx100soxx_top10 |
127.39 | +3.91% | 1.00 | +23.7% | +61.7% | 88% | 5.0% | 10.4B | 49% 4w | -37.8% | — | extended |
| META ndx100ai_platformmegacap |
777.59 | +4.50% | 1.02 | +19.4% | +24.4% | 100% | 3.5% | 10.6B | 79% 4w | -28.1% | — | extended |
| AME humanoid_association |
247.74 | +0.52% | 1.02 | +4.3% | +8.6% | 87% | 2.1% | 288M | 99% 4w | +15.3% | — | extended |
| ROST ndx100 |
235.40 | +0.61% | 1.05 | +2.6% | +9.2% | 82% | 2.2% | 515M | 80% 4w | -7.0% | — | 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.