Overview › Stock breadth
Stocks beating SPY today
How many individual stocks did better than the index over the last three months? Updated after every US market close: the share of stocks outperforming the S&P 500, with its exact rule and its record since 2017.
What it means now
Stocks beating SPY is bearish today. 31% of stocks beat SPY over the last 63 trading days. It was also bearish a week ago (28.6%; now 31.2%). On days in this state since 2017, SPY returned +3.6% on average over the next three months, against +3.8% from any day. Bearish signals were followed by a fall of 5% or more within three months 42% of the time (34 of 81), against 33% of all days. A description of the past, not a forecast.
- SPY
- Bearish
- Bullish
- % of stocks beating SPY over 63 days
Why does the share of stocks beating SPY matter?
When most stocks beat the index, gains are shared widely. When only a few do, the index is carried by its largest names, the kind of narrow rise that has come before several tops.
How it is calculated
- For each US stock over $5: its return over the last 63 trading days (adjusted for splits and dividends) against SPY's over the same days.
- Bullish when 60% or more of the stocks beat SPY, bearish at 40% or less, neutral between.
A standard setting, fixed before testing, not the best of the variants below. A state is decided from a day’s closing prices and published after that close.
How reliable has it been? Its record since Sep 18, 2017
Holding SPY, but T-bills while Stocks beating SPY was bearish, would have returned 15.5% a year with a worst fall of −20.6%, against 14.8% a year and −33.7% for SPY held throughout. Of its bearish signals with three months of history after them, 34 of 81 (42%) were followed by a fall of 5% or more in SPY within three months, against 33% of all 2,220 days (neighbouring days overlap, so days are not independent events). After its 36 bullish signals SPY returned +1.9% on average over three months, against +3.8% from any day. It turned bearish ahead of 5 of the 5 declines of 10% or more in this period.
- SPY
- Bearish
- Bullish
- % of stocks beating SPY over 63 days
The full record and research: every state, decline, signal, variant and setting tested
SPY after each state
| From | Days | SPY, next month (avg) | SPY, next 3 months (avg) |
|---|---|---|---|
| Bearish days | 788 | +0.3% | +3.6% |
| Neutral days | 1,209 | +1.7% | +3.9% |
| Bullish days | 286 | +2.1% | +4.1% |
| All days | 2,283 | +1.3% | +3.8% |
Averages over every day in that state; the periods overlap, so treat them as a description, not a forecast.
Every decline of 10% or more
| High | Low | Fall | Bearish by the high | Days bearish on the way down | A month after the low |
|---|---|---|---|---|---|
| Jan 26, 2018 | Feb 8, 2018 | −10.1% | Yes | 70% | Neutral |
| Sep 20, 2018 | Dec 24, 2018 | −19.3% | Yes | 74% | Neutral |
| Feb 19, 2020 | Mar 23, 2020 | −33.7% | Yes | 75% | Bearish |
| Jan 3, 2022 | Oct 12, 2022 | −24.5% | Yes | 17% | Bullish |
| Feb 19, 2025 | Apr 8, 2025 | −18.8% | Yes | 14% | Neutral |
“Bearish by the high”: bearish at some point from a month before SPY’s high to a week after it.
Every signal (119), newest first
| Date | Turned | SPY 1 month later | 3 months | 6 months | Lowest close within 3 months |
|---|---|---|---|---|---|
| Sep 21, 2026 | Bearish | – | – | – | – |
| Jul 21, 2026 | Bearish | +2.8% | – | – | – |
| Jul 6, 2026 | Bearish | +2.7% | +2.7% | – | −2.9% |
| Jun 29, 2026 | Bearish | −1.6% | +3.6% | – | −1.6% |
| Jun 15, 2026 | Bearish | −0.3% | +0.6% | – | −3.2% |
| May 4, 2026 | Bearish | +5.0% | +7.7% | – | +0.8% |
| Apr 22, 2026 | Bearish | +4.4% | +4.1% | – | −0.4% |
| Mar 26, 2026 | Bullish | +10.9% | +13.3% | +20.2% | −2.0% |
| Mar 5, 2026 | Bullish | −3.0% | +11.4% | +14.1% | −7.0% |
| Mar 3, 2026 | Bullish | −3.4% | +12.0% | +12.6% | −6.9% |
| Feb 3, 2026 | Bullish | −1.2% | +5.3% | +12.2% | −8.1% |
| Jan 30, 2026 | Bullish | −1.7% | +4.4% | +10.1% | −8.4% |
| Nov 10, 2025 | Bearish | +0.9% | +1.8% | +9.6% | −4.2% |
| Oct 27, 2025 | Bearish | −1.5% | +1.8% | +4.4% | −4.8% |
| Oct 20, 2025 | Bearish | −1.7% | +2.4% | +6.5% | −2.8% |
| Oct 6, 2025 | Bearish | +0.5% | +3.3% | +1.2% | −2.8% |
| Oct 1, 2025 | Bearish | +1.7% | +2.3% | −1.3% | −2.4% |
| Aug 14, 2025 | Bearish | +2.5% | +6.3% | +6.3% | −1.5% |
| Jul 29, 2025 | Bearish | +1.8% | +8.2% | +10.1% | −2.1% |
| Jul 24, 2025 | Bearish | +1.7% | +5.6% | +9.3% | −2.0% |
| Jun 10, 2025 | Bearish | +3.7% | +8.5% | +13.9% | −1.2% |
| Mar 4, 2025 | Bearish | −1.8% | +3.6% | +12.3% | −13.7% |
| Feb 28, 2025 | Bearish | −5.6% | −0.5% | +9.2% | −16.2% |
| Feb 20, 2025 | Bearish | −7.3% | −4.2% | +4.7% | −18.4% |
| Feb 13, 2025 | Bearish | −7.0% | −2.9% | +6.2% | −18.3% |
| Feb 10, 2025 | Bearish | −7.6% | −3.3% | +6.9% | −17.7% |
| Oct 21, 2024 | Bearish | +1.1% | +4.8% | −5.7% | −2.6% |
| Oct 7, 2024 | Bullish | +1.6% | +4.0% | −2.8% | +0.1% |
| Sep 18, 2024 | Bullish | +4.1% | +8.0% | +1.4% | +1.5% |
| Aug 13, 2024 | Bearish | +3.1% | +10.8% | +13.2% | −0.3% |
| Jun 4, 2024 | Bearish | +5.3% | +4.6% | +15.0% | −1.8% |
| May 24, 2024 | Bearish | +3.4% | +6.3% | +13.2% | −2.0% |
| May 16, 2024 | Bearish | +3.5% | +5.2% | +12.9% | −1.8% |
| Apr 22, 2024 | Bearish | +6.3% | +11.2% | +17.5% | +0.1% |
| Mar 1, 2024 | Bearish | +1.5% | +3.2% | +10.6% | −3.1% |
| Feb 22, 2024 | Bearish | +3.0% | +4.7% | +10.3% | −2.1% |
| Feb 5, 2024 | Bearish | +3.5% | +5.2% | +6.7% | +0.3% |
| Nov 30, 2023 | Bearish | +4.0% | +12.7% | +16.5% | −0.4% |
| Nov 8, 2023 | Bearish | +5.2% | +15.1% | +20.0% | −0.8% |
| Sep 6, 2023 | Bearish | −4.5% | +2.7% | +16.3% | −7.6% |
| Aug 23, 2023 | Bearish | −2.5% | +2.7% | +15.5% | −7.0% |
| May 17, 2023 | Bearish | +6.2% | +5.5% | +9.1% | −1.0% |
| May 10, 2023 | Bearish | +4.1% | +8.4% | +6.7% | −0.6% |
| May 5, 2023 | Bearish | +3.7% | +9.6% | +6.1% | −0.6% |
| Mar 21, 2023 | Bearish | +3.3% | +9.4% | +10.8% | −1.7% |
| Feb 24, 2023 | Bullish | +0.4% | +5.0% | +11.8% | −2.8% |
| Feb 21, 2023 | Bullish | −1.4% | +5.3% | +10.6% | −3.4% |
| Jan 5, 2023 | Bullish | +8.0% | +8.3% | +16.8% | +1.6% |
| Dec 16, 2022 | Bullish | +1.4% | +4.5% | +14.3% | −1.7% |
| Dec 14, 2022 | Bearish | +0.1% | −1.5% | +11.4% | −5.3% |
| Dec 6, 2022 | Bullish | −1.0% | −0.1% | +9.9% | −3.9% |
| Nov 30, 2022 | Bearish | −5.8% | −0.4% | +5.9% | −7.2% |
| Sep 22, 2022 | Bullish | +0.0% | +3.7% | +6.7% | −4.7% |
| Sep 9, 2022 | Bearish | −11.1% | −2.1% | −4.4% | −11.9% |
| Aug 29, 2022 | Bullish | −7.6% | −1.3% | −1.1% | −11.1% |
| Aug 12, 2022 | Bearish | −8.0% | −7.2% | −2.5% | −16.2% |
| Aug 9, 2022 | Bearish | −2.7% | −7.3% | +0.7% | −13.0% |
| Aug 4, 2022 | Bullish | −5.3% | −9.1% | +0.4% | −13.6% |
| Aug 2, 2022 | Bullish | −3.2% | −5.0% | +1.6% | −12.3% |
| Jun 9, 2022 | Bullish | −4.7% | +1.7% | −0.5% | −8.7% |
| Jun 3, 2022 | Bullish | −6.2% | −4.0% | −0.0% | −10.7% |
| May 25, 2022 | Bullish | −1.8% | +6.0% | +2.1% | −7.7% |
| May 18, 2022 | Bullish | −6.2% | +9.7% | +1.8% | −6.4% |
| Apr 29, 2022 | Bullish | +0.2% | +0.1% | −4.8% | −11.0% |
| Apr 21, 2022 | Bullish | −11.1% | −9.4% | −15.9% | −16.3% |
| Apr 13, 2022 | Bullish | −9.4% | −12.7% | −16.7% | −17.3% |
| Mar 31, 2022 | Bullish | −8.2% | −15.2% | −20.2% | −18.8% |
| Mar 29, 2022 | Bullish | −7.3% | −17.2% | −19.0% | −20.6% |
| Mar 23, 2022 | Bullish | −4.0% | −14.4% | −15.0% | −17.4% |
| Mar 1, 2022 | Bullish | +7.0% | −3.7% | −6.7% | −9.1% |
| Feb 2, 2022 | Bearish | −5.5% | −5.9% | −8.8% | −9.6% |
| Dec 6, 2021 | Bearish | +2.5% | −8.9% | −8.8% | −8.9% |
| Dec 2, 2021 | Bearish | +4.8% | −5.2% | −9.6% | −7.4% |
| Nov 19, 2021 | Bearish | −0.9% | −8.1% | −14.8% | −8.1% |
| Oct 26, 2021 | Bearish | +3.0% | −4.6% | −7.9% | −4.6% |
| Oct 18, 2021 | Bearish | +4.9% | +2.4% | +0.2% | +0.7% |
| Oct 7, 2021 | Bearish | +6.8% | +7.1% | +3.0% | −1.1% |
| Jun 2, 2021 | Bearish | +2.7% | +7.8% | +9.1% | −1.0% |
| May 21, 2021 | Bearish | +2.3% | +7.2% | +13.9% | +0.3% |
| Nov 19, 2020 | Bullish | +3.3% | +8.8% | +18.0% | −0.7% |
| Sep 21, 2020 | Bearish | +5.0% | +13.4% | +20.0% | −1.3% |
| Aug 24, 2020 | Bearish | −5.5% | +4.0% | +15.2% | −5.5% |
| Jun 17, 2020 | Bullish | +3.7% | +9.2% | +19.6% | −3.3% |
| Mar 4, 2020 | Bearish | −19.0% | +0.4% | +13.9% | −28.3% |
| Mar 2, 2020 | Bearish | −16.1% | −0.5% | +14.6% | −27.4% |
| Jan 28, 2020 | Bearish | −9.0% | −12.1% | −0.7% | −31.4% |
| Jan 22, 2020 | Bearish | +0.6% | −15.2% | −0.3% | −32.3% |
| Aug 16, 2019 | Bearish | +4.2% | +7.7% | +17.7% | −1.4% |
| Aug 6, 2019 | Bearish | +3.5% | +7.3% | +16.8% | −1.4% |
| Jul 29, 2019 | Bearish | −4.8% | +0.5% | +9.5% | −5.9% |
| Jul 23, 2019 | Bearish | −2.5% | +0.5% | +11.5% | −5.4% |
| Jul 8, 2019 | Bearish | −3.0% | −0.4% | +10.1% | −4.4% |
| Jul 3, 2019 | Bearish | −2.1% | −3.1% | +9.8% | −5.0% |
| Jun 24, 2019 | Bearish | +2.7% | +2.0% | +10.3% | −3.3% |
| Jun 5, 2019 | Bearish | +6.0% | +4.4% | +10.4% | +0.7% |
| May 29, 2019 | Bearish | +5.3% | +3.6% | +13.7% | −1.3% |
| May 16, 2019 | Bearish | +0.6% | −0.6% | +8.5% | −4.6% |
| May 13, 2019 | Bearish | +2.7% | +3.1% | +11.0% | −2.2% |
| May 9, 2019 | Bearish | +0.8% | +2.9% | +8.2% | −4.2% |
| Apr 25, 2019 | Bearish | −3.2% | +3.2% | +3.7% | −6.0% |
| Apr 22, 2019 | Bearish | −1.3% | +3.1% | +3.6% | −5.4% |
| Dec 13, 2018 | Bearish | −1.3% | +7.5% | +10.2% | −11.2% |
| Dec 10, 2018 | Bearish | −1.4% | +7.2% | +10.3% | −10.7% |
| Nov 28, 2018 | Bearish | −8.4% | +2.4% | +1.0% | −14.1% |
| Nov 7, 2018 | Bearish | −6.0% | −3.1% | +1.0% | −16.1% |
| Oct 29, 2018 | Bearish | +4.1% | +2.9% | +11.5% | −10.7% |
| Sep 13, 2018 | Bearish | −4.7% | −8.3% | −1.5% | −9.1% |
| Sep 4, 2018 | Bearish | +1.1% | −3.2% | −4.1% | −8.8% |
| Aug 27, 2018 | Bearish | +0.5% | −7.3% | −2.8% | −8.7% |
| Jun 8, 2018 | Bullish | +0.7% | +3.8% | −4.4% | −2.7% |
| Jun 4, 2018 | Bullish | −1.0% | +6.1% | +1.2% | −1.6% |
| May 24, 2018 | Bullish | −0.2% | +5.2% | −2.0% | −1.4% |
| May 17, 2018 | Bullish | +2.1% | +4.9% | +0.2% | −1.1% |
| May 8, 2018 | Bullish | +3.9% | +7.5% | +3.4% | +0.8% |
| Apr 27, 2018 | Bullish | +0.9% | +6.0% | +2.2% | −1.5% |
| Apr 24, 2018 | Bullish | +3.9% | +7.6% | +5.5% | −0.1% |
| Feb 22, 2018 | Bearish | −4.2% | +1.5% | +6.7% | −4.4% |
| Feb 6, 2018 | Bearish | +1.8% | −0.4% | +7.0% | −4.3% |
| Dec 27, 2017 | Bearish | +6.5% | −1.2% | +2.2% | −3.6% |
Variants tested
The same measures for other common settings, so the result can be checked for luck: a rule that only works with one exact number is fragile. The highlighted row is the published rule.
| Variant | SPY or T-bills, a year | Worst fall | Days bearish | Bearish signals | Followed by a 5% fall | Bullish signals | SPY 3 months after |
|---|---|---|---|---|---|---|---|
| 50% / 50% | 9.1% | −18.8% | 71% | 55 | 26% (14 of 53) | 55 | +5.5% |
| 55% / 45% | 13.9% | −20.6% | 55% | 77 | 32% (24 of 74) | 32 | +4.0% |
| 60% / 40% (this site's rule) | 15.5% | −20.6% | 35% | 83 | 42% (34 of 81) | 36 | +1.9% |
| 65% / 35% | 12.9% | −24.1% | 16% | 41 | 32% (13 of 40) | 15 | +1.1% |
| SPY held throughout | 14.8% | −33.7% | – | – | 33% (any day) | – | +3.8% (any day) |
“SPY or T-bills”: SPY, switching to T-bills (BIL) at the next close after the rule turns bearish and back after it stops, 0.10% per switch, interest and dividends included. Hypothetical: no costs beyond that, no taxes.
Overlap with the other indicators
It agreed most often with Hindenburg Omen (52% of days in the same state). An indicator that almost always agrees with another adds little to the score.
Agreement with every indicator
| Indicator | Same state |
|---|---|
| Hindenburg Omen | 52% |
| 90% up and down days | 50% |
| Zweig breadth thrust | 46% |
| Up/down volume | 44% |
| Equal weight against SPY | 43% |
| Stocks above their 20-day average | 43% |
| Valuation | 38% |
| McClellan Oscillator | 36% |
| Small against large companies | 33% |
| Stocks above their 200-day average | 26% |
| Advance-decline line | 23% |
| Sector breadth | 23% |
| New highs minus new lows | 16% |
Research: what worked and what did not
The same test run many ways: the published rule year by year, every variant year by year, and grids over its settings. Return numbers are SPY-or-T-bills against SPY over the same days, in points; green means better than holding SPY, red worse.
Year by year
| Year | SPY | SPY or T-bills | Difference, points | SPY’s worst fall | Days bearish | Days bullish | Bearish signals |
|---|---|---|---|---|---|---|---|
| 2017* | 7.4% | 7.7% | +0.3 difference in 2017 | −1.0% | 4% | 0% | 1 |
| 2018 | −4.6% | 18.0% | +22.5 difference in 2018 | −19.3% | 36% | 8% | 10 |
| 2019 | 31.2% | 30.5% | −0.7 difference in 2019 | −6.6% | 26% | 0% | 14 |
| 2020 | 18.4% | 12.6% | −5.8 difference in 2020 | −33.7% | 45% | 12% | 6 |
| 2021 | 28.7% | 17.0% | −11.7 difference in 2021 | −5.1% | 53% | 21% | 8 |
| 2022 | −18.2% | 1.4% | +19.5 difference in 2022 | −24.5% | 14% | 57% | 6 |
| 2023 | 26.2% | 2.7% | −23.5 difference in 2023 | −10.0% | 44% | 5% | 8 |
| 2024 | 24.9% | 19.8% | −5.1 difference in 2024 | −8.4% | 38% | 1% | 9 |
| 2025 | 17.7% | 17.6% | −0.1 difference in 2025 | −18.8% | 30% | 0% | 14 |
| 2026* | 12.8% | 15.1% | +2.3 difference in 2026 | −8.9% | 33% | 13% | 7 |
* Part of a year: Sep 18 to the end of 2017, and 2026 to Oct 16.
Every variant, year by year
Does a setting win steadily, or in one lucky year? Each square is that year’s difference from SPY.
| Variant | 2017* | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026* | A year, whole period |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 50% / 50% | −1.3 50% / 50%, 2017 | +11.6 50% / 50%, 2018 | −19.6 50% / 50%, 2019 | −2.6 50% / 50%, 2020 | −16.6 50% / 50%, 2021 | +29.7 50% / 50%, 2022 | −19.2 50% / 50%, 2023 | −16.3 50% / 50%, 2024 | −18.6 50% / 50%, 2025 | −8.7 50% / 50%, 2026 | −5.7 50% / 50%, a year over the whole period |
| 55% / 45% | +0.0 55% / 45%, 2017 | +12.0 55% / 45%, 2018 | −5.5 55% / 45%, 2019 | +4.9 55% / 45%, 2020 | −13.3 55% / 45%, 2021 | +29.4 55% / 45%, 2022 | −21.6 55% / 45%, 2023 | −12.1 55% / 45%, 2024 | −5.1 55% / 45%, 2025 | −6.2 55% / 45%, 2026 | −0.9 55% / 45%, a year over the whole period |
| 60% / 40% (this site's rule) | +0.3 60% / 40% (this site's rule), 2017, the site's rule | +22.5 60% / 40% (this site's rule), 2018, the site's rule | −0.7 60% / 40% (this site's rule), 2019, the site's rule | −5.8 60% / 40% (this site's rule), 2020, the site's rule | −11.7 60% / 40% (this site's rule), 2021, the site's rule | +19.5 60% / 40% (this site's rule), 2022, the site's rule | −23.5 60% / 40% (this site's rule), 2023, the site's rule | −5.1 60% / 40% (this site's rule), 2024, the site's rule | −0.1 60% / 40% (this site's rule), 2025, the site's rule | +2.3 60% / 40% (this site's rule), 2026, the site's rule | +0.6 60% / 40% (this site's rule), a year over the whole period, the site's rule |
| 65% / 35% | +0.0 65% / 35%, 2017 | +7.1 65% / 35%, 2018 | −5.2 65% / 35%, 2019 | −12.3 65% / 35%, 2020 | −3.5 65% / 35%, 2021 | +7.9 65% / 35%, 2022 | −13.8 65% / 35%, 2023 | −1.4 65% / 35%, 2024 | −3.1 65% / 35%, 2025 | +1.3 65% / 35%, 2026 | −1.9 65% / 35%, a year over the whole period |
The settings, tested on a grid
Bearish cut-off and waiting: return against SPY
Each square: how much more (green) or less (red) a year SPY-or-T-bills returned than SPY. Rows: the share of stocks beating SPY at or below which it is bearish. Columns: how many trading days in a row a new state must hold before it counts (the usual way to cut false signals; the site's rule does not wait).
| Wait → | ||||||
|---|---|---|---|---|---|---|
| Bearish at ↓ | No wait | 2 days | 3 days | 5 days | 10 days | Average |
| 20% or less | −0.3 Bearish at 20% or less, wait No wait | −0.2 Bearish at 20% or less, wait 2 days | +0.0 Bearish at 20% or less, wait 3 days | +0.0 Bearish at 20% or less, wait 5 days | +0.0 Bearish at 20% or less, wait 10 days | −0.1 |
| 25% or less | +0.6 Bearish at 25% or less, wait No wait | +0.1 Bearish at 25% or less, wait 2 days | −0.6 Bearish at 25% or less, wait 3 days | +0.8 Bearish at 25% or less, wait 5 days | +0.3 Bearish at 25% or less, wait 10 days | +0.2 |
| 30% or less | −0.5 Bearish at 30% or less, wait No wait | −0.5 Bearish at 30% or less, wait 2 days | −0.4 Bearish at 30% or less, wait 3 days | −0.5 Bearish at 30% or less, wait 5 days | +0.8 Bearish at 30% or less, wait 10 days | −0.2 |
| 35% or less | −1.9 Bearish at 35% or less, wait No wait | −3.7 Bearish at 35% or less, wait 2 days | −1.8 Bearish at 35% or less, wait 3 days | −3.6 Bearish at 35% or less, wait 5 days | −2.1 Bearish at 35% or less, wait 10 days | −2.6 |
| 40% or less | +0.6 Bearish at 40% or less, wait No wait, the site's rule | +0.3 Bearish at 40% or less, wait 2 days | −0.0 Bearish at 40% or less, wait 3 days | −0.1 Bearish at 40% or less, wait 5 days | −0.2 Bearish at 40% or less, wait 10 days | +0.1 |
| 45% or less | −0.9 Bearish at 45% or less, wait No wait | −2.4 Bearish at 45% or less, wait 2 days | −2.8 Bearish at 45% or less, wait 3 days | −2.2 Bearish at 45% or less, wait 5 days | −1.3 Bearish at 45% or less, wait 10 days | −1.9 |
| Average | −0.4 | −1.1 | −0.9 | −0.9 | −0.4 | |
Bearish cut-off and waiting: how much smaller the worst fall was
Each square: SPY's worst fall minus the strategy's, in points (green: it fell less). Rows: the share of stocks beating SPY at or below which it is bearish. Columns: how many trading days in a row a new state must hold before it counts (the usual way to cut false signals; the site's rule does not wait).
| Wait → | ||||||
|---|---|---|---|---|---|---|
| Bearish at ↓ | No wait | 2 days | 3 days | 5 days | 10 days | Average |
| 20% or less | +0.0 Bearish at 20% or less, wait No wait | +0.0 Bearish at 20% or less, wait 2 days | +0.0 Bearish at 20% or less, wait 3 days | +0.0 Bearish at 20% or less, wait 5 days | +0.0 Bearish at 20% or less, wait 10 days | +0.0 |
| 25% or less | +0.0 Bearish at 25% or less, wait No wait | +0.0 Bearish at 25% or less, wait 2 days | +0.0 Bearish at 25% or less, wait 3 days | +0.0 Bearish at 25% or less, wait 5 days | +0.0 Bearish at 25% or less, wait 10 days | +0.0 |
| 30% or less | +0.0 Bearish at 30% or less, wait No wait | +0.0 Bearish at 30% or less, wait 2 days | −0.0 Bearish at 30% or less, wait 3 days | +0.0 Bearish at 30% or less, wait 5 days | +0.0 Bearish at 30% or less, wait 10 days | +0.0 |
| 35% or less | +9.6 Bearish at 35% or less, wait No wait | +2.8 Bearish at 35% or less, wait 2 days | +7.0 Bearish at 35% or less, wait 3 days | +4.0 Bearish at 35% or less, wait 5 days | +0.0 Bearish at 35% or less, wait 10 days | +4.7 |
| 40% or less | +13.1 Bearish at 40% or less, wait No wait, the site's rule | +13.1 Bearish at 40% or less, wait 2 days | +13.1 Bearish at 40% or less, wait 3 days | +13.1 Bearish at 40% or less, wait 5 days | +13.1 Bearish at 40% or less, wait 10 days | +13.1 |
| 45% or less | +13.1 Bearish at 45% or less, wait No wait | +13.1 Bearish at 45% or less, wait 2 days | +13.1 Bearish at 45% or less, wait 3 days | +13.1 Bearish at 45% or less, wait 5 days | +13.1 Bearish at 45% or less, wait 10 days | +13.1 |
| Average | +6.0 | +4.8 | +5.6 | +5.0 | +4.4 | |
Bullish cut-off: SPY after the bullish days
Each square: SPY's average return over the next 63 trading days from the bullish days, minus its average from every day, in points (green: bullish days were followed by better than usual returns). Rows: the share at or above which it is bullish. Columns: how many trading days in a row a new state must hold before it counts (the usual way to cut false signals; the site's rule does not wait).
| Wait → | ||||||
|---|---|---|---|---|---|---|
| Bullish at ↓ | No wait | 2 days | 3 days | 5 days | 10 days | Average |
| 55% or more | +0.2 Bullish at 55% or more, wait No wait | −0.0 Bullish at 55% or more, wait 2 days | −0.2 Bullish at 55% or more, wait 3 days | −0.1 Bullish at 55% or more, wait 5 days | −0.1 Bullish at 55% or more, wait 10 days | −0.0 |
| 60% or more | +0.3 Bullish at 60% or more, wait No wait, the site's rule | +0.1 Bullish at 60% or more, wait 2 days | −0.0 Bullish at 60% or more, wait 3 days | −0.7 Bullish at 60% or more, wait 5 days | −0.8 Bullish at 60% or more, wait 10 days | −0.2 |
| 65% or more | +1.6 Bullish at 65% or more, wait No wait | +1.4 Bullish at 65% or more, wait 2 days | +1.5 Bullish at 65% or more, wait 3 days | +1.8 Bullish at 65% or more, wait 5 days | +2.8 Bullish at 65% or more, wait 10 days | +1.8 |
| 70% or more | +3.9 Bullish at 70% or more, wait No wait | +3.6 Bullish at 70% or more, wait 2 days | +3.9 Bullish at 70% or more, wait 3 days | +4.4 Bullish at 70% or more, wait 5 days | +5.5 Bullish at 70% or more, wait 10 days | +4.2 |
| 75% or more | – Bullish at 75% or more, wait No wait | – Bullish at 75% or more, wait 2 days | – Bullish at 75% or more, wait 3 days | – Bullish at 75% or more, wait 5 days | – Bullish at 75% or more, wait 10 days | – |
| 80% or more | – Bullish at 80% or more, wait No wait | – Bullish at 80% or more, wait 2 days | – Bullish at 80% or more, wait 3 days | – Bullish at 80% or more, wait 5 days | – Bullish at 80% or more, wait 10 days | – |
| Average | +1.5 | +1.3 | +1.3 | +1.3 | +1.9 | |
The two halves of the history
The best settings found over the whole period, and how each did in 2017–2021 and in 2022–2026 on its own. A setting that only works in one half is fitted to the past.
| Setting | Whole period, a year | 2017–2021 | 2022–2026 | Worst fall smaller by | Ahead in both halves |
|---|---|---|---|---|---|
| The site's rule, but bearish at 25% or less, waiting 5 days | +0.8 whole period | +1.0 2017 to 2021 | +0.6 2022 to 2026 | +0.0 worst fall | Yes |
| The site's rule, but bearish at 30% or less, waiting 10 days | +0.8 whole period | +0.5 2017 to 2021 | +1.2 2022 to 2026 | +0.0 worst fall | Yes |
| The site's rule, but bearish at 25% or less | +0.6 whole period | +0.7 2017 to 2021 | +0.7 2022 to 2026 | +0.0 worst fall | Yes |
| The site's rule, but bearish at 25% or less, waiting 10 days | +0.3 whole period | +1.0 2017 to 2021 | −0.3 2022 to 2026 | +0.0 worst fall | No |
| The site's rule, but waiting 2 days | +0.3 whole period | +1.6 2017 to 2021 | −0.7 2022 to 2026 | +13.1 worst fall | No |
| The site's rule, but bearish at 25% or less, waiting 2 days | +0.1 whole period | −0.1 2017 to 2021 | +0.4 2022 to 2026 | +0.0 worst fall | No |
| The site’s rule | +0.6 whole period, the site's rule | +1.8 2017 to 2021, the site's rule | −0.2 2022 to 2026, the site's rule | +13.1 worst fall, the site's rule | No |
Summary: the settings that helped the most
- Best single setting tested: the site's rule, but bearish at 25% or less, waiting 5 days: +0.8 points a year over SPY (+1.0 in 2017–2021, +0.6 in 2022–2026), against +0.6 for the site’s rule. Found by looking at the results, so it is the most flattering number here, not a forecast.
- Bearish at: 25% or less did best on average (+0.2), 35% or less worst (−2.6).
- Wait: No wait to 10 days (identical results) did best on average (−0.4), 2 days worst (−1.1).
- Bullish at (for the bullish days): 70% or more did best on average (+4.2), 60% or more worst (−0.2).
- Wait (for the bullish days): 10 days did best on average (+1.9), 2 days worst (+1.3).
- Protection depends on the setting: with 40% or less, 45% or less the worst fall was up to 13 points smaller than SPY’s; with 20% or less, 25% or less, 30% or less it was no smaller, so those settings did not step aside in SPY’s 34% fall from Feb 19, 2020 to Mar 23, 2020.
- Choosing the best setting in advance: the setting with the best result in 2017–2021 (the site's rule, +1.8) scored −0.2 in 2022–2026, against −0.2 for the site’s rule; 18 of the 55 settings tested beat the rule in those later years.
The site keeps the rule it published, so its live record stays honest. The heat maps show which ingredients mattered across many settings; any one best square is partly luck, because the history holds only a handful of real declines.
Live record
The rule went live after the close of Oct 16, 2026. Every reading since was made by the daily run after that day’s close and is kept exactly as made; the newest few are corrected only if late price data changes them.
No live readings yet: the first comes after the next trading day.
Free · every Friday after the close
Know when the market’s underlying health changes
Every Friday, a two-minute report on market health, rising risk and the indicators that changed, without having to watch every chart yourself.
- The health score and the top-risk score, and how far each moved
- Every indicator that turned bullish or bearish, and why
- Whether breadth confirmed the S&P 500’s new highs
- The charts that matter, in under two minutes
From the same author
Bull Rhythm: momentum strategies, tracked live every trading day
Eight model stock portfolios built on 12-1 momentum, one of the most researched return factors in finance, run by fixed rules and measured against the S&P 500.
- Every holding and every trade published, with the reason in plain words
- The live record since go-live, next to a backtest since 2017
- The Bull Rhythm Weekly by email every Friday